분산 ID: Difference between revisions

From CS Wiki
No edit summary
Line 1: Line 1:
[[분류:블록체인]]
[[분류:블록체인]]
;Decentralized IDs, DIDs
;Decentralized IDs, DIDs


분산원장을 이용해 중앙등록기관 없이 시장 자율로 운영되는 확장성 있는 신원 증명 체계
분산원장을 이용해 중앙등록기관 없이 시장 자율로 운영되는 확장성 있는 신원 증명 체계


== 기본 용어 ==
==기본 용어==
* 이슈어(Issuer): 자격 증명 발급자
* 주체(Subject): 자격을 가진 주체
* 보유자(Holder): 자격 증명 소지자
** 주체와 보유자는 다를 수도 있기 때문에 구분한다. '예를 들어 홍길동의 학력은 석사다' 라는 자격 증명을 임꺽정이 가질수도 있다. cf. 국내의 법정대리인, 위임자 개념
* 검증자(Inspector): 자격 증명 검증자


== 동작 절차 ==
*이슈어(Issuer): 자격 증명 발급자
# 홍길동은 입사지원을 위해 대학교에 학위 증명서 발급을 요청한다.
*주체(Subject): 자격을 가진 주체
# 대학교는 "홍길동은 석사이다"라는 내용의 증명서를 발급한다.
*보유자(Holder): 자격 증명 소지자
#* 증명서엔 다음의 내용이 포함된다.
**주체와 보유자는 다를 수도 있기 때문에 구분한다. '예를 들어 홍길동의 학력은 석사다' 라는 자격 증명을 임꺽정이 가질수도 있다. cf. 국내의 법정대리인, 위임자 개념
## DID: 증명서 고유 ID
*검증자(Inspector): 자격 증명 검증자
## 발급 정보: 발급한 대학교 명
## 자격 정보: "홍길동은 석사이다"라는 사실
## 검증 정보: 대학교의 개인키로 생성한 서명값([[전자 서명|대학교의 공개키로 검증 가능]])
# 대학교는 발급한 증명서 고유 ID와 공개키를 블록체인에 올려둔다.
# 홍길동은 입사지원 시 증명서를 제출한다.
# 입사지원을 받는 회사는 증명서의 고유 ID(DID)로 블록체인을 조회한다.
# 조회된 공개키를 이용해 전자 서명값을 검증하여 대학교에서 발급한 증명서가 맞는지 확인한다.


== 구성 요소 ==
==동작 절차==
=== 저장소 ===
 
#홍길동은 입사지원을 위해 대학교에 학위 증명서 발급을 요청한다.
#대학교는 "홍길동은 석사이다"라는 내용의 증명서를 발급한다.
#*증명서엔 다음의 내용이 포함된다.
##DID: 증명서 고유 ID
##발급 정보: 발급한 대학교 명
##자격 정보: "홍길동은 석사이다"라는 사실
##검증 정보: 대학교의 개인키로 생성한 서명값([[전자 서명|대학교의 공개키로 검증 가능]])
#대학교는 발급한 증명서 고유 ID와 공개키를 블록체인에 올려둔다.
#홍길동은 입사지원 시 증명서를 제출한다.
#입사지원을 받는 회사는 증명서의 고유 ID(DID)로 블록체인을 조회한다.
#조회된 공개키를 이용해 전자 서명값을 검증하여 대학교에서 발급한 증명서가 맞는지 확인한다.
 
==구성 요소==
===저장소===
 
===DID 문서===


=== DID 문서 ===
;did documents
;did documents
* 블록체인에 올라가는 자격 증명을 검증할 수 있는 문서
 
