DID와 SSI, VC

citron03·2022년 3월 30일
1

블록체인

목록 보기
13/19

DID

  • DID(Decentralized Identity)는 탈중앙 신원증명으로, 데이터의 주권이 개개인에 있고, 필요한 때 그 데이터를 중앙화된 시스템을 거치지 않고 증명할 수 있는 기술을 의미한다.
  • 분산 원장 기술(Distributed Ledger Technology, DLT)을 기반으로 사용자 정보를 저장하여 안전하고 편리하게 인증이 이루어지도록 한다.
  • DID 기술로 중앙화된 레지스트리(데이터 저장소), 데이터 제공자(Provider), 인증기관(Certificate Authorities)들을 분리할 수 있고, 중앙화된 방식이 탈중앙화 방식으로 동작할 수 있도록 설계된다.
  • W3C(World Wide Web Consortium)가 데이터 탈중앙화를 위해서 DID관련 문서를 표준화하였다.
    🍇 W3C는 월드 와이드 웹을 위한 표준을 개발하고 장려하는 조직이다.

DIDs, Decentralized identifiers

  • DIDs, 탈중앙화 식별자는 검증 가능하고 탈중앙화된 디지털 신원을 위해서 만들어진 새로운 형식의 식별자이다.
    🍔 W3C는 DIDs로 DID를 실현할 수 있는 기술에 대한 표준화를 설명한다.
  • DIDs는 누구나 DID 메서드로 자신의 주소를 만들 수 있다.
  • DIDs는 마치 Id와 비밀번호처럼, 주소이면서 마스터키를 활용하여 만들 수 있다.

🥭 W3C DID 표준에서 DIDs는 identity, DID Document, DID Method로 구성된다.

  • identity는 개인 혹은 단체나 법인을 구별할 수 있는 고유값이다.
    (마치 이메일 주소가 고유한 식별자가 되는 것과 유사하다)

  • DID Document에 특정 DID를 어떻게 사용하는지 명시되어 있다.
    🧆 각 DID 문서는 암호학적 요소와 검증 메소드, 서비스 엔드 포인트 등으로 표현된다.
    🧆 DID identity와 주체가 상호작용을 하기 위한 서비스 엔드 포인트들을 포함한다.
    🧆 DID 문서에서 가장 중요한 점은 DID 인증정보가 들어간다는 점이다. (공개키와 인증정보)

  • DID Method는 특정 분산원장이나 네트워크에서 DID와 관련된 DID documents들을 생성, 읽기, 갱신, 비활성화 하는 메커니즘이다. (CRUD 작업)

  • DID 식별자는 did:example:identity1234 와 같은 형식으로 이루어져 있다.
    🥪 did는 이 문자열이 did임을 나타내고, 이 주소가 did scheme에 따른 것임을 나타낸다. DID는 항상 did로 시작한다.
    🥪 example은 did 메서드의 이름을 나타내고, did는 메서드별로 다르게 처리된다.
    🥪 identity1234는 did 메서드 안에서 사용되는 고유한 아이디이다.

  • did 아이디가 주는 가장 중요한 정보는, DID 어디에 존재하는지에 대한 정보이다.

DID Document

  • DID 문서 내용의 핵심 정보는 id의 제어권, 소유권 등을 증명할 수 있는 공개키와 인증 정보이다.

  • ID와 관련된 정보는 DID document에 담긴다.

  • id는 did문서를 설명하고 있는 아이디를 의미한다.

  • publicKey에 아이디와 관련된 공개키의 리스트 정보가 담긴다.

  • authentication에 아이디의 소유권을 증명하기 위한 정보가 담긴다.

  • service에 이 아이디와 상호작용이 가능한 서비스들의 리스트에 대한 정보가 담긴다.

  • 각 DID 메서드가 모두 다르고, DID를 사용하는 블록체인 플랫폼이 모두 다른 상황에서 DID 문서를 가져온다면 매우 복잡해지는데, 이러한 문제점을 해결하고자 한 방법이 W3C 공식문서 DID Registry에 담겨있다.

DIF(Decentralized Identity Foundation)

  • DIF는 전 세계 사용자들이 DID를 쉽게 사용할 수 있도록 지원하기 위해 만들어진 조직이다.
    🥚 MS, IBM, Master Card, Sovrin, uport, Civic 등의 회사들이 가입하고 있다.

  • DID 소유자가 agent일 때, DID를 통해서 universal resolver에서 DID 문서를 얻을 수 있다.

  • DIF는 사용자의 편의성과 DID 표준을 만들며, DID를 활용한 소프트웨어를 만드는 중요한 역할을 한다.

  • DID 소유자의 소유권을 Universal Resolver를 통해 받은 DID document에서 인증정보를 확인한다.

  • 소유자가 제시한 DID와 DID document의 기록된 정보를 서로 확인하여 소유자가 제시한 정보의 진위여부를 확인한다.

