W3C의 표준으로 DID 이해하기 3

Suwoong Yoo
6 min readSep 11, 2020

--

W3C Verifiable Credential Data Model 함께 읽기

이전글: W3C의 표준으로 DID 이해하기 2

다음글: TBD

4. 기본 컨셉

Holder가 Issuer에게 VC를 요청하면, Issuer는 Holder가 본인인지 확인한 후 본인이 맞다면 VC를 전달하게 된다. VC는 일련의 정보가 나열된 데이터 형식으로 그 형태는 아래와 같다.

4.1 컨텍스트 (Context)

context 속성은 서로 데이터를 주고받는 주체들 간 각 속성이 무엇을 의미하는지, 어떠한 형식인지를 정의하기 위해 사용된다.

본 속성은 문서로 연결되는 URL(URI가 더 적절한 표현이지만 독자 편의상 URL로 표현)들의 집합으로 표현되는데, 아래 코드는 기본적인 VC의 기본 형태에서 context가 어떻게 표현되고 있는지를 보여준다.

위 예제에서 context는 두 개의 URL를 가진다.

우선 첫 번째 “https://www.w3.org/2018/credentials/v1”은 본 데이터가 VC라는 형식에 관한 것임을 설명한다.

VC의 context 속성은 반드시 이 URL을 첫번째로 가져야 하는데 이것이 어떤 형태인지도 모르고 주어진 데이터를 해석할 수는 없기 때문이다.

VC를 해석할 수 있는 context가 확인 되었다면, 다음으로는 많은 종류의 VC 중 해당 VC가 어떠한 것에 관한 것인지를 확인할 수 있어야 한다. 위 예제에서는 두 번째 URL인 “https://www.w3.org/2018/credentials/examples/v1”이 그 부분을 담당한다.

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

4.2 식별자 (Identifier)

식별자는 하나의 대상을 가리키는 것으로, 우리가 일상에서 흔히 사용하는 식별자의 사례로는 주민등록번호가 있다.

유효한 주민등록번호는 반드시 유일한 값이며, 한 사람만을 가리킨다.

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

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

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

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

4.3 타입 (Type)

이 데이터를 받은 시스템이 본 데이터를 해석하기 위해서는 context 문서에서 정의한 데이터 타입에 따른 것인지 확인해야 한다.

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

위 예제에서 type은 두 개의 값을 가지는데,

VerifiableCredential은 이 데이터가 VC라는 것을 의미하고, AlumniCredential은 이 VC가 졸업에 관련된 것이라는 것을 정의한다.

4.4 크리덴셜 주체 (Credential Subject)

VC는 이미 전에 설명한대로, 어떤 주체(Subject)에 대한 클레임들의 집합이라고 하였다. credentialSubject 속성은 이러한 클레임들을 포함하는 부분이다.

따라서 VC에는 이 credentialSubject 속성이 반드시 필요하다. (적어도 필자가 아직까지 이해하기로는) 클레임이 없는 VC는 의미가 없기 때문이다.

위 샘플을 살펴보면, 우선 credentialSubject는 주체를 식별할 수 있는 id 속성으로 탈중앙식별자(DID)를 가진다.

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

하지만 DID가 여러 곳에서 사용되고, 다양한 정보들이 연결되게 되면 결국에는 해당 DID가 누구를 가리키는지, 그것과 연결된 개인정보는 무엇인지 확인할 수 있는 위험에 노출될 수 있다.

이와 관련해서는 향후 Decentralized Identifiers의 프라이버시 측면에서 설명하기로 한다.

한편, degree 속성에서는 그 학위의 종류(type)가 학사(BacheolerDegree)이고, 학위명(name)은 공학학사(Bachelor of Science and Arts)라는 것을 설명한다.

따라서 VC의 주체가 어떤 학위를 가지고 있는지를 해당 VC를 통해 검증할 수 있게 되는 것이다.

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

4.5 발급자 (Issuer)

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

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

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

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

궁금한 사항이나 바로 잡아주실 내용에 대해서는 의견 남겨주시면 감사하겠습니다.

--

--