* 개인정보는 포함하지 않고 검증 체계, 공개키 등만 포함
*블록체인에 올라가는 자격 증명을 검증할 수 있는 문서
*개인정보는 포함하지 않고 검증 체계, 공개키 등만 포함
<pre>
<pre>
{
{
Line 50: Line 55:
</pre>
</pre>


=== 인증서 지갑 ===
===인증서 지갑===
=== 자격 증명 ===
===자격 증명===
 
;Verifiable Claims에서 Verifiable Credentials로 변경
;Verifiable Claims에서 Verifiable Credentials로 변경
* 증명하고자 하는 자격이 담겨있는 '''텍스트 기반의 인증서'''이다.
 
* 암호학적인 방법으로 증명 가능하게 되어 있다.
*증명하고자 하는 자격이 담겨있는 '''텍스트 기반의 인증서'''이다.
** 이슈어를 명시하고, 이슈어의 개인키로 서명한 값을 포함한다.
*암호학적인 방법으로 증명 가능하게 되어 있다.
** 블록체인 등 신뢰되는 저장소에서 공개키를 조회 해 검증할 수 있다.
**이슈어를 명시하고, 이슈어의 개인키로 서명한 값을 포함한다.
* 표준은 [[JSON-LD]]로 표현되어 있으나 포맷엔 제한이 없다.
**블록체인 등 신뢰되는 저장소에서 공개키를 조회 해 검증할 수 있다.
* 예시는 아래와 같다.
*표준은 [[JSON-LD]]로 표현되어 있으나 포맷엔 제한이 없다.
*예시는 아래와 같다.
<pre>
<pre>
{
{
Line 88: Line 95:
</pre>
</pre>


== 관련 표준 ==
== 제약사항 ==
{| class="wikitable"
|+
!구분
!제약사항
!설명
!해결방안
|-
|기술적 제약
|오라클 문제
|
|
|-
|
|식별자 문제
|
|
|-
|
|영지식 증명 구현
|
|
|-
|정책적 제약
|개인정보 보호법제
|
* 분산ID 식별자에 대한 개인정보 해석 가능성
* 분산 원장 인프라에 대한 개인정보 위수탁, 제3자 제공 해석
|
|-
|
|제도 기반 부족
|
|
|-
|
|인정 제도
|
|
|-
|시장 제약
|얼라이언스 난립
|
|
|-
|
|신뢰된 원장 부재
|
|
|-
|
|공통 표준 부재
|
|
|-
|
|검증 인프라 부족
|
|
|}
 
==관련 표준==
 
;W3C에서 표준화를 진행중
;W3C에서 표준화를 진행중
* [https://w3c-ccg.github.io/did-spec/ Decentralized Identifiers (DIDs)]
 
* [https://www.w3.org/TR/verifiable-claims-data-model/ Verifiable Credentials Data Model]
*[https://w3c-ccg.github.io/did-spec/ Decentralized Identifiers (DIDs)]
* [https://www.w3.org/TR/verifiable-claims-use-cases/ Verifiable Claims Use Cases]
*[https://www.w3.org/TR/verifiable-claims-data-model/ Verifiable Credentials Data Model]
*[https://www.w3.org/TR/verifiable-claims-use-cases/ Verifiable Claims Use Cases]

Revision as of 22:52, 6 May 2021


Decentralized IDs, DIDs

분산원장을 이용해 중앙등록기관 없이 시장 자율로 운영되는 확장성 있는 신원 증명 체계

기본 용어

  • 이슈어(Issuer): 자격 증명 발급자
  • 주체(Subject): 자격을 가진 주체
  • 보유자(Holder): 자격 증명 소지자
    • 주체와 보유자는 다를 수도 있기 때문에 구분한다. '예를 들어 홍길동의 학력은 석사다' 라는 자격 증명을 임꺽정이 가질수도 있다. cf. 국내의 법정대리인, 위임자 개념
  • 검증자(Inspector): 자격 증명 검증자

동작 절차

  1. 홍길동은 입사지원을 위해 대학교에 학위 증명서 발급을 요청한다.
  2. 대학교는 "홍길동은 석사이다"라는 내용의 증명서를 발급한다.
    • 증명서엔 다음의 내용이 포함된다.
    1. DID: 증명서 고유 ID
    2. 발급 정보: 발급한 대학교 명
    3. 자격 정보: "홍길동은 석사이다"라는 사실
    4. 검증 정보: 대학교의 개인키로 생성한 서명값(대학교의 공개키로 검증 가능)
  3. 대학교는 발급한 증명서 고유 ID와 공개키를 블록체인에 올려둔다.
  4. 홍길동은 입사지원 시 증명서를 제출한다.
  5. 입사지원을 받는 회사는 증명서의 고유 ID(DID)로 블록체인을 조회한다.
  6. 조회된 공개키를 이용해 전자 서명값을 검증하여 대학교에서 발급한 증명서가 맞는지 확인한다.

구성 요소

저장소

DID 문서

did documents
  • 블록체인에 올라가는 자격 증명을 검증할 수 있는 문서
  • 개인정보는 포함하지 않고 검증 체계, 공개키 등만 포함
{
  "@context": "https://w3id.org/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
    "type": "VerifiableCredentialService",
    "serviceEndpoint": "https://example.com/vc/"
  }]
}

인증서 지갑

자격 증명

Verifiable Claims에서 Verifiable Credentials로 변경
  • 증명하고자 하는 자격이 담겨있는 텍스트 기반의 인증서이다.
  • 암호학적인 방법으로 증명 가능하게 되어 있다.
    • 이슈어를 명시하고, 이슈어의 개인키로 서명한 값을 포함한다.
    • 블록체인 등 신뢰되는 저장소에서 공개키를 조회 해 검증할 수 있다.
  • 표준은 JSON-LD로 표현되어 있으나 포맷엔 제한이 없다.
  • 예시는 아래와 같다.
{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://www.w3.org/2018/credentials/examples/v1"
  ],
  "id": "http://example.gov/credentials/3732",
  "type": ["VerifiableCredential", "UniversityDegreeCredential"],
  "issuer": "https://example.edu",
  "issuanceDate": "2010-01-01T19:73:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "BachelorDegree",
      "name": "<span lang='fr-CA'>Baccalauréat en musiques numériques</span>"
    }
  },
  "proof": {
    "type": "RsaSignature2018",
    "created": "2018-06-18T21:19:10Z",
    "verificationMethod": "https://example.com/jdoe/keys/1",
    "signatureValue": "BavEll0/I1zpYw8XNi1bgVg/sCneO4Jugez8RwDg/+
      MCRVpjOboDoe4SxxKjkCOvKiCHGDvc4krqi6Z1n0UfqzxGfmatCuFibcC1wps
      PRdW+gGsutPTLzvueMWmFhwYmfIFpbBu95t501+rSLHIEuujM/+PXr9Cky6Ed
      +W3JT24="
  }
}

제약사항

구분 제약사항 설명 해결방안
기술적 제약 오라클 문제
식별자 문제
영지식 증명 구현
정책적 제약 개인정보 보호법제
  • 분산ID 식별자에 대한 개인정보 해석 가능성
  • 분산 원장 인프라에 대한 개인정보 위수탁, 제3자 제공 해석
제도 기반 부족
인정 제도
시장 제약 얼라이언스 난립
신뢰된 원장 부재
공통 표준 부재
검증 인프라 부족

관련 표준

W3C에서 표준화를 진행중