IT용어위키



분산ID

Decentralized IDs, DIDs

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

1. 기본 용어

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

2. 동작 절차

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

3. 구성 요소

3.1. 저장소

3.2. 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/"
  }]
}

3.3. 인증서 지갑

3.4. 자격 증명

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="
  }
}

4. 관련 표준

W3C에서 표준화를 진행중

  출처: 공대위키(공대위키에서 최신 문서 보기)
  * 본 페이지는 공대위키에서 미러링된 페이지입니다. 일부 오류나 표현의 누락이 있을 수 있습니다. 원본 문서는 공대위키에서 확인하세요!