SSI(Self Sovereignty Identity)

  • DID는 기존의 중앙화된 인증방식에서 벗어나 탈중앙화 방식의 신원 증명을 통해서 스스로 신원 증명에 대한 권한을 갖는다는 개념인 SSI을 현실화하기 위해 사용된다.
  • DID는 블록체인을 기반으로 자신을 증명할 수 있는 정보를 스스로 관리, 보관하며 신원 증명이 필요한 서비스를 이용할 때, 인정정보를 제삼자가 아니라, 스스로 관리하도록 하여 데이터 주권을 사용자가 갖게하는 SSI의 일종이다.
    🥗 SSI자기 주권 신원을 의미한다. 따라서, 스스로 신원에 대한 권리를 가지며 공개 대상과 범위를 선택할 수 있다.
    🥗 개인정보 발급 내역이 분산원장(블록체인)에 저장된다.
  • 다만, SSI는 초기 설정이 어려운 단점이 있다.

SSI가 형성되기 위한 4가지 요소로 DID(Decentralized identifier), DID Auth(DID Authentication), DKMS(Decentralized Key Management System), VC(Verifiable Credentials)가 있다.

SSI를 구성하기 위한 네 가지 요소로 Issuer(신원 정보를 발행하는 주체), Holder(신원 정보를 소유한 주체), Verifier(신원 정보를 검증하는 주체), Verifiable data Registry(블록체인과 같은 분산원장 - 검증테이터를 저장하는 공간)가 있다.

VC(Verifiable Credential)

  • Credential은 신원 확인에 필요한 정보이다.

  • 기존의 물리적 credential이 가지는 한계를 극복하고자 나온 표준이 W3C Verifiable Credentails Data Model이다.
    🫕 물리적 credential은 디지털 세계에서 신원과 자격 증명, 유효성의 보장이 어렵다.

  • SSI에서 사용되는 VC는 디지털 세계에서 credential을 물리적 세계의 신분증과 동일한 정보를 제공하기 위해서 만들어졌다.
    🍿 VC를 이용하여 검증이 가능하다.
    🍿 VC는 검증 가능한 크리덴셜을 의미한다.

VC의 구성요소

Claim(클레임)은 신원 정보를 데이터로 표현한 것으로, 주체-속성, 값의 구조를 가진다.

🍝 ex. 하나의 클레임의 예로, A라는 Subject(주체)가 있을 때, 이 주체의 이름이라는 Property(속성)은 홍길동이라는 value(값)를 가진다.

  • 단위 클레임은 다른 클레인과 결합하여 Graph of Information(연결 정보)를 생성할 수도 있다.

Credential(크리덴셜)은 Subject(주체)에 대한 하나 또는 그 이상의 클레임으로 이루어진 집합을 의미한다.

  • 예를 들면, 주민등록증의 신원 정보로 이름, 주민등록번호, 주소, 발급일자, 발급 주체 등이 담겨있고, 각 신원정보를 Claim이라 할 수 있다.

  • Claim(클레임)들이 모여서 Credential(크리덴셜)이 되고, 크리덴셜로 신원을 검증할 수 있다.

🍙 탈중앙신원체계에서는 단순 Credential이 아니라, Verifiable Credential라고 표현한다.

VC(Verifiable Credential)은 Credential Metadata(Credential의 해석을 돕는 메타데이터), Claims(하나 또는 그 이상의 주체에 대한 클레임), Proofs(Credential을 검증할 수 있게 하는 암호학 요소들이 포함된 증명)으로 구성된다.

  • 궁극적으로 개인이 제시한 신원정보가 발급된 사실과 일치함을 검증할 수 있도록 한다.

VC는 다음과 같은 4가지를 검증한다.

  • Issuer DID인지 진위여부를 확인한다.
  • holder DID인지 진위여부를 확인한다.
  • 블록체인의 발급내역이 유효한지, 아니면 무효한지 검증한다.
  • Schema(스키마) 확인을 통해 형식이 맞는지 확인한다.

VC는 모든 클레임이 포함되어 있고, 보통의 경우 모든 정보를 제공할 필요는 없다.

