Blockchain - DID와 SSI

김도영·2022년 7월 26일
0
post-custom-banner

DID란?

DID(Decentralized Identity)는 탈중앙 신원증명으로 데이터의 주권이 개개인에게 있고, 개개인의 데이터를 중앙화된 시스템을 거치지 않고 증명할 수 있는 기술이다. DID는 분산원장기술을 기반으로 사용자의 데이터를 저장하여 안전하고 편리하게 인증할 수 있도록 한다. DID의 근간이 되는 개념은 SSI(Self-Sovereign Identity)로 SSI의 개념을 탈중앙화 방식의 신원증명을 통해 구현한 것이 DID이다.

W3C 표준화 - DIDs(탈중앙화 식별자)

W3C는 DIDs(탈중앙화 식별자)라는 명칭으로 DID를 실현할 수 잇는 기술에 대한 표준화를 설명한다.

탈중앙화 식별자

DIDs는 검증가능하고 탈중앙화된 디지털 신원을 위한 새로운 형식의 식별자이다. 흔히 우리가 사용하는 ID, Password를 떠올리면 된다. 다음은 DIDs 관련 개념과 용어에 대한 설명이다.

  • 식별자(Identity)

식별자는 개인 혹은 단체등을 구별할 수 있는 고유 값이다. 예를 들어 이메일 계정은 인터넷에서 딱 하나이고, 이 주소를 가진 사람 역시 한명이다. 이 때 이메일은 사람을 식별할수 있는 고유한 식별자가 된다.

  • DID 문서

DID 문서는 특정 DID를 어떻게 사용하는지에 대해 설명해 놓은 간단한 문서이다. DID 문서는 암호학적 요소, 검증 메소드, 서비스 엔드포인트 등으로 표현될 수 있다. 또한, 중요한 점은 DID 인증정보가 들어간다는 것이다. DID 인증정보는 해당 DID의 제어권과 소유권을 증명할 수 있는 공개키와 각종 메타데이터를 의미한다.

  • DID 메소드

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

  • DID 형식

DID는 3부분으로 구성된 간단한 문자열이다.

did:example:1234567aaabbbbccc
// Scheme: DID Method : DID Method-Specific Identifier
// did : 문자열이 did임을 나타내며, 이 주소가 did스키마에 따른것을 나타낸다.
// example : did 메소드의 이름이고, did는 메소드별로 다르게 처리된다.
// 1234567aaabbbccc : DID 메소드 안에서 사용되는 고유 아이디이다.

DID 문서내용

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

// 예시
{
	"@context": "https://example.org/example-method/v1",
    "id": "did:example:1234aabbcc",
    "publicKey": [{...}],
    "authentication": [{...}],
    "service": [{...}]
}
  • id: 이 did문서를 설명하고 있는 아이디이다.
  • publicKey: 아이디와 관련된 공개키 리스트이다.
  • 인증정보: 아이디의 소유권을 증명하기 위한 정보이다.
  • 서비스: 아이디와 상호작용이 가능한 서비스들의 리스트이다.

중요한 것은 어떤 개인정보도 저장하지 않는다는 점이다.

DID 인증

DID 인증절차

  • 회사(company)에서 DID 소유권자에게 DID의 유무를 확인하기 위해 소유권자에게 challenge를 신청한다.
  • 소유자인 나는 회사에게 응답으로 인증 정보가 포함된 DID를 전달한다.
  • 회사는 응답받은 DID로 Universal Resolver에서 DID document를 가져온다.
  • DID document안에 기록되어 있는 인증정보로 소유자에게 받았던 response를 검사하여 확인한다.
  • response 검사를 통해 응답한 소유자가 DID를 가지고 있는 것인지 확인한다.

소유자가 제시한 DID와 Universal Resolver의 DID document안에 기록되어 있는 정보를 서로 확인한다. 이를 통해 소유자가 제시한 정보의 진위여부를 확인하는 절차를 거친다.

SSI란?

