배경 지식

W3C DID 요약본 1 : Abstract~Core Properties

Dr.Mlem 2025. 2. 27. 05:08

 

  • DID(Decentralized Identifier)란?
    • 개인, 조직, 사물, 개념 등 어떤 주체를 식별하기 위한 전 세계적으로 고유한 식별자
    • 중앙화된 권위 없이도 스스로 생성·관리할 수 있으며, 암호학적 증명을 통해 통제권을 증명할 수 있음
  • DID 문서(DID Document)
    • DID에 대한 정보(검증 방법, 서비스 정보 등)를 담고 있는 문서
    • DID 컨트롤러가 이를 업데이트하거나 통제할 수 있으며, 다양한 상호작용 시에 신뢰를 제공
  • DID 컨트롤러(DID Controller)
    • 해당 DID 문서를 변경하거나 업데이트할 역량을 지닌 주체(사람, 조직, 자율 소프트웨어 등)
    • 일반적으로 암호 키를 통해 자신이 컨트롤러임을 증명
  • DID 메서드(DID Method)
    • 특정 DID 유형 및 그 DID 문서를 생성, 해석, 갱신, 비활성화하는 메커니즘
    • 별도의 DID 메서드 사양을 통해 정의됨
  • 검증 가능한 데이터 레지스트리(Verifiable Data Registry)
    • DID가 등록되고, DID 문서에 필요한 데이터를 반환하는 시스템(분산 원장, 탈중앙 파일시스템, 데이터베이스 등)
  • DID 해석(Resolution)
    • DID를 입력받아 대응하는 DID 문서를 반환하는 과정
    • 이를 수행하는 컴포넌트를 ‘DID 리졸버’라고 함
  • DID URL 디리퍼런싱(DID URL Dereferencing)
    • DID URL을 입력받아 실제 리소스를 반환하는 과정
    • 이를 수행하는 컴포넌트를 ‘DID URL 디리퍼런서’라고 함
  • 디자인 목표
    • 탈중앙화: 중앙 권위 없이 식별자 관리
    • 통제: 주체가 자신의 식별자를 직접 통제
    • 프라이버시: 필요한 범위만큼만 정보 공개
    • 보안: 암호학적 검증 기반
    • 증명 기반: DID 컨트롤러가 스스로 통제권 증명
    • 검색 가능성: 다른 주체의 DID를 찾아보고 상호작용 가능
    • 상호운용성: 기존 도구와 호환
    • 이식성: 특정 네트워크·시스템에 종속되지 않음
    • 단순성: 구현·배포가 쉬움
    • 확장성: 필요 시 기능 확장 가능
  • 적합성(Conformance)
    • DID 및 DID 문서는 사양의 규범적 요구사항을 준수해야 함.
    • 프로듀서/컨슈머/리졸버/디리퍼런서 등 구현체는 관련 섹션의 규칙을 지켜야 상호운용이 가능함.




1. Introduction 개요

 

  • 탈중앙화 식별자(DID)는 전 세계적으로 고유하며, 사용자가 직접 생성·관리하는 식별자임.
  • 중앙 권위 없이도 주체가 DID를 생성하고, 암호학적으로 통제권을 증명할 수 있음.
  • 하나의 주체가 여러 DID를 가질 수 있고, 각 DID는 필요한 맥락에서만 사용해 프라이버시를 보호함.

1.1 A Simple Example

  • DID는 did: 스킴, DID 메서드, 메서드별 고유 식별자로 구성된 단순 URI 형식.
  • 해석을 통해 얻게 되는 DID 문서에는, 해당 DID와 관련된 인증·검증 정보가 포함됨.

1.2 Design Goals

  • 탈중앙화: 중앙 권위나 단일 장애 지점 없이 운영
  • 통제: 주체가 자기 식별자를 직접 통제
  • 프라이버시: 필요한 최소한의 정보만 공개 가능
  • 보안: 암호학적 방식으로 신뢰도 확보
  • 증명 기반: DID 컨트롤러가 스스로 증명
  • 검색 가능성: 다른 주체를 DID로 찾고 상호작용 가능
  • 상호운용성: 기존 표준·도구와 호환
  • 이식성: 특정 시스템에 종속되지 않음
  • 단순성: 쉽게 이해·구현할 수 있는 구조
  • 확장성: 상호운용성과 단순성을 해치지 않는 범위에서 확장 가능

1.3 Architecture Overview

  • DID는 DID 메서드, 검증 가능한 데이터 레지스트리 등을 통해 등록·관리
  • DID 문서는 DID에 대한 암호 키, 서비스 정보 등을 담고 있음
  • DID 해석(Resolution)을 통해 DID 문서를 얻을 수 있고, DID URL은 그 문서 일부나 외부 리소스를 지목 가능

