Verifiable Credential의 Data참조 흐름 및 검증
Verifiable Presentation의 구성 요소 및 참조 흐름
Verifiable Credentail Model
이전에 올렸던 Verifiable Credential Model의 개념을 전체적으로 표현하자면 아래와 그림과 같다.
즉 Claim들이 모여서 Credential이 되는데 이를 검증(Proof)함으로써 Verifiable Credential이 만들어지고, Verfiable Credential을 참조하여 Presentation을 만들고 그것을 검증함으로써 Verifiable Presentation을 형성하게 되는 것이다.
주민등록증을 예로 들어보자. 주민등록증에는 아래와 같은 개인에 대한 정보들을 포함하고 있다.
- 이름
- 사진
- 주민등록번호 (생년월일, 성별, 출생등록지)
- 주소
- 기타 (등록일, 등록지, 변동사항)
위의 각 정보가 Claim이라고 하면, 주민등록증 상의 내용들은 Credential이 된다. Issuer가 Credential을 만든다고 하였으므로 여기서 Issuer는 국가기관이 된다.
Verifiable Credential은 이것에서 한단계 더 나아가 이것이 정말로 올바른 정보인지를 보여주기 위해 Issuer가 서명함으로써 Proof하는 것이다. 최종적으로 Presentation은 위 정보를 바탕으로 만들 수 있는 신원 정보이다. 주민등록번호를 바탕으로 우리는 주민등록번호를 보여줄 필요 없이 스스로가 성인임을 증명할 수 있다.
데이터 참조 및 검증 상세
Presentaion > Credential > Claim 으로의 참조 흐름을 조금 더 상세하게 그려보면 아래 그림과 같다.
A. Presentation > Credential Graph
Presentation ABC는 졸업과 관련된 신원을 검증하고자 하는 내용으로 보인다. Presentation ABC는 Credential 123을 참조하는데 Credential의 내용은 아래와 같은 정보로 이루어져 있다.
- Type: 졸업증명(AlumniCredential)
- Subject: Pat (신원증명 대상)
- Claim: Pat은 Example University의 졸업생이다 (신원 내용)
- Issuer: Example Univeristy (발행자)
- Issuance Date: 2010.01.01 (발행일)
B. Credential Graph > Credential Proof Graph
Credential을 검증하기 위해 참조하는 것은 Signature456이며 내용은 아래와 같은 정보로 이루어져 있다. 이 내용에 대해서는 Issuer가 주체가 된다. 위에서 나열 된 Credentail의 내용이 달라지거나 Issuer가 해당 내용을 폐기하게 되면 Signature Value 값이 달라지는 것을 활용해서 Credential에 대한 유효성을 검증하는 것으로 생각된다.
- Type: RsaSignature2018 (암호화 방식)
- Signature Value: BavEll0…3JT24= (암호화 결과 값)
- Nonce: 348dj239dsj328
- Creator: Example University (서명주체)
- Created Date: 2017.05.18 (서명일)
C. Presentation Graph > Presentation Proof Graph
위의 A, B 과정을 표현한 것이 Presentation Graph이다. Presentation 역시 Verifiable 하다는 것을 증명하기 위해 Holder의 검증 작업이 필요하다. Presenation ABC는 Signature8910을 참조하는데 Signature 내용은 아래와 같은 정보로 이루어져 있다.
- Type: RsaSignature2018 (암호화 방식)
- Signature Value: p2KaZ…8Fj3K= (암호화 결과 값)
- Nonce: d2348djsj3239
- Creator: Presenter (서명주체, 아마도 Pat)
- Created Date: 2018.01.15 (서명일)
사용자 입장에서의 인증 절차
- 하나 또는 그 이상의 Credential 발행
- Wallet과 같은 보관소(Credential Repository)에 Credential들을 보관
- Credentail을 조합하여 Verifier가 요구하는 Verifiable Presentation을 제시
- Verifier가 Presentation을 검증
본 글은 아래 글을 바탕으로 쓰여진 글입니다. 이전 글을 참조하시면 이해에 도움이 되실 것입니다.
1. 자기 주권 신원과 구성 요소 (Self-sovereign Identity)
2. Verifiable Credential Model의 개념
DISCLAIMER
해당 내용은 W3C의 Verifiable Credential Data Model 1.0 (As of 19.02.10)의 내용을 정리한 것입니다. 각 용어는 제가 정의하기 보다는 영문 그대로 사용했습니다. 상세 내용은 위 W3C링크를 참조해 주시기 바랍니다.
현재 위 개념은 다양한 방식으로 명명되고, 해석되는 확고한 개념이 아닙니다. 당연히 이 글에서 언급하는 모든 개념도 아직 완전한 개념으로써 제시하는 것이 아닌 학습의 과정에서 필자가 이해한 방식으로 공유함을 이해해 주시길 미리 양해 부탁드립니다.