5 분 소요

DID


Decentralized Identity(탈중앙 신원증명, DID)는 데이터의 주권이 개개인에게 있고, 개개인의 데이터를 분산원장기술을 기반으로 증명할 수 있는 기술이다.

따라서 DID는 데이터 저장소(Registry), 데이터 제공자(Provider), 인증기관(Certificate Authorities)을 분리하고, 탈중앙화 방식으로 동작할 수 있도록 설계된다.

DID의 근간이 되는 개념은 SSI(Self-Sovereign Identity)로, SSI의 개념을 탈중앙화 방식의 신원증명을 통해 구현한 것이다.

W3C와 DID

DID는 W3C(World Wide Web Consortium) 재단의 탈중앙 운동에서 등장하게 되었다. 이러한 운동은 거대한 플랫폼 기업이 등장함에 따라 개개인 데이터의 주권이 사용자 자신이 아닌 플랫폼 기업에 종속되는 현상에 따라 전개하게 되었다.

이 때, W3C 탈중앙운동에서 가장 중요한 지점은 데이터의 연동과 중앙화되지 않은 저장소에 개인의 신원을 보관하면서, 동시에 데이터의 무결성과 보안성을 확보하는 것이었는데 블록체인 기술이 등장하고 대중화됨에 따라 W3C에서는 DID를 구현할 때 블록체인 기반의 신원 인증을 표준화하게 되었다.

W3C 표준화 : DIDs(탈중앙화 식별자) 관련 개념 및 용어


DIDs는 검증가능하고 탈중앙화된 디지털 신원을 위한 새로운 형식의 식별자이다. 누구나 마스터키를 활용하여 DID Method로 자신의 주소를 생성 가능하다.

Identity(식별자)

개인 혹은 단체 등을 구별할 수 있는 고유 값

DID 문서(DID Document)

특정 DID를 어떻게 사용하는지에 관해 설명해 놓은 간단한 문서이다. 어떤 개인정보도 저장하지 않는다.

1

  • id : 이 did 문서를 설명하고 있는 id
  • publicKey : id의 제어권, 소유권 등을 증명할 수 있는 공개키
  • authentication : id의 제어권, 소유권 등을 증명할 수 있는 인증정보
  • service : 이 id와 상호작용 가능한 서비스들의 리스트

DID 메소드(DID Method)

특정 분산 원장 또는 네트워크에서 DID와 관련된 DID 문서들을 생성, 읽기, 갱신, 그리고 비활성화하는 메커니즘이다.

DID 형식

2

  • Scheme : 항상 did로, 이 주소가 did 스키마에 따른 것임을 나타낸다.
  • DID Method : did 메소드 이름이고, did는 메소드별로 다르게 처리된다.
  • DID Method-Specific Identifier : DID 메소드 안에서 사용되는 고유 아이디로, 가장 중요한 정보인 DID 문서가 어디있는지가 있다.

W3C 표준화 : DID Registry


만약 각 DID 메소드가 다르고, DID를 사용하는 블록체인 플랫폼이 모두 다른 상황에서 DID Document를 가져올 경우, 복잡해지는 문제를 W3C의 DID Registry에서 다룬다.

DID Registry

DIF(Decentralized Identity Foundation) 글로벌 조직

DIF는 DID 표준을 만들며 DID를 활용하는 소프트웨어를 만드는 중요한 역할을 한다.

DID 드라이버 컬렉션을 사용하여 구현 및 분산된 시스템에서 DID를 조회하고 사용하는 표준 방법을 제공하는 DIF Universal Resolver를 제공하며, 이는 DID와 연결된 DPKI 메타데이터를 캡슐화하는 DID Document Object(DDO)를 반환하는 서버이다.

W3C 표준화 : DID 인증(Authentication)


5

  1. 회사에서 DID 소유권자에게 DID 유무를 확인하기 위해 소유권자에게 challenge를 신청한다.
  2. 소유자는 회사에 응답으로 인증정보가 포함된 DID를 전달한다.
  3. 회사는 응답받은 DID로 Universal Resolver에서 DID Document를 가져온다.
  4. DID Document 안에 기록된 인증정보로 소유자에게 받았던 Response를 검사하여 확인한다.
  5. Response 검사를 통해 응답한 소유자가 DID를 가지고 있는 것인지 확인한다.

SSI와 DID