1.4 Conformance

  • DID, DID 문서, 메서드, 리졸버, 디리퍼런서 등은 각 섹션의 규범 요건을 충족해야 함
  • 상호운용성을 위해, 표준에 부합하는 형식으로 생성·소비가 이뤄져야 함

 

 

 

 

 

2. Terminology 개요

  • 이 문서는 탈중앙화 식별자 인프라에서 쓰이는 핵심 개념과 용어를 정의함.

주요 용어들

  • amplification attack: 작은 입력으로 시스템 자원을 기하급수적으로 소모시키는 공격
  • authenticate: 하나 이상의 검증 방법을 통해 특정 속성·비밀 통제권을 증명하는 과정
  • cryptographic suite: 특정 암호 기법(primitive)을 목적에 맞게 사용하는 방법을 정의한 명세
  • decentralized identifier (DID): 중앙 기관 없이 생성·등록 가능한 고유·지속 식별자
  • decentralized identity management: DID를 활용하여 기존 루트 신뢰 구조 외부에서도 ID를 생성·등록·할당
  • DID controller: DID 문서를 변경할 권한을 지닌 주체
  • DID delegate: DID 컨트롤러가 특정 검증 방법 사용 권한을 위임한 주체
  • DID document: DID 주체를 설명하고, 주체가 DID를 인증·증명하는 데 필요한 정보를 담은 문서
  • DID fragment / path / query: DID URL의 특정 부분(URI 문법과 동일)
  • DID method: 특정 DID 스킴을 구현하는 방법, DID 문서를 생성·해석·갱신·비활성화하는 절차 정의
  • DID resolution: DID를 입력받아 해당 DID 문서와 메타데이터를 반환하는 과정
  • DID resolver: DID 해석을 수행하는 소프트웨어·하드웨어 구성 요소
  • DID scheme: did:로 시작하는 형식적 문법, 뒤에 DID 메서드 이름 등이 붙음
  • DID subject: DID가 식별하는 대상(사람, 조직, 사물, 개념 등)
  • DID URL: DID에 경로, 쿼리, 프래그먼트 등을 추가한 것
  • DID URL dereferencing: DID URL을 입력으로 받아 해당 리소스(문서, 외부 리소스 등)를 찾는 과정
  • DID URL dereferencer: DID URL 디리퍼런싱을 수행하는 시스템
  • distributed ledger (DLT): 분산 데이터베이스와 합의 프로토콜로 구성된 이벤트 기록 시스템
  • public key description: DID 문서 내 공개 키 사용에 필요한 메타데이터가 담긴 객체
  • resource: URI로 식별되는 모든 대상
  • representation: 어떤 리소스를 특정 상태로 표현한 데이터 형태 (DID 문서는 DID 주체에 대한 표현)
  • representation-specific entries: 특정 표현 형식에서만 의미가 있는 DID 문서 항목
  • services / service endpoint: DID 주체가 활용할 서비스 및 그 네트워크 주소
  • URI: [RFC3986]에서 정의된 웹 리소스 식별자 표준, DID는 URI 스킴의 한 종류
  • verifiable credential: 암호학적으로 검증 가능한 디지털 자격증명에 대한 표준 데이터 모델
  • verifiable data registry: DID·DID 문서(및 검증 가능 자격증명 등)를 생성·검증·갱신·비활성화하도록 지원하는 시스템
  • verifiable timestamp: 특정 시점에 데이터가 존재했으며 이후 변조되지 않았음을 제3자가 검증할 수 있게 하는 타임스탬프
  • verification method: 증명을 독립적으로 검증하기 위한 파라미터 집합(예: 공개 키)
  • verification relationship: DID 주체와 검증 방법 사이의 관계(예: 인증 목적 등)
  • UUID: 중앙 등록 없이 생성 가능한 전 세계 고유 식별자(RFC4122). DID와 달리 해석되거나 암호 검증 가능하지 않음

 

 

 

 

 

