DID

100pearlcent·2021년 11월 26일
0
post-thumbnail

자기주권신원(SSI)

정의

  • 개인정보 관리와 활용에 대한 새로운 패러다임
  • 기존에는 서비스 제공자 혹은 제 3의 기관이 나의 개인정보를 관리했다면, 이제는 나 스스로가 직접 관리하는 형태

필수 구성 요소

  • 식별자(Identifier) : 디지털 세상에서 내가 나임을 증명하기 위한 식별자
    - 분산 ID(Decentralized Identifiers, DIDs)
  • 아이덴티티 데이터(Identity data) : 나라는 개체가 어떤 정보/속성을 가지고 있는지 제시하고 증명하는 정보
    - 개인정보, Claims, VC, VP
  • Identity Hub : 이와 관련된 데이터가 저장되는 데이터 저장소 (스토리지)


자기주권신원인증 (DID)

Decentralized Identity Disorder

- credential

  • 좁은 의미 : 신원 확인에 필요한 정보
  • 넓은 의미 : 특정 주체(사람, 조직, 동물, 사물 등 모든 것) 관련 모든 정보

👉 문맥에 따라 크리덴셜을 해석해야 한다

- Issuer

  • Holder의 신원을 보증하는 주체
  • Holder의 정보를 가지고 있고 Holder의 요청 시 VC 형태로 발급한다

- Holder

  • 자신의 신원을 주장하기 위해 VC를 보유하는 주체
  • 보통 자신의 서비스를 제공하기 위해 Holder에게 정보를 요구

- Verifier

  • Holder의 신원을 검증하는 주체
  • 보통 자신의 서비스를 제공하기 위해 Holder에게 정보를 요구

- Verifiable Data Registry

  • VC 검증을 위해 필요한 식별자, key 쌍, 메타데이터 등을 저장하는 저장소
  • 주로 블록체인이 사용됨


기본 컨셉

Holder가 Issuer에게 VC를 요청하면, Issuer는 Holder가 본인인지 확인한 후 본인이 맞다면 VC를 전달하게 된다

- Context

  • 서로 데이터를 주고받는 주체들 간 각 속성의 무엇을 의미하는지, 어떠한 형식인지를 정의하기 위해 사용된다
    context 속성은 문서로 연결되는 URL들의 집합으로 표현이 된다
{
...
"@context":[
	"https://www.w3.org/2021/credentials/v1",
  	"https://www.w3.org/2021/credentials/examples/v1"
],
...
}

첫 번째 줄은 본 데이터가 VC라는 형식에 관한 것임을 설명한다
VC를 해석할 수 있는 context가 확인 되었다면, 다음으로는 많은 종류의 VC중 해당 VC가 어떤 것에 관한 것인지 확인해야 한다
위 예제에서 두번째 URL에 해당한다

VC와 VP는 반드시 이 context 속성을 포함하고 있어야하고, context는 변동이 없는 고정된 문서여야 한다


- Identifier (식별자)

VC 문서 내에는 여러 단계에서 id를 가질 수 있는데, 각 id가 무엇을 식별하기 위한 id인지는 context에 따라 결정된다

먼저 VC 자체를 가리키는 식별자를 가질 수도 있는데, 아래 예제의 첫번째 id가 VC 자체를 식별하기 위한 식별자이다

{
...
"id": "http://example.edu/credentials/12345",
...
"credentialSubject" : {
	"id": "did:example:abcdefg"
}
...
}

Issuer는 현재 사용하고 있는 VC를 누군가 식별해야 할 필요가 있을 때 VC에 id 속성을 부여할 수 있는데, 식별자는 하나의 개체를 특정하는데는 도움이 되지만 반대로 식별자와 개체 간 상관관계가 드러나는 순간 프라이버시를 위협받을 수 있으므로 상황에 따라 id는 생략 가능하다

또한 VC의 주체에 대한 id 속성도 가질 수 있다
이는 credentialSubject 속성 내의 id 속성으로 정의된다


- Type

본 데이터가 어떠한 타입의 데이터인지를 정의한다

{
  ...
  "type": ["VerifiableCredential", "AlumniCredential"],
  ...
}

- Credential Subject (크리덴셜 주체)

VC는 어떤 주체(subject)에 대한 클레임들의 집합이다
credentialSubject 속성은 이러한 클레임들을 포함하는 부분이다

따라서 VC에는 이 credentialSubject 속성이 반드시 필요하다

{
...
"credentialSubject": {
	"id": "did:example:abcdef",
    "degree": {
    	"type": "BachelorDegree",
        "name": "Bachelor of Science and Arts"
    }
},
...
}

우선 credentialSubject는 주체를 식별할 수 있는 id 속성으로 탈중앙식별자(DID)를 가진다

DID 자체만으로는 누구를 가리키는 알기 어렵다
따라서 하나의 VC로 한명의 주체를 식별하고 그 정보를 파악하기 어렵다는 차원에서 VC는 프라이버시를 보호할 수 있는 좋은 수단이다

degree속성을 통해 VC의 주체가 어떤 학위를 가지고 있는지 해당 VC를 통해 검증할 수 있게 되는 것이다


{
...
"credentialSubject": [{
	"id": "did:example:aaaa",
  	"name": "Jinju",
  	"spouse": "did:example:bbbb"
}, {
  	"id": "did:example:bbbb",
  	"name": "Somebody",
  	"spouse": "did:example:aaaa"
}],
...
}

VC는 이 예제와 같이 두 주체를 동시에 포함하여 각 주체 간의 관계를 나타내는데도 사용할 수 있다


- Issuer (발급자)

VC에서는 반드시 이 VC를 누가 발급했는지 파악할 수 있어야한다

VC를 어떻게 신뢰할 수 있는가에 대한 문제는 Issuer에 대한 신뢰모델 (Trust Model)로 설명할 수 있는데 Issuer가 신뢰할 만한 주체이어야 해당 VC도 신뢰할 수 있는 것으로 보기 때문이다

VC에서는 issuer 속성이 필수이며, issuer 속성은 DID 혹은 URL을 값으로 가진다

{
...
"issuer": "did:example:abcde"
...
}

이 값을 통해 궁극적으로 Issuer가 누구인지 검증가능한 방법으로 확인이 가능하다


참고 링크

W3C의 표준으로 DID 이해하기
디지털 아이덴티티


0개의 댓글