상세 컨텐츠

본문 제목

DID 와 DIDs(Decentralized identifiers, 탈중앙화 식별자)의 기본 개념들

Blockchain/DID

by Yongari 2023. 2. 21. 17:19

본문

 

 

 

DID 예시

 

did : url 스키마 식별자

did method : did 메서드(함수)

did method-specific identifier : did  메서드 구분자 

 

did : "did 메서드" : "did 메서드 구분자"

did:example:123456789abcdefghi

 

 

DIDs(탈중앙 식별자)

 

범용고유식별자 UUID(universally unique identifier, UUID)와 비슷한 개념으로 고유한 아이디 개념이다.

DID와 UUID의 차이점은 다음과 같다. 

 

URL과 동일하게, 주체에 대해 설명하는 일반 자원을 주소 분해하거나 역참조한다. 

URL을 역참조할 경우 반환하는 리소스와 다르게 DID문서는 일반적으로 DID 주체에 대한 인증을 가능하게 하는
암호학적 요소를 포함하고 있다. 

 

 

 

DID 문서

1. DID 문서는 DID를 어떻게 사용하는지 설명해놓은 간단한 문서다. 
2. DID 문서는 암호학적 요소, 검증 메서드, 서비스 엔드포인트 등으로 나타낼 수 있다.

3. 인증을 위한 정보들도 들어간다 (eg. public key)

 
다음 코드는 did 문서의 예시 코드다. 
id : did문서를 설명하는 아이디
publicKey : 아이디와 관련된 공개키 리스트
authentication(인증정보) : 이 아이디의 소유권을 증명하기 위한 정보
service : 이 아이디와 상호작용이 가능한 서비스 리스트 

 

{
  "@context": "https://example.org/example-method/v1",
  "id": "did:example:123456789abcdefghi",
  "publicKey": [{ ... }],
  "authentication": [{ ... }],
  "service": [{ ... }]
}

예시 2: Minimal self-managed DID document

 

탈중앙 식별자 Decentralized Identifiers (DIDs) v1.0

탈중앙 식별자 DID 1.0 한글 번역

ssimeetupkorea.github.io

{
  "@context": "https://www.w3.org/ns/did/v1",
  "id": "did:example:123456789abcdefghi",
  "authentication": [{
    // used to authenticate as did:...fghi
    "id": "did:example:123456789abcdefghi#keys-1",
    "type": "RsaVerificationKey2018",
    "controller": "did:example:123456789abcdefghi",
    "publicKeyPem": "-----BEGIN PUBLIC KEY...END PUBLIC KEY-----\r\n"
  }],
  "service": [{
    // used to retrieve Verifiable Credentials associated with the DID
    "id":"did:example:123456789abcdefghi#vcs",
    "type": "VerifiableCredentialService",
    "serviceEndpoint": "https://example.com/vc/"
  }]
}

 

 

일반 DID 구문

일반 DID 구문은 다음과 같다. 

did 용어는 다음과 같이 ABNF의 did 규칙을 따르는 URI를 말한다.  did-url이라는 용어는 did-url 규칙에 따라 정의된다.
did-url은 did로 시작하고 그 뒤에 하나 이상의 구성요소가 추가되는 url을 말한다. 

did                = "did:" method-name ":" method-specific-id
method-name        = 1*method-char
method-char        = %x61-7A / DIGIT
method-specific-id = *idchar *( ":" *idchar )
idchar             = ALPHA / DIGIT / "." / "-" / "_"
did-url            = did *( ";" param ) path-abempty [ "?" query ]
                     [ "#" fragment ]
param              = param-name [ "=" param-value ]
param-name         = 1*param-char
param-value        = *param-char
param-char         = ALPHA / DIGIT / "." / "-" / "_" / ":" /
                     pct-encoded

 

 

DID 등록(Registry)

 

DID를 등록할 때 did를 사용하는 블록체인 플랫폼이 모두 다른 상태에서 did 문서를 가져오면

굉장히 복잡해진다. 따라서 DIF를 이용해서 등록하게 된다.  그렇다면 DIF는 무엇일까?

 

 

DIF(Decentralized Identity Foundation) 글로벌 조직 

 

1. DIF는 전 세계 사용자들이 DID를 더욱 쉽게 사용할 수 있도록 지원하기 위해 만든 조직

2. DID 소유자가 agent일 때 DID Universal Resolver에서 DID문서를 뽑을 수 있다. 

3. DIF는 표준을 만들고 DID를 활용하는 소프트웨어를 만드는 역할을 하고 있다.

4. DIF 유니버셜 리졸버(DIF Universal Resolver)는 did 드라이버 컬렉션을 사용해서 
구현 및 분산화된 시스템에서 DID를 조회할 수 있게 제공합니다.

DIF 유니버셜 리졸버 : DID 드라이버 컬렉션을 사용해서 구현 및  분산된 시스템에서 did를 조회하고 사용하는 표준방법을 제공 

 

 

DID 인증(Authentication)

1. 회사에서 DID 소유자에게 did 증거요구(challenge)를 신청함
2. 소유자인 나는 회사에 응답으로 did를 전달

3. 회사는 응답받은 did로 Universal Resolver에서 DID document를 가져온다.  
4. did 문서 안에 기록된 인증정보로 소유자에게 받았던 응답을 검사해서 확인
5. 응답 검사를 통해 소유자가 did를 가지고 있는지 확인 

 

 

참고자료: https://www.slideshare.net/JaehoonJShim/ssi-introduction?qid=285d53be-70da-4868-93b1-8e8a3a52a648&v=&b=&from_search=1

 

SSI Introduction

SSI Introduction 이더리움 연구회 심재훈

www.slideshare.net

 

관련글 더보기