본문 바로가기
기술 단어장/Blockchain

[블록체인] DID document는 무엇이고 어떤 내용이 들어갈까?

by MFDO 2021. 8. 3.

개인적으로 공부한 내용이므로 틀린 내용이 존재할 수 있습니다.

오류내용은 댓글을 통해 알려주시길 바랍니다.

 

 

 

 

>> DID document란 무엇인가?

 - DID의 소유권을 증명할 수 있는 인증 수단이 저장되어있는 문서. - 그 외 DID에 관한 정보(contect, id, publicKey 등)이 저장되어있다. - 소유권 인증 시 이 DID document를 참조한다.

 

 

 

>> DID 소유권 증명 예시

 1) 사용자가 자신의 DID를 검증기관에 제시한다. ex) did:ethr:1234

 2) 검증기관은 이더리움에서 did:ethr:1234의 DID document를 획득한다.

 3) 검증기관은 자신의 DID가 맞는지 인증을 해보라는 Challenge를 전송한다.

 4) 사용자는 검증기관에게 Response를 전송한다.

 5) 검증기관은 DID document의 공개키 값을 이용해 사용자의 Response를 검증한다.

 

 

 

>> DID document에 작성되는 항목

DID document 작성 예제

 - context : document에 담겨있는 문서내용에 관한 정의

   ex) name이라는 요소가 있을 때, 이게 학교의 이름인지? 학생의 이름인지? 구분이 어렵기 때문에 이용

 

 - id : 지금 작성된 document가 어떤 DID에 대해 설명하는것인가

 

 - publicKye : 인증을 위한 공개키

   > 여러가지 인증 수단에 대한 공캐키가 존재할 수 있다.

 

 - authentication : 인증가능한 수단 리스트를 명시한다.

   > 사용 가능한 인증 수단 ex) RSA 비대칭키 인증, 생체인증, Authorization key  방식 등 

   > publicKey의 type 항목에서 해당 publicKey가 어떤 항목의 인증인지 밝혀준다.

 

 -  service : 현재 DID와 상호작용 가능한 서비스의 항목을 제시한다.

 

 

 

>> DID deactivation

Hyperldeger Indy에서 DID를 폐기하고, 비활성화를 위해서는 어떻게 해야할까?

   > DID와 DID document의 완전 삭제가 불가능하다.

   > 누구도 사용하지 못하는 방식으로 수행한다.

   > Doucment의 publicKey값을 0000...으로 변경한다.

   => 개인 키 값을 알 수 없기 때문에 안전한 방식이다.

 

 

 

>> DID resolver

DID document를 가져오기 위해 사용된다.

사용자 디바이스용 혹은 서버와 같은 외부 디바이스용 2가지로 개발될 수 있다.

 

<사용자 디바이스용 DID resolver>

 - 장점 : 사용자가 직접 DID document를 저장하고 불러온다 => 제 3의 기관이 없어 신뢰성 확대

 - 단점 : 사용자 디바이스에 DID resolver driver를 설치해야한다.

 

<사용자 디바이스용 DID resolver>

 - 장점 :  사용자가 디바이스에 부담이 덜 가고 원활한 서비스 제공 가능

 - 단점 :  다수의 사용자에게 DID document를 제공할 경우 해커의 표적이 되는 위험.

 

 

 

>> DID resolution

개별 저장된 DID document를 적절한 형채로 가공하는 방식.

Verse One, Hyperledger Indy, Bitcoin 3가지 플랫폼의 방식이 있지만 현 문서에는 Hyperledger Indy 방식만 설명.

<Hyperledger Indy의 DID Resolution>

 블록체인 노드를 Sovrin 노드라고 가정하였습니다.

 1) 사용자가 DID resolver에 DID document를 요청한다.

 

 2) DID resolver는 올바른 플랫폼(이더리움 등)에 DID document를 요청메시지를 생성하고, Sovrin 노드에 전송한다.

    이 때, DID document가 저장되는 것이 아니라, 각 항목이 트랜젝션으로 나뉘어 저장된다. 

 

 3) Sovrin 노드는 Method-specific identifier를 이용하여 올바른 트랜젝션을 이용하여 각 항목의 값을 검색한다.

    > NYM 트랜젝션 : 공개키 값 검색

    > ATTRIB 트랜젝션 : service 항목 값 검색

    > 추가적인 트랜젝션 관련 정보 

 

 4) Sovrin 노드는 요청한 값(publicKey, service)을 DID resolver에 반환해준다.

 

 5) DID resolver는 JSON양식으로 받은 값을 DID document 형식으로 변환하여 사용자에게 반환한다.

 

 

 

>> DID registrar

DID document를 등록할 수 있도록 도와주는 툴.

사용자 요구에 따라서 DID document를 등록할 플랫폼에 맞게 트랜잭션, API등을 생성하여 DID document를 등록한다.

 

 

댓글