swuforce

[Medium]The Privacy Comeback: Web3 Identity After Cookies

범호야 2025. 11. 11. 16:53

지금까지의 웹 마케팅은 제 3자 쿠키를 활용하여 사용자의 웹 활동을 추적하고, 여러 사이트에 걸쳐 프로파일을 만들고 이를 광고 등에 활용해왔다.

하지만 점차 post-cookie 시대가 다가오고 있다. 

제 3자 쿠키를 대체하는 것이 웹 아이덴티티 개념이다.

- 분산 식별자 : 공개 키와 서비스 엔드포인트를 나열하는 문서(네트워크에 연결되거나 앵커링된 문서)로 해결된다. 키를 회전하고 동일한 DID를 유지하고,  중앙 레지스트리가 필요하지 않다. 

- 검증 가능한 자격증명 : 신뢰할 수 있는 사람(은행, 대학, 브랜드)이 발급한 디지털 서명 청구서이다.

- 제로지식 증명 : 기본 데이터를 공개하지 않고 진술을 증명한다. 

간단한 post cookie 개인화 아키텍처

작동 패턴

1. 크리프 없는 충성심 -> 데이터 최소화 + 동의 기반 맞춤화 

 

  • 리테일러가 ‘골드 회원’에게 VC 형태의 디지털 회원증을 발급한다.
  • 결제 시, 사용자는 “Gold tier = true”라는 ZK Proof만 제시한다.
  • 사이트는 할인과 VIP 혜택을 적용하지만, 이메일·쿠키·픽셀 추적은 전혀 없다.
  • 회원 등급이 바뀌면 VC가 폐기되어, 다음 접속 시 자동으로 반영된다.

 

2. 연령 제한 콘텐츠, 프라이버시 보호 -> 나이 증명, 신원 노출 없음  

  • 미디어 사이트가 성인 인증(18+)을 요구한다.
  • 사용자는 정부 발급 ‘연령 VC’에서 나이 범위만 증명하는 ZK Range Proof를 생성한다.
  • 사이트는 생년월일도, 신분증 번호도 보지 않는다.
  • 오직 boolean(true/false) 값과 timestamp만 확인한다.

 

3. 연맹의 올바른 판단 -> 연동 가능 감시 자본주의 차단 

 

  • 여러 출판사가 하나의 구독 플랫폼에서 발급한 Reader-pass VC를 공동으로 수용한다.
  • 각 출판사는 자체적으로 증명서를 검증하고,
  • 분석은 “얼마나 많은 증명이 발생했는가”만 집계한다.

함정

1. 감사를 위해 원본 데이터 보관 금지

2. 긴 이용약관 속에 동의 숨기기 금지

3. 지갑 UX를 다크 패턴으로 만들지 말기 

 

// 1) 서버가 세션용 challenge 생성
const challenge = base64url(randomBytes(32));
await kv.set(`nonce:${sessionId}`, challenge, { ttl: 300 });

// 2) 클라이언트가 DID 키로 서명하고 VC proof 첨부
const assertion = await wallet.sign({
  did: userDID,
  payload: { challenge, aud: "https://brand.example" }
});
const zkProof = await wallet.prove("isGoldTier"); // boolean proof, no PII

// 3) 서버가 서명 + 증명 검증 후 세션 토큰 발급
const didDoc = await resolveDID(userDID);
const ok = verifySignature(assertion, didDoc.publicKey);
const proofOk = verifyZK(zkProof, { circuit: "gold-tier" });

if (ok && proofOk) {
  const token = signJWT({
    sub: userDID,
    scope: ["offers:read", "support:priority"],
    consentExp: "2026-12-31"
  });
  reply.cookie("session", token, { httpOnly: true, sameSite: "Lax" });
}

DID  Auth in Practice  
실제 로그인 예시 
서버는 토큰의 스코프와 동의 만료일만 저장하고 원본  VC는 저장하지 않는다. 

Measuring What Matters (익명 분석 모델)

 

  • 이벤트 단위 분석: “Gold proof → 구매” 같은 증명 기반 전환율만 집계.
  • 증명 단위 증분 실험: proof 수준의 홀드아웃 그룹으로 성과 비교.
  • 목적 제한 식별자: 1st-party 도메인 내 한정 ID 사용, 행(row) 단위 공유 금지.

 

Passkeys vs Web3 Identity

 

  • Passkeys는 인증(Authentication)만 해결한다.
    → 비밀번호 대체에는 좋지만 “무엇을 증명(prove)”해야 하는지는 해결하지 못한다.
  • Web3 Identity는 그 위층의 권한(Authorization) 문제를 해결한다.
    → 사용자가 필요한 사실만 휴대하고, 맥락 간 이동 가능한 이동형 신원(portable identity)을 만든다.

 

Governance — 신뢰의 비가시적 기둥

 

  • Trust Registry: 누가 어떤 VC를 발급할 수 있는지 투명한 목록 유지.
  • Revocation Check: VC 유효성은 암호학적 리스트/누산기(accumulator)로 검증.
  • Key Rotation: 키 교체 지원은 필수. 사용자는 기록을 잃지 않아야 함.
  • UX Standards:
    • “할인 혜택용 Gold 등급 증명 공유할까요?”
    • 목적과 만료일을 명확히 표시.

 

“Post-cookie identity isn’t the end of personalization; it’s the end of entitlement.”

[출처]https://medium.com/@Nexumo_/the-privacy-comeback-web3-identity-after-cookies-9beb3001e925