DID는 SSI를 탈중앙화된 방식으로 구현한 것이다.

SSI는 블록체인을 기반으로 자신을 증명할 수 있는 정보를 스스로 관리 및 보관하고, 신원 증명이 필요한 서비스를 이용할 때, 인증정보를 제 3자에게 맡기는 것이 아닌 사용자가 직접 관리하도록 하여 데이터 주권을 사용자에게 돌려주는 기술 개념이다.

SSI가 필요한 이유 : 신원 관리 모델


SSI가 필요한 이유는 신원 관리 모델에서 확인할 수 있는데, 신원 관리 모델의 종류는 다음과 같다.

6

  • 개별 신원 모델(Siloed Identity)
    • 개인이 개별 사이트 ID, Password를 관리해야 함
    • 개별 서비스 제공자 정보보호의무 가중, 천문학적 비용 발생
    • 개인정보 유출 우려
  • 연합형 신원 모델(Federated Identity)
    • 사용자의 편의성 제고
    • 글로벌 기업의 개인정보 독점적 확보
    • 사용자 개인정보에 대한 권리 주장 어려움
    • 개인정보가 독점되고 계속하여 유출 위험성 존재
  • 자기 주권 신원 모델(Self-Sovereign Identity)
    • 신원이 분산 관리되어, 이전 세대의 신원 관리 모델보다 가용성과 무결성이 높음
    • 통합된 분산원장 관리가 가능하다면 확장성이 더 높음
    • 신원확인 정보를 블록체인에 공유하여 신원확인이 필요한 서비스를 활용
    • 비밀번호를 잃어버렸을 경우, 다시 찾기 어려움

SSI 요소


SSI를 구성하는 4가지 개념

  • DIDs(Decentralized Identifier, 탈중앙화 식별자) : 검증가능하고 탈중앙화된 디지털 신원을 위한 새로운 형식의 식별자이다.
  • DID Auth(DID Authentication) : DID 소유자가 개인키를 가지고 있다는 것을 간단히 인증할 방법이다. (표준화 DIF에서 진행)
  • DKMS(Decentralized Key Management System, 탈중앙 키 관리 시스템) : 신원을 증명하는 데 사용하는 개인키를 어떻게 관리할 것인가를 다룬다.
  • Verifiable Credentials(검증가능한 크레덴셜) : 아이디의 소유자가 어떤 것을 할 수 있는 자격을 갖추었음을 검증하는 방법을 다룬다.

SSI를 구현하기 위한 요소

7

  1. Issuer(발행자) : 발행자
    • 신원정보를 발급하는 주체이다.
    • Verifiable Credential(검증가능한 크리덴셜, VC)을 발행하는 주체이며, 정보 주체의 요구에 의해 신원정보와 DID를 발급하는 기관이다.
    • 발행자는 발급한 정보에 대해 신뢰할 수 있는 신원정보를 전달한다.
  2. Holder(소유자) : 자격증명 소유자
    • 신원정보를 소유한 주체이다.
    • 정보 주체로 DID를 활용하여 본인의 신원을 증명하고자 하는 사용자이다.
    • 시스템에서는 DID를 발급 받고, 제출한다.
  3. Verifier(검증자) : 자격증명 검증자
    • 신원정보를 검증하는 주체이다.
    • 정보 주체인 Holder로부터 Verifiable Presentation(검증가능한 프레젠테이션, VP)을 받아 신원정보를 검증하는 주체이다.
    • DID로 신원을 확인한 후 검증자는 이 신원정보가 발급기관인 Issuer가 발급한 유효한 신원정보인지, 검증데이터 저장소를 통해 검증한다.
  4. Verifiable Data Registry(검증 데이터 저장소) : 블록체인 등
    • 정보 주체의 식별자와 Issuer의 인증서, 신원증명 해지내역, 신원증명 스키마 등이 등록된 분산원장 기반의 데이터 무결성이 확보된 저장소이다.
    • Verifiable Data Registry는 반드시 블록체인일 필요는 없으며, Holder, Issuer, Verifier가 합의한 분산원장이면 사용할 수 있다.

Verifiable Credential(검증가능한 크리덴셜, VC)

SSI 체계에서 디지털 세계에서 개인의 신원을 증명할 수 있는 체계를 검증가능한 크리덴셜(Verifiable Credential, VC)라고 한다.

