# DID Ecosystem

# W3C DID Ecosystem

MyID2.0 플랫폼은 아래와 같은 entity들로 구성됩니다.

Verifiable credential data model의 자세한 내용은 아래 링크를 참고하십시오.

https://www.w3.org/TR/vc-data-model/ (opens new window)

image alt text

Issuer
Issuer는 credential을 발급합니다.

Holder
Holder는 credential 발급 요청을 하고, issuer로부터 받은 credential을 저장합니다. Verifier의 요청이 있을 때 credential에 서명을 한 presentation을 만들어 제출합니다.

Verifier
Verifier는 holder로부터 presentation을 제출 받아서 이를 검증하고 credential의 내용에 따라 서비스를 제공합니다.

Blockchain
Blockchain은 탈 중앙화된 분산 ID인 DID를 저장합니다.

# Credential, Presentation Message Exchange Concept

MyID platform에서 활동하는 entity들의 구성과 credential, presentation 관련 메세지를 활용하는 기본 개념은 아래와 같습니다.
Issuer와 verifier는 PARAMETA에서 제공하는 SDK를 이용해서 message를 만들고 message의 내용을 확인 할 수 있습니다.

image alt text

MyID2.0 플랫폼의 blockchain 에는 DID SCORE와 VC SCORE가 운용이 됩니다.

  • DID SCORE : DID를 저장 하고 관리합니다.
  • VC SCORE : Issuer가 발급하는 VC를 저장하고 관리합니다. (VC의 내용을 저장하지 않습니다. VC의 유효성 여부만 저장합니다.)

# Process

1. DID init
Credential을 발급하는 서버는 자신의 DID를 포함한 DID init message를 holder에게 전달 합니다. 이때 메세지 암호화를 위한 issuer의 암호화키를 같이 전달합니다. Holder는 issuer의 DID를 blockchain의 DID score를 통해 검증하고 신뢰할 수 있는 issuer인지 판단합니다.

2. DID auth
Holder는 DID init을 수락하고 holder의 암호화 키를 전달하기 위해 DID auth message를 issuer에게 전달 합니다. 이때 DID auth message는 issuer의 암호화키와 holder의 암호화키로 암호화 (opens new window)해서 전달합니다.

3. Create Credential
Issuer는 DID auth message를 복호화 하고, holder의 DID를 검증합니다. Issuer는 holder에게 발급할 credential을 만듭니다.

4. Register Credential
Issuer는 생성한 credential message 을 blockchain에 등록 합니다.

5. Credential
Issuer는 credential을 암호화 (opens new window)해서 holder에게 전달합니다.

6. Result
Holder는 credential message를 복호화 하고 검증합니다. 문제가 없으면 저장을 하고 그 결과를 issuer에게 전달합니다.

7. Request Presentation
Verifier는 credential을 holder로 부터 제출 받기 위해 request presentation message를 만들어서 holder에게 전달합니다. 이때 메세지 암호화를 위해 verfier의 암호화키를 같이 전달 합니다.
Holder는 verifier의 DID가 신뢰할 수 있는 entity인지 확인하고 DID의 주인이 보낸 message가 맞는지 확인하기 위해 blockchain을 이용해서 request presentation message의 서명을 검증을 합니다.

8. Create Presentation
Holder는 request presentation message를 분석해서 verifier가 어떤 credential과 어떤 claim을 요청하는지 파악합니다. 요청 사항에 맞는 credential이 존재하고, 사용자가 제출을 승인 하면 credential을 presentation message로 만듭니다. 그리고 이것을 암호화 합니다.

9. Presentation
Holder는 암호화된 presentation message를 verfier에게 제출합니다.

10. Verify Presentation
Verifier는 presentation message를 복호화 해서 presentation에 담긴 credential을 추출합니다. credential에서 verifier가 필요로 하는 claim정보를 추출할 수 있습니다.
이때 verifier는 presentation message의 유효성 검증을 아래와 같이 수행 합니다.

  • Issuer의 DID검증 : Credential을 발급한 issuer를 신뢰할 수 있는지 검증합니다.
  • Credential의 발급대상 검증 : Credential이 발급된 대상과 presentation을 제출한 대상이 동일한지 검증합니다.
  • Credential의 서명 검증 : Issuer가 발급한 credential이 맞는지 검증합니다.
  • Presentation의 서명 검증 : Holder가 제출한 presentation이 맞는지 검증합니다.