이럴 때, 자기 주권 신원에서 최소한의 정보 공개를 원칙으로 증명이 필요한 정보들로만 구성된 새로운 형식, VP(Verifiable Presentation), 검증가능한 프레젠테이션을 사용한다.

참고 자료 출처 : 코드 스테이츠

2023.7.27

ChatGPT를 사용하여 DID, VC, VP에 대한 예제를 만들었는데, 이해하기 좋은 재밌는 예제가 나와 기록하였다.

🍃

물건을 판매하는 온라인 쇼핑몰에서의 유머러스한 예제로 설명해보겠습니다!

예제 시나리오 :

  1. 강아지들을 판매하는 "HappyPaws 동물샵"(발행자, Issuer)은 강아지를 구매한 고객들에게 강아지의 출생증명서(VC)를 발급합니다. 출생증명서에는 HappyPaws 동물샵의 서명이 포함되어 있어서 VC가 HappyPaws 동물샵에서 발급된 것임을 확인할 수 있습니다. 또한, 이 VC는 분산원장에 저장되어 VC의 무결성과 신뢰성이 보장됩니다.

  2. 고객인 "강아지맘"(학생 A)은 자신이 구매한 강아지의 출생증명서(VC)를 사용하여 강아지에 대한 프레젠테이션(VP)을 만듭니다. VP에는 VC와 강아지맘의 DID가 포함되어 있어서 강아지맘이 강아지의 주인임을 증명합니다.

  3. 강아지맘은 강아지 커뮤니티 사이트에 강아지 사진과 함께 VP를 업로드합니다. 이렇게 업로드된 VP를 보고 다른 사용자들은 "강아지맘이 진짜 강아지를 구매했구나!"라고 유머를 덧붙이며 강아지를 칭찬합니다.

  4. 강아지 사랑하는 사람들의 커뮤니티 회원인 "행복한강아지들" 이메일 뉴스레터에는 강아지들의 VP와 함께 "오늘의 인기 강아지들"이라는 랭킹 기능이 추가됩니다. 이 랭킹은 VP를 분산원장에서 검증하여 신뢰성 높은 강아지들이 상위에 올라가게 됩니다.

  5. 다른 사용자들은 이 뉴스레터를 보며, 강아지들의 사랑스러운 모습에 반하며 댓글과 좋아요를 남깁니다. VP의 검증을 통해 강아지들에 대한 정보가 신뢰성을 가지고 있기 때문에, 커뮤니티 회원들은 믿고 즐겨 사용하는 커뮤니티가 되었습니다.

강아지의 출생증명서(VC)를 발급받은 강아지맘이 자신의 DID와 함께 VP를 만들어 강아지의 주인임을 증명하고 커뮤니티에서 신뢰성 있는 정보로 활용하는 내용입니다.

이렇게 하여, HappyPaws 동물샵이 발행한 출생증명서(VC)를 분산원장과 DID를 활용하여 강아지의 소유자를 신뢰성 있게 증명하고 유머러스하게 활용하는 재미있는 시나리오를 상상해보았습니다. DID, VC, VP의 개념을 활용하여 다양한 유머러스한 상황들을 창조할 수 있습니다!

🍃

DID는 개인의 신원을 나타내는 분산원장 상의 고유한 식별자입니다. VC(Verifiable Credential)는 외부 데이터에 대한 보증을 나타내는 크리덴셜입니다. VC는 발행자(issuer)에 의해 서명된 데이터로서 신뢰성과 무결성이 보장되며, 외부 데이터를 증명하는 데 사용됩니다.

VP(Verifiable Presentation)는 VC를 통해 생성된 데이터의 일부분을 DID를 사용하여 서명하는 개념입니다. VP는 VC와 함께 사용자의 신원을 증명하는 데 사용되며, 사용자는 자신의 DID와 개인키를 사용하여 VC를 프레젠테이션으로 만듭니다. 이렇게 생성된 VP에는 VC와 함께 사용자의 신원 정보가 포함되어 있어서 해당 데이터의 소유자임을 증명할 수 있습니다.

따라서 DID는 개인의 신원 증명을 위한 고유한 식별자이고, VC는 외부 데이터에 대한 보증을 나타내는 서명된 데이터이며, VP는 VC를 통해 생성된 데이터의 일부분을 DID를 사용하여 서명하는 개념입니다. 이 세 가지 개념을 함께 사용하여 신원을 증명하고 신뢰성 있는 정보를 보장할 수 있습니다.

profile
🙌🙌🙌🙌

0개의 댓글