검증가능한 크리덴셜의 목적은 디지털 세계에서 크리덴셜을 통해 물리적 세계의 신분증과 동일한 정보를 제공하는 것이다.

검증가능한 크리덴셜(Verifiable Credential) 구성요소


클레임(Claim)

디지털 세계에서 신원정보에 대한 각 단위 데이터를 클레임이라고 하며, 주체-속성:값의 구조를 가진다.

8

클레임은 다른 클레임과 결합하여 연결정보를 생성할 수 있다.

9

W3C 문서의 Credential

DID 체계에서는 Credential을 주체에 대한 하나 혹은 그 이상의 Claim으로 구성된 데이터의 집합이다.

Verifiable Credential(검증가능한 크레덴셜, VC)


탈중앙 신원체계에서는 단순히 Credential이 아닌 검증가능한 Credential이라고 표현한다. 구조는 다음과 같다.

10

  • Credential Metadata : Credential을 해석할 수 있도록 설명해주는 메타데이터
  • Claim(s) : 주체에 대한 Claim 집합
  • Proofs : Credential을 검증가능하도록 만드는 암호학적 요소들이 포함된 증명

이러한 요소를 통해 분산원장 상에 기록된 각 주체의 전자 서명을 확인하면서, 궁극적으로 개인이 제시하고 있는 신원정보가 발급된 사실과 다르지 않다는 것을 검증할 수 있도록한다. 따라서 검증가능한 크레덴셜이라고 한다.

Verifiable Credential 기본 구성 요소

11

위와 같이 Verifiable Credential은

  • 크리덴셜 메타데이터와 클레임을 포함하는 그래프
  • 전자서명인 디지털 증명을 포함하는 그래프

로 구성되며, 이를 통해 검증가능한 크레덴셜은 적합한 발급자인지 확인하기 위해

  • Issuer가 발급한 DID인지 진위여부
  • Holder의 DID인지 진위여부
  • 블록체인의 발급내역이 유효, 무효 여부
  • Schema 확인을 통해 제대로 된 형식인지

을 확인한다.

Verifiable Presentation(검증가능한 프레젠테이션, VP)


SSI에서는 최소한의 정보 공개를 원칙으로 하여 증명이 필요한 정보들로만 구성된 새로운 형식이 필요한데, 이것을 Verifiable Presentation이며, 구조는 다음과 같다.

12

13

VC 발행구조와 시나리오


자기신원인증과정

Issuer

  • Issuer는 holder에 대한 검증 가능한 크리덴셜(VC)를 발급하여 전달한다.
  • VC의 유효성을 확인할 수 있는 ID와 Schema의 발급내역을 블록체인에 기록한다.

Holder

  • Issuer에게 VC를 받고, 자신이 증명서를 받았다는 내용과 스키마 정보를 가져온다.
  • Verifier가 필요로 하는 정보를 담아 VP 형태로 보낸다.
  • Issuer에게 받을 때는 VC 형태, Verifier에게 보낼 때는 VP 형태이다.

Verifier

  • Verifier는 Holder에게 받은 VP 내용을 확인한다.
    • 블록체인
      • 발급 내역
      • Schema
    • VP
      • Issuer DID
      • Holder DID

e.g., DID 기술을 활용한 입사 지원 시나리오

14

  1. 입사지원자(holder)는 대학교(issuer)에 본인의 졸업 정보를 요청한다.
  2. 대학교(issuer)는 요청정보를 확인하고 문제가 없다고 판단되면 전자서명 후 입사지원자(holder)에게 졸업증명서(VC)를 발행한다.
  3. 이 때, 대학교(issuer)의 DID 정보가 졸업증명서(VC)에 함께 저장된다.
  4. 입사지원자(holder)는 인증서를 모바일 전자지갑에 보관하며, 입사 지원 시 인증서에 전자서명하여 지원기업(verifier)에 제출한다.
  5. 지원기업(verifier)는 입사지원자(holder)와 대학교(issuer)의 DID를 통해 블록체인에 저장된 전자서명 검증정보를 전달받아 졸업증명서(VC)의 졸업정보를 확인한다.

DID를 활용한 졸업증명서 개발

DID를 활용한 졸업증명서 개발 Solidity

본 포스팅은 코드스테이츠 BEB 과정을 수강하며 작성한 글입니다.

Reference
https://ssimeetupkorea.github.io/vc-data-model/