심화 · DID: 탈중앙화 신원
2장에서 우리는 개인키로 "이 메시지를 보낸 게 나"라는 걸 증명했다. 그런데 일상의 신원 증명은 그보다 훨씬 복잡하다. "나는 OO은행 직원이다", "나는 운전면허가 있다", "나는 성인이다". 지금 이런 증명은 전부 발급기관이나 플랫폼에 묶여 있다. 회사를 옮기면 사번이 사라지고, 서비스가 문 닫으면 계정도 사라진다.
❓ 이 챕터의 질문
DID와 DID Document: 신원의 뿌리를 내가 쥔다
DID(Decentralized Identifier) 는 W3C 표준으로 정의된 새로운 형태의 식별자예요. 생긴 건 이래요.
did:ethr:0x742d35Cc6634C0532925a3b844Bc454e4438f44e
└┬┘ └┬─┘ └────────────────┬─────────────────────┘
스킴 메서드 메서드별 고유 식별자이메일 주소나 사번과의 결정적 차이는 발급 주체예요. 이메일은 구글이, 사번은 회사가 발급하고 회수할 수 있어요. DID는 2장에서 배운 키 쌍에서 내가 직접 만들어요. 누구의 허락도 필요 없고, 누구도 회수할 수 없어요.
DID를 조회하면 DID Document가 나와요. 여기에 담기는 건 개인정보가 아니라 검증 수단이에요.
- 이 DID의 소유를 증명하는 공개키 목록
- 서명 검증 방법
- 통신용 서비스 엔드포인트
블록체인은 여기서 공개키 조회처 역할을 해요. 2장에서 "공개키를 어떻게 신뢰할 수 있는 곳에 공개하나"가 숙제였는데, 변조 불가능한 장부가 그 답이 되는 거예요. 개인정보는 체인에 올라가지 않아요. 올라가는 건 검증 수단뿐이에요.
Verifiable Credential: 디지털 증명서
DID만으로는 "이 키의 주인이 나"라는 것만 증명돼요. "나는 운전면허가 있다"는 누군가가 발급해줘야 해요. 그게 VC(Verifiable Credential) 예요.
VC 생태계에는 세 역할이 있어요.
발급자(Issuer) ──VC 발급──> 보유자(Holder) ──VP 제출──> 검증자(Verifier)
예: 경찰청 예: 내 지갑 앱 예: 렌터카 업체- 발급자가 자신의 DID 개인키로 서명한 증명서(VC)를 만들어요. "이 DID의 보유자는 운전면허 소지자다."
- 보유자는 VC를 자기 지갑(스마트폰)에 보관해요. 발급자의 서버가 아니라요.
- 검증자는 제출받은 VC의 서명을 발급자의 공개키(DID Document에서 조회)로 검증해요.
핵심 전환이 여기 있어요. 기존에는 검증자가 발급기관 서버에 실시간으로 물어봐야 했어요("이 사람 면허 유효한가요?"). VC 모델에서는 증명서 자체가 암호학적으로 검증 가능해서, 발급기관을 거치지 않고도 진위를 확인해요. 발급기관은 내가 언제 어디서 면허를 제시했는지 알 수 없게 되고요.
VP와 선택적 공개: 필요한 것만 보여준다
실생활의 신원 증명에는 고질적인 과잉 공개 문제가 있어요. 편의점에서 성인 인증을 하려고 주민등록증을 내밀면, 이름·주민번호·주소까지 다 보여주게 되잖아요. 필요한 정보는 "성인이다" 하나인데요.
VP(Verifiable Presentation) 는 보유자가 가진 VC들에서 필요한 항목만 골라 묶어 제출하는 형식이에요. 운전면허 VC에서 생년월일만, 재직증명 VC에서 회사명만 꺼내서 하나의 제출물로 만들고, 보유자 본인의 서명을 더해요(제3자가 훔친 VC를 제출하는 걸 막기 위해서요).
여기서 더 나아간 게 선택적 공개(Selective Disclosure) 예요. 생년월일조차 보여주지 않고 "성인이다"라는 사실만 증명하는 것. 프라이버시 챕터에서 본 영지식증명이 바로 이 지점에서 신원 기술과 만나요.
| 단계 | 제출하는 것 | 노출 정보 |
|---|---|---|
| 실물 신분증 | 카드 전체 | 모든 기재 사항 |
| VP | 선택한 항목 | 골라낸 속성만 |
| ZKP 기반 선택적 공개 | 증명값 | 사실 여부만 (원본 값 비노출) |
핵심 요약
| 개념 | 역할 | 비유 |
|---|---|---|
| DID | 내가 만들고 소유하는 식별자 | 평생 쓰는 자체 발급 ID |
| DID Document | DID의 공개키·검증 수단 묶음 | 인감 등록부 |
| VC | 발급자가 서명한 디지털 증명서 | 위조 불가 증명서 원본 |
| VP | VC에서 필요한 항목만 묶은 제출물 | 필요한 면만 보여주는 봉투 |
| 선택적 공개 | 원본 값 없이 사실만 증명 | "성인 맞음" 도장 |
📚 참고자료 보기
- W3C: Decentralized Identifiers (DIDs) v1.0: DID 공식 표준
- W3C: Verifiable Credentials Data Model: VC 공식 표준
- 모바일 신분증 공식 사이트: 한국 정부 DID 기반 모바일 신분증
- ethereum.org: Decentralized identity: 이더리움 생태계의 DID 개요 (한국어)