3. Indentifier

 

  • DID와 DID URL의 기본 문법을 규정하는 장. DID와 DID URL 생성 시점, 과정은 8.2와 B.2에 기술.
  • 3.1 DID Syntax
    • DID는 did: 스킴 + 메서드 이름 + 메서드별 고유 식별자로 구성된 URI.
    • [RFC5234], [RFC3986]의 ABNF 규칙을 따르며, 모든 DID가 이를 준수해야 함.
    • 각 DID 메서드는 이 문법에 대해 추가 요구사항을 둘 수 있음.
  • 3.2 DID URL Syntax
    • DID URL은 특정 리소스(예: DID 문서, 검증 키, 서비스 등)를 가리키기 위한 네트워크 식별자.
    • did 다음에 path·query·fragment를 조합할 수 있음.
    • 세미콜론(;)은 향후 사용을 위해 예약됨.
    • Path: 일반 URI 경로와 동일
    • Query: 일반 URI 쿼리와 동일, 3.2.1에서 파라미터로 확장
    • Fragment: 일반 URI 프래그먼트와 동일, DID 문서/외부 리소스 참조 시 사용
  • 3.2.1 DID Parameters
    • DID URL 쿼리를 통해 versionTime, service, relativeRef 등 파라미터를 지정할 수 있음.
    • 각 DID 메서드마다 지원 여부가 다를 수 있으나, 지원 시 동일하게 동작하는 것이 권장됨.
    • 파라미터 충돌 방지를 위해 [DID-SPEC-REGISTRIES]에 등록 권장.
    • 같은 기능을 DID 리졸버의 입력 메타데이터로 구현 가능하다면, 굳이 파라미터를 쿼리에 넣지 않는 편이 보통.
  • 3.2.2 Relative DID URLs
    • did:<method-name>:<method-specific-id>로 시작하지 않는 URL은 상대 DID URL로 간주.
    • 같은 DID 문서 내 자원을 참조하며, RFC3986 섹션 5 알고리즘으로 절대 URL로 변환 가능.
    • 검증 방법, 서비스 등에 간단히 연결하기 위해 유용. 문서 크기를 줄이는 효과도 있음.

 

 

 

 

 

4. Data Model 요약

  • 개요: DID 문서 및 그 데이터 구조를 표현하기 위한 모델을 정의. 여러 가지 직렬화 포맷으로 변환 가능.
  • DID 문서 구조: 맵(map) 형태이며, 크게 속성(properties)과 표현-종속적 항목(representation-specific entries)으로 구분됨.
  • 데이터 유형: 각 항목 값은 map, list, set, datetime, string, integer, double, boolean, null 중 하나의 추상 데이터 타입으로 표현됨.
    • [INFRA]에 따라 리스트와 맵, 셋도 “순서”가 존재하지만, 일반적으로 맵과 셋의 순서는 중요하게 취급되지 않음.
  • 확장성(4.1)
    1. DID Specification Registries 권장: 신규 속성·확장 정의 시 등록을 통해 최대 상호운용성 확보
    2. 표현 형식 자체의 확장: Registries를 사용하지 않고도, 무손실 변환이 가능한 확장 메커니즘을 정의할 수 있음
    • 등록되지 않은 확장을 사용할 수도 있으나, 생태계 전반의 호환성·신뢰도는 낮아질 수 있음.

 

 

 

 

 

5. Core Properties

  • DID 문서에 포함되는 주요 속성들(필수 여부, 값 제약사항)을 정의.
  • 이 속성들은 DID 주체와 해당 속성 값 간의 관계를 기술.

5.1 Identifiers

  • id: DID 주체 식별, 문서 최상위 맵에 위치. [3.1 DID Syntax] 준수
  • controller: DID 문서 변경 권한을 가진 주체. 문자열(혹은 문자열 집합). [3.1 DID Syntax] 준수
  • alsoKnownAs: 다른 DID(URI)들이 동일 주체임을 나타낼 때 사용 (선택사항)

5.2 Verification Methods

  • verificationMethod: 암호 공개 키 등 DID 문서에 포함할 검증 방법들의 집합
    • 각 검증 방법 맵에는 id, type, controller, 그리고 검증 자료(예: publicKeyJwk, publicKeyMultibase) 포함
    • 동일 검증 방법에 서로 다른 키 표현을 중복으로 쓰면 안 됨

5.2.2 Referring to Verification Methods

  • 검증 방법은 DID 문서 내 다른 속성(검증 관계)에서 직접 삽입되거나 DID URL로 참조될 수 있음

5.3 Verification Relationships

  • 인증(authentication), 주장(assertion), 키 교환(keyAgreement), 권한 행사(capabilityInvocation), 권한 위임(capabilityDelegation) 등 용도를 구분
  • 해당 검증 방법이 이 관계 속성에 들어 있어야 그 목적에 사용할 수 있음

5.4 Services

  • service: DID 주체와 상호작용하기 위한 서비스 정보(URI, 맵 등)
  • 프라이버시 노출 주의. id, type, serviceEndpoint 반드시 포함