SSI는 블록체인을 기반으로 자신을 증명할 수 있는 정보를 스스로 관리 및 보관하고, 신원증명이 필요한 서비스를 이용할 때, 인증정보를 제3자에게 맡기는 것이 아닌 사용자가 직접 관리하도록 하여 데이터 주권을 사용자에게 돌려주는 기술 개념이다. SSI는 스스로가 독립적인 권한을 가진 신원, 즉 '자신이 스스로 부여한 신원'이다. 신원의 소유권을 가진 주체가 신원에 대한 권리를 가지고 공개 대상과 범위를 선택할 수 있는 개념이다. DID는 기존의 중앙화된 인증 방식에서 벗어나 탈중앙화 방식의 신원 증명을 통해 자기 자신이 신원 증명에 대한 권한을 갖도록 하겠다는 SSI개념을 현실화 한것이다. 정확히는, DID는 SSI의 개념을 탈중앙화된 방식으로 구현하기 위한 기술이다. 다음은 SSI를 구성하는 4가지 개념이다.

DIDs(탈중앙화 식별자)

DIDs는 검증가능하고 탈중앙화된 디지털 신원을 위한 새로운 형식의 식별자이다. 누구든지 DID 메소드로 자신의 주소를 만들 수 있고, DID는 주소이면서 마스터키를 활용하여 만들 수 있다. 위에서 말했듯이 ID, Password로 생각하면 된다.

DID Auth

DID는 소유자가 개인키를 가지고 있다는 것을 간단히 인증할 수 있는 방법을 다룬다. DID를 이용한 인증법에 대한 표준화는 DIF(Decentralized Identify Foundation)에서 진행하고 있다.

DKMS(Decentralized Key Management System)

신원을 증명하는데 사용하는 개인 키를 어떻게 관리할 것인가를 다룬다.

Verifiable Credentials(검증 가능한 크레덴셜)

아이디의 소유자가 어떤 것을 할 수 있는 자격을 갖추었음을 검증하는 방법을 다룬다.

SSI를 구현하기 위한 요소

  • Issuer(발행자)

Issuer는 신원정보를 발급하는 주체이다. VC(Verifiable Credential)을 발행하는 주체이며, 정보 주체의 요구에 의해 신원 정보와 DID를 발급하는 기관이다. 발행자는 발급한 정보에 대해 신뢰할 수 있는 신원 정보를 전달한다.

  • Holder(소유자)

Holder는 신원 정보를 소유한 주체이다. 즉, 정보 주체로 DID를 활용하여 본인의 신원을 증명하고자 하는 사용자이다. 시스템에서는 DID를 발급 받고 제출한다.

  • Verifier(검증자)

Verifier는 신원 정보를 검증하는 주체이다. 정보 주체인 Holder로부터 VC를 받아 신원 정보를 검증하는 주체이다.

  • Verifiable Data Registry(검증데이터 저장소)

정보 주체의 식별자와 Issuer의 인증서, 신원 증명 해지 내역, 신원 증명 스키마 등이 등록되어 있는 분산원장기반의 데이터 무결성이 확보된 저장소이다.

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

Credential(크리덴셜) 은 신원 확인에 필요한 정보이다. 예를 들어 일상생활에서 주민등록, 운전면허, 여권 등으로 신원을 주장한다. 이것은 물리적인 크리덴셜이다. 물리적인 크리덴셜은 다음과 같은 정보가 들어가 있다.

  • 신분증의 주체를 식별할 수 있는 정보(이름, 사진 등)
  • 신분증의 발급기관 정보(경찰청, 외교부 등)
  • 발급기관이 보증하는 정보(생년월일, 면허 , 국적 등)
  • 신분증의 용도(주민등록증, 여권 등)
  • 신분증의 제약 조건 정보(유효기관 등)

우리는 일상생활에서 물리적 Credential로 자신의 용도에 따라 필요한 정보를 증명한다.

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

탈중앙신원체계에서는 단순히 Credentail이 아닌 검증가능한 Credential이라고 표현한다. Verifiable Credential은 아래와 같은 구조로 이루어져 있다.

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

이러한 기록은 분산원장 플랫폼을 기반으로 한다. 따라서, 분산원장 상에 기록된 각 주체의 전자 서명을 확인하면서, 궁극적으로 개인이 제시하고 있는 신원정보가 발급된 사실과 다르지 않다는 것을 검증할 수 있도록 한다.

profile
Blockchain Developer
post-custom-banner

0개의 댓글