DID(Decentralized ID)는 어떻게 동작할까?

DID의 기본적인 동작 원리에 대해 정리해 봅니다. DID 관련 표준화를 진행하고 있는 W3C의 Decentralized Identifiers 1.0(번역본)과 Verifiable Credential Data Model 1.0 스펙을 중심으로 살펴보겠습니다. 이 글은 깊이 있는 내용을 다루지 않고, 기본 이해를 돕기 위해 작성되었기 때문에 많은 세세한 사항들이 생략되어 있습니다.

W3C 로고

TL;DR

  • DID의 아이디는 DID 문서의 위치를 나타냅니다.
  • DID 문서에는 아이디를 인증하기 위한 정보가 들어 있습니다.
  • DID 문서는 (보통) 블록체인에 저장됩니다.
  • 개인 정보는 Verifiable Credential에 들어 있습니다.
  • Verifiable Credential은 (지갑과 같은) 안전한 곳에 저장됩니다.
  • Verifiable Credential 중 증명하고 싶은 정보만 모아 제출합니다.
  • 모아서 제출하는 증명 정보를 Verifiable Presentation이라고 부릅니다.

DID의 아이디 형식

먼저 DID에서 사용하는 아이디는 아래와 같이 생겼습니다.

콜론(:)으로 구분된 세 파트로 이루어집니다.

  • “did” : 무조건 did로 시작하며, 이 주소가 DID 스키마를 따를 것임을 나타냅니다.
  • “example” : DID 메소드 이름입니다. DID는 메소드 별로 다르게 처리되며 등록된 DID 메소드는 여기에서 찾아볼 수 있습니다.
  • “123456789abcdefghi” : DID 메소드 안에서 사용되는 고유 아이디입니다.

DID의 아이디가 주는 가장 중요한 정보는 “DID 문서가 어디 있는지”입니다. 이 아이디와 관련된 정보는 DID 문서에 들어있습니다.

DID 문서에 담겨 있는 내용

DID 문서는 다음과 같은 형태를 띄고 있습니다. 보통 블록체인과 같은 분산원장에 저장되지만, 꼭 블록체인에 저장해야 하는 것은 아닙니다.

DID 문서에 들어 있는 정보들 다음과 같습니다. 가장 핵심이 되는 정보는 아이디의 제어권, 소유권 등을 증명할 수 있는 공개키와 인증 정보입니다.

  • id : 이 DID 문서가 설명하고 있는 아이디입니다.
  • 공개키 : 이 아이디와 관련된 공개키의 리스트가 있습니다.
  • 인증 정보 : 이 아이디의 소유권을 증명하기 위한 정보입니다. 예를 들어 “나열한 공개키 중 첫번째 공개키로 이 아이디를 인증할 수 있다”는 정보가 들어 있습니다.
  • 서비스 : 이 아이디와 상호작용이 가능한 서비스들의 리스트를 나타냅니다.

참고로 실제 DID 문서는 다음과 같이 생겼습니다.

Verifiable Credential

DID 문서에는 신원을 증명하기 위한 개인 정보가 들어 있지 않습니다. 그렇기 때문에 블록체인과 같은 공개된 공간에 저장할 수 있습니다. 실제 신원과 관련된 정보는 Verifiable Credential(증명가능자격)에 나타나 있습니다.

Verifiable Credential 구조 예시 (https://www.w3.org/TR/vc-data-model/#credentials)

Verifiable Credential에는 크게 다음과 같은 정보가 포함됩니다.

  • 발급자 정보 : 발급자의 아이디, 이름 등의 정보가 들어갑니다.
  • 자격 정보들 : 신원에 대한 정보가 여기 포함됩니다. 이름, 나이, 학위 등과 같은 정보 뿐 아니라, 부모, 친구와 같은 관계 정보도 포함할 수 있습니다.
  • 발급자 서명 (proof) : 발급 정보를 증명하기 위한 발급자의 서명입니다.

당연한 이야기지만 다양한 발급 기관으로부터 Verifiable Credential을 받을 수 있습니다. 신원 정보를 여러 개의 Verifiable Credential로 나누어 발급 받는 것도 가능합니다.

Verifiable Credential에는 개인 정보가 들어 있기 때문에 지갑과 같은 안전한 곳에 저장하거나 암호화된 형태로 저장해야 합니다.

Verifiable Presentation

신원을 증명할 때에는 Verifiable Credential을 직접 제출하지 않고 증명하고 싶은 정보만 모아서 제출하게 됩니다. 예를 들어 나이만 증명하고자 한다면 나이 정보가 포함된 Verifiable Credential만 제출하고 이름이나 다른 추가 정보가 들어 있는 Verifiable Credential은 제출하지 않을 수 있습니다.

즉 필요한 Verifiable Credential을 모아서 제출하게 됩니다. 이를 Verifiable Presentation이라고 합니다.

Verifiable Presentation 개념

Verifiable Presentation에는 제출하는 사람의 서명이 포함됩니다. Verifiable Presentation을 받은 사람(검증자)은 제출한 사람의 서명과 Verifiable Credential의 서명을 검증하여 제출한 사람의 신원을 확인하게 됩니다.

끝으로..

간단하게 DID의 동작 방식을 정리해보았습니다. 기본 컨셉은 그리 복잡하지 않습니다. 하지만 한 단계 깊이 들어가면 고민해봐야 할 문제들이 있습니다. 예를 들어 프라이버시와 보안 관점에서 보자면 DID에서 가장 보호되어야 할 정보는 서명을 위한 개인키와 Verifiable Credential 입니다.

그런 내용들을 추가로 정리해보면 좋을 것 같습니다.

디센트 채널 링크

공식 웹사이트 : https://dcentwallet.com/

미디엄 : https://medium.com/dcentwallet

트위터 : https://twitter.com/DCENTwallets

페이스북 : https://www.facebook.com/dcentwallet

유튜브 : https://www.youtube.com/channel/UCKnYqiM3g3iaaAKcRZf-kbA

--

--

Minho, Yoo | D'CENT wallet & WEPIN wallet
IOTRUST : Team Blog

Interested in Blockchain Tech. Developing Cryptocurrency wallet D’CENT and WEPIN. Learning is best way to improve.