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
