W3C의 표준으로 DID 이해하기 1
0. 들어가기에 앞서
2018년 DID라는 개념을 접하고 찾아봤던 W3C 표준은 약 1년 반이 지난 지금의 내용과 상당히 달랐습니다. 그 사이 DID가 많은 관심을 받았고 그에 따라 내용이 상당히 고도화 되어 당시 Draft 버전이 이제는 Recommandation으로 발행되었습니다.
당시 개인적으로 공부했던 내용을 남겨볼 생각으로 끄적인 내용들을 생각보다 많은 분들이 봐 주셔서 감사한 마음도 있었습니다만, 지금의 내용과 다소 다른 내용도 있고 잘 모를 때 작성한 내용이라 자칫 오해를 드리지는 않을까 염려도 있었습니다.
그 와중에 SSI Meetup Korea를 함께 공부하던 분들과 조직하고 W3C 표준을 번역을 시작했고 DID와 관련된 표준인 Decentralized Identifiers v1.0(탈중앙식별자) 그리고 Verifiable Credentials Data Model v1.0(검증가능한 크리덴셜 데이터 모델)을 국문화 했습니다.
이제 국문화 작업이 마무리 된 만큼, 그리고 그 동안 DID에 대한 이해가 조금 더 생긴 만큼 많은 분들이 DID를 이해하는데 도움이 될까 하여 DID 관련 표준을 다시 쓰며 함께 살펴보고자 합니다.
내용은 거의 대부분 W3C의 표준 스펙 내용을 따라가지만 중간중간 이해를 돕기위해 내용들을 추가 할 예정입니다. 업무와 별도로 개인적으로 작성하는 것이다보니 자주 올리지는 못하겠지만 마무리를 지어볼 수 있도록 노력해 보겠습니다.
- Introduction
앞으로 우리가 지속적으로 이야기 할 크리덴셜(Credential)은 좁은 의미로는 신원 확인에 필요한 정보들을 의미하고, 보다 넓은 의미로는 특정 주체(사람, 조직, 동물, 사물 등 모든 것)와 관련된 모든 정보로 확대된다. 따라서 문맥에 따라서 크리덴셜을 해석해야 한다.
크리덴셜은 우리의 일상과 매우 밀접해 있고 빈번하게 사용된다. 운전할 때는 운전면허증을 통해 자격을 검증하고, 국가 간 이동을 할 때는 국가가 발급한 여권을 통해 신원을 주장한다. 이는 물리적 크리덴셜이다.
하지만 디지털 세상, 즉 웹에서는 이러한 신원이나 자격을 표현하기 어렵고 그 크리덴셜의 유효성을 보장하는 것도 쉽지 않다.
W3C의 Verifiable Credentials Data Model(검증가능한 크리덴셜 데이터 모델)에서는 웹에서 암호학적으로 안전하고, 프라이버시를 보장하며, 기계가 검증할 수 있는 방식으로 크리덴셜을 활용할 수 있는 표준 사양을 제시한다.
1.1. 검증가능한 크리덴셜이란 무엇인가?
물리적인 신분증과 같이 우리가 일상에서 사용하는 크리덴셜에는 다음과 같은 내용들이 포함된다.
- 신분증의 주체를 식별할 수 있는 정보 (주민등록번호, 이름, 사진 등)
- 해당 신분증을 발급한 기관의 정보 (정부, 경찰청, 외교부 등)
- 크리덴셜의 용도에 대한 정보 (주민등록증, 운전면허증, 여권 등)
- 발급한 기관이 보증하는 주체에 대한 속성정보 (국적, 생일, 면허 종류 등)
- 신분증의 제약조건에 대한 정보 (유효기간 등)
우리가 디지털 세계에서 사용하려는 크리덴셜도 물리적 세계의 신분증과 동일한 정보를 제공할 수 있어야 한다.
자기주권신원(Self-sovereign Identity)체계에서는 이를 Verifiable Credential (검증가능한 크리덴셜, 이하 VC) 이라고 하는데, 여기서의 핵심은 크리덴셜이 ‘검증가능한’ 것이라는 점이다.
블록체인과 같은 분산원장, 전자서명 등의 기술을 적용하여 내가 증명하고자 하는 정보가 정말 믿을 수 있는 정보라는 것을 검증할 수 있는 형식이 바로 VC이다.
1.2. 생태계 개요
VC Credential Model의 핵심 주체 및 관계는 아래 도식상의 모델로 표현된다.
본 모델은 SSI 체계에서 기본이 되는 모델이며, 내용도 어렵지 않으므로 각 역할에 대해 반드시 이해할 필요가 있다. 여기서는 개략적인 내용만 제시하며 앞으로 지속적으로 각 역할의 의미를 설명한다.
1) Issuer (발급자)
Holder의 신원을 보증하는 주체이다. 일반적으로 Holder에 대한 정보를 가지고 있으며 Holder가 요청하면 VC의 형태로 발급한다.
2) Holder (보유자)
자신의 신원을 주장하기 위해 VC를 보유하고 있는 주체이다. VC를 바탕으로 Verifiable Presentation(검증가능한 프레젠테이션, 이하 VP)를 생성할 수 있다.
3) Verifier (검증자)
Holder의 신원을 검증하려는 주체이다. 보통 자신의 서비스를 제공하기 위해 Holder에 대한 정보를 요구한다.
4) Verifiable Data Registry (검증가능한 데이터 저장소)
VC를 검증하기 위해 필요한 식별자, 키 쌍, 메타데이터 등을 저장하는 저장소이다. 현재 블록체인이 주로 사용되고 있으나 신뢰할 수 있는 방식이면 어떤 종류라도 가능하다.
궁금한 사항이나 바로 잡아주실 내용에 대해서는 의견 남겨주시면 감사하겠습니다.