검증 가능한 자격 증명 데이터 모델 v2.1

W3C 작업 초안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2026/WD-vc-data-model-2.1-20260920/
최신 공개 버전:
https://www.w3.org/TR/vc-data-model-2.1/
최신 편집자 초안:
https://w3c.github.io/vc-data-model/
이력:
https://www.w3.org/standards/history/vc-data-model-2.1/
커밋 이력
편집자:
Manu Sporny (Digital Bazaar) (v1.0 - v2.1)
Ted Thibodeau Jr (OpenLink Software) (v2.0 - v2.1)
Ivan Herman (W3C) (v2.0 - v2.1)
이전 편집자:
Grant Noble (ConsenSys) (v1.0)
Dave Longley (Digital Bazaar) (v1.0)
Daniel C. Burnett (ConsenSys) (v1.0)
Brent Zundel (Evernym) (v1.0)
Kyle Den Hartog (MATTR) (v1.1)
Gabe Cohen (Block) (v2.0)
Michael B. Jones (초빙 전문가) (v2.0)
저자:
Manu Sporny (Digital Bazaar) (v1.0 - v2.1)
Dave Longley (Digital Bazaar) (v1.0 - v2.1)
David Chadwick (초빙 전문가) (v1.0 - v2.0)
Ivan Herman (W3C) (v2.0 - v2.1)
의견:
GitHub w3c/vc-data-model (풀 리퀘스트, 새 이슈, 미해결 이슈)
관련 명세:
검증 가능한 자격 증명 개요
검증 가능한 자격 증명 데이터 무결성
JOSE와 COSE를 사용한 검증 가능한 자격 증명 보안
비트 문자열 상태 목록
검증 가능한 자격 증명 렌더링 방법
검증 가능한 자격 증명 신뢰도 방법
인정된 엔터티
회의:
다음 예정된 회의 보기

초록

하나의 검증 가능한 자격 증명은 일련의 주장발급자가 표현하는 특정 방식으로, 운전면허증이나 교육 수료증 등이 그 예입니다. 이 명세는 검증 가능한 자격 증명을 위한 확장 가능한 데이터 모델과, 이를 변조로부터 보호하는 방법 및 3자 생태계를 설명합니다. 이 생태계는 이러한 자격 증명을 교환하며 발급자, 보유자, 그리고 검증자로 구성됩니다. 또한 이 문서에서는 보안, 개인정보 보호, 국제화 및 접근성과 관련하여 생태계에서 고려해야 할 다양한 사항을 다루며, 해당 생태계는 이 명세에 설명된 기술을 사용합니다.

이 문서의 상태

이 절에서는 이 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 다음 W3C 표준 및 초안 색인에서 확인할 수 있습니다.

이 명세에 대한 의견은 언제든지 환영합니다. GitHub에 직접 이슈를 제출하거나, 그렇게 할 수 없는 경우 public-vc-comments@w3.org로 보내 주세요. (구독, 아카이브).

이 문서는 검증 가능한 자격 증명 워킹 그룹에서 권고안 트랙을 사용하여 작업 초안으로 발행했습니다.

작업 초안으로 발행되었다고 해서 W3C와 그 회원이 승인했다는 의미는 아닙니다.

이 문서는 초안이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 적절하지 않습니다.

이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성했습니다. W3C모든 특허 공개 사항의 공개 목록을 관리하며, 이 목록에는 그룹의 결과물과 관련하여 이루어진 특허 공개가 포함됩니다. 해당 페이지에는 특허 공개 지침도 포함되어 있습니다. 개인이 다음을 포함한다고 판단하는 특허에 대해 실제로 알고 있다면 필수 청구항 해당 정보를 다음에 따라 공개해야 합니다: W3C 특허 정책 제6절.

이 문서에는 2025년 8월 18일 W3C 프로세스 문서가 적용됩니다.

1. 소개

이 절은 비규범적입니다.

자격 증명은 일상생활에 필수적입니다. 운전면허증은 자동차 운전 능력을 확인하고, 대학 학위는 교육 수준을 증명하며, 정부 발행 여권은 국가 간 이동 시 시민권을 입증합니다. 이 명세는 이러한 종류의 자격 증명을 웹에서 암호학적으로 안전하고 개인정보 보호를 존중하며 기계로 검증할 수 있는 방식으로 표현하는 메커니즘을 제공합니다. 이러한 자격 증명은 현실 세계에서 사용할 때 이점을 제공하지만, 웹에서의 사용은 여전히 실현하기 어렵습니다.

현재 웹에서는 교육 자격, 의료 데이터, 금융 계정 세부 정보 및 기타 제3자가 검증한 개인정보를 기계 판독 가능한 방식으로 표현하기 어렵습니다. 웹에서 디지털 자격 증명을 표현하기 어렵다는 점은 현실의 자격 증명이 제공하는 것과 동일한 이점을 얻는 데 방해가 됩니다.

검증 가능한 자격 증명과 관련된 개념에 익숙하지 않은 분들을 위해 다음 절에서는 다음 사항의 개요를 제공합니다:

이 명세를 뒷받침한 사용 사례와 요구 사항은 검증 가능한 자격 증명 사용 사례 [VC-USE-CASES]에서 확인할 수 있습니다.

1.1 검증 가능한 자격 증명이란?

이 절은 비규범적입니다.

실물 세계에서 자격 증명은 다음으로 구성될 수 있습니다:

검증 가능한 자격 증명은 정보의 디지털 표현입니다(즉, 자격 증명발급자가 제시한 하나 이상의 주장을 모은 것입니다). 이는 4.12 보호 메커니즘절에서 설명하는 보호 메커니즘 중 하나를 사용하여 작성자의 진위를 검증할 수 있고, 이식 가능한 형태로 변조 흔적을 확인할 수 있게 만들 수 있습니다. 물리적 자격 증명으로 표현할 수 있는 모든 정보는 디지털 자격 증명으로도 표현할 수 있으므로, 검증 가능한 자격 증명으로도 표현할 수 있습니다. 디지털 서명과 같은 기술을 사용하면 검증 가능한 자격 증명을 그에 대응하는 물리적 자격 증명보다 변조 여부를 더 쉽게 확인할 수 있고 더 신뢰할 수 있게 만들 수 있습니다. 검증 가능한 자격 증명 바코드 v1.0을 사용하면 물리적 자격 증명에도 검증 가능한 자격 증명을 포함하여 동일한 이점을 얻을 수 있습니다.

보유자검증 가능한 자격 증명으로 검증 가능한 프레젠테이션을 생성한 다음, 이 검증 가능한 프레젠테이션검증자와 공유하여 특정 특성을 지닌 검증 가능한 자격 증명을 보유하고 있음을 증명할 수 있습니다.

검증 가능한 자격 증명검증 가능한 프레젠테이션은 모두 빠르게 전송할 수 있으므로 원격으로 신뢰를 구축할 때 실물 자격 증명보다 편리합니다.

이 명세는 디지털 자격 증명을 쉽게 표현할 수 있도록 개선하는 동시에 이 목표와 여러 개인정보 보호 목표 사이의 균형을 이루고자 합니다. 디지털 정보의 지속성과 서로 다른 디지털 데이터 출처를 쉽게 수집하고 연관 지을 수 있다는 점은 개인정보 보호 우려를 낳으며, 검증 가능하고 쉽게 기계로 판독할 수 있는 자격 증명을 사용하면 이러한 우려가 심화될 수 있습니다. 또한 실물 자격 증명에 사용되는 보안 수단(홀로그램이나 워터마크 등)은 적어도 많은 사람에게 익숙하지만, 디지털 자격 증명을 보호하는 암호화 메커니즘은 비전문가가 이해하거나 평가하기 어려울 수 있습니다. 이 문서는 개인정보 보호 고려 사항에서 이러한 문제 중 일부를 다루며, 검증 가능한 자격 증명 데이터 모델 위협 모델에서는 이를 자세히 분석하고 각각의 대응 방안을 설명합니다. 영지식 증명과 같은 개인정보 보호 강화 기술을 사용하여 이 데이터 모델을 활용하는 방법의 예도 이 문서 전반에서 제공합니다.

검증 가능한 자격 증명검증 가능한 프레젠테이션이라는 용어에서 "검증 가능한"이라는 단어는 자격 증명 또는 프레젠테이션검증할 수 있는 특성을 의미하며, 검증은 검증자가 수행합니다. 그 의미는 이 문서에서 정의합니다. 검증검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션이 해당 발급자 또는 제시자의 진정하고 현재 유효한 진술이라는 사실만 확립합니다. 내부에 인코딩된 주장이 사실임을 의미하지는 않습니다. 이러한 주장에 의존하기 전에 검증자는 별도로 유효성 검사를 수행합니다: 이는 자체 정책에 따라 발급자가 그러한 주장을 할 수 있다고 신뢰할 수 있는지 그리고 해당 주장검증자의 목적에 적합한지 판단하는 과정입니다. 이 과정은 부록 B. 유효성 검사에서 자세히 설명합니다.

1.2 생태계 개요

이 절은 비규범적입니다.

이 절에서는 검증 가능한 자격 증명이 유용할 것으로 예상되는 생태계의 핵심 행위자 역할과 이들 사이의 관계를 설명합니다. 역할은 여러 다양한 방식으로 구현할 수 있는 추상화입니다. 역할의 분리는 표준화에 적합한 인터페이스와 프로토콜을 제시합니다. 이 명세에서는 다음 역할을 소개합니다:

보유자
하나 이상의 검증 가능한 자격 증명을 보유하고 이를 바탕으로 검증 가능한 프레젠테이션을 생성함으로써 엔터티가 수행할 수 있는 역할입니다. 보유자는 흔히 자신이 보유한 검증 가능한 자격 증명주체이지만 항상 그런 것은 아닙니다. 예를 들어 여권 보유자는 일반적으로 해당 여권이 식별하는 사람입니다. 보유자는 자신의 자격 증명자격 증명 저장소에 보관합니다. 보유자의 예로는 학생, 직원 및 고객이 있습니다.
발급자
엔터티가 하나 이상의 주체에 관해 주장을 하고, 이러한 주장으로 검증 가능한 자격 증명을 생성한 다음, 그 검증 가능한 자격 증명보유자에게 전송함으로써 수행할 수 있는 역할입니다. 발급자의 예로는 기업, 비영리 조직, 업계 협회, 정부 및 개인이 있습니다.
주체
주장의 대상입니다. 주체의 예로는 사람, 동물 및 사물이 있습니다.
검증자
엔터티가 하나 이상의 검증 가능한 자격 증명을, 선택적으로 검증 가능한 프레젠테이션에 포함된 형태로 수신하고 이를 검증함으로써 수행하는 역할입니다. 검증은 자격 증명 또는 프레젠테이션의 진위성과 최신성을 확립합니다. 내부의 주장이 사실인지 또는 수용할 수 있는지를 판단하는 것은 검증자가 자체 정책에 따라 수행하는 별도의 과정인 유효성 검사입니다(다음 참조: 부록 B. 유효성 검사). 검증자의 예로는 지원자의 학력 자격 증명을 확인하는 고용주, 정부 발행 신분증을 확인하는 보안 담당자, 방문자가 특정 조직에서 발급한 회원 자격 증명을 보유했는지 확인하는 웹사이트가 있습니다.
검증 가능한 데이터 레지스트리
데이터베이스나 분산 원장 같은 시스템이 식별자, 검증 자료 및 기타 관련 데이터의 생성과 검증을 중개함으로써 수행할 수 있는 역할입니다. 관련 데이터에는 검증 가능한 자격 증명 스키마와 취소 레지스트리 등이 있습니다. 일부 구성에서는 주체에 상호 연관 가능한 식별자가 필요할 수 있습니다. UUID와 검증 자료를 위한 일부 레지스트리는 식별자의 네임스페이스 역할만 할 수도 있습니다. 검증 가능한 데이터 레지스트리의 예로는 신뢰할 수 있는 데이터베이스, 탈중앙화 데이터베이스, 정부 ID 데이터베이스 및 분산 원장이 있습니다. 생태계에서는 두 가지 이상의 검증 가능한 데이터 레지스트리를 사용하는 경우가 많습니다.
발급자에서 보유자로 자격 증명이
               흐르고 보유자에서 검증자로 프레젠테이션이
               흐르며 세 당사자 모두 논리적
               검증 가능한 데이터 레지스트리의 정보를 사용할 수 있음을 보여 주는
               다이어그램
그림 1 이 명세의 기반을 이루는 역할과 정보 흐름.

그림 1에서 볼 수 있듯이 모든 역할은 검증 가능한 데이터 레지스트리를 사용하여 식별자를 검증할 수 있습니다. 예를 들어 발급자는 식별자와 연결된 검증 자료를 레지스트리에서 가져온 다음 엔터티에게 해당 비공개 암호화 키를 보유하고 있음을 증명하도록 요구하여 그 식별자가 특정 엔터티에 속하는지 확인할 수 있습니다.

참고: 다른 유형의 생태계도 존재합니다

위의 그림 1은 이 명세의 나머지 개념을 구체적으로 이해하기 위한 생태계의 예를 제공합니다. 보호된 환경이나 독점 시스템과 같은 다른 생태계에서도 검증 가능한 자격 증명이 이점을 제공합니다.

이 생태계는 일반적인 양자 간 또는 연합 신원 제공자 모델과 대조됩니다. IdP로 줄여 부르기도 하는 신원 제공자는 보유자의 신원 정보를 생성, 유지 및 관리하는 동시에 연합 또는 분산 네트워크 내의 신뢰 당사자 애플리케이션에 인증 서비스를 제공하는 시스템입니다. 연합 신원 모델에서는 보유자의 신원이 신원 제공자와 긴밀하게 연결됩니다(다만 보유자는 여러 개의 신원을 가질 수 있고, 각 신원에는 고유한 식별자와 신원 제공자가 연결될 수 있습니다. 이러한 구성은 개인정보 보호, 업무용과 개인용의 구분 및 기타 고려 사항을 지원하는 데 적합할 수 있습니다): 식별된 보유자에 관한 정보가 신뢰 당사자에게 필요할 때마다 신원 제공자에게서 직접 정보를 얻으므로 신원 제공자는 그러한 모든 트랜잭션에 참여하고 이를 알게 됩니다. 이와 달리 이 명세에서는 신원 제공자의 개념을 발급자보유자라는 서로 다른 두 개념으로 분리하는 3자 모델을 설명합니다. 발급자는 한 번의 상호작용에서 검증 가능한 자격 증명보유자에게 제공하고, 이후 보유자는 별도의 상호작용에서 이를 검증자에게 제시합니다. 이러한 상호작용에는 발급자가 참여하지 않으며 발급자가 이를 인지할 필요조차 없습니다. 이 명세에서는 이러한 개념을 다른 명세와 비교하거나 매핑하는 경우를 제외하고 "신원 제공자", "연합 신원" 또는 "신뢰 당사자"라는 용어를 사용하지 않습니다.

참고: 주체가 항상 보유자인 것은 아닙니다

많은 경우 검증 가능한 자격 증명보유자는 주체이지만, 그렇지 않은 경우도 있습니다. 예를 들어 부모(보유자)가 자녀(주체)의 검증 가능한 자격 증명을 보유하거나, 반려동물 소유자( 보유자)가 반려동물( 주체)의 검증 가능한 자격 증명을 보유할 수 있습니다. 이러한 예외 사례에 대한 자세한 내용은 검증 가능한 자격 증명 구현 지침 1.0 주체-보유자 관계 절을 참조하세요.

검증 가능한 자격 증명 생태계와 구체적인 수명 주기 예제를 더 깊이 살펴보려면 검증 가능한 자격 증명 개요 v1.0을 참조하세요 [VC-OVERVIEW].

1.3 적합성

비규범적으로 표시된 절뿐만 아니라 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고 사항도 비규범적입니다. 이 명세의 그 밖의 모든 내용은 규범적입니다.

이 문서의 핵심 단어 MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHOULDSHOULD NOTBCP 14에 설명된 대로 해석해야 합니다. [RFC2119] [RFC8174] 단, 여기에 표시된 것처럼 모두 대문자로 나타나는 경우에만 해당합니다.

적합 문서는 모든 관련 "MUST" 문구를 준수하는 압축된 JSON-LD 문서입니다. 구체적으로 이 문서의 다음 절에 있는 관련 규범적 "MUST" 문구를 적용해야 합니다: 4. 기본 개념, 5. 고급 개념6. 구문의 요건을 MUST에 따라 반드시 적용해야 합니다. 적합 문서는 MUST에 따라 미디어 유형이 application/vc검증 가능한 자격 증명 또는 미디어 유형이 application/vp검증 가능한 프레젠테이션 중 하나여야 합니다. 또한 적합 문서는 MUST에 따라 다음 절에 설명된 하나 이상의 보안 메커니즘으로 보호되어야 합니다: 4.12 보안 메커니즘.

적합한 발급자 구현적합 문서를 생성하고, MUST에 따라 자신이 생성하는 적합 문서에 모든 필수 속성을 포함해야 하며, MUST에 따라 다음 절에 설명된 보안 메커니즘을 사용하여 자신이 생성하는 적합 문서를 보호해야 합니다: 4.12 보안 메커니즘.

적합한 검증자 구현적합 문서를 사용하며, MUST에 따라 적합 문서를 다음 절에 설명된 대로 검증해야 합니다: 4.12 보안 메커니즘. 또한 MUST에 따라 각 필수 속성이 해당 속성의 규범적 요구 사항을 충족하는지 확인하고, 비적합 문서를 감지하면 MUST에 따라 오류를 생성해야 합니다.

이 명세에는 필수 속성과 선택적 속성이 모두 포함되어 있습니다. 선택적 속성은 MAY에 따라 적합한 발급자 구현적합한 검증자 구현에서 무시할 수 있습니다.

이 문서에는 인라인 주석(//)이나 예제에 거의 도움이 되지 않는 정보를 나타내기 위한 줄임표 (...)처럼 JSON에서 유효하지 않은 문자를 포함하는 예도 있습니다. 구현자는 이 정보를 유효한 문서로 사용하려는 경우 이러한 내용을 제거해야 합니다.

참고: 영어로 된 사람이 읽을 수 있는 텍스트는 예시입니다

이 문서 전반에 제공되는 예에는 개념을 쉽게 이해할 수 있도록 namedescription 같은 설명 속성에 영어 값을 사용한 명세의 각 예가 포함되어 있습니다. 이러한 예는 국제적 사용에 필요한 데이터 구조를 반드시 반영하는 것은 아니며, 다음 절에서 자세히 설명합니다: 9. 국제화 고려 사항.

2. 용어

다음 용어는 이 명세의 개념을 설명하는 데 사용됩니다.

주장
주체에 관해 제시된 진술입니다.
자격 증명
발급자가 제시한 하나 이상의 주장 집합입니다. 자격 증명의 주장은 서로 다른 주체에 관한 것일 수 있습니다. 이 명세에서 사용하는 자격 증명의 정의는 NIST의 자격 증명 정의와 다릅니다.
탈중앙화 식별자
DID라고도 하는 이식 가능한 URL 기반 식별자는 엔터티와 연결됩니다. 이러한 식별자는 대부분 검증 가능한 자격 증명에서 사용되며 주체와 연결됩니다. 따라서 검증 가능한 자격 증명을 한 자격 증명 저장소에서 다른 저장소로 쉽게 이전하면서도 자격 증명을 다시 발급할 필요가 없습니다. DID의 예는 did:example:123456abcdef입니다. 자세한 내용은 분산 식별자 (DID) v1.0 사양을 참조하십시오.
기본 그래프
명시적으로 명명된 그래프의 일부가 아닌 모든 주장을 포함하는 그래프입니다.
엔터티
진술에서 추상 명사 또는 구체 명사로 참조할 수 있는 모든 것입니다. 엔터티에는 사람, 조직, 물리적 사물, 문서, 추상적 개념, 허구의 인물 및 임의의 텍스트 등이 포함되지만 이에 국한되지 않습니다. 모든 엔터티는 가능한 경우 생태계에서 역할을 수행할 수 있습니다. 단, 일부 엔터티는 본질적으로 행동할 수 없습니다. 예를 들어 문자열 "abc"는 자격 증명을 발급할 수 없습니다.
그래프
주체와 다른 주체 또는 데이터와의 관계로 구성된 정보 네트워크를 형성하는 주장 집합입니다. 각 주장은 그래프의 일부입니다. 명명된 그래프에서는 명시적인 일부이며, 기본 그래프에서는 암시적인 일부입니다.
보유자
엔터티가 하나 이상의 검증 가능한 자격 증명을 보유하고 이를 바탕으로 검증 가능한 프레젠테이션을 생성함으로써 수행할 수 있는 역할입니다. 보유자는 흔히 자신이 보유한 검증 가능한 자격 증명주체이지만 항상 그런 것은 아닙니다. 보유자는 자신의 자격 증명자격 증명 저장소에 보관합니다.
발급자
엔터티가 하나 이상의 주체에 관해 주장을 하고, 이러한 주장으로 검증 가능한 자격 증명을 생성한 다음, 그 검증 가능한 자격 증명보유자에게 전송함으로써 수행할 수 있는 역할입니다.
명명된 그래프
verifiableCredential과 같은 특정 속성과 연결된 그래프입니다. 이러한 속성은 해당 JSON 객체에 정의된 모든 주장을 포함하는 별도의 그래프를 생성합니다.
프레젠테이션
하나 이상의 발급자가 발급한 하나 이상의 검증 가능한 자격 증명에서 파생되어 특정 검증자와 공유되는 데이터입니다.
자격 증명 저장소
파일 시스템, 저장소 볼트 또는 개인용 검증 가능한 자격 증명 지갑과 같이 보유자의 검증 가능한 자격 증명을 저장하고 이에 대한 접근을 보호하는 소프트웨어입니다.
선택적 공개
보유자가 공유할 정보를 세밀하게 결정할 수 있는 능력입니다.
연결 불가능한 공개
검증자들 사이에서 프레젠테이션을 연관 지을 수 없는 선택적 공개 유형입니다.
주체
주장의 대상입니다.
유효성 검사
특정 발급자주장이 특정 용도에 관한 검증자의 비즈니스 요구 사항을 충족한다는 보장입니다. 이 명세는 검증자가 검증 가능한 자격 증명검증 가능한 프레젠테이션을 검증하는 방법을 정의합니다. 또한 검증자검증 가능한 자격 증명의 주장에 의존하기 전에 유효성을 검사하도록 명시합니다. 그러나 그러한 유효성 검사 수단은 매우 다양하며 이 명세의 범위를 벗어납니다. 검증자는 특정 주장에 대해 특정 발급자를 신뢰하고 자체 규칙을 적용하여 어느 자격 증명의 어느 주장이 자신의 시스템에서 사용하기에 적합한지 판단합니다.
검증 가능한 자격 증명
작성자를 암호학적으로 검증할 수 있는 변조 감지형 자격 증명입니다. 검증 가능한 자격 증명으로 암호학적으로 검증할 수도 있는 검증 가능한 프레젠테이션을 구성할 수 있습니다.
검증 가능한 데이터 레지스트리
데이터베이스나 분산 원장 같은 시스템이 식별자, 검증 자료 및 기타 관련 데이터의 생성과 검증을 중개함으로써 수행할 수 있는 역할입니다. 기타 관련 데이터에는 검증 가능한 자격 증명 스키마와 취소 레지스트리 등이 있습니다. 일부 구성에서는 주체에 상호 연관 가능한 식별자가 필요할 수 있습니다. UUID와 검증 자료를 위한 일부 레지스트리는 식별자의 네임스페이스 역할을 할 수 있습니다.
검증 가능한 프레젠테이션
암호학적 검증 과정을 거친 후 데이터의 작성자를 신뢰할 수 있도록 인코딩한 정보의 변조 감지형 프레젠테이션입니다. 특정 유형의 검증 가능한 프레젠테이션에는 원본 검증 가능한 자격 증명에서 합성되었지만 원본 자체는 포함하지 않는 데이터가 들어 있을 수 있습니다(예: 영지식 증명).
검증
검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션이 각각 발급자 또는 제시자의 진정하고 현재 유효한 진술인지 평가하는 것입니다. 여기에는 자격 증명 또는 프레젠테이션이 명세를 준수하는지, 보안 메커니즘을 충족하는지, 그리고 상태가 존재하는 경우 상태 확인에 성공하는지 검사하는 일이 포함됩니다. 자격 증명을 검증한다고 해서 자격 증명에 인코딩된 주장의 진실성을 평가하는 것은 아닙니다.
검증자
엔터티가 하나 이상의 검증 가능한 자격 증명을, 선택적으로 처리할 검증 가능한 프레젠테이션에 포함된 형태로 수신하여 수행하는 역할입니다. 다른 명세에서는 이 개념을 신뢰 당사자라고 부를 수 있습니다.
검증 자료
암호학적으로 보호된 정보의 보안을 검증하는 데 사용하는 정보입니다. 예를 들어 암호화 공개 키는 검증 가능한 자격 증명과 연결된 디지털 서명을 검증하는 데 사용됩니다.
URL
URL 표준에서 정의한 통합 자원 위치 지정자입니다. 일부 URL은 역참조하여 문서 같은 리소스를 얻을 수 있습니다. URL을 역참조하거나 가져오는 규칙은 URL 스킴에서 정의합니다. 이 명세에서는 URI와 IRI라는 용어가 웹 개발자에게 혼란을 준다고 판단되었으므로 사용하지 않습니다.

3. 핵심 데이터 모델

이 절은 비규범적입니다.

다음 절에서는 이 명세의 기반을 이루는 주장, 자격 증명, 프레젠테이션, 검증 가능한 자격 증명검증 가능한 프레젠테이션 같은 핵심 데이터 모델 개념을 설명합니다.

참고: 자격 증명과 검증 가능한 자격 증명의 차이

독자는 이 절에서 설명하는 자격 증명프레젠테이션 같은 일부 개념에 이 명세에서 정의한 미디어 유형이 없다는 점을 알 수 있습니다. 그러나 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션적합 문서로 정의되며 관련 미디어 유형이 있습니다. 이러한 개념의 구체적인 차이, 즉 자격 증명프레젠테이션검증 가능한 자격 증명검증 가능한 프레젠테이션의 차이는 "검증 가능한" 객체는 암호학적 방식으로 보호되지만 나머지는 그렇지 않다는 점뿐입니다. 자세한 내용은 4.12 보안 메커니즘을 참조하세요.

3.1 주장

이 절은 비규범적입니다.

주장주체에 관한 진술입니다. 주체주장의 대상입니다. 주장주체- 속성- 관계를 사용하여 표현합니다.

주체에는 값을
            지닌 속성이 있습니다
그림 2 주장의 기본 구조.

위의 그림 2에 나타낸 주장의 데이터 모델은 강력하며 매우 다양한 진술을 표현할 수 있습니다. 예를 들어 누군가가 특정 대학을 졸업했는지를 아래 그림 3처럼 표현할 수 있습니다.

Pat에는 값이 Example University인 alumniOf
            속성이 있습니다
그림 3 Pat이 "Example University"의 동문임을 나타내는 기본 주장.

개별 주장을 결합하여 주체에 관한 정보 그래프를 표현할 수 있습니다. 아래 그림 4의 예는 Pat이 Sam을 알고 있으며 Sam이 교수로 고용되어 있다는 주장을 추가하여 이전 주장을 확장합니다.

값이
            Sam인 knows라는 다른 속성으로 이전 다이어그램을 확장하며,
            Sam에는 값이 Professor인 jobTitle 속성이 있습니다
그림 4 여러 주장을 결합하여 정보 그래프를 표현할 수 있습니다.

여기까지 주장과 정보 그래프의 개념을 소개했습니다. 주장을 신뢰할지 판단하는 데 도움이 되도록 그래프에 더 많은 정보가 추가될 것으로 예상됩니다.

3.2 자격 증명

이 절은 비규범적입니다.

자격 증명은 동일한 엔터티가 제시한 하나 이상의 주장 집합입니다. 자격 증명에는 식별자와 자격 증명의 속성을 설명하는 메타데이터도 포함될 수 있습니다. 이러한 속성에는 발급자, 유효 날짜 및 기간, 대표 이미지, 검증 자료, 상태 정보 등이 있습니다. 검증 가능한 자격 증명은 누가 발급했는지를 암호학적으로 증명하는 변조 감지형 주장과 메타데이터의 집합입니다. 검증 가능한 자격 증명의 예로는 디지털 직원 신분증, 디지털 운전면허증 및 디지털 교육 수료증 등이 있지만 이에 국한되지 않습니다.

검증 가능한
               자격 증명에는 자격 증명 메타데이터, 주장 및
               증명이 포함됩니다
그림 5 검증 가능한 자격 증명의 기본 구성 요소.

위의 그림 5검증 가능한 자격 증명의 기본 구성 요소를 보여 주지만, 주장이 정보 그래프로 구성되고 그 그래프가 다시 검증 가능한 자격 증명으로 구성되는 방법의 세부 사항은 추상화합니다.

아래 그림 6검증 가능한 자격 증명 데이터 무결성 1.0에 기반한 내장 증명을 사용하는 검증 가능한 자격 증명을 더 완전하게 보여 줍니다. 이는 최소 두 개의 정보 그래프로 구성됩니다. 첫 번째 정보 그래프검증 가능한 자격 증명 그래프 (기본 그래프)는 자격 증명 메타데이터와 다른 주장을 통해 검증 가능한 자격 증명 자체를 표현합니다. proof 속성이 참조하는 두 번째 정보 그래프검증 가능한 자격 증명증명 그래프이며 별도의 명명된 그래프입니다. 증명 그래프는 디지털 증명을 표현하며, 이 경우에는 디지털 서명입니다. 여러 정보 그래프가 필요한 이유에 관심 있는 독자는 5.12 검증 가능한 자격 증명 그래프를 참조할 수 있습니다.

위쪽의 'verifiable credential graph'에 관한 주장 모음이
proof 속성(또는 술어)을 통해 아래쪽의 'verifiable credential proof
graph'에 연결된 다이어그램입니다. 검증 가능한 자격 증명의 주장에는 주체인 'Credential
123'과 네 가지 속성, 즉 값이 ExampleAlumniCredential인 'type',
값이 Example University인 'issuer', 값이 2010-01-01T19:23:24Z인 'validFrom' 및
값이 Pat인 credentialSubject가 포함되며, Pat에는 값이
Example University인 alumniOf 속성도 있습니다. 검증 가능한 자격 증명 증명 그래프에는 주체인
'Signature 456' 객체와 다섯 가지 속성, 즉 값이 DataIntegrityProof인 'type',
값이 Example University Public Key 7인 'verificationMethod', 값이
2017-06-18T21:19:10Z인 'created', 값이 34dj239dsj328인 'nonce' 및 값이
'zBavE110…3JT2pq'인 'proofValue'가 있습니다. 검증 가능한 자격 증명 그래프에는
괄호 안에 '(기본 그래프)'라는 설명도 있으며, 검증 가능한 자격 증명 증명
그래프에는 괄호 안에 '(명명된 그래프)'라는 설명이 있습니다.
그림 6 내장 증명을 사용하는 기본 검증 가능한 자격 증명과 연결된 정보 그래프. 이 증명은 검증 가능한 자격 증명 데이터 무결성 1.0 [VC-DATA-INTEGRITY]에 기반합니다.

아래 그림 7그림 6과 동일한 검증 가능한 자격 증명을 보여 주지만, JOSE [VC-JOSE-COSE]를 사용하여 보호합니다. 페이로드에는 하나의 정보 그래프만 있으며, 이는 자격 증명 메타데이터와 다른 주장을 포함하는 검증 가능한 자격 증명 그래프입니다.

왼쪽에
'SD-JWT (Decoded)'라고 표시된 상자가 있고, 'Header', 'Payload',
'Signature'라는 세 개의 텍스트 레이블이 세로로 쌓여 있는 다이어그램입니다. 'Header' 레이블은
화살표를 통해 오른쪽의 별도 직사각형에
연결되며, 이 직사각형에는 'kid: aB8J-_Z', 'alg: ES384',
'cty: vc', 'iss: https://example.com', 'iat: 1704690029', 'typ:
vc+sd-jwt'라는 여섯 개의 텍스트 필드가 있습니다. 왼쪽의 'Payload' 레이블은
화살표를 통해 하나의 그래프를 포함하는 별도 직사각형에 연결됩니다.
직사각형에는 'verifiable credential graph (serialized in
JSON)'이라는 레이블이 있습니다. 그래프의 주장에는 주체인 'Credential 123'과
네 가지 속성, 즉 값이 'ExampleAlumniCredential'인 'type',
값이 'Example University'인 'issuer', 값이
'2010-01-01T19:23:24Z'인 'validFrom', 값이 'Pat'인 'credentialSubject'가
포함되며, Pat에는 값이 'Example University'인 'alumniOf' 속성도 있습니다.
마지막으로 왼쪽의 'Signature' 레이블은 화살표를 통해
단일 텍스트 필드가 있는 별도의 직사각형에 연결됩니다:
'DtEhU3ljbEg8L38VWAfUA...'.
그림 7 JOSE를 사용한 검증 가능한 자격 증명 보안 및 COSE에 기반한 포괄 증명을 사용하는 기본 검증 가능한 자격 증명과 연결된 정보 그래프 [VC-JOSE-COSE].

3.3 프레젠테이션

이 절은 비규범적입니다.

개인정보 보호 강화는 이 명세의 핵심 설계 특성입니다. 따라서 이 기술을 사용하는 엔터티는 주어진 상황에 적합한 페르소나의 일부만 표현하는 것이 중요합니다. 자신의 페르소나 중 일부를 표현하는 것을 검증 가능한 프레젠테이션이라고 합니다. 서로 다른 페르소나의 예로는 개인의 직업적 페르소나, 온라인 게임 페르소나, 가족 페르소나 또는 익명 페르소나가 있습니다.

검증 가능한 프레젠테이션보유자생성하며, 여러 검증 가능한 자격 증명의 데이터를 표현할 수 있고 임의의 추가 데이터를 포함할 수 있습니다. 이는 검증자에게 주장을 제시하는 데 사용합니다. 또한 검증 가능한 자격 증명을 직접 제시할 수도 있습니다.

프레젠테이션의 데이터는 흔히 동일한 주체에 관한 것이지만 여러 발급자가 발급했을 수 있습니다. 이 정보를 집계하면 개인, 조직 또는 엔터티의 한 측면을 표현합니다.

검증 가능한
            프레젠테이션에는 프레젠테이션 메타데이터, 검증 가능한
            자격 증명 및 증명이 포함됩니다
그림 8 검증 가능한 프레젠테이션의 기본 구성 요소.

위의 그림 8검증 가능한 프레젠테이션의 구성 요소를 보여 주지만, 검증 가능한 자격 증명이 정보 그래프로 구성되고 그 그래프가 다시 검증 가능한 프레젠테이션으로 구성되는 방법의 세부 사항은 추상화합니다.

아래 그림 9검증 가능한 자격 증명 데이터 무결성 1.0에 기반한 내장 증명을 사용하는 검증 가능한 프레젠테이션을 더 완전하게 보여 줍니다. 이는 최소 네 개의 정보 그래프로 구성됩니다. 첫 번째 정보 그래프검증 가능한 프레젠테이션 그래프 (기본 그래프)는 프레젠테이션 메타데이터를 통해 검증 가능한 프레젠테이션 자체를 표현합니다. 검증 가능한 프레젠테이션verifiableCredential 속성을 통해 검증 가능한 자격 증명을 참조합니다. 이 자격 증명자격 증명 메타데이터와 다른 주장을 포함하는 독립적인 검증 가능한 자격 증명 그래프입니다. 이 자격 증명proof 속성을 통해 검증 가능한 자격 증명 증명 그래프를 참조하며, 이는 자격 증명의 증명(일반적으로 디지털 서명)을 표현합니다. 이 검증 가능한 자격 증명 그래프와 이에 연결된 증명 그래프는 각각 두 번째와 세 번째 정보 그래프를 구성하며, 각각은 별도의 명명된 그래프입니다. 또한 프레젠테이션proof 속성을 통해 프레젠테이션증명 그래프인 네 번째 정보 그래프(또 다른 명명된 그래프)를 참조합니다. 이 프레젠테이션 증명 그래프검증 가능한 프레젠테이션 그래프, 검증 가능한 자격 증명 그래프검증 가능한 자격 증명 그래프에서 연결된 증명 그래프의 디지털 서명을 나타냅니다.

위쪽의
'verifiable presentation graph'가 'proof'를 통해 아래쪽의
'verifiable presentation proof graph'에 연결된 다이어그램입니다. 검증 가능한
프레젠테이션 그래프에는 'Presentation ABC' 객체와 세 가지 속성, 즉 값이
VerifiablePresentation인 'type', 값이 'Do Not Archive'인 'termsOfUse'가 있습니다.
그래프에는 괄호 안에 '(기본 그래프)'라는 설명이 있습니다. 이
그래프는 'verifiableCredential'을 통해 그림에서
그림 6과 동일한 부분에 연결되지만, 검증 가능한 자격 증명 그래프에는
기본 그래프가 아닌 명명된 그래프라는 설명이 있습니다.
검증 가능한 프레젠테이션 증명 그래프에는 'Signature 8910' 객체와
다섯 가지 속성, 즉 값이 'DataIntegrityProof'인 'type', 값이
'Example Presenter Public Key 11'인 'verificationMethod', 값이
'2018-01-15T12:43:56Z'인 'created', 값이 'd28348djsj3239'인 'nonce', 값이
'zp2KaZ...8Fj3K='인 'proofValue'가 있습니다. 이 그래프에는 괄호 안에
'(명명된 그래프)'라는 설명이 있습니다
그림 9 검증 가능한 자격 증명 데이터 무결성 1.0에 기반한 내장 증명을 사용하는 기본 검증 가능한 프레젠테이션과 연결된 정보 그래프.

아래 그림 10그림 9와 동일한 검증 가능한 프레젠테이션을 보여 주지만, [VC-JOSE-COSE]에 기반한 포괄 증명을 사용합니다. 페이로드에는 두 개의 정보 그래프만 있습니다. 하나는 프레젠테이션 메타데이터를 통해 검증 가능한 프레젠테이션을 표현하는 검증 가능한 프레젠테이션 그래프이고, 다른 하나는 verifiableCredential 속성이 참조하는 해당 검증 가능한 자격 증명 그래프입니다. 검증 가능한 자격 증명 그래프에는 하나의 EnvelopedVerifiableCredential 인스턴스가 포함되어 있으며, 이 인스턴스는 data: URL [RFC2397]을 통해 그림 7에 표시된 포괄 증명으로 보호된 검증 가능한 자격 증명을 참조합니다.

왼쪽에
'JWT (Decoded)'라고 표시된 상자가 있고 세 개의 텍스트 레이블,
즉 'Header', 'Payload', 'Signature'가 세로로 쌓여 있는 다이어그램입니다. 'Header' 레이블은
화살표를 통해 오른쪽의 별도 직사각형에
연결되며, 이 직사각형에는 'kid: aB8J-_Z', 'alg: ES384',
'cty: vc', 'iss: https://example.com', 'iat: 1704690029', 'typ:
vp+sd-jwt'라는 여섯 개의 텍스트 필드가 있습니다. 왼쪽의 'Payload' 레이블은
화살표를 통해
'verifiableCredential'이라고 표시된 화살표로 연결된 두 개의 관련
그래프가 세로로 쌓여 있는 별도 직사각형에 연결됩니다. 두 그래프에는 각각 'verifiable
presentation graph (serialized in JSON)'와 'verifiable credential
graph (serialized in JSON)'라는 레이블이 있습니다. 직사각형의 위쪽 그래프에는
'Presentation ABC' 객체와 세 가지 속성, 즉 값이 VerifiablePresentation인 'type',
값이 'Do Not Archive'인 'termsOfUse'가 있습니다. 아래쪽 그래프에는
주체인 'data:application/vc+sd-jwt,QzVjV...RMjU'와
값이 `EnvelopedVerifiableCredential`인 'type'이라는
단일 속성이 있습니다. 마지막으로 왼쪽의 'Signature' 레이블은
화살표를 통해 단일 텍스트 필드가 있는 별도 직사각형에 연결됩니다:
'XaOOh4ljklxH7L99RTVSfOl...'.
그림 10 JOSE를 사용한 검증 가능한 자격 증명 보안 및 COSE에 기반한 포괄 증명을 사용하는 기본 검증 가능한 프레젠테이션과 연결된 정보 그래프. data: URL은 그림 7에 표시된 검증 가능한 자격 증명을 참조합니다.
참고: 프레젠테이션에는 여러 검증 가능한 자격 증명을 포함할 수 있습니다

대학 자격 증명 모음처럼 서로 다른 주체에 관한 여러 자격 증명을 활용하는 프레젠테이션을 만들 수 있습니다. 이러한 주체는 서로 관련된 경우가 많지만 반드시 그럴 필요는 없습니다. verifiableCredential 속성을 사용하여 여러 검증 가능한 자격 증명을 참조하면 이를 구현할 수 있습니다. 자세한 내용은 부록 E. 검증 가능한 프레젠테이션을 위한 추가 다이어그램을 참조하세요.

참고: 발급자와 검증자도 프레젠테이션을 제시할 수 있습니다

1.2 생태계 개요에서 설명한 것처럼 엔터티는 특정 자격 증명 교환에 참여할 때 하나 이상의 역할을 맡을 수 있습니다. 일반적으로 보유자프레젠테이션을 생성할 것으로 예상하지만, 발급자 또는 검증자보유자에게 자신을 식별하기 위한 프레젠테이션을 생성할 수도 있습니다. 이는 보유자검증 가능한 프레젠테이션의 일부로 민감한 정보를 넘겨주기 전에 발급자 또는 검증자로부터 더 높은 수준의 보증이 필요한 경우 발생할 수 있습니다.

4. 기본 개념

이 절에서는 문서 후반의 5. 고급 개념을 준비하기 위해 이 명세의 몇 가지 기본 개념을 소개합니다.

4.1 시작하기

이 절은 비규범적입니다.

이 명세는 새로운 유형의 검증 가능한 자격 증명 프로토타입을 쉽게 만들 수 있도록 설계되었습니다. 개발자는 아래 템플릿을 복사하여 일반적인 검증 가능한 자격 증명 도구에 붙여 넣은 후 프로토타입 자격 증명의 발급, 보유 및 검증을 시작할 수 있습니다.

개발자는 아래의 MyPrototypeCredential을 생성하려는 자격 증명 유형으로 변경합니다. 검증 가능한 자격 증명은 주체에 관한 정보를 나타내므로 credentialSubject 객체의 각 속성-값 쌍은 자격 증명 주체의 특정 속성을 표현합니다. 개발자가 이러한 속성-값 조합을 여러 개 추가하면 수정한 객체를 적합한 발급자 구현으로 전송할 수 있으며, 개발자를 위한 검증 가능한 자격 증명이 생성됩니다. 프로토타입 제작의 관점에서 개발자가 해야 할 일은 이것이 전부입니다.

예제 1: 검증 가능한 자격 증명 프로토타입을 생성하기 위한 템플릿
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiableCredential", "MyPrototypeCredential"],
  "credentialSubject": {
    "mySubjectProperty": "mySubjectValue"
  }
}

모든 자격 증명 속성이 안정화되면 다른 개발자와의 상호 운용성을 촉진하기 위해 안정적인 URL에서 어휘 및 컨텍스트 파일을 생성하고 게시하는 것이 좋습니다. 그러면 위의 https://www.w3.org/ns/credentials/examples/v2 URL은 사용 사례별 컨텍스트의 URL로 대체됩니다. 이 과정은 5.2 확장성에서 설명합니다. 또는 개발자가 자신의 사용 사례에 적합한 기존 어휘 및 컨텍스트 파일을 재사용할 수도 있습니다. 재사용 가능한 리소스는 검증 가능한 자격 증명 확장에서 찾아볼 수 있습니다.

4.2 검증 가능한 자격 증명

검증 가능한 자격 증명은 하나 이상의 주체의 속성과 자격 증명 자체의 속성을 표현하는 데 사용합니다. 이 명세에서는 검증 가능한 자격 증명에 다음 속성을 정의합니다:

@context
4.3 컨텍스트에서 정의합니다.
id
4.4 식별자에서 정의합니다.
type
4.5 유형에서 정의합니다.
name
4.6 이름 및 설명에서 정의합니다.
description
4.6 이름 및 설명에서 정의합니다.
issuer
4.7 발급자에서 정의합니다.
credentialSubject
4.8 자격 증명 주체에서 정의합니다.
validFrom
4.9 유효 기간에서 정의합니다.
validUntil
4.9 유효 기간에서 정의합니다.
status
4.10 상태에서 정의합니다.
credentialSchema
4.11 데이터 스키마에서 정의합니다.
refreshService
5.4 갱신에서 정의합니다.
termsOfUse
5.5 사용 약관에서 정의합니다.
evidence
5.6 증거에서 정의합니다.

검증 가능한 자격 증명5.2 확장성에서 정의한 확장 메커니즘을 통해 추가 속성을 갖도록 확장할 수 있습니다.

4.3 컨텍스트

두 소프트웨어 시스템이 데이터를 교환해야 하는 경우 두 시스템이 모두 이해하는 용어를 사용해야 합니다. 두 사람이 같은 언어를 사용하여 효과적으로 소통하는 상황을 생각해 보세요. 이때 "이름"과 "웹사이트" 같은 단어는 두 사람에게 동일한 의미를 갖습니다. 이를 대화의 맥락이라고 부르기도 합니다. 이 명세에서는 소프트웨어 시스템이 소통할 컨텍스트를 설정함으로써 유사한 결과를 얻기 위해 이와 비슷한 개념을 사용합니다.

검증 가능한 자격 증명검증 가능한 프레젠테이션을 처리하는 소프트웨어 시스템은 각 용어에 URL을 사용하여 용어를 식별합니다. 그러나 이러한 URL은 길고 사람이 이해하기 어려울 수 있지만, 짧고 사람이 이해하기 쉬운 별칭이 더 유용할 수 있습니다. 이 명세에서는 @context 속성을 사용하여 짧은 별칭을 URL에 매핑합니다.

검증 가능한 자격 증명검증 가능한 프레젠테이션MUST에 따라 @context 속성을 포함해야 합니다. 애플리케이션 개발자는 MUST에 따라 자신의 애플리케이션에서 사용하는 모든 JSON-LD 컨텍스트를 최소한 해당 애플리케이션에서 사용하는 용어의 의미에 영향을 주는 범위까지 이해해야 합니다. 이를 위한 한 가지 메커니즘은 검증 가능한 자격 증명 데이터 무결성 1.0 명세의 컨텍스트 유효성 검사 절에서 설명합니다. 이 명세를 기반으로 하는 다른 명세는 MAY에 따라 5.3 관련 리소스의 무결성에서 설명하는 relatedResource 기능 또는 실질적으로 동일한 메커니즘을 사용하여 JSON-LD 컨텍스트의 무결성을 보호하도록 요구할 수 있습니다.

@context
@context 속성의 값은 MUST에 따라 첫 번째 항목이 값 https://www.w3.org/ns/credentials/v2URL순서 집합이어야 합니다. 순서 집합의 이후 항목은 MUST에 따라 각각 JSON-LD 컨텍스트로 처리할 수 있는 URL과 객체의 임의 조합으로 구성되어야 합니다.
예제 2: @context 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/58473",
  "type": ["VerifiableCredential", "ExampleAlumniCredential"],
  "issuer": "did:example:2g55q912ec3476eba2l9812ecbfe",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "alumniOf": {
      "id": "did:example:c276e12ec21ebfeb1f712ebc6f1",
      "name": "Example University"
    }
  }
}

위 예에서는 기본 컨텍스트 URL (https://www.w3.org/ns/credentials/v2)을 사용하여 데이터 교환이 검증 가능한 자격 증명에 관한 것임을 설정합니다. 이 개념은 5.2 확장성에서 자세히 설명합니다. https://www.w3.org/ns/credentials/v2에서 제공되는 데이터는 영구적으로 캐시할 수 있는 정적 문서이며, 이를 처리하기 위한 지침은 부록 C.1 기본 컨텍스트에서 제공합니다. 검증 가능한 자격 증명 데이터 모델과 연결된 사람이 읽을 수 있는 어휘 문서는 https://www.w3.org/2018/credentials/에서 확인할 수 있습니다.

두 번째 URL(https://www.w3.org/ns/credentials/examples/v2)은 예제를 보여 주는 데 사용합니다. 구현에서는 파일럿 또는 프로덕션 시스템과 같은 다른 용도로 이 URL을 사용하지 않아야 합니다.

참고: @context에 관한 자세한 내용은 JSON-LD를 참조하세요.

@context 속성JSON-LD 1.1 명세의 3.1절: 컨텍스트에서 자세히 설명합니다.

4.4 식별자

사람, 제품 또는 조직과 같은 특정 대상에 관한 진술을 표현할 때 해당 대상의 전역 고유 식별자를 사용하면 유용할 수 있습니다. 전역 고유 식별자를 사용하면 다른 사람도 동일한 대상에 관한 진술을 표현할 수 있습니다. 이 명세에서는 이러한 식별자를 위한 선택적 id 속성을 정의합니다. id 속성을 사용하면 검증 가능한 자격 증명에서 특정 대상에 관한 진술을 표현할 수 있습니다. 이 속성은 발급자검증 가능한 자격 증명의 객체를 표현하거나 보유자검증 가능한 프레젠테이션의 객체를 표현할 때 설정합니다. id 속성은 해당 식별자로 식별되는 특정 대상에 관해 진술할 때 다른 사람이 사용할 것으로 예상되는 식별자를 표현합니다. id 값의 예로는 UUID(urn:uuid:0c07c1ce-57cb-41af-bef2-1b932b986873), HTTP URL (https://id.example/things#123) 및 DID(did:example:1234abcd)가 있습니다.

참고: 모든 종류의 식별자는 상호 연관 가능성을 높입니다

가명성이 필요한 경우 식별자가 해로울 수 있다는 점에 유의해야 합니다. 이러한 시나리오를 고려하는 개발자는 검증 가능한 자격 증명 데이터 모델 위협 모델의 식별자 기반 연관을 주의 깊게 읽는 것이 좋습니다. 해당 위협 모델에는 개인정보 보호 우려를 야기하는 다른 유형의 접근 및 연관 메커니즘도 설명되어 있습니다. 개인정보 보호가 매우 중요한 경우 id 속성을 생략할 수 있습니다. 일부 사용 사례에서는 id 속성이 필요하지 않거나 명시적으로 생략해야 합니다. 마찬가지로 공개적으로 해석 가능한 URL과 다른 형태의 식별자 중 무엇을 선택할지에도 특별한 주의를 기울여야 합니다. 공개적으로 해석 가능한 URL은 검증과 상호 운용성을 더 쉽게 만들 수 있지만, 신중하게 사용하지 않으면 잠재적으로 민감한 정보에 의도치 않게 접근할 수 있게 할 수도 있습니다.

id
id 속성OPTIONAL입니다. 존재하는 경우 id 속성의 값은 MUST에 따라 단일 URL이어야 하며, 이 URL은 MAY에 따라 역참조할 수 있습니다. idURL은 역참조할 수 있는 경우 id에 관한 기계 판독 가능한 정보가 포함된 문서를 반환하도록 하는 것이 RECOMMENDED됩니다.
예제 3: id 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z4YTXwLsLd1kt1HM7aiFhWhJYx1t4yoWao1tFEynhvNfxqePMkcK4QpNzRroySyUH9Ag982woc5t2YzQ7LLX3AqWQ"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhA6TPtWUgUCJt1rQqbqCfcSZQeEpLHBS2u--Vre3YbbaU8x_fT4kdxkKmqVDCoJXkd8qV0YCiEQpgtzBXm8HBTO1gjgCQCLiKKrqepEjOrfkY90gbKmjDB3kxiFNS_tN8ueB5ddi1YIHeRz2ItCd7x2QK6PbOBKzWrNep5DYze4y5NXxlBoVpRhVhAFSXxNQF4TOwMv4zOwVFPSqSJ3Q98juXpLK9ed_lMkNEMhwXPoKqm9fDPIUJm1pyL0550MtR9H-P5b1HI88T7h1hAwnzjAyTih0eUEGdNpw99sRfTTr6pUHeup4l8UPmtaOyD-MgR56N5b6vP47xiEByQ1eYqQICm887lyF-RYVMEelhAzmXULuhGx4gahQ6XV5selZjmWB7AtzP-WKWZ18fijhpQLtx0muoY1x25xkMmhkTsis_jpZm6fIo0wCL88eOlclhASbYynISrIzYDe0tR-MX8MQojTEXCFh71gnZ6id8JJoHG116-2dh5jcdJclKpQEaUwDScBorZomXbKigt-XnLMVhAFtmz-F-0MG17vdZn5GACVXu90IqDFNuYQmVU4ontNLIBa86Zv7zxpusVJ-oYV9Q9Xy2LuUNRr1a3Y4uVCvKbooFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQoLP9_m8lDPzinaMuMAXBoZN9fSKhpVUcTYeUjsKH9vq5fUwuGi9yz1Csx8Yu_quOM9-UaqA5B7u6CEdcNQ3UOIgiaklN_FLHA_RPXJMzBDlYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7S1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1ggVNjK7M8a8gmijQflNaERaynhh6JJq4XbRk_-Bte29TKBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .B920o-0JSKLCWI46-cj8kQseV4LUK6S_jmw85SJrorwxtT2lTp_dqT-sc10kNzRuhZDYU3dgNkf873yDztyzqQ
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58403f30c5e70205d9388ee29b0da2f3e8d81a9a392626724981fa2cbb0d604c9930fedbda4a10ebd23f3e5556204bf32644a1a2e50a1b7bf46469370980e3b91cfe
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDYsImV4cCI6MTc5MTE0MDMwNiwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJZZVQ5S0VOcmo1dmRBWGRSTUNnLTZLZGRkLWoyNDBmNm5xZ1NuWUJZeHMwIl19LCJfc2QiOlsiaVlINzN3OUFoaWpTbC14TlNMaHFhTEc3d3NYZFRtblV6UWZvNmhpRHFhQSJdfSwiX3NkIjpbIjZiT1ZsMWxna0l0cS13TWtKczJUN1R1SlhGVlFpay1aQnA0SG1mS0NCRVUiLCJmajQwckVQVU9heE1PMXBqS2NYcTJSbHV2Z1psOGRXd25qVllUVzJGRWdRIl19 .hXB3j1prqZjevv3TSwTYFMaHKsUkp-0mQ0amPPC9aWzZFNf3XyhKZg1B1HY60iIVUfc4KA4FSyNf85ch8gVZBQ ~WyJNQUtMcGhYekhVbXFleTVOeHlyMDVBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJkU216T09tUDlzbFhxWmtiYlFDY0JnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJISzhKNld3NXZNM2Q1eWxXNWprMWd3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyI3Q0JMbC1BX0lqRW5hUUFNUGRyRjRnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930706,
  "exp": 1791140306,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "YeT9KENrj5vdAXdRMCg-6Kddd-j240f6nqgSnYBYxs0"
      ]
    },
    "_sd": [
      "iYH73w9AhijSl-xNSLhqaLG7wsXdTmnUzQfo6hiDqaA"
    ]
  },
  "_sd": [
    "6bOVl1lgkItq-wMkJs2T7TuJXFVQik-ZBp4HmfKCBEU",
    "fj40rEPUOaxMO1pjKcXq2RluvgZl8dWwnjVYTW2FEgQ"
  ]
}

클레임: id

SHA-256 해시: 6bOVl1lgkItq-wMkJs2T7TuJXFVQik-ZBp4HmfKCBEU

공개 정보: WyJNQUtMcGhYekhVbXFleTVOeHlyMDVBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "MAKLphXzHUmqey5Nxyr05A",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: fj40rEPUOaxMO1pjKcXq2RluvgZl8dWwnjVYTW2FEgQ

공개 정보: WyJkU216T09tUDlzbFhxWmtiYlFDY0JnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "dSmzOOmP9slXqZkbbQCcBg",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: iYH73w9AhijSl-xNSLhqaLG7wsXdTmnUzQfo6hiDqaA

공개 정보: WyJISzhKNld3NXZNM2Q1eWxXNWprMWd3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "HK8J6Ww5vM3d5ylW5jk1gw",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: YeT9KENrj5vdAXdRMCg-6Kddd-j240f6nqgSnYBYxs0

공개 정보: WyI3Q0JMbC1BX0lqRW5hUUFNUGRyRjRnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "7CBLl-A_IjEnaQAMPdrF4g",
  "type",
  "ExampleBachelorDegree"
]

위 예에서는 두 가지 유형의 식별자를 사용합니다. 첫 번째 식별자는 검증 가능한 자격 증명을 위한 것으로 HTTP 기반 URL을 사용합니다. 두 번째 식별자는 검증 가능한 자격 증명주체, 즉 주장의 대상을 위한 것으로 탈중앙화 식별자, 즉 DID를 사용합니다.

참고: 탈중앙화 식별자는 선택 사항입니다

DID검증 가능한 자격 증명이 유용해지는 데 필수적이지 않은 식별자 유형입니다. 구체적으로 검증 가능한 자격 증명DID에 의존하지 않으며, DID검증 가능한 자격 증명에 의존하지 않습니다. 그러나 많은 검증 가능한 자격 증명에서 DID를 사용하며, 이 명세를 구현하는 소프트웨어 라이브러리는 DID를 해석해야 합니다. DID 기반 URL은 주체, 발급자, 보유자, 자격 증명 상태 목록, 암호화 키 및 검증 가능한 자격 증명과 연결된 기타 기계 판독 가능 정보의 식별자를 표현하는 데 사용합니다.

4.5 유형

이 문서에서 지정하는 종류의 객체를 처리하는 소프트웨어 시스템은 제공된 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션이 의도한 사용 사례에 적합한지 판단하기 위해 유형 정보를 사용합니다. 이 명세에서는 객체 유형 정보를 표현하기 위한 type 속성을 정의합니다. 이 유형 정보는 부록 B. 유효성 검사에 설명된 유효성 검사 과정에서 사용할 수 있습니다.

검증 가능한 자격 증명검증 가능한 프레젠테이션에는 MUST에 따라 연결된 값을 가진 type 속성이 포함되어야 합니다.

type
type 속성의 값은 MUST에 따라 하나 이상의 용어절대 URL 문자열이어야 합니다. 둘 이상의 값을 제공하는 경우 순서는 중요하지 않습니다.
예제 4: type 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z6EZb8u9LCmj4n9Zm2BoCKJcAw6ArZ3RpFsS7m1E6Lb6ySUrG5qHje6qskzsEbdpa8rNB1mjbX6puRkiEgJ8aS9n"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAwBK33vI24M4jN9dqcrgJl0vHddo_DcoXFDpaib_hwQFMYEoPUbO0TUonsTpmVZEmCNrxHYobBCla7C2W8x_Gp1gjgCQCCd9B2g1d0XCQRcPer00UDp2TLMn5sS3MB1bDhK1MMm1YIL9mQ4saAdUYr1IPhWjEgso5K9oUV6Qs9w5JkGmkvv58hVhACnFBfA6E3CUBXiURXoczsl8RsBjvV926h9jJR56DIEXNesLN899NZ7gXcrBDJj4nkF27KVwBI8UcV71Tf39wZ1hA_-Nt5U3QGSQuxvuM2wCIZ0h2z_uCoqEXh2bDOlkHWwtFigAPIPLRDw-xeU_EwhY71w-NdqBsmjGKq_ji1zNEDlhAUcKi0p0PcmlGLTsPh_8U8AfcJOVGY5D63rCw0iQT0jR0mw1SiJGJa71-U00v0NYyt6GhMCGzPMsg-XpTNW3qOVhAz7gChStj45uDgaavRzX8JAoO1Sy8YzewL2KcJZV6pXs5GAz-mZ-a1iozT_VqLyxDL-kV4IC_OcMf4Jqq2KmmalhABJw7GHblmkZ3qFunnVjl4OyjEJZ-m1Y85614CuZfX7LUhMQTTpsCZgP1WYxirnS31V29hkuLPGWTKzVurrIbWIFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQoLP9_m8lDPzinaMuMAXBoZN9fSKhpVUcTYeUjsKH9vq5fUwuGi9yz1Csx8Yu_quOM9-UaqA5B7u6CEdcNQ3UOIgiaklN_FLHA_RPXJMzBDlYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7S1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1ggZDe-w-B3_SpLFl7Tgrk76zY_wWMzklwbjn5UCLjEaAqBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .ToQPiO_DGJu1R6zQ8HCvug9Cm3yt4khNIiZfCLyX7loPUoHh9-v_2wmH1T7a010YRhaAapdnrAysquTEfDTK2g
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840c8c1e22ac952a3f0201d31e3dd3fc5268112dbcd52957d772cc1f46babde3e965544a23c6ef7e592b2214f96c96194974a73c1f052387c8bba9d71a8b45e9245
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDYsImV4cCI6MTc5MTE0MDMwNiwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJwSEs4NXI2Qk8xRkZ4WGEyQW5XLTQ0cE53Sl83OS1pdk5jeXFidzVIMmU0Il19LCJfc2QiOlsiRGtWWGtrUGxnVjlTaDZxSF81M1R4dHNEY2RaU2xyb2p5Yi0zRzFPMTJocyJdfSwiX3NkIjpbIi1HbzdUMlVVYnNYRjA5b3NqWnRqSVhFUk1GbGsxandQUHdLMGphdzNFWnMiLCJIRV92aXM3VEZva3NvbFc4eHhZc1ZyMkVMaXZFZnlfZ3p0b292Q0Z1cWdzIl19 .a8WD-Zg7C_6xvw3mUe69vOdPmL6y9EoFqWsdLPOLhkY7v13kg43BPF0AYPFKyaqNmR5zgoD8N7F9HLyTrV2Rxg ~WyJjMEVadEhfWEprNkZjYkR6N2lwM2JBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyI3cGVuRktGNm9lV3MyOUh2Q3ZDdzZ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJDekhLMTY3cEl0OENpb0g4dXp4TGZBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJZRUl4VktJdzJ5elY1UjJlM0huMC13IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930706,
  "exp": 1791140306,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "pHK85r6BO1FFxXa2AnW-44pNwJ_79-ivNcyqbw5H2e4"
      ]
    },
    "_sd": [
      "DkVXkkPlgV9Sh6qH_53TxtsDcdZSlrojyb-3G1O12hs"
    ]
  },
  "_sd": [
    "-Go7T2UUbsXF09osjZtjIXERMFlk1jwPPwK0jaw3EZs",
    "HE_vis7TFoksolW8xxYsVr2ELivEfy_gztoovCFuqgs"
  ]
}

클레임: id

SHA-256 해시: -Go7T2UUbsXF09osjZtjIXERMFlk1jwPPwK0jaw3EZs

공개 정보: WyJjMEVadEhfWEprNkZjYkR6N2lwM2JBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "c0EZtH_XJk6FcbDz7ip3bA",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: HE_vis7TFoksolW8xxYsVr2ELivEfy_gztoovCFuqgs

공개 정보: WyI3cGVuRktGNm9lV3MyOUh2Q3ZDdzZ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "7penFKF6oeWs29HvCvCw6w",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: DkVXkkPlgV9Sh6qH_53TxtsDcdZSlrojyb-3G1O12hs

공개 정보: WyJDekhLMTY3cEl0OENpb0g4dXp4TGZBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "CzHK167pIt8CioH8uzxLfA",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: pHK85r6BO1FFxXa2AnW-44pNwJ_79-ivNcyqbw5H2e4

공개 정보: WyJZRUl4VktJdzJ5elY1UjJlM0huMC13IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "YEIxVKIw2yzV5R2e3Hn0-w",
  "type",
  "ExampleBachelorDegree"
]

이 명세와 관련하여 다음 표에는 유형MUST에 따라 지정해야 하는 객체를 나열합니다.

객체 유형
검증 가능한 자격 증명 객체 VerifiableCredential 및 선택적으로 더 구체적인 검증 가능한 자격 증명 유형. 예:
"type": ["VerifiableCredential", "OpenBadgeCredential"]
검증 가능한 프레젠테이션 객체 VerifiablePresentation 및 선택적으로 더 구체적인 검증 가능한 프레젠테이션 유형. 예:
"type": "VerifiablePresentation"
credentialStatus 객체 유효한 자격 증명 상태 유형. 예:
"type": "BitstringStatusListEntry"
termsOfUse 객체 유효한 사용 약관 유형. 예:
"type": "TrustFrameworkPolicy"
evidence 객체 유효한 증거 유형. 예:
"type": "Evidence"
refreshService 객체 유효한 refreshService 유형. 예:
"type": "VerifiableCredentialRefreshService2021"
credentialSchema 객체 유효한 credentialSchema 유형. 예:
"type": "JsonSchema"
참고: 검증 가능한 자격 증명 데이터 모델은 JSON-LD를 기반으로 합니다

검증 가능한 자격 증명 데이터 모델의 유형 시스템은 JSON-LD 1.1의 유형 시스템과 동일하며, 3.5절: 유형 지정9절: JSON-LD 문법에서 자세히 설명합니다. JSON-LD 컨텍스트를 사용하는 경우(다음 절 참조: 5.2 확장성) 이 명세에서는 JSON-LD 문서를 더 쉽게 이해할 수 있도록 @type 키워드의 별칭으로 type을 사용합니다. 애플리케이션 개발자와 문서 작성자는 JSON-LD 유형 시스템의 세부 사항을 이해할 필요가 없지만, 상호 운용 가능한 확장성을 지원하려는 이 명세의 구현자는 이해해야 합니다.

모든 자격 증명, 프레젠테이션 및 캡슐화된 객체는 소프트웨어 시스템이 이 추가 정보를 더 쉽게 감지하고 처리할 수 있도록 ExampleDegreeCredential 같은 더 구체적인 추가 유형SHOULD에 따라 지정하거나 해당 유형과 연결해야 합니다.

이 명세에서 정의한 캡슐화된 객체를 처리할 때, 예를 들어 credentialSubject 객체와 연결되거나 그 내부에 깊이 중첩된 객체를 처리할 때 소프트웨어 시스템은 계층 구조에서 더 상위에 있는 캡슐화 객체에 지정된 유형 정보를 SHOULD에 따라 사용해야 합니다. 구체적으로 자격 증명과 같은 캡슐화 객체는 검증자가 캡슐화 객체의 유형을 기반으로 연결된 객체의 내용을 빠르게 판단할 수 있도록 연결된 객체의 유형SHOULD에 따라 전달해야 합니다.

예를 들어 typeExampleDegreeCredential자격 증명 객체는 credentialSubject 속성과 연결된 객체에 다음 식별 정보가 포함되어 있음을 검증자에게 알립니다:

이를 통해 구현자는 type 속성과 연결된 값을 검증에 사용할 수 있습니다. 객체 유형과 이에 연결된 값은 적어도 해당 유형의 URL에서 찾을 수 있는 사람이 읽을 수 있는 명세에 문서화되어야 합니다. 예를 들어 BitstringStatusList 유형의 사람이 읽을 수 있는 정의는 https://www.w3.org/ns/credentials/status/#BitstringStatusList에서 확인할 수 있습니다. 또한 동일한 URL에서 HTTP 콘텐츠 협상을 통해 기계 판독 가능한 버전을 제공하는 것이 좋습니다.

참고: 새 자격 증명 유형을 생성하려면 구현 지침을 참조하세요

새로운 유형의 검증 가능한 자격 증명을 생성하는 방법에 대한 설명은 이 명세의 범위를 벗어납니다. 이에 관심 있는 독자는 검증 가능한 자격 증명 구현 지침 1.0 새 자격 증명 유형 생성 절을 읽는 것이 좋습니다.

4.6 이름 및 설명

자격 증명을 표시할 때는 발급자가 제공하여 자격 증명에 이름과 그 목적에 대한 간단한 설명을 덧붙이는 텍스트가 있으면 유용할 수 있습니다. namedescription 속성은 이러한 용도로 사용됩니다.

name
자격 증명의 이름을 나타내는 선택 사항 속성입니다. 이 속성이 있는 경우, name 속성의 값은 반드시 하나 이상의 문자열 또는 언어 값 객체여야 하며, 이에 대해서는 9.1 언어 및 기본 방향에 설명되어 있습니다. 이상적으로는 자격 증명의 이름이 간결하고 사람이 읽을 수 있으며, 개인이 보유하고 있는 하나의 자격 증명을 다른 자격 증명과 빠르게 구별할 수 있도록 해야 합니다.
description
자격 증명에 관한 구체적인 세부 정보를 전달하는 선택 사항 속성입니다. 이 속성이 있는 경우, description 속성의 값은 반드시 하나 이상의 문자열 또는 언어 값 객체여야 하며, 이에 대해서는 9.1 언어 및 기본 방향에 설명되어 있습니다. 이상적으로는 자격 증명의 설명이 몇 문장 이하의 길이이며, 개인이 자격 증명의 전체 클레임을 살펴보지 않고도 그 내용을 떠올릴 수 있을 만큼 충분한 정보를 전달해야 합니다.
예제 5: name 및 description 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5JGQJ1PM9tVffeHNrgEStUWJbvYk7HVBN7Z3zfErPC8G3Mwhvqeqx4an2snGV2WUnRihLpPxYeNK6d6J89AaoaTX"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAdFhy-JN2GW5Dnh4d7EsTa0ncYI80siKI1pHtuw94P94DVCrxOjJsdLXeRjyOAXkXXKsvpmFsQ_GZehN7c10_PFgjgCQC7XRd97UQvpLe0btSuQu9hrw2RL2bK68sa4y_2cQ_zyZYIKqs9lgSmOwFmPC9CIzYAXsv_YV7QQ49ZxaglQ-qiSQDh1hAUlVd32iSeDeuo4z0Nf2DDxibdc-QUU4Hcuhm9ggmm0MPO9wXFaVTY0D4-bJjr2mRhk-mu2iPhs0p5jNmLYIEyVhAPjImaDOgax6V_tUycGZj7R1gxzI7LHYKbAZ_Y3N0s-GefRoi6DcPdY0iOPDAjoEC-qMLpSjEEc5xYadCaYBk21hAlTPnTwMvkVTlQLgvyPXNLOIaQPj6PFzI9jhJx8CMz4i78StsnrzRQN9dsTb_xVmP5iMCi3ViaFSEDXIaAqZC9FhALIi19M4mdyZlQ53s9l_ASgieFcymwwvtRHC2AnLlKgfzEvXSKWDgul4-322vHpB4M8ucMjKn5Q0sr1HanyhaeVhAA9RMJyoqV2iZbewLXMuLW_UhSyzJIStqFeY0nHIdhLQw3CDxauHxOolfQcTEai5Jov0s_lRRjzshgiWzHFowA1hAZXdHIOyF39LoS8K8QReUufPus8fFTNRXlQRImi66LowJfuZ_7uIN6_xthDsrAeZWjrc16Gr183swvzTJiwW6kVhA-1hfUhh4aT1SjibzVa4ZJtsR0PW9fgSrT5rCRlZPHZtBBmrFNEMsULTcbVsxuOK-V4nwtjQy5NnDzX8kymp-IoFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQjCGp_S_NpasPUn5F_U3s2ShK3TjpUZxQz-0D7YzUOYqko_p20t-vte4AM-0zGQqgD-coRiRh0fmC485rD7qltMgE1pXMtf1PTKL085c-nL1YQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7XFDE8ZX70eeJX1DawHuw0sW9CBV3sa68IaRGcnZiiQpYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1ggD9x4yqwR8t_3NZAGBhYJdCo_xZnb-aBLsd7-VYhIhQuBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjp7ImlkIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJuYW1lIjoiRXhhbXBsZSBVbml2ZXJzaXR5IiwiZGVzY3JpcHRpb24iOiJBIHB1YmxpYyB1bml2ZXJzaXR5IGZvY3VzaW5nIG9uIHRlYWNoaW5nIGV4YW1wbGVzLiJ9LCJ2YWxpZEZyb20iOiIyMDE1LTA1LTEwVDEyOjMwOjAwWiIsIm5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkgRGVncmVlIiwiZGVzY3JpcHRpb24iOiIyMDE1IEJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMgRGVncmVlIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .6To3svAfzL1RPQNXtthA0Q2JNgboEMFC04Tj23YULYs4uEe93_8qkeeJFIHLRQjnVo_jMHu1eHKqVa34cGb2Xw
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": "Example University",
    "description": "A public university focusing on teaching examples."
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05902807b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a7b226964223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c226e616d65223a224578616d706c6520556e6976657273697479222c226465736372697074696f6e223a2241207075626c696320756e697665727369747920666f637573696e67206f6e207465616368696e67206578616d706c65732e227d2c2276616c696446726f6d223a22323031352d30352d31305431323a33303a30305a222c226e616d65223a224578616d706c6520556e697665727369747920446567726565222c226465736372697074696f6e223a22323031352042616368656c6f72206f6620536369656e636520616e64204172747320446567726565222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58405d0e4360b0d97086fb8624af1fa0d3161f223386021012da0410eff9fdf753200be231ae0ad5b295a6ff34e02c9d27bcdaedaa0f5d5039c458e1622b9722f7b7
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDYsImV4cCI6MTc5MTE0MDMwNiwiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Im5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkiLCJkZXNjcmlwdGlvbiI6IkEgcHVibGljIHVuaXZlcnNpdHkgZm9jdXNpbmcgb24gdGVhY2hpbmcgZXhhbXBsZXMuIiwiX3NkIjpbIjJMbVZHcUJsQ0YtV3dwa3J1WTBWV18tOElrVC1MWEV5SU5MRWdoMW9fR1EiXX0sInZhbGlkRnJvbSI6IjIwMTUtMDUtMTBUMTI6MzA6MDBaIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSBEZWdyZWUiLCJkZXNjcmlwdGlvbiI6IjIwMTUgQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyBEZWdyZWUiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsiVGo3Mi1xbDlCMEs1TWpoZkh2Z0c0ZDdfRVRNQ1VnOTVpWGxWMUxVb2ZGRSJdfSwiX3NkIjpbInMtUFBYVGdGZzNUYXI3Vk84M2NHXzI3VzB4TEN3Qmd6LVlqNF9JdUFLY28iXX0sIl9zZCI6WyI2Y2hmbnVaVno3UG9BYUxQbUJFMjZDaDJvUjJEV3VieEhtTDRXd2hjejhjIiwiclNQbFRROElNc2VOMklVNDgzVi1fTjE1MGkzdFAzXzAtLWdqckVxVnplayJdfQ .w-Lw-UG3L5smYeBaN9Y0Zz0LCHhu-4p6QvsF2h5DD1xD_PAsblrfAu1DL-WWYZgFkNaRs2PtoC2G3Kn2TEXxhA ~WyI2bGRBMFQ4LVhTY0FYSWRqWnBxQ1Z3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyI5OVFHdnEtNFBKbGpOOUlMM0EtaEhBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJQS1hScElweGVRanIycUR6a0J3T1dRIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0~WyJRYUlKRGNQN29tRjRodGFTX0t2ckVnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyIzakJxSUltWE5mUXBsd2k2RHNTc3pBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930706,
  "exp": 1791140306,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": {
    "name": "Example University",
    "description": "A public university focusing on teaching examples.",
    "_sd": [
      "2LmVGqBlCF-WwpkruY0VW_-8IkT-LXEyINLEgh1o_GQ"
    ]
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": "Example University Degree",
  "description": "2015 Bachelor of Science and Arts Degree",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "Tj72-ql9B0K5MjhfHvgG4d7_ETMCUg95iXlV1LUofFE"
      ]
    },
    "_sd": [
      "s-PPXTgFg3Tar7VO83cG_27W0xLCwBgz-Yj4_IuAKco"
    ]
  },
  "_sd": [
    "6chfnuZVz7PoAaLPmBE26Ch2oR2DWubxHmL4Wwhcz8c",
    "rSPlTQ8IMseN2IU483V-_N150i3tP3_0--gjrEqVzek"
  ]
}

클레임: id

SHA-256 해시: 6chfnuZVz7PoAaLPmBE26Ch2oR2DWubxHmL4Wwhcz8c

공개 정보: WyI2bGRBMFQ4LVhTY0FYSWRqWnBxQ1Z3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "6ldA0T8-XScAXIdjZpqCVw",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: rSPlTQ8IMseN2IU483V-_N150i3tP3_0--gjrEqVzek

공개 정보: WyI5OVFHdnEtNFBKbGpOOUlMM0EtaEhBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "99QGvq-4PJljN9IL3A-hHA",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: 2LmVGqBlCF-WwpkruY0VW_-8IkT-LXEyINLEgh1o_GQ

공개 정보: WyJQS1hScElweGVRanIycUR6a0J3T1dRIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0

내용: [
  "PKXRpIpxeQjr2qDzkBwOWQ",
  "id",
  "https://university.example/issuers/565049"
]

클레임: id

SHA-256 해시: s-PPXTgFg3Tar7VO83cG_27W0xLCwBgz-Yj4_IuAKco

공개 정보: WyJRYUlKRGNQN29tRjRodGFTX0t2ckVnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "QaIJDcP7omF4htaS_KvrEg",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: Tj72-ql9B0K5MjhfHvgG4d7_ETMCUg95iXlV1LUofFE

공개 정보: WyIzakJxSUltWE5mUXBsd2k2RHNTc3pBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "3jBqIImXNfQplwi6DsSszA",
  "type",
  "ExampleBachelorDegree"
]

이름과 설명은 여러 언어로 콘텐츠를 표현하는 것도 지원합니다. 언어 및 기본 방향 정보가 포함된 문자열을 표현하려면 @value, @language@direction 속성을 포함하는 객체를 사용하여 각각 텍스트 값, 언어 태그 및 기본 방향을 표현할 수 있습니다. 자세한 내용은 9.1 언어 및 기본 방향을 참조하십시오.

참고: @direction은 단일 언어 문자열에 필수가 아닙니다

아래 예제의 @direction 속성은 관련 단일 언어 문자열에 필수가 아닙니다. 이러한 문자열의 기본 방향이 @direction 값으로 설정된 방향과 동일하기 때문입니다. 여기서는 예시를 명확히 하고 복사+붙여넣기+편집을 통해 올바르게 작동하는 결과를 얻을 수 있도록 @direction 속성을 포함했습니다. 구현자는 JSON-LD 1.1 사양의 문자열 국제화 절을 읽어보는 것이 좋습니다.

예제 6: name 및 description 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": {
    "id": "https://university.example/issuers/565049",
    "name": [{
      "@value": "Example University",
      "@language": "en"
    }, {
      "@value": "Université Exemple",
      "@language": "fr"
    }, {
      "@value": "جامعة المثال",
      "@language": "ar",
      "@direction": "rtl"
    }],
    "description": [{
      "@value": "A public university focusing on teaching examples.",
      "@language": "en"
    }, {
      "@value": "Une université publique axée sur l'enseignement d'exemples.",
      "@language": "fr"
    }, {
      "@value": ".جامعة عامة تركز على أمثلة التدريس",
      "@language": "ar",
      "@direction": "rtl"
    }]
  },
  "validFrom": "2015-05-10T12:30:00Z",
  "name": [{
    "@value": "Example University Degree",
    "@language": "en"
  }, {
    "@value": "Exemple de Diplôme Universitaire",
    "@language": "fr"
  }, {
    "@value": "مثال الشهادة الجامعية",
    "@language": "ar",
    "@direction": "rtl"
  }],
  "description": [{
    "@value": "2015 Bachelor of Science and Arts Degree",
    "@language": "en"
  }, {
    "@value": "2015 Licence de Sciences et d'Arts",
    "@language": "fr"
  }, {
    "@value": "2015 بكالوريوس العلوم والآداب",
    "@language": "ar",
    "@direction": "rtl"
  }],
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": [{
        "@value": "Bachelor of Science and Arts Degree",
        "@language": "en"
      }, {
        "@value": "Licence de Sciences et d'Arts",
        "@language": "fr"
      }, {
        "@value": "بكالوريوس العلوم والآداب",
        "@language": "ar",
        "@direction": "rtl"
      }]
    }
  }
}

4.7 발급자

이 사양은 검증 가능한 자격 증명발급자를 표현하기 위한 속성을 정의합니다.

검증 가능한 자격 증명에는 MUST issuer 속성이 있어야 합니다.

issuer
issuer 속성의 값은 MUST URL이거나, 값이 URLid 속성을 포함하는 객체여야 합니다. 어느 경우든 발급자는 전 세계적으로 모호하지 않게 자신을 식별하기 위해 이 URL을 선택합니다. 해당 URL을 역참조했을 때, 제어된 식별자 v1.0 사양에 정의된 제어된 식별자 문서가 반환되도록 하는 것이 RECOMMENDED됩니다. 이 문서는 발급자에 관한 것으로, 자격 증명에 표현된 정보를 검증하는 데 사용할 수 있습니다.
예제 7: issuer 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z2RzsaTmoxGG2g4xVrpWgh8rHHRbmcVHqSZ1ue1xD77Y9tQdqqg1aUfUVQgWP2dcMes37gLqXxg9Q2B2H9DwLmL3r"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:26Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAf1zw_jNqIGlmb0QeC5GlBsPhstuqcKxGuqCVFJ0UNTg3vxw8c9LGVcWijyItz3HSylyM80-IIHrZmWFRYsVI-1gjgCQCFUfhCd04jMuBqxKpJGPWXwYU24FiWeeoyKTxSOtdfVRYIF0GkKzAwjI-nK4dso6UPQSpqDkjX44ls464xt9OmlUXhVhA2AG4jgcCQ91Me-Hqy8h51lIHpR-oUUo223NAtazXONX967-9I4FJ8fjdKDj1mD1Z6mqc95X8IkRSNGo4FnuKvVhA2YWLRMkRKJU-RtJu9EUtpJ5owI78csJjGZIL970OL4lI46X1BRoyco_8Rfm_NjaE_v49nJsSMALSAKZ-2MQR0FhAsfYK_N1FCMHCrzPZ9OznrOPLgTIfsPs7kaQc-6y-_XY3w3J-ufFCuot9uDG_JgshtJFVkNck6VUDy6zg4kGY_FhAuK1CezGY1iQ7GqQ-u0NQrgVkTfEdVjk94lgYBn7qcArZJLomd7UmKNbzPxU-VIzjhIsOpBMiE8kxF81MnKwTXFhAP1XYS_e6k0uDMN-Ttnx9Du6Qq0bg-_2n70wzv7G4_mGnuLodGr-Q1XecJuynqRwHxsVzMID0ewNLcm2AStHTtYFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQs9fbaFdP3aqQ-HlQzzbBfM-f-oLzfBuxWIBV1BOuhkUWRFEjq1LkKKdyRbvdTCgEWMCzPWApPxiutao3L5Mcu4YFk5N0HqAG2StWUtOuhBBYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7Knv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1gg6Uxmr1xqgl867_LI6uW5x84no2QENQ71nSwj9Alz1_WBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .nD8KmRYoQje8PeqPp2bWHPrAOhvNe4m2OBLLRBLwwR-O6YAW2c7wxFyCB-Z7Fy61dBpMA5gArjH16ZyoEOYxEw
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05901ba7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d584055ed32dc82e4355e7015805bbbf12017d1e941f1bd63382204b22920891e91c61173d13d6b02645e358860c9ec1c42cfd058841a0889d1c8ecb671be3793e717
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDcsImV4cCI6MTc5MTE0MDMwNywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbInN0YWlRc1V0eVNwbDVKRTZ4ZTgyTldzVHJwYm1vb0haVkFGY2pPWjhHbGsiXX0sIl9zZCI6WyJYUXFJa3lLc2dCOUliYmdmVTdLRTNIZHVZY0pYR01Vbld1eG9qQjdlcXU0Il19LCJfc2QiOlsid2RsREVXajkzdGF6bmE1a0FvRTNURUtKRXpGWEJiUmd3OU43QjA4NUUxWSIsInhXOWU5eGxrX1JpSWhvUTNZRkwzYUNISXV6NHBwdk1zX2dLTXBYeU9GQW8iXX0 .Vwuca0wRb4G2XR_oGrvLYS4JmrWvOxyZfqDFRaXDQPGrUarHW6VpXE8D2JfzpnLzv8S_-Y9KI6QGmmSTf-3BSg ~WyJLMkVheUxRMzhFYVZmZjdIUzNwYkxBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJYc25oRlUxM3RYeUc0elp0MlVfWElnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJBcUNuTHBDNXpIU3VnYjdnMGdPU09nIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJ4T3BvX0NWZ3lmT1pwenoxOEtMZ0N3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930707,
  "exp": 1791140307,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "degree": {
      "name": "Bachelor of Science and Arts",
      "_sd": [
        "staiQsUtySpl5JE6xe82NWsTrpbmooHZVAFcjOZ8Glk"
      ]
    },
    "_sd": [
      "XQqIkyKsgB9IbbgfU7KE3HduYcJXGMUnWuxojB7equ4"
    ]
  },
  "_sd": [
    "wdlDEWj93tazna5kAoE3TEKJEzFXBbRgw9N7B085E1Y",
    "xW9e9xlk_RiIhoQ3YFL3aCHIuz4ppvMs_gKMpXyOFAo"
  ]
}

클레임: id

SHA-256 해시: xW9e9xlk_RiIhoQ3YFL3aCHIuz4ppvMs_gKMpXyOFAo

공개 정보: WyJLMkVheUxRMzhFYVZmZjdIUzNwYkxBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "K2EayLQ38EaVff7HS3pbLA",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: wdlDEWj93tazna5kAoE3TEKJEzFXBbRgw9N7B085E1Y

공개 정보: WyJYc25oRlUxM3RYeUc0elp0MlVfWElnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "XsnhFU13tXyG4zZt2U_XIg",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: XQqIkyKsgB9IbbgfU7KE3HduYcJXGMUnWuxojB7equ4

공개 정보: WyJBcUNuTHBDNXpIU3VnYjdnMGdPU09nIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "AqCnLpC5zHSugb7g0gOSOg",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: staiQsUtySpl5JE6xe82NWsTrpbmooHZVAFcjOZ8Glk

공개 정보: WyJ4T3BvX0NWZ3lmT1pwenoxOEtMZ0N3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "xOpo_CVgyfOZpzz18KLgCw",
  "type",
  "ExampleBachelorDegree"
]

또한 issuer 속성에 객체를 연결하여 발급자에 관한 추가 정보를 표현할 수 있습니다.

예제 8: issuer 속성의 확장된 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z25Xgd8Wyndo6ytvMibGqRFvmUfdE9kGH9t6fummfcUnBWnFmtQcdYcRsu6fxCUUwNFKimPQ27Lqih3nmVgYCKNy9"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAajJf21AUjEX8iP1SEqw0G4vglXrhWz3nRckhZd4hh81E4O4hRaMAVXV_TA8Sm_BuAVzuowPz-wQS-4j3lBJyfVgjgCQCFYT0pFoC-tZeTeCfCoVvXr2VEeOtX9AAFDznn3RaLYtYIA_22DbAY97i6hAblXM2c8nd5SwgfdMQFTQizk7qO7ckhVhAtpNRZv0rv9ss-zgHQdMUVI5RRYba71qcgLEl-4RKeDHEdq056IEo5fEaPj5aK9evCb37MEwBebFSp5mfMbgkMFhArdW-SIzUS6XJF62UeuY1WLJSCMT6yfrG395ncuDwvdyarc43UPcroR-nZAOdIs4JdDGRcCMccrGbhlf-XKyVW1hABBVIVLI4Gl_DqNe2Tdbg4YljmUzu4dTdhaD81qQVbL-IrOW9WYu9buOF87kPe2qXiWlfjVM-oGftdYofG8QXJ1hA1BsmzvUiZLb-7rcMlYjiycIaPjk7ii66hH4pu6WXJ2IL-NAOxIdFzJbGy_HXInC2VV09FQ-LLETyqR5mXe5TLVhAhwQYEQk4nyGkRyiZuIZILSBVbOCx_lR6evh1RxbALPDWYPAVYwEOfInNzdc5OBLqfzbh9yj67jVPJ8G1e9IamIFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQtZdW8xg8wDCQNhVmorySBC8TaV1SH_x2Ig9e8RfkmyVsAVcK0j1RnJ9j-7JHlP1EO_mPkkImWBnFKN-86jOIzJJ0hAWnl3lhUPU8sMHR5RZYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7QAGpGXTZS6rwOppAPreXlDb3xQb46PJ_xcVri0glVYJYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1gg-dtY4ahmWPmBi4dTdmN8423_v_FDD3tXf1U-B09mS5SBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjp7ImlkIjoiZGlkOmV4YW1wbGU6NzZlMTJlYzcxMmViYzZmMWMyMjFlYmZlYjFmIiwibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSJ9LCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .MzY-HyRPrAWXIhjp2KrZ1wk9bZeYxYHFQSRmAsb-eywVim1NGo6lfnfWd5MnthP69ubpEHOSMx754rzY0HY_XQ
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": {
    "id": "did:example:76e12ec712ebc6f1c221ebfeb1f",
    "name": "Example University"
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05901df7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a7b226964223a226469643a6578616d706c653a373665313265633731326562633666316332323165626665623166222c226e616d65223a224578616d706c6520556e6976657273697479227d2c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840987b0fdf3d149876087474180b1a41b72f448b2c78c924d01a11ff198867431d10ea17aabf9892fbf025fce33db6c67b2e7d7eb367d8e997ca31cb50ae77f57c
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDcsImV4cCI6MTc5MTE0MDMwNywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjp7Im5hbWUiOiJFeGFtcGxlIFVuaXZlcnNpdHkiLCJfc2QiOlsiMmxWbkcyRzFVMGc2QVVRbV9lMTFSWFRvZmJfM2hRX05NUkFiZmx1WmNldyJdfSwidmFsaWRGcm9tIjoiMjAxMC0wMS0wMVQxOToyMzoyNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsidTlSZHFJZmtKc19kMF85WUo4bnI3QzRBVjJMRk42Tm0tT20yMlZjZ0xPOCJdfSwiX3NkIjpbIkFmVHBTWERBUjB5RWtqRndRQXVLbDgxaE42cWxIVmlTRlBBUWtFQ1p6NUUiXX0sIl9zZCI6WyJpQ2RGa2Rnd1NuUWkwZUVjcUZkVFlKV05Vb0pnWHVnSkw4RkNxTFJVZTZvIiwid1VmeVlkUHhMOVdrLW94SG9rZV9Ia1FWbVZvT0lGY1Q1YXhOWlBpck5pZyJdfQ .AuE3wVEdDyQ1nudPcVAwNcHFYnhn4PZW6AS0u_R6OKPtqaz82w-BgkgP3L9n4Ex22wRL55HJj57E87HndjxMYA ~WyJZdlZKM2k1OTNsZ2szS1JZSlZPS3NnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJNSjQ0WWFiWEpHNkZXZThvMTZSQmJ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJKSFR6TXo1ZjNpZnJxbnFTX3E0WWtRIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd~WyJFZl9tT25uU1JteUZTNjIxbDlyTlpBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJzSVBPX2ZsVVlVMFFwTHhpU0NqU09BIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930707,
  "exp": 1791140307,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": {
    "name": "예시 대학교",
    "_sd": [
      "2lVnG2G1U0g6AUQm_e11RXTofb_3hQ_NMRAbfluZcew"
    ]
  },
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "degree": {
      "name": "이학 및 문학 학사",
      "_sd": [
        "u9RdqIfkJs_d0_9YJ8nr7C4AV2LFN6Nm-Om22VcgLO8"
      ]
    },
    "_sd": [
      "AfTpSXDAR0yEkjFwQAuKl81hN6qlHViSFPAQkECZz5E"
    ]
  },
  "_sd": [
    "iCdFkdgwSnQi0eEcqFdTYJWNUoJgXugJL8FCqLRUe6o",
    "wUfyYdPxL9Wk-oxHoke_HkQVmVoOIFcT5axNZPirNig"
  ]
}

클레임: id

SHA-256 해시: iCdFkdgwSnQi0eEcqFdTYJWNUoJgXugJL8FCqLRUe6o

공개 정보: WyJZdlZKM2k1OTNsZ2szS1JZSlZPS3NnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "YvVJ3i593lgk3KRYJVOKsg",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: wUfyYdPxL9Wk-oxHoke_HkQVmVoOIFcT5axNZPirNig

공개 정보: WyJNSjQ0WWFiWEpHNkZXZThvMTZSQmJ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "MJ44YabXJG6FWe8o16RBbw",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: 2lVnG2G1U0g6AUQm_e11RXTofb_3hQ_NMRAbfluZcew

공개 정보: WyJKSFR6TXo1ZjNpZnJxbnFTX3E0WWtRIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd

내용: [
  "JHTzMz5f3ifrqnqS_q4YkQ",
  "id",
  "did:example:76e12ec712ebc6f1c221ebfeb1f"
]

클레임: id

SHA-256 해시: AfTpSXDAR0yEkjFwQAuKl81hN6qlHViSFPAQkECZz5E

공개 정보: WyJFZl9tT25uU1JteUZTNjIxbDlyTlpBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "Ef_mOnnSRmyFS621l9rNZA",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: u9RdqIfkJs_d0_9YJ8nr7C4AV2LFN6Nm-Om22VcgLO8

공개 정보: WyJzSVBPX2ZsVVlVMFFwTHhpU0NqU09BIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "sIPO_flUYU0QpLxiSCjSOA",
  "type",
  "ExampleBachelorDegree"
]

참고: 발급자의 식별자는 어떤 URL이든 될 수 있습니다

issuer 속성의 값은 JWK(예: "https://jwk.example/keys/foo.jwk") 또는 DID(예: "did:example:abfe13f712120431c276e12ecab")일 수도 있습니다.

4.8 자격 증명 주체

검증 가능한 자격 증명에는 하나 이상의 주체에 관한 주장이 포함됩니다. 이 사양은 하나 이상의 주체에 관한 주장을 표현하기 위한 credentialSubject 속성을 정의합니다.

검증 가능한 자격 증명MUST credentialSubject 속성을 포함해야 합니다.

credentialSubject
credentialSubject 속성의 값은 객체의 집합이며, 각 객체는 하나 이상의 주장주체여야 합니다(MUST). 이러한 주장은 credentialSubject 속성 내부에 직렬화되어야 합니다(MUST). 또한 각 객체는 주체를 식별하기 위한 id 속성을 포함할 수 있습니다(MAY). 자세한 내용은 4.4 식별자절을 참조하십시오.
예제 9: credentialSubject 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "zk53CovMWBop9ZkqmCU3pxMHi76ZyPMReaQM9u5Pf1MyLUnT4c8bg5ys9CX6Hxs5DNQhLwXppamb8i6DvRxK3UDE"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAVrUj2rjeNcSC38fZ_dntBdq3SA7htDUKI3poAxTxKzi1-Z0dr8b-Y3_IHfPRudo-5zoq0pq2rGHC4Tl5cEwTUlgjgCQDR3jdU13IKaT7hWZ3xGVxtwkR1sWM-A3keai5OTsy9BpYIN-oNp50OJpDRpGU5iTFVPn6tMsac2VPRp4XZX2IxSu2hVhA-6krjTxNwvQuNEPxVLjDSyOEbXOb2qmZkfy22UnIIhYLTSyZfNsaXtCk188ueIR4eExv0r-RKcXa2WQHbXnI71hAQjPILjb7v8XEZNpqjNOpk8bpeGasMkD6bCuNvE6bUPVJS-N9O10r4YXpdsxwyF4aW-zb9i-3V2_t15K3aSR1SFhAb2buar9ZljjtMPYeO_mC0d9XEC20Vo5AURQdKbsoRMXWsLNVAf2P0oVrnenwiwqHDPOcO-A54ofXaJsodH66elhAjlLTby_ht7xDFN1z9fn4p7u6vcFXrlrdznWx9toN1GquCMW_la5uFVRWq99X9KKiJ5Aiv3HQVAQzyrqZayakslhAt0uAVcqVGP59revKA-y4C67jAwQj8H4TtJsh2QzSAJFmSfzZI_lYMpJt6_l2xqlGtFsshLkWjmQCwvaeQkGKW4FnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQoLP9_m8lDPzinaMuMAXBoZN9fSKhpVUcTYeUjsKH9vq5fUwuGi9yz1Csx8Yu_quOM9-UaqA5B7u6CEdcNQ3UOIgiaklN_FLHA_RPXJMzBDlYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7S1r7HKFDPyyrvPGqNF8bjgNELvoomOjpbD9JEvaGI1pYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1ggIPyJXVTu1tCskNFyyliVJpo0jdDW3HE4e6EK_xZ5nhuBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6ZWJmZWIxZjcxMmViYzZmMWMyNzZlMTJlYzIxIiwiZGVncmVlIjp7InR5cGUiOiJFeGFtcGxlQmFjaGVsb3JEZWdyZWUiLCJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyJ9fX0 .v8eVNi1qNbSHDOcx_ld821IGlc3OGAdThJjfHU7WerFd3ixT8csp0nBHCHZtrfYnG95fmdoXOUIG8qr6ymsVKw
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05901be7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f353635303439222c2276616c696446726f6d223a22323031302d30312d30315430303a30303a30305a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d58401bf709e9fe3a65b15dc37d75c5fba66d6e8522c650161cc5d9450f8f991c7d27fecd342c7891854cf42bae9229939a339ef3d361be60d6a4d1b497f8068d726b
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDcsImV4cCI6MTc5MTE0MDMwNywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDAwOjAwOjAwWiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJLbjVPeW9INnZOM1ctSXRlU3JBUnlFcVdFSEVZeUFkOFBFblgyemVxSmhnIl19LCJfc2QiOlsiX1FCV2M3TkNQaHlpUjVnTTF3QnlIZk9rMlBGS1R3MV9QZWNuMk9BanJWWSJdfSwiX3NkIjpbIllHMDg3THhCckM1SVZYVmczNzNyVGVxSEhqQ2pQcGo5a3R2WGJpdWt3cG8iLCJaQXM2aXdXWVh0Ykx3TlZST3p6dnQtQndTWDFVaVFWNDVSQzZjRk5SMGswIl19 .ea6zIDJrDk9uIgVt_cl8GKgvcDCIlYaHespHgV_nlJpx7aR1zh92Mxow3UGKR2IX8Vc5RSTkseCizBV_PxX5yg ~WyI2YUxqb0l4M3VhTTBLYUE3NVRkd0NnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJ0UWtfUHpLZl91R29YeWZrcFFSakpBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJDV3MzcmZIM1dPanZTdDlKTlVkUjN3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJsVVNKMHNxUEtBYlhlaDV6YVQwV21RIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930707,
  "exp": 1791140307,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": {
    "degree": {
      "name": "이학 및 문학 학사",
      "_sd": [
        "Kn5OyoH6vN3W-IteSrARyEqWEHEYyAd8PEnX2zeqJhg"
      ]
    },
    "_sd": [
      "_QBWc7NCPhyiR5gM1wByHfOk2PFKTw1_Pecn2OAjrVY"
    ]
  },
  "_sd": [
    "YG087LxBrC5IVXVg373rTeqHHjCjPpj9ktvXbiukwpo",
    "ZAs6iwWYXtbLwNVROzzvt-BwSX1UiQV45RC6cFNR0k0"
  ]
}

클레임: id

SHA-256 해시: YG087LxBrC5IVXVg373rTeqHHjCjPpj9ktvXbiukwpo

공개 정보: WyI2YUxqb0l4M3VhTTBLYUE3NVRkd0NnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "6aLjoIx3uaM0KaA75TdwCg",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: ZAs6iwWYXtbLwNVROzzvt-BwSX1UiQV45RC6cFNR0k0

공개 정보: WyJ0UWtfUHpLZl91R29YeWZrcFFSakpBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "tQk_PzKf_uGoXyfkpQRjJA",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: _QBWc7NCPhyiR5gM1wByHfOk2PFKTw1_Pecn2OAjrVY

공개 정보: WyJDV3MzcmZIM1dPanZTdDlKTlVkUjN3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "CWs3rfH3WOjvSt9JNUdR3w",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: Kn5OyoH6vN3W-IteSrARyEqWEHEYyAd8PEnX2zeqJhg

공개 정보: WyJsVVNKMHNxUEtBYlhlaDV6YVQwV21RIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "lUSJ0sqPKAbXeh5zaT0WmQ",
  "type",
  "ExampleBachelorDegree"
]

검증 가능한 자격 증명에서 여러 주체에 관한 정보를 표현할 수도 있습니다. 아래 예제에서는 서로 배우자인 두 주체를 지정합니다. 여러 주체credentialSubject 속성과 연결하기 위해 배열 표기법을 사용한 점에 유의하십시오.

예제 10: 검증 가능한 자격 증명에 여러 주체 지정
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "RelationshipCredential"],
  "issuer": "https://issuer.example/issuer/123",
  "validFrom": "2010-01-01T00:00:00Z",
  "credentialSubject": [{
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "name": "Jayden Doe",
    "spouse": "did:example:c276e12ec21ebfeb1f712ebc6f1"
  }, {
    "id": "https://subject.example/subject/8675",
    "name": "Morgan Doe",
    "spouse": "https://subject.example/subject/7421"
  }]
}

4.9 유효 기간

이 사양은 발급자가 자격 증명이 유효해지는 날짜와 시간을 표현할 수 있도록 validFrom 속성을 정의하고, 자격 증명이 더 이상 유효하지 않게 되는 날짜와 시간을 표현하기 위해 validUntil 속성을 정의합니다.

날짜와 시간을 비교할 때 계산은 "시간적으로" 수행됩니다. 즉, 문자열 값을 타임라인의 한 지점으로 존재하는 "시간 값"으로 변환합니다. 그런 다음 비교하는 날짜와 시간이 타임라인의 특정 지점을 기준으로 어디에 있는지 확인하여 시간 비교를 수행합니다.

validFrom
validFrom 속성이 있는 경우 그 값은 자격 증명이 유효해지는 날짜와 시간을 나타내는 [XMLSCHEMA11-2] dateTimeStamp 문자열 값이어야 합니다(MUST). 이는 미래 또는 과거의 날짜와 시간일 수 있습니다. 이 값은 credentialSubject 속성과 관련된 정보가 유효해지는 가장 이른 시점을 나타냅니다. validUntil 값도 존재하는 경우 validFrom 값은 validUntil 값이 표현하는 시점과 시간적으로 같거나 그보다 이른 시점을 표현해야 합니다(MUST).
validUntil
validUntil 속성이 있는 경우 그 값은 자격 증명이 더 이상 유효하지 않게 되는 날짜와 시간을 나타내는 [XMLSCHEMA11-2] dateTimeStamp 문자열 값이어야 합니다(MUST). 이는 과거 또는 미래의 날짜와 시간일 수 있습니다. 이 값은 credentialSubject 속성과 관련된 정보가 유효한 가장 늦은 시점을 나타냅니다. validFrom 값도 존재하는 경우 validUntil 값은 validFrom 값이 표현하는 시점과 시간적으로 같거나 그보다 늦은 시점을 표현해야 합니다(MUST).
예제 11: validFrom 및 validUntil 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z2XpzH8D3NXADVduV8CGPSnqdbaGGcsZU2Xp7AciBgzBk5YcUxwtKcfTzcDRTfJeaU3hcNXfs34VfgL8zj4peydcL"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhATTp6kF91WTX6gd7eYl3GXeKyDvs5aCSwnZej6uDA78Xz5RUyj3z4Sr41TPqbdloyeHPNzWiuBVuzO-vPyulK6VgjgCQD1P74BBshUbIseDMP8mBkuUfvQ-8-x6fprA9Q-AnpBW5YIMjqbCW4idwh9iQ5VpLFfYJi-Mio0Nl64umMprD-95d5hlhAF3SqxlkbdlJJJZJXX5sGiGC5QlSVYTtGmYqUk2Fy4hOFZJdoh76OBaTk3yy982ou_naARjsor_uK0ac6MGoNJVhA5cxv_5Ob99dSupfETgb7hEqYjG1RDIr7Moy98Ynqt7cCA4v5jk48oe_XnUpborgHWS0YIEyJ3eO1PJOrnmuE2lhAH1NC9KGgWN3LBoLaliyUkr1WGC0d10cVj0XrtJISWjPvaB9t43g1NJoeDGK2wq9_ACVy91OOvX7sNfd85JbfhlhAEToc62j5xzxVdpIO5o9cHhxRyiLQHT2V9B585XDher2Ra6-OU7vdsUsxr0q2e5hUTSLeLzL_M50g0FKS9FIhOVhAWmwBsIaL_sIbZM_pWZuWMBSXt_5qxz_2oPqoW0rCqHKIld4I8vdzVyq493vV46wwF0nbftImygWlljuM8tVGNFhAR69Kadf6DeIA3fRc9R76rjI5mXTYDA5arlY1AL2ZP0qjPC99YMSLiTaGr4TC_maTf6JzjL6XBgAn0ZiStNstfYFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQkhlWR1xgI9qIDgua5RXrnK4xCjtNBiqFezqwjKg1I8iXPATrtHkTat8Z0QjwdtdgIUh6tPsvcO_fwd_Zoj-9JpNy4RITBVOLIp6Jy1tWOWlYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7Knv3N5iX7nvZR0OCXS-uXH4QQ9mW65QM5qlHOfE4GQVYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1gg6EnBK8YflZ3f5PJ0nkt9WLoteE61EGywed9qhwvl1VWBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzM3MzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZURlZ3JlZUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwidmFsaWRVbnRpbCI6IjIwMjAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .DB99WWUOImZ58VZ7N-rQF_on7OQSH8EsLNKZdgHTii1XRI60j1FnZl269HFS_J6vZfDOfVgXQ1l-PPztPCdENA
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  }
}
application/vc+cose
d28443a10128a05901de7b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f33373332222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031302d30312d30315431393a32333a32345a222c2276616c6964556e74696c223a22323032302d30312d30315431393a32333a32345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a656266656231663731326562633666316332373665313265633231222c22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840ba6e489253d8ce8f3fc7ac578e825231f13c232fa51a8dd3241e909d0dc428c01cd5ac02704292f282ec90798d2f9aa476d7efa94de53c80cccac57fb86bced0
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDcsImV4cCI6MTc5MTE0MDMwNywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwidmFsaWRVbnRpbCI6IjIwMjAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbIlNsamJlMHpWVFlUc3N3aWZraE9jSDkyQVhYV1Rlb1ZWWFJMbWdCcDd2dG8iXX0sIl9zZCI6WyI2UFBPQUMyZlhfeEc2c3dsZ0RuSXJEbUZqNk1HZTlUY0k0R2l6am81akJzIl19LCJfc2QiOlsiODUtM0NXck9zU0Zjdk1LVU94SHBBNDNmRWR3Q2w0ZDBCNUZfVXpZR3VFSSIsIlh6VVdGMnhmLUlLZHBFaUl0N2MxNk1yVl9BZVZaRG9KNGxIWGdrZXZ3ZVkiXX0 .PkpkVhnrMVsndWxCpH5AxOKtSN0sYZQUw0-QEvpmf5EEzkzsdLO5E4h_Jl0lUogtGVuSD6Bngf02e2hdCOsR3A ~WyJQM0lKNC1VUWFFaEViYnQxa3lneWdnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd~WyJzWU5zeUNvajJJdnV6ODA4WmVSVGxnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJ0aHNDeXR1eEFyXzBORGFuNnRGNkdBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyIxcElFc0RDV1ZON2VEVElSVUVTbkp3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930707,
  "exp": 1791140307,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "validUntil": "2020-01-01T19:23:24Z",
  "credentialSubject": {
    "degree": {
      "name": "이학 및 문학 학사",
      "_sd": [
        "Sljbe0zVTYTsswifkhOcH92AXXWTeoVVXRLmgBp7vto"
      ]
    },
    "_sd": [
      "6PPOAC2fX_xG6swlgDnIrDmFj6MGe9TcI4Gizjo5jBs"
    ]
  },
  "_sd": [
    "85-3CWrOsSFcvMKUOxHpA43fEdwCl4d0B5F_UzYGuEI",
    "XzUWF2xf-IKdpEiIt7c16MrV_AeVZDoJ4lHXgkevweY"
  ]
}

클레임: id

SHA-256 해시: 85-3CWrOsSFcvMKUOxHpA43fEdwCl4d0B5F_UzYGuEI

공개 정보: WyJQM0lKNC1VUWFFaEViYnQxa3lneWdnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd

내용: [
  "P3IJ4-UQaEhEbbt1kygygg",
  "id",
  "http://university.example/credentials/3732"
]

클레임: type

SHA-256 해시: XzUWF2xf-IKdpEiIt7c16MrV_AeVZDoJ4lHXgkevweY

공개 정보: WyJzWU5zeUNvajJJdnV6ODA4WmVSVGxnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "sYNsyCoj2Ivuz808ZeRTlg",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: id

SHA-256 해시: 6PPOAC2fX_xG6swlgDnIrDmFj6MGe9TcI4Gizjo5jBs

공개 정보: WyJ0aHNDeXR1eEFyXzBORGFuNnRGNkdBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd

내용: [
  "thsCytuxAr_0NDan6tF6GA",
  "id",
  "did:example:ebfeb1f712ebc6f1c276e12ec21"
]

클레임: type

SHA-256 해시: Sljbe0zVTYTsswifkhOcH92AXXWTeoVVXRLmgBp7vto

공개 정보: WyIxcElFc0RDV1ZON2VEVElSVUVTbkp3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "1pIEsDCWVN7eDTIRUESnJw",
  "type",
  "ExampleBachelorDegree"
]

참고: 검증 가능한 자격 증명의 유효 기간 시작 시점

validFromvalidUntil이 없으면 검증 가능한 자격 증명의 유효 기간은 무기한 유효한 것으로 간주됩니다. 이러한 경우 검증 가능한 자격 증명verifiable credential이 생성된 시점부터 유효한 것으로 간주됩니다.

4.10 상태

이 사양은 검증 가능한 자격 증명이 정지되었거나 폐기되었는지와 같은 상태 관련 정보를 확인하기 위한 credentialStatus 속성을 정의합니다.

credentialStatus 속성이 있는 경우 이 속성과 연결된 값은 하나의 객체 또는 하나 이상의 객체로 이루어진 집합입니다. 모든 객체에 대해 다음 속성이 정의됩니다.

id
id 속성OPTIONAL입니다. 이 속성은 자격 증명 상태 객체의 고유 식별자를 제공하는 데 사용할 수 있습니다(MAY). 이 속성이 있는 경우 4.4 식별자절의 규범적 지침을 따라야 합니다(MUST).
type
type 속성REQUIRED입니다. 이 속성은 객체가 표현하는 상태 정보의 유형을 나타내는 데 사용됩니다. 4.5 유형절의 관련 규범적 지침을 따라야 합니다(MUST).

자격 증명 상태 정보의 정확한 내용은 구체적인 credentialStatus 유형 정의에 따라 결정되며, 구현이 간단한지 또는 개인정보 보호를 강화하는지 등의 요인에 따라 달라집니다. 이 값은 자격 증명의 현재 상태와 URL에서 기계가 읽을 수 있는 정보를 가져올 수 있는지를 판단하기에 충분한 정보를 제공합니다. 예를 들어 객체에는 자격 증명이 정지되었거나 폐기되었는지를 나타내는 외부 문서의 링크가 포함될 수 있습니다.

예제 12: status 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "credentialStatus": {
    "id": "https://university.example/credentials/status/3#94567",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "94567",
    "statusListCredential": "https://university.example/credentials/status/3"
  }
}

하나의 자격 증명에는 폐기 또는 정지 여부와 같이 둘 이상의 상태가 연결될 수 있습니다.

예제 13: status 속성에 여러 항목 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://license.example/credentials/9837",
  "type": ["VerifiableCredential", "ExampleDrivingLicenseCredential"],
  "issuer": "https://license.example/issuers/48",
  "validFrom": "2020-03-14T12:10:42Z",
  "credentialSubject": {
    "id": "did:example:f1c276e12ec21ebfeb1f712ebc6",
    "license": {
      "type": "ExampleDrivingLicense",
      "name": "License to Drive a Car"
    }
  },
  "credentialStatus": [{
    "id": "https://license.example/credentials/status/84#14278",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "14278",
    "statusListCredential": "https://license.example/credentials/status/84"
  }, {
    "id": "https://license.example/credentials/status/84#82938",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "suspension",
    "statusListIndex": "82938",
    "statusListCredential": "https://license.example/credentials/status/84"
  }]
}

구현자는 여러 상태 항목이 있는 자격 증명에 서로 충돌하는 정보가 포함될 수 있다는 점에 유의해야 합니다. 이러한 충돌을 조정하는 작업은 유효성 검사 프로세스의 일부이므로 검증자의 비즈니스 로직에 속하며, 따라서 이 사양의 범위를 벗어납니다.

상태 체계의 데이터 모델, 형식 및 프로토콜을 정의하는 것은 이 사양의 범위를 벗어납니다. 검증 가능한 자격 증명 확장 문서에는 검증 가능한 자격 증명의 상태 확인을 구현하려는 구현자가 사용할 수 있는 상태 체계가 포함되어 있습니다.

자격 증명 상태 사양은 개인 추적을 가능하게 해서는 안 됩니다(MUST NOT). 예를 들어 검증자가 특정 보유자 또는 주체에 관심을 보일 때 발급자에게 직간접적으로 알리는 방식이 이에 해당합니다. 허용할 수 없는 접근 방식에는 자격 증명을 사용할 때마다 특정 개인의 상태를 확인하기 위해 자격 증명의 발급자에게 연락하는 "홈으로 연락하기" 방식이나, 자격 증명을 사용할 때마다 발급자에게 정보를 요청하여 발급자가 특정 개인에 대한 검증자의 관심을 추론할 수 있게 하는 "가명성 저하" 방식이 포함됩니다.

4.11 데이터 스키마

데이터 스키마는 주어진 데이터 모음에 특정 구조를 적용할 때 유용합니다. 이 사양에서는 최소한 다음 두 가지 유형의 데이터 스키마를 고려합니다.

데이터 스키마는 @context 속성과 다른 용도로 사용된다는 점을 이해하는 것이 중요합니다. @context 속성은 데이터 구조나 데이터 구문을 강제하지 않으며, 대체 표현 형식에 대한 임의의 인코딩을 정의할 수 있게 하지도 않습니다.

이 사양은 발급자가 발급하는 검증 가능한 자격 증명에 포함할 수 있는 데이터 스키마를 표현하기 위해 다음 속성을 정의합니다.

credentialSchema

credentialSchema 속성의 값은 제공된 데이터가 제공된 스키마를 준수하는지 판단하기에 충분한 정보를 검증자에게 제공하는 하나 이상의 데이터 스키마여야 합니다(MUST). 각 credentialSchematype(예: JsonSchema)과 스키마 파일을 식별하는 URL이어야 하는 id 속성을 지정해야 합니다(MUST). 구체적인 유형 정의에 따라 각 데이터 스키마의 정확한 내용이 결정됩니다.

여러 스키마가 있는 경우 각 스키마와 연결된 type 속성에 명시된 처리 규칙에 따라 유효성이 결정됩니다.

참고: 자격 증명 유형별 구문 검사가 가능합니다

credentialSchema 속성을 사용하면 유형 정의에 주석을 달거나 어휘의 특정 버전에 고정할 수 있습니다. 검증 가능한 자격 증명의 작성자는 콘텐츠 무결성 보호 메커니즘으로 보호된 어휘의 정적 버전을 credentialSchema를 사용하여 포함할 수 있습니다. credentialSchema 속성을 사용하면 자격 증명에 대한 구문 검사도 수행할 수 있으며, JSON 스키마 [VC-JSON-SCHEMA] 유효성 검사와 같은 검증 메커니즘도 사용할 수 있습니다.

예제 14: credentialSchema 속성을 사용하여 JSON 스키마 유효성 검사 수행
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential", "ExamplePersonCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    },
    "alumniOf": {
      "name": "Example University"
    }
  },
  "credentialSchema": [{
    "id": "https://example.org/examples/degree.json",
    "type": "JsonSchema"
  },
  {
    "id": "https://example.org/examples/alumni.json",
    "type": "JsonSchema"
  }]
}

위 예제에서 발급자는 두 개의 credentialSchema 객체를 지정합니다. 각 객체는 검증 가능한 자격 증명이 올바른 형식인지 판단하기 위해 검증자가 사용할 수 있는 JSON 스키마 [VC-JSON-SCHEMA] 파일을 가리킵니다.

4.12 보호 메커니즘

이 사양에서는 두 가지 종류의 보호 메커니즘을 인정합니다. 하나는 엔벨로핑 증명을 사용하는 메커니즘이고 다른 하나는 내장 증명을 사용하는 메커니즘입니다.

엔벨로핑 증명은 이 데이터 모델의 직렬화된 표현을 감쌉니다. 이러한 RECOMMENDED 엔벨로핑 증명 메커니즘 중 하나는 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]에 정의되어 있습니다.

내장 증명은 증명이 데이터 모델의 직렬화된 표현에 포함되는 메커니즘입니다. 이러한 RECOMMENDED 내장 증명 메커니즘 중 하나는 검증 가능한 자격 증명 데이터 무결성 1.0 [VC-DATA-INTEGRITY]에 정의되어 있습니다.

이 두 종류의 보호 메커니즘은 서로 배타적이지 않습니다. 추가적인 보호 메커니즘 사양도 5.13 보호 메커니즘 사양절의 규칙에 따라 정의될 수 있습니다.

예제 15: 내장 증명을 사용하는 검증 가능한 자격 증명
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://example.gov/credentials/3732",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "did:example:6fb1f712ebe12c27cc26eebfe11",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "https://subject.example/subject/3921",
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "Bachelor of Science and Arts"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "eddsa-rdfc-2022",
    "created": "2021-11-13T18:19:39Z",
    "verificationMethod": "https://university.example/issuers/14#key-1",
    "proofPurpose": "assertionMethod",
    "proofValue": "z58DAdFfa9SkqZMVPxAQp...jQCrfFPP2oumHKtz"
  }
}

위의 내장 증명proof 속성을 통해 원본 데이터에 디지털 서명을 추가하여 원본 자격 증명을 보호합니다. 그 결과 현대적인 프로그래밍 환경과 데이터베이스 시스템에서 쉽게 관리할 수 있는 검증 가능한 자격 증명이 생성됩니다.

예제 16: SD-JWT 형식의 엔벨로핑 증명을 사용하는 검증 가능한 자격 증명
eyJhbGciOiJFUzM4NCIsImtpZCI6IkdOV2FBTDJQVlVVMkpJVDg5bTZxMGM3U3ZjNDBTLWJ2UjFTT0
Q3REZCb1UiLCJ0eXAiOiJ2YytsZCtqc29uK3NkLWp3dCIsImN0eSI6InZjK2xkK2pzb24ifQ
.
eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwcz
ovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6
Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLT
AxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiX3NkIjpbIlNFOHp4bmduZTNNbWEwLUNm
S2dlYW1rNUVqU1NfOXRaNlN5NDdBdTdxRWMiLCJjT3lySEVrSlZwdEtSdURtNkNZVTREajJvRkExd0
JQRjFHcTJnWEo1NXpzIl19LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJh
Y2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsibVNfSVBMa0JHcTIxbVA3Z0VRaHhOck
E0ZXNMc1ZKQ1E5QUpZNDFLLVRQSSJdfSwiX3NkIjpbIlhTSG9iU05Md01PVl9QNkhQMHNvMnZ1clNy
VXZ3UURYREJHQWtyTXk3TjgiXX0sIl9zZCI6WyJQNE5qWHFXa2JOc1NfRzdvdmlLdm1NOG0yckhDTm
5XVVV2SXZBbW9jb2RZIiwieFNvSHBKUXlCNGV1dmg4SkFJdDFCd1pjNFVEOHY5S3ZOTmVLMk9OSjFC
QSJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2
lzc3VlcnMvNTY1MDQ5IiwiaWF0IjoxNzAzNjI1OTAxLCJleHAiOjE3MzUyNDgzMDEsImNuZiI6eyJq
d2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6Inl1Zlo1SFUzcU
NfOTRMbkI3Zklzd0hmT0swQlJra0Z5bzVhd1QyX21ld0tJWUpLMVNfR0QySVB3UjRYUTZpdFEiLCJ5
IjoiRmEtV2pOd2NLQ1RWWHVDU2tCY3RkdHJOYzh6bXdBTTZWOWxudmxxd1QyQnRlQ0ZHNmR6ZDJoMF
VjeXluTDg0dCJ9fX0
.
M7BFJB9LEV_xEylSJpP00fd_4WjrOlXshh0dUv3QgOzw2MEGIfSfi9PoCkHJH7TI0InsqkD6XZVz38
MpeDKekgBW-RoDdJmxnifYOEJhKpJ5EN9PvA007UPi9QCaiEzX
~
WyJFX3F2V09NWVQ1Z3JNTkprOHNXN3BBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbG
UvY3JlZGVudGlhbHMvMTg3MiJd
~
WyJTSEc4WnpfRDVRbFMwU0ZrZFUzNXlRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIi
wgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d
~
WyJqZzJLRno5bTFVaGFiUGtIaHV4cXRRIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbX
BsZXMvZGVncmVlLmpzb24iXQ
~
WyItQmhzaE10UnlNNUVFbGt4WGVXVm5nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJ0SEFxMEUwN
nY2ckRuUlNtSjlSUWRBIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd
~
WyJ1Ynd6bi1kS19tMzRSMGI0SG84QTBBIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ

위의 엔벨로핑 증명은 원본 데이터를 디지털 서명 엔벨로프 안에 캡슐화하여 원본 자격 증명을 보호합니다. 그 결과 SD-JWT 형식을 이해하는 도구를 사용하여 처리할 수 있는 검증 가능한 자격 증명이 생성됩니다.

4.13 검증 가능한 프레젠테이션

검증 가능한 프레젠테이션은 여러 검증 가능한 자격 증명의 정보를 집계하는 데 사용할 수 있습니다(MAY).

검증 가능한 프레젠테이션은 수명이 극히 짧고 검증자가 제공한 챌린지에 바인딩되어야 합니다(SHOULD). 이를 달성하는 구체적인 방법은 보호 메커니즘, 전송 프로토콜 및 검증자 정책에 따라 달라집니다. 특정 보호 메커니즘이나 임베딩 프로토콜에서 추가 요구 사항을 정의하지 않는 한, 검증자는 일반적으로 검증 가능한 프레젠테이션이 제시된 검증 가능한 자격 증명과 연관되어 있다고 가정할 수 없습니다.

검증 가능한 프레젠테이션기본 그래프검증 가능한 프레젠테이션 그래프라고도 합니다.

검증 가능한 프레젠테이션에는 다음 속성이 정의됩니다.

id
id 속성은 선택 사항입니다. 이 속성은 검증 가능한 프레젠테이션의 고유 식별자를 제공하는 데 사용할 수 있습니다(MAY). 이 속성이 있는 경우 4.4 식별자절의 규범적 지침을 따라야 합니다(MUST).
type
type 속성은 있어야 합니다(MUST). 이 속성은 검증 가능한 프레젠테이션의 유형을 표현하는 데 사용됩니다. 이 속성의 값 중 하나는 VerifiablePresentation이어야 하지만(MUST), 추가 유형을 포함할 수도 있습니다(MAY). 4.5 유형절의 관련 규범적 지침을 따라야 합니다(MUST).
verifiableCredential
verifiableCredential 속성은 존재할 수 있습니다(MAY). 그 값은 하나 이상의 검증 가능한 자격 증명 및/또는 엔벨로프된 검증 가능한 자격 증명 객체여야 합니다(MUST). 값은 숫자, 문자열 또는 URL과 같은 객체가 아닌 값이어서는 안 됩니다(MUST NOT). 이러한 객체를 검증 가능한 자격 증명 그래프라고 하며, 보호 메커니즘을 사용하여 보호된 정보를 표현해야 합니다(MUST). 자세한 내용은 5.12 검증 가능한 자격 증명 그래프절을 참조하십시오.
holder
검증 가능한 프레젠테이션에는 holder 속성을 포함할 수 있습니다(MAY). 이 속성이 있는 경우 그 값은 URL 또는 id 속성을 포함하는 객체여야 합니다(MUST). holderURL 또는 그 id는 역참조했을 때 검증 가능한 프레젠테이션에 표현된 정보를 검증하는 데 사용할 수 있는 보유자에 관한 기계 판독 가능 정보를 포함하는 문서가 반환되는 것이 RECOMMENDED됩니다. holder 속성이 없으면 보유자에 관한 정보는 보호 메커니즘을 통해 얻거나 검증 가능한 프레젠테이션유효성 검사와 관련되지 않습니다.

아래 예제는 검증 가능한 프레젠테이션을 보여 줍니다.

예제 17: 프레젠테이션의 기본 구조
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5",
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "verifiableCredential": [{ ... }]
}

위에 표시된 verifiableCredential 속성의 내용은 이 사양에서 설명하는 검증 가능한 자격 증명 그래프입니다.

엔벨로프된 검증 가능한 자격 증명

검증 가능한 프레젠테이션에는 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]와 같이 페이로드를 "엔벨로프"하는 보호 메커니즘을 사용하여 보호된 하나 이상의 검증 가능한 자격 증명을 포함할 수 있습니다. 이는 typeEnvelopedVerifiableCredential인 객체를 verifiableCredential 속성과 연결하여 달성할 수 있습니다.

EnvelopedVerifiableCredential
엔벨로프된 검증 가능한 자격 증명을 포함하는 객체를 검증 가능한 프레젠테이션verifiableCredential 속성과 연결하는 데 사용됩니다. 객체의 @context 속성은 있어야 하며(MUST), 이 사양이 제공하는 기본 컨텍스트에 정의된 것과 같이 최소한 id, typeEnvelopedVerifiableCredential 용어를 정의하는 이 사양의 기본 컨텍스트와 같은 컨텍스트를 포함해야 합니다. 객체의 id 값은 검증 가능한 자격 증명엔벨로핑 보안 체계를 사용하여 보호된 형태로 표현하는 data: URL이어야 합니다(MUST) [RFC2397]. 이러한 체계의 예로 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]가 있습니다. 객체의 type 값은 EnvelopedVerifiableCredential이어야 합니다(MUST).

아래 예제는 엔벨로프된 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션을 보여 줍니다.

예제 18: 프레젠테이션의 기본 구조
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "verifiableCredential": [{
    "@context": "https://www.w3.org/ns/credentials/v2",
    "id": "data:application/vc+sd-jwt,QzVjV...RMjU",
    "type": "EnvelopedVerifiableCredential"
  }]
}
참고: 엔벨로프된 콘텐츠를 RDF로 처리하기

구현자는 이 절에서 설명하는 객체와 id 값으로 표현된 엔벨로프된 프레젠테이션을 RDF 환경에서 처리하고, RDF와 관련된 객체 사이에 연결을 생성하고자 할 수 있습니다. 이를 수행하려는 필요성과 그 메커니즘은 사용 사례에 따라 달라지므로 구현에 따라서도 달라집니다.

엔벨로프된 검증 가능한 프레젠테이션

JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]와 같이 페이로드를 "엔벨로프"하는 메커니즘을 사용하여 보호된 검증 가능한 프레젠테이션을 표현할 수 있습니다. 이는 typeEnvelopedVerifiablePresentation인 객체를 사용하여 달성할 수 있습니다.

EnvelopedVerifiablePresentation
엔벨로프된 검증 가능한 프레젠테이션을 표현하는 데 사용됩니다. 객체의 @context 속성은 있어야 하며(MUST), 이 사양이 제공하는 기본 컨텍스트에 정의된 것과 같이 최소한 id, typeEnvelopedVerifiablePresentation 용어를 정의하는 이 사양의 기본 컨텍스트와 같은 컨텍스트를 포함해야 합니다. 객체의 id 값은 검증 가능한 프레젠테이션엔벨로핑 보호 메커니즘을 사용하여 보호된 형태로 표현하는 data: URL이어야 합니다(MUST) [RFC2397]. 이러한 메커니즘의 예로 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]가 있습니다. 객체의 type 값은 EnvelopedVerifiablePresentation이어야 합니다(MUST).

아래 예제는 엔벨로프된 검증 가능한 프레젠테이션을 보여 줍니다.

예제 19: 엔벨로프된 검증 가능한 프레젠테이션의 기본 구조
{
  "@context": "https://www.w3.org/ns/credentials/v2",
  "id": "data:application/vp+jwt,eyJraWQiO...zhwGfQ",
  "type": "EnvelopedVerifiablePresentation"
}

파생 자격 증명을 사용하는 프레젠테이션

일부 영지식 암호 방식에서는 보유자주장검증 가능한 자격 증명에서 받았으며 이를 보유하고 있음을, 해당 검증 가능한 자격 증명의 모든 주장을 공개하지 않고도 간접적으로 증명할 수 있습니다. 이러한 방식에서는 검증 가능한 자격 증명을 사용하여 제시 가능한 데이터를 파생할 수 있습니다. 이 데이터는 검증자발급자를 신뢰한다면 그 값을 신뢰할 수 있도록 암호학적으로 보증됩니다.

일부 선택적 공개 체계에서는 검증 가능한 자격 증명에서 파생된 주장의 일부를 공유할 수 있습니다.

참고: 영지식 증명을 사용하는 프레젠테이션도 가능합니다

직접 내장된 검증 가능한 자격 증명 대신 파생 데이터를 포함하는 ZKP 형식의 검증 가능한 프레젠테이션의 예는 5.7 영지식 증명절을 참조하십시오.

Pat에게 값이 21인
                 overAge 속성이 있습니다
그림 11 Pat이 21세를 초과했음을 표현하는 기본 주장입니다.

보유자 주장을 포함하는 프레젠테이션

보유자검증 가능한 프레젠테이션verifiableCredential 속성을 사용하여 자신을 포함한 모든 발급자검증 가능한 자격 증명을 포함할 수 있습니다(MAY). 검증 가능한 자격 증명발급자보유자인 경우, 해당 검증 가능한 자격 증명주장자체 주장으로 간주됩니다. 이러한 자체 주장은 이를 포함하는 검증 가능한 프레젠테이션을 보호하는 것과 동일한 메커니즘이나 다른 검증 가능한 자격 증명에 사용할 수 있는 모든 메커니즘으로 보호할 수 있습니다.

이러한 자체 주장된 주체, 즉 주장의 대상에는 제한이 없습니다. 따라서 이러한 주장에는 보유자, 함께 포함된 다른 검증 가능한 자격 증명 중 하나, 심지어 자체 주장된 검증 가능한 자격 증명이 포함된 검증 가능한 프레젠테이션에 관한 진술도 포함될 수 있습니다. 각 경우 id 속성은 특정 주체를 식별하는 데 사용됩니다. 이는 해당 주체에 관한 주장이 제시되는 객체에서, 자체 주장되지 않은 검증 가능한 자격 증명과 동일한 방식으로 이루어집니다.

자체 주장 검증 가능한 자격 증명을 포함하고, 해당 자격 증명이 검증 가능한 프레젠테이션과 동일한 메커니즘으로만 보호되는 검증 가능한 프레젠테이션holder 속성을 포함해야 합니다(MUST).

검증 가능한 자격 증명에 대해 정의된 모든 규범적 요구 사항은 자체 주장 검증 가능한 자격 증명에도 적용됩니다.

검증 가능한 프레젠테이션에 포함된 검증 가능한 자격 증명은 해당 검증 가능한 자격 증명issuer 속성 값이 검증 가능한 프레젠테이션holder 속성 값과 같으면 자체 주장된 것으로 간주됩니다.

아래 예제는 검증 가능한 프레젠테이션과 동일한 메커니즘을 사용하여 보호된 자체 주장 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션을 보여 줍니다.

예제 20: 내장 데이터 무결성 증명으로 보호되고 자체 주장 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "holder": "did:example:12345678",
  "verifiableCredential": [{
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/examples/v2"
    ],
    "type": ["VerifiableCredential", "ExampleFoodPreferenceCredential"],
    "issuer": "did:example:12345678",
    "credentialSubject": {
      "favoriteCheese": "Gouda"
    },
    { ... }
  }],
  "proof": [{ ... }]
}

아래 예제는 검증 가능한 프레젠테이션에 관한 주장을 담고 있는 자체 주장 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션을 보여 줍니다. 이 자격 증명은 검증 가능한 프레젠테이션과 동일한 메커니즘을 사용하여 보호됩니다.

예제 21: 내장 데이터 무결성 증명으로 보호되고 검증 가능한 프레젠테이션에 관한 자체 주장 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "type": ["VerifiablePresentation", "ExamplePresentation"],
  "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b",
  "holder": "did:example:12345678",
  "verifiableCredential": [{
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/examples/v2"
    ],
    "type": ["VerifiableCredential", "ExampleAssertCredential"],
    "issuer": "did:example:12345678",
    "credentialSubject": {
      "id": "urn:uuid:313801ba-24b7-11ee-be02-ff560265cf9b",
      "assertion": "This VP is submitted by the subject as evidence of a legal right to drive"
    },
    "proof": { ... }
  }],
  "proof": { ... }
}

5. 고급 개념

4. 기본 개념절에서 소개한 개념을 바탕으로, 이 절에서는 검증 가능한 자격 증명에 관한 더 복잡한 주제를 살펴봅니다.

5.1 신뢰 모델

이 절은 비규범적입니다.

검증 가능한 자격 증명의 신뢰 모델은 다음과 같은 기대를 기반으로 합니다.

이 신뢰 모델은 다음 사항을 보장한다는 점에서 다른 신뢰 모델과 구별됩니다.

검증자가 어떤 발급자를 어떤 데이터나 목적에 대해 신뢰할지 결정하는 방법은 이 권고안의 범위를 벗어납니다. 잘 알려진 조직과 같은 일부 발급자는 평판만으로 많은 검증자의 신뢰를 받을 수 있습니다. 일부 발급자검증자는 가입 규칙에 따라 모든 구성원이 서로 신뢰하는 공동체의 구성원일 수 있습니다. 일부 검증자발급자를 심사하고 전자 서명 및 인프라(ESI); 신뢰 목록 [ETSI-TRUST-LISTS] 또는 Adobe 승인 신뢰 목록과 같은 신뢰 목록에 올리는 일을 담당하는 특정 신뢰 서비스 제공자를 신뢰할 수 있습니다.

발급자검증자 사이의 기대를 분리하면 더 유연하고 동적인 신뢰 모델이 만들어져 시장 경쟁과 고객의 선택권이 확대됩니다.

이 신뢰 모델이 실무 그룹에서 연구한 여러 위협 모델과 어떻게 상호 작용하는지 자세히 알아보려면 검증 가능한 자격 증명 사용 사례 [VC-USE-CASES]를 참조하십시오.

참고: 신뢰 모델은 기존 인증 기관 시스템과 다릅니다

이 사양에 상세히 기술된 데이터 모델은 보다 전통적인 인증 기관 신뢰 모델이 제공하는 것과 같은 전이적 신뢰 모델을 전제로 하지 않습니다. 검증 가능한 자격 증명 데이터 모델에서 검증자발급자를 직접 신뢰하거나 신뢰하지 않습니다. 검증 가능한 자격 증명 데이터 모델을 사용해 전이적 신뢰 모델을 구축할 수는 있지만, 구현자는 보안 취약점을 알아보는 것이 좋습니다. 이러한 취약점은 인증 기관 시스템이 채택한 방식으로 신뢰를 광범위하게 위임할 때 발생합니다.

5.2 확장성

검증 가능한 자격 증명 데이터 모델의 목표 중 하나는 허가 없는 혁신을 가능하게 하는 것입니다. 이를 위해 데이터 모델은 여러 가지 방식으로 확장 가능해야 합니다. 데이터 모델은 다음을 충족해야 합니다.

이 데이터 모델링 접근 방식은 흔히 개방 세계 가정이라고 하며, 이는 어떤 엔터티든 다른 어떤 엔터티에 관해 무엇이든 말할 수 있음을 의미합니다. 이 접근 방식은 단순하고 예측 가능한 소프트웨어 시스템을 구축하는 것과 상충하는 듯 보일 수 있지만, 개방 세계 가정에서는 폐쇄형 소프트웨어 시스템보다 확장성과 프로그램 정확성의 균형을 맞추기가 언제나 더 어렵습니다.

이 절의 나머지 부분에서는 일련의 예제를 통해 확장성과 프로그램 정확성을 모두 달성하는 방법을 설명합니다.

아래에 표시된 자격 증명으로 시작한다고 가정하겠습니다.

예제 22: 간단한 자격 증명
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": ["VerifiableCredential"],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z584it7t5hxxnb9SZaXzUcBKTcGLNM2wnv8EdjXf5mbfGHGS7tmXReqnzzCtwbhU5cer2BVfx9J2PdqQJU63vyuCc"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhAihOGx2I5hldKGo-R5z9PkhFyvc71DSh16WQXxc2msbgniDh3LATtX9Q-Gj3ZBvT6hoiEfolhKydfCPTalkQMElgjgCQCS0kBteBU__gfhECe3ivd1AjzXJDq4PAGdemazUS617xYIIv7VlSBubDc8ztMgI3qsKtRAqwcfAqm_cP-ZN4FAUSmg1hAucjIT4P3jS8bJdk09Y4P_MmhP-KTU_wVlJlj_m8dETPr5SevOdhTcLYfLAUuO-yciTpaa2nERf1RODobNRKr1VhA9KdingF-_gnFdvu5eX9Mprb1lgy03zL0SvWBa2fTNjgUlXZrL3FARDNJMdS8_08QoUK9CLyC9h5xkQxCO4M0ylhA_1C8vPofJtSRRN79IApDuPKWOSVlIXyaZ_0lp7pw-mhHsrQl61_fTljzx4LpezOUp3lVK9epGG9LqweIv-0-z4FnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQtv_4uG8jmNUAvrBJ96_a37WISHfFl33o5fZMx_sQkImeRGO9Hi3MkShHmK_79omyVf1SrU1560ELRo6IkZY_VLsq0T2FY3Qw4Aem4BtsQJVYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7vqENcCm8D2khyMGr7-FGFdx818_ufbFmo8hKn_2FgMpYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1gg7A1gPMKXZYwyt-xB-2cpANen-pt5BRduOg3AxWyzcUGBZy9pc3N1ZXI"
  }
}
Protected Headers
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdmMuZXhhbXBsZS9jcmVkZW50aWFscy80NjQzIiwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJodHRwczovL2lzc3Vlci5leGFtcGxlL2lzc3VlcnMvMTQiLCJ2YWxpZEZyb20iOiIyMDE4LTAyLTI0VDA1OjI4OjA0WiIsImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImlkIjoiZGlkOmV4YW1wbGU6YWJjZGVmMTIzNDU2NyIsIm5hbWUiOiJKYW5lIERvZSJ9fQ .iNijg5rMd_VWwQbx-0sQDJ4M-oFnHBg3t2mptxqQPJjEr4sxbEpUpykUOse_L8U3GboIZcD1kEX4QTevJizjeg
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": [
    "VerifiableCredential"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe"
  }
}
application/vc+cose
d28443a10128a05901487b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f76632e6578616d706c652f63726564656e7469616c732f34363433222c2274797065223a5b2256657269666961626c6543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f6973737565722e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031382d30322d32345430353a32383a30345a222c2263726564656e7469616c5375626a656374223a7b226964223a226469643a6578616d706c653a61626364656631323334353637222c226e616d65223a224a616e6520446f65227d7d5840cf57e484fc9263fc31abc4236e8313508954dd89cfbe63c46e2c952c765bdbe6f5b59ef6d8ebfe165ef97bcb2d015ca177864d96aaabff94a2003cdde94bcca2
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDcsImV4cCI6MTc5MTE0MDMwNywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly9pc3N1ZXIuZXhhbXBsZS9pc3N1ZXJzLzE0IiwidmFsaWRGcm9tIjoiMjAxOC0wMi0yNFQwNToyODowNFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJuYW1lIjoiSmFuZSBEb2UiLCJfc2QiOlsiUTBOcG01QTVBVzdKQWhRc2YwbTlDZzJJN1NKMlVJd3EyMURQRDkzM1JDOCJdfSwiX3NkIjpbIjJhbXVqVjY1akdjb0RDR3FnRzliTEg1ajhPdDlWeTRjMWVIeWpCS2dEVWsiLCJDNjc2dlJhZ1drOUdHUHIyZDBJZWdGemRudE9XSDA1ckVwcTRZanBWLVJRIl19 .Lbno7ovXoY_47IGJVmvOPWJuU4pxDK-ECGfZOpzIJgy34LWSxPOQZmKQa1DTZ5sRC8_sPt7GRzW4AArbE7BwRw ~WyIwVnVZZzNMSjNSQlpHWXZuVGZBUUVBIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ~WyJDLVZMYWNQTUlDZjJuSG1IOWt1bkdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d~WyJjMmFhdmdVSU9UR3MtNUFCUVVESUFRIiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930707,
  "exp": 1791140307,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "credentialSubject": {
    "name": "Jane Doe",
    "_sd": [
      "Q0Npm5A5AW7JAhQsf0m9Cg2I7SJ2UIwq21DPD933RC8"
    ]
  },
  "_sd": [
    "2amujV65jGcoDCGqgG9bLH5j8Ot9Vy4c1eHyjBKgDUk",
    "C676vRagWk9GGPr2d0IegFzdntOWH05rEpq4YjpV-RQ"
  ]
}

클레임: id

SHA-256 해시: 2amujV65jGcoDCGqgG9bLH5j8Ot9Vy4c1eHyjBKgDUk

공개 정보: WyIwVnVZZzNMSjNSQlpHWXZuVGZBUUVBIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ

내용: [
  "0VuYg3LJ3RBZGYvnTfAQEA",
  "id",
  "http://vc.example/credentials/4643"
]

클레임: type

SHA-256 해시: C676vRagWk9GGPr2d0IegFzdntOWH05rEpq4YjpV-RQ

공개 정보: WyJDLVZMYWNQTUlDZjJuSG1IOWt1bkdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d

내용: [
  "C-VLacPMICf2nHmH9kunGQ",
  "type",
  [
    "VerifiableCredential"
  ]
]

클레임: id

SHA-256 해시: Q0Npm5A5AW7JAhQsf0m9Cg2I7SJ2UIwq21DPD933RC8

공개 정보: WyJjMmFhdmdVSU9UR3MtNUFCUVVESUFRIiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ

내용: [
  "c2aavgUIOTGs-5ABQUDIAQ",
  "id",
  "did:example:abcdef1234567"
]

검증 가능한 자격 증명엔터티did:example:abcdef1234567과 연결되어 있으며 name 값으로 Jane Doe를 가진다고 명시합니다.

이제 개발자가 검증 가능한 자격 증명을 확장하여 내부 회사 참조 번호와 Jane이 좋아하는 음식이라는 두 가지 추가 정보를 저장하려 한다고 가정하겠습니다.

먼저 아래와 같이 두 개의 새 용어가 포함된 JSON-LD 컨텍스트를 만듭니다.

예제 23: JSON-LD 컨텍스트
{
  "@context": {
    "referenceNumber": "https://extension.example/vocab#referenceNumber",
    "favoriteFood": "https://extension.example/vocab#favoriteFood"
  }
}

이 JSON-LD 컨텍스트를 만든 후 개발자는 이를 어딘가에 게시하여 검증자검증 가능한 자격 증명을 처리할 때 접근할 수 있게 합니다. 위의 JSON-LD 컨텍스트가 https://extension.example/my-contexts/v1에 게시되었다고 가정하면, 이 컨텍스트를 포함하고 새로운 속성자격 증명 유형검증 가능한 자격 증명에 추가하여 이 예제를 확장할 수 있습니다.

예제 24: 사용자 정의 확장이 포함된 검증 가능한 자격 증명
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2",
    "https://extension.example/my-contexts/v1"
  ],
  "id": "http://vc.example/credentials/4643",
  "type": ["VerifiableCredential", "CustomExt12"],
  "issuer": "https://issuer.example/issuers/14",
  "validFrom": "2018-02-24T05:28:04Z",
  "referenceNumber": 83294847,
  "credentialSubject": {
    "id": "did:example:abcdef1234567",
    "name": "Jane Doe",
    "favoriteFood": "Papaya"
  }
}

이 예제는 검증 가능한 자격 증명 데이터 모델을 허가가 필요 없는 분산된 방식으로 확장하는 방법을 보여 줍니다. 또한 제시된 메커니즘은 이러한 방식으로 생성된 검증 가능한 자격 증명이 네임스페이스 충돌과 의미론적 모호성을 방지하는 수단을 제공하도록 보장합니다.

이와 같은 동적 확장성 모델은 구현 부담을 증가시킵니다. 이러한 시스템을 위해 작성된 소프트웨어는 확장이 포함된 검증 가능한 자격 증명을 허용할 수 있는지 애플리케이션의 위험 프로필을 기준으로 판단해야 합니다. 일부 애플리케이션은 특정 확장만 허용할 수 있지만, 보안 수준이 매우 높은 환경에서는 어떤 확장도 허용하지 않을 수 있습니다. 이러한 결정은 해당 애플리케이션의 개발자에게 달려 있으며, 명백히 이 사양의 범위에 속하지 않습니다.

확장 사양 작성자는 JSON-LD 컨텍스트와 같은 문서가 높은 가용성을 갖도록 해야 합니다. 이러한 문서를 사용하는 개발자는 문서를 가져올 수 없을 때 오류를 발생시키는 소프트웨어를 사용할 수 있습니다. 확장 JSON-LD 컨텍스트를 항상 사용할 수 있게 하는 전략에는 해당 문서를 구현과 함께 번들로 제공하거나, 캐시 기간이 긴 콘텐츠 배포 네트워크를 사용하거나, 컨텍스트에 콘텐츠 주소 지정 URL을 사용하는 방법 등이 있습니다. 이러한 접근 방식은 부록 C. 컨텍스트, 어휘, 유형 및 자격 증명 스키마에서 더 자세히 다룹니다.

구현자는 이 사양의 확장 지점, 예를 들어 4.10 상태, 4.11 데이터 스키마, 4.12 보호 메커니즘, 5.4 갱신, 5.5 이용 약관5.6 증거절에 특히 주의를 기울이는 것이 좋습니다. 이 사양에서는 이러한 확장 지점의 구체적인 구현을 정의하지 않지만, 검증 가능한 자격 증명 확장 문서는 개발자가 이러한 확장 지점에서 사용할 수 있도록 비공식적으로 선별된 확장 목록을 제공합니다.

의미론적 상호 운용성

애플리케이션별 어휘에서 새 용어를 정의할 때 어휘 작성자는 SHOULD 상세 체크리스트연결 데이터 게시 모범 사례에서 따라야 합니다. 특히 다음 지침이 중요합니다.

  • 가능하면 잘 알려진 공개 어휘에서 정의한 용어와 그에 대응하는 URL을 재사용하는 것이 RECOMMENDED됩니다. 이러한 어휘의 예로 Schema.org가 있습니다.
  • 새 용어는 MUST 각 용어에 대해 새 URL을 정의해야 합니다. 이때 [LINKED-DATA]의 일반 지침, 특히 다음 지침을 따라야 합니다.
    • 각 용어의 의미론과 사용 제약 조건을 설명하는 사람이 읽을 수 있는 문서를 MUST 게시해야 합니다.
    • 또한 모든 새 용어의 모음을 함께 게시하는 것이 RECOMMENDED됩니다. 이 모음은 RDF 스키마 1.1을 사용하는 기계 판독 가능 어휘여야 합니다.
    • 용어의 URL은 SHOULD 요구에 따라 역참조할 수 있어야 하며, 그 결과 해당 용어의 설명 및/또는 형식적 정의를 얻을 수 있어야 합니다.

또한 기계 판독 가능 설명(즉, JSON-LD 컨텍스트 문서)은 MUST 어휘의 @context 속성에 지정된 URL에 게시되어야 합니다. 이 컨텍스트는 MUST 각 용어를 그에 대응하는 URL에 매핑해야 하며, 속성 값의 유형과 같은 추가 제약 조건을 함께 지정할 수도 있습니다. @context 속성 값의 예상 순서를 설명하는 사람이 읽을 수 있는 문서도 상호 운용성을 추구하는 모든 구현자가 게시해야 합니다.

참고: 용어 재정의는 허용되지 않습니다

기본 JSON-LD 컨텍스트 문서가 정의하는 활성 컨텍스트를 처리할 때(이 기본 문서는 이 사양에 정의되어 있습니다), 규격을 준수하는 JSON-LD 기반 프로세서는 JSON-LD 컨텍스트가 어떤 용어든 재정의하면 오류를 생성합니다. 기존 용어의 정의를 변경하는 유일한 방법은 새 용어의 범위 안에서 활성 컨텍스트를 지우는 새 용어를 도입하는 것입니다. 이 기능에 관심이 있는 작성자는 JSON-LD 1.1 사양의 @protected 키워드를 살펴보는 것이 좋습니다.

적합 문서SHOULD NOT 프로덕션에서 @vocab 기능을 사용해서는 안 됩니다. 이 기능은 JSON 용어 충돌을 일으켜 다른 애플리케이션과 의미론적으로 모호해질 수 있기 때문입니다. 대신 적절한 상호 운용성을 확보하려면 적합 문서SHOULD 애플리케이션에서 사용하는 모든 용어를 정의하는 JSON-LD 컨텍스트를 사용해야 합니다. 이는 앞서 5.2 확장성절에서 설명했습니다. 적합 문서가 사용되는 모든 용어를 정의하는 JSON-LD 컨텍스트를 사용하지 않는 경우, 해당 문서는 MUST https://www.w3.org/ns/credentials/undefined-terms/v2@context 속성의 마지막 값으로 포함해야 합니다.

5.4 갱신

시스템에서 만료된 검증 가능한 자격 증명을 수동 또는 자동으로 갱신할 수 있으면 유용합니다. 검증 가능한 자격 증명의 유효 기간에 관한 자세한 내용은 B.7 유효 기간절을 참조하십시오. 이 사양은 refreshService 속성을 정의합니다. 이 속성을 사용하면 발급자가 갱신 서비스의 링크를 포함할 수 있습니다.

발급자는 갱신 서비스를 검증 가능한 자격 증명 안에 요소로 포함할 수 있습니다. 이 방식은 검증자 또는 보유자(또는 둘 다)를 위한 경우에 사용합니다. 또는 갱신 서비스를 검증 가능한 프레젠테이션 안에 포함할 수도 있는데, 이 방식은 보유자만을 위한 경우에 사용합니다. 후자의 경우 보유자검증 가능한 자격 증명을 갱신한 다음 검증 가능한 프레젠테이션을 만들어 검증자와 공유할 수 있습니다. 전자의 경우 갱신 서비스를 검증 가능한 자격 증명 안에 포함하면 보유자 또는 검증자가 나중에 자격 증명을 업데이트할 수 있습니다.

갱신 서비스는 자격 증명이 만료되었거나 발급자자격 증명 상태 정보를 게시하지 않을 때만 사용될 것으로 예상됩니다. 발급자refreshService 속성을 공개 정보가 포함되지 않았거나 갱신 서비스가 어떤 방식으로도 보호되지 않은 검증 가능한 자격 증명에는 넣지 않는 것이 좋습니다.

refreshService
refreshService 속성의 값은 MUST 수신자의 소프트웨어가 검증 가능한 자격 증명을 갱신할 수 있을 만큼 충분한 정보를 제공하는 하나 이상의 갱신 서비스여야 합니다. 각 refreshService 값은 MUST 자체 type을 지정해야 합니다. 각 갱신 서비스의 정확한 내용은 특정 refreshService 유형 정의에 따라 결정됩니다.
예제 27: 발급자의 refreshService 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/age/v1"
  ],
  "type": ["VerifiableCredential", "AgeVerificationCredential"],
  "issuer": "did:key:z6MksFxi8wnHkNq4zgEskSZF45SuWQ4HndWSAVYRRGe9qDks",
  "validFrom": "2024-04-03T00:00:00.000Z",
  "validUntil": "2024-12-15T00:00:00.000Z",
  "name": "Age Verification Credential",
  "credentialSubject": {
    "overAge": 21
  },
  "refreshService": {
    "type": "VerifiableCredentialRefreshService2021",
    "url": "https://registration.provider.example/flows/reissue-age-token",
    "refreshToken": "z2BJYfNtmWRiouWhDrbDQmC2zicUPBxsPg"
  }
}

위 예제에서 발급자는 자동 refreshService를 지정합니다. 이 서비스는 검증 가능한 자격 증명을 갱신 서비스의 url로 POST하여 사용할 수 있습니다. 이 특정 검증 가능한 자격 증명은 원래 발급자 이외의 누구와도 공유하기 위한 것이 아닙니다.

참고: 인증되지 않은 자격 증명 갱신

refreshService 속성검증 가능한 자격 증명에 넣어 검증자가 이용할 수 있게 하면 보유자에게서 통제권과 동의를 박탈하고, 검증 가능한 자격 증명검증자에게 직접 발급할 수 있게 되어, 보유자를 우회할 수 있습니다.

5.5 이용 약관

이용 약관은 발급자 또는 보유자검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션이 발급된 조건을 전달하는 데 사용할 수 있습니다. 발급자는 자신의 이용 약관을 검증 가능한 자격 증명 안에 넣습니다. 보유자는 자신의 이용 약관을 검증 가능한 프레젠테이션 안에 넣습니다. 이 사양은 이용 약관 정보를 표현하기 위한 termsOfUse 속성을 정의합니다.

termsOfUse 속성의 값은 다른 정보와 함께 다음 중 일부 또는 전부를 검증자에게 알리는 데 사용할 수 있습니다.

termsOfUse
termsOfUse 속성의 값은 MUST 작성자가 자격 증명 또는 프레젠테이션을 발급할 때 적용한 하나 이상의 이용 약관 정책을 지정해야 합니다. 수신자(보유자 또는 검증자)가 지정된 이용 약관을 준수할 의사가 없다면, 그에 따른 책임은 수신자 자신에게 있으며 명시된 이용 약관을 위반할 경우 법적 책임을 질 수 있습니다. 각 termsOfUse 값은 MUST 자체 유형(예: TrustFrameworkPolicy)을 지정해야 하며, MAY 인스턴스 id를 지정할 수 있습니다. 각 이용 약관의 정확한 내용은 특정 termsOfUse 유형 정의에 따라 결정됩니다.
예제 28: 발급자의 termsOfUse 속성 사용
{
  {
    "@context": [
      "https://www.w3.org/ns/credentials/v2",
      "https://www.w3.org/ns/credentials/undefined-terms/v2"
    ],
    "id": "urn:uuid:08e26d22-8dca-4558-9c14-6e7aa7275b9b",
    "type": [
      "VerifiableCredential",
      "VerifiableAttestation",
      "VerifiableTrustModel",
      "VerifiableAuthorisationForTrustChain"
    ],
    "issuer": "did:ebsi:zZeKyEJfUTGwajhNyNX928z",
    "validFrom": "2021-11-01T00:00:00Z",
    "validUntil": "2024-06-22T14:11:44Z",
    "credentialSubject": {
      "id": "did:ebsi:zvHWX359A3CvfJnCYaAiAde",
      "reservedAttributeId": "60ae46e4fe9adffe0bc83c5e5be825aafe6b5246676398cd1ac36b8999e088a8",
      "permissionFor": [{
        "schemaId": "https://api-test.ebsi.eu/trusted-schemas-registry/v3/schemas/zHgbyz9ajVuSProgyMhsiwpcp8g8aVLFRNARm51yyYZp6",
        "types": [
          "VerifiableCredential",
          "VerifiableAttestation",
          "WorkCertificate"
        ],
        "jurisdiction": "https://publications.europa.eu/resource/authority/atu/EUR"
      }]
    },
    "termsOfUse": {
      "type": "TrustFrameworkPolicy",
      "trustFramework": "Employment&Life",
      "policyId": "https://policy.example/policies/125",
      "legalBasis": "professional qualifications directive"
    },
    "credentialStatus": {
      "id": "https://api-test.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zvHWX359A3CvfJnCYaAiAde/attributes/60ae46e4fe9adffe0bc83c5e5be825aafe6b5246676398cd1ac36b8999e088a8",
      "type": "EbsiAccreditationEntry"
    },
    "credentialSchema": {
      "id": "https://api-test.ebsi.eu/trusted-schemas-registry/v3/schemas/zCSHSDwrkkd32eNjQsMCc1h8cnFaxyTXP5ByozyVQXZoH",
      "type": "JsonSchema"
    }
  }
}

위 예제에서 발급자검증 가능한 자격 증명이 "Employment&Life" 신뢰 프레임워크를 사용하는 "professional qualifications directive"를 법적 근거로 발급되었으며, 해당 정책으로 연결되는 구체적인 링크가 있다고 주장합니다.

이 기능은 정부가 발급한 검증 가능한 자격 증명에서 디지털 지갑에 해당 자격 증명의 사용을 유사한 정부 기관으로 제한하도록 지시하여, 민감한 데이터가 예상치 못하게 사용되는 일로부터 시민을 보호하는 데 활용될 것으로 예상됩니다. 마찬가지로 민간 부문이 발급한 일부 검증 가능한 자격 증명은 그 사용이 조직 내부 부서 또는 업무 시간으로만 제한될 것으로 예상됩니다. 구현자는 검증 가능한 자격 증명 구현 지침 [VC-IMP-GUIDE] 문서의 관련 절에서 발전 중인 이 기능을 자세히 살펴보는 것이 좋습니다.

5.6 증거

발급자검증자에게 추가적인 뒷받침 정보를 제공하기 위해 검증 가능한 자격 증명에 증거를 포함할 수 있습니다. 검증자는 이를 사용해 검증 가능한 자격 증명의 주장을 어느 정도 신뢰할 수 있는지 판단할 수 있습니다. 예를 들어 발급자주체가 제공한 실물 문서를 확인하거나 자격 증명을 발급하기 전에 일련의 신원 조사를 수행할 수 있습니다. 특정 상황에서는 이 정보가 검증자가 특정 자격 증명을 신뢰할 때의 위험을 판단하는 데 유용합니다.

이 사양은 증거 정보를 표현하기 위한 evidence 속성을 정의합니다.

evidence
evidence 속성이 있으면 그 값은 MUST 단일 객체 또는 하나 이상의 객체 집합이어야 합니다. 모든 증거 객체에는 다음 속성이 정의됩니다.
id
id 속성OPTIONAL입니다. 이 속성은 증거 객체에 고유 식별자를 제공하기 위해 MAY 사용될 수 있습니다. 이 속성이 있으면 4.4 식별자절의 규범적 지침을 MUST 따라야 합니다.
type
type 속성REQUIRED입니다. 객체가 표현하는 증거 정보의 유형을 나타내는 데 사용합니다. 관련 규범적 지침은 다음 4.5 유형절에 있으며 이를 MUST 따라야 합니다.
참고: 증거 제공 전략은 구현 가이드를 참조하십시오

이 사양이 첨부 파일, 자격 증명 참조 및 자격 증명이 아닌 데이터의 참조를 지원할 수 있는 방법은 5.3 관련 리소스의 무결성절을 참조하십시오.

예제 29: 기술 성취 자격 증명을 뒷받침하는 증거의 예
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json"
  ],
  "id": "http://1edtech.edu/credentials/3732",
  "type": [
    "VerifiableCredential",
    "OpenBadgeCredential"
  ],
  "issuer": {
    "id": "https://1edtech.edu/issuers/565049",
    "type": "Profile"
  },
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "type": "AchievementSubject",
    "name": "Alice Smith",
    "activityEndDate": "2023-12-02T00:00:00Z",
    "activityStartDate": "2023-12-01T00:00:00Z",
    "awardedDate": "2024-01-01T00:00:00Z",
    "achievement": [{
      "id": "urn:uuid:d46e8ef1-c647-419b-be18-5e045d1c4e64",
      "type": ["Achievement"],
      "name": "Basic Barista Training",
      "criteria": {
        "narrative": "Team members are nominated for this badge by their supervisors, after passing the Basic Barista Training course."
      },
      "description": "This achievement certifies that the bearer is proficient in basic barista skills."
    }]
  },
  "evidence": [{
      // 외부에서 호스팅되는 증거 파일/아티팩트의 URL
      "id": "https://videos.example/training/alice-espresso.mp4",
      "type": ["Evidence"],
      "name": "Talk-aloud video of double espresso preparation",
      "description": "This is a talk-aloud video of Alice demonstrating preparation of a double espresso drink.",
      // mp4 동영상 파일의 다이제스트 해시
      "digestMultibase": "uELq9FnJ5YLa5iAszyJ518bXcnlc5P7xp1u-5uJRDYKvc"
    }
  ]
}

위의 evidence 예제에서 발급자주체, 즉 자격 증명의 주체가 성취를 입증하는 모습을 담은 동영상을 보유하고 있다고 주장합니다.

참고: 증거는 보호 메커니즘과 목적이 다릅니다

evidence 속성은 사용된 보호 메커니즘이 제공하는 정보와 다른 정보를 제공합니다. evidence 속성검증 가능한 자격 증명과 관련된 문서 증거 등의 뒷받침 정보를 표현하는 데 사용합니다. 반면 보호 메커니즘은 발급자의 진위성과 검증 가능한 자격 증명의 무결성에 관한 기계 검증 가능한 수학적 증명을 표현하는 데 사용합니다. 보호 메커니즘에 관한 자세한 내용은 4.12 보호 메커니즘절을 참조하십시오.

5.7 영지식 증명

영지식 증명은 보호 메커니즘으로, 보유자가 실제 값을 공개하지 않고도 특정 값이 포함된 검증 가능한 자격 증명을 보유하고 있음을 증명할 수 있게 합니다. 예를 들어 생년월일을 공개하지 않고도 개인이 25세를 초과했음을 증명할 수 있습니다. 이 데이터 모델은 영지식 증명을 사용한 보호를 지원합니다.

영지식 증명 메커니즘으로 구현할 수 있으며 검증 가능한 자격 증명과 호환되는 기능에는 다음이 포함됩니다.

보호 메커니즘을 만드는 사양 작성자는 MUST NOT 정보가 유출되어 검증자보유자를 여러 검증 가능한 프레젠테이션이 서로 다른 검증자에게 제시될 때에도 상관관계로 연결할 수 있게 하는 방식으로 메커니즘을 설계해서는 안 됩니다.

모든 영지식 증명 메커니즘이 모든 기능을 지원하는 것은 아닙니다. 특정 영지식 증명 메커니즘이 제공하는 기능과 기법의 구체적인 내용 및 이를 검증 가능한 자격 증명과 함께 사용할 때의 규범적 요구 사항은 해당 영지식 증명 메커니즘으로 검증 가능한 자격 증명을 보호하는 사양에서 확인할 수 있습니다. 이러한 사양의 예는 데이터 무결성 BBS 암호 스위트 v1.0을 참조하십시오.

대부분의 경우 보유자가 영지식 메커니즘을 검증 가능한 자격 증명과 함께 사용하려면 발급자검증 가능한 자격 증명을 이러한 기능을 지원하는 방식으로 보호해야 합니다.

아래 그림은 이 데이터 모델을 사용하여 영지식 방식으로 검증 가능한 자격 증명을 발급하고 제시하는 방법을 보여 줍니다.

왼쪽의 검증 가능한
            자격 증명 1과 검증 가능한 자격 증명 2가 오른쪽 프레젠테이션 안의
            파생 자격 증명 1과 파생 자격 증명 2에 대응합니다. 검증 가능한 자격 증명 1에는
            컨텍스트, 유형, ID, 발급자, 발급일, 만료일, 자격 증명 주체 및 증명이 포함됩니다.
            자격 증명 주체에는 이름, 성 및 생년월일이 포함되고, 증명에는 서명,
            정확성 증명 및 속성이 포함됩니다. 검증 가능한 자격 증명 2에는
            컨텍스트, 유형, ID, 발급자, 발급일, 만료일, 자격 증명 주체 및 증명이 포함됩니다.
            자격 증명 주체에는 대학이 포함되고, 대학에는 학과가, 학과에는 수여 학위가 포함됩니다.
            증명에는 서명, 정확성 증명 및 속성이 포함됩니다. 오른쪽 프레젠테이션 그림에는
            컨텍스트, 유형, ID, 검증 가능한 자격 증명 및 증명이 포함됩니다.
            검증 가능한 자격 증명에는 파생 자격 증명 1과 파생 자격 증명 2가 포함되고,
            증명에는 공통 링크 비밀값이 포함됩니다. 파생 자격 증명 1에는 컨텍스트, 유형, ID,
            발급자, 발급일, 자격 증명 주체 및 증명이 포함됩니다. 자격 증명 주체에는 18세 이상이 포함되고,
            증명에는 서명 지식이 포함됩니다. 파생 자격 증명 2에는 컨텍스트, 유형, ID,
            발급자, 발급일, 자격 증명 주체 및 증명이 포함됩니다. 자격 증명 주체에는 학위가 포함되고,
            증명에는 서명 지식이 포함됩니다. 한 선은 검증 가능한 자격 증명 1의 생년월일을
            파생 자격 증명 1의 18세 이상과 연결합니다. 다른 선은 검증 가능한 자격 증명 2의 수여 학위를
            파생 자격 증명 2의 학위와 연결합니다.
그림 12 ZKP 프레젠테이션에서 자격 증명과 파생 자격 증명 사이의 관계를 보여 주는 시각적 예.

다음은 검증 가능한 자격 증명검증 가능한 프레젠테이션의 예로, 데이터 무결성 BBS 암호 스위트 v1.0의 연결 불가능한 선택적 공개 보호 메커니즘을 사용합니다.

예제 30: 기본 증명이 포함된 데이터 무결성 BBS 암호 스위트를 사용하는 검증 가능한 자격 증명
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://w3id.org/citizenship/v4rc1"
  ],
  "type": [
    "VerifiableCredential",
    "PermanentResidentCardCredential"
  ],
  "issuer": {
    "id": "did:web:utopia.example",
    "image": "data:image/png;base64,iVBORw0KGg...VORK5CYII="
  },
  "name": "Permanent Resident Card",
  "description": "Government of Utopia Permanent Resident Card.",
  "credentialSubject": {
    "type": [
      "PermanentResident",
      "Person"
    ],
    "givenName": "JANE",
    "familyName": "SMITH",
    "gender": "Female",
    "image": "data:image/png;base64,iVBORw0KGgo...g==",
    "residentSince": "2015-01-01",
    "commuterClassification": "C1",
    "birthCountry": "Arcadia",
    "birthDate": "1978-07-17",
    "permanentResidentCard": {
      "type": [
        "PermanentResidentCard"
      ],
      "identifier": "83627465",
      "lprCategory": "C09",
      "lprNumber": "999-999-999"
    }
  },
  "validFrom": "2026-09-05T00:00:00Z",
  "validUntil": "2027-09-05T23:59:59Z",
  "proof": [
    {
      "type": "DataIntegrityProof",
      "created": "2026-09-05T17:21:31Z",
      "verificationMethod": "did:web:utopia.example#zDnae...QGW8",
      "cryptosuite": "ecdsa-rdfc-2019",
      "proofPurpose": "assertionMethod",
      "proofValue": "z4fJttfr...kn9P"
    },
    {
      "type": "DataIntegrityProof",
      "verificationMethod": "did:web:utopia.example#zUC7EwMqo9vCjFmj7ArU2SivcbeccAY6hd4nw5fVD6xD4W2vm9eVy6VqVnciAZRmPLXnuxuka5JTJVmgz66CxDno6eqZmvUViCckCcKg8A4s1R4i2JjyzrdTQs5zrfY4jJCHFCp",
      "cryptosuite": "bbs-2023",
      "proofPurpose": "assertionMethod",
      "proofValue": "u2V0ChVhQiJsvokWSE4Cq999Bw9aluhWuToMG7qGNtAx5I2_LmNjRPCMcTLoiBc_HV8gjvgvSNnrFNK50Ubf1gIN8i8sHUWwUzqdDMevqlO8qVOWgki1YQM6iv5KVLQKPLTMEAHhSEWyz3z3hrSSQJTjO8vIFJgMWaLnxEOgYUkAwn3mL9Hhr-t6oc0OXaYjMBPYyPIQUnwdYYKipusluRJ7SzUrZmv4RxeebXFP1W0GGgnhEIBufF7eulvisZDSTSVWCkn1KMnStOgmhPPjOCIDvXVY2Xxbm61KFgc2pSZJwhV5kLxZV9igRbX8uzqgdbnLyerjY7DzJdVggryiDkfzraDE3VOas9Ls5wKk4oBfAtvO0QZikpLOL1VeBZy9pc3N1ZXI"
     
    }
  ]
}

위 예제는 검증 가능한 자격 증명입니다. 여기서 발급자는 BBS 기반 연결 불가능 공개 방식을 활성화하여 기본 증명을 만들었습니다. 보유자는 이 기본 증명을 사용하여 원본 검증 가능한 자격 증명의 특정 정보만 공개하는 파생 증명을 만들 수 있습니다.

예제 31: 파생 자격 증명과 증명이 포함된 데이터 무결성 BBS 암호 스위트를 사용하는 검증 가능한 프레젠테이션
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2"
  ],
  "type": [
    "VerifiablePresentation"
  ],
  "verifiableCredential": [
    {
      "@context": [
        "https://www.w3.org/ns/credentials/v2",
        "https://w3id.org/citizenship/v4rc1"
      ],
      "type": [
        "VerifiableCredential",
        "PermanentResidentCardCredential"
      ],
      "issuer": {
        "id": "did:web:vcplayground.org",
        "image": "data:image/png;base64,iVBORw0KG...YII="
      },
      "credentialSubject": {
        "type": [
          "PermanentResident",
          "Person"
        ],
        "birthCountry": "Arcadia"
      },
      "proof": [
        {
          "type": "DataIntegrityProof",
          "verificationMethod": "did:web:utopia.example#zUC7EwMqo9vCjFmj7ArU2SivcbeccAY6hd4nw5fVD6xD4W2vm9eVy6VqVnciAZRmPLXnuxuka5JTJVmgz66CxDno6eqZmvUViCckCcKg8A4s1R4i2JjyzrdTQs5zrfY4jJCHFCp",
          "cryptosuite": "bbs-2023",
          "proofPurpose": "assertionMethod",
          "proofValue": "u2V0DhVkDEJOplpVKV9UBPos-YnSuy7u-_wuxUUcElOCVqJwekpfS8pDYv5mlIiADqJNm62CgfJMG1SeBV9Ri5DlmMAOaWayl51Aqc_fPn1V756d-P51JNwmlPQ9RmyYQPGfk3_8z0KF57H_seUFGZOYAtul85f9rypgN_emBvVApxUSMClqvNSgNVQ_sqVS1ICFkz9MIuTv6Ng6F8CNm0svtv1Tnkmjn6I4bgP0b46j57-lgiAP6Xb72RCnppHyfcuc6z9NB82BgIPCHzu2V3u8sWHyPS1JzVDLUiPVWUy6Oar0A4q9QLP4y92Q4JpJRx0Bl-x3cvCcBZp8ESDphMEDoMgEBqWVdWEZ_KQa2JrYuiWeHfK81WPNlJimOp4xl4CotHqx1NIinSB7jmrtcQ-0dIX_vz5wnYwhlP44rE7TgydrFE_16BYk0hkfKJw8sGCQNxqcUMHGh262ZOie2ASifU8OXd5TZOgTaUXRauwCrAPQZnQKnAQ8j8hBLgD_0Ujzt2Yk6dQueUv493jnmWJMnCbAy33MuRhHSqSxHVJBXOhhUX3s79HY0V-uLkGOZw_61HRpAi0W4spLv77ehUlwW5N35VFbs_THFXGA5AgY3Cg1vY-K5SyqpH5BlWhAcTRwoDKboqp0tOecM5qpZyuAORQ7fK2JddnEMHmvOKW7x_ugykAbQm6DeqhyGPtKxuiSulr-IHFK-KyGCXPAAKbk7X5Hkf29q7tOEGTIU4_9ga88PtiQKJTu7Ao8ABBEg9Gqt-KcfqfPgt8cqwxGtjW21sD3bSbtUiWNQO3ZDPelP9ToXbduEPpsNEYwxRbMtS5SF6YDqy16Bo8uyw41jnKvb-E5ABF-2MGjxB9zt8ZH_TJirGP_IMt0ssYrODZAlJbakLKiD5NH3g-xlvMTHxrD8VEzJakACnJIrm3X9J7MjUM_YTqth99oc2Yq2HLlgwYb1hD3T6jsIaY8zRPzA2ybKdXxZ3ahxyc_nbLDnP2fVNbUj8P9EX2Av_GvmnSYRsE5Wmcblhao6Ref1EF8YFF6JFT8SO2WiAAIBAIQABAUHhAABBxFYRXsiY2hhbGxlbmdlIjoiejFBREtDNVFBdW1Tb1Jud1NDSHRhUXBvQSIsImRvbWFpbiI6InZjcGxheWdyb3VuZC5vcmcifQ"
          
        }
      ]
    }
  ]
}

검증 가능한 프레젠테이션에는 앞선 예제 정보의 연결 불가능한 하위 집합과 파생 증명을 담은 검증 가능한 자격 증명이 포함되어 있습니다. 검증자는 파생 증명을 사용하여 정보가 예상한 발급자에게서 비롯되었고 이 특정 정보 교환에 바인딩되어 있음을 확인할 수 있습니다.

5.8 시간 표현

구현자는 시간 값을 표현하고 처리하는 일이 겉보기만큼 간단하지 않으며, 세계 각 지역에서 즉시 알아차리기 어렵거나 일관되게 적용되지 않는 다양한 특이 사항이 있음을 이해하는 것이 좋습니다. 예를 들면 다음과 같습니다.

이는 벽시계에 표시되는 실제 시각이 한 지역에는 존재하지만 다른 지역에는 존재하지 않을 수도 있음을 보여 주는 몇 가지 예에 불과합니다. 따라서 구현자는 일광 절약 시간제(서머타임)의 영향을 받는 값보다 Z 시간대에 고정된 값과 같이 더 보편적인 시간 값을 사용하는 것이 좋습니다.

이 사양은 dateTimeStamp 구문을 사용하여 보편적으로 인식되는 날짜와 시간 조합을 늘리고, 시간 값이 잘못 해석될 가능성을 줄이고자 합니다. 이 구문은 [XMLSCHEMA11-2] 사양에서 처음 정립했습니다. 서로 다른 시간대 사이의 오해를 줄이기 위해 적합 문서에 표현된 모든 시간 값은 SHOULD dateTimeStamp 형식으로 지정해야 합니다. 값 끝에 Z로 표시하는 협정 세계시(UTC)나 UTC 기준 시간대 오프셋을 사용할 수 있습니다. 오프셋 없이 잘못 직렬화된 시간 값은 MUST UTC로 해석해야 합니다. 유효한 UTC 기준 시간대 오프셋의 예로는 Z, +01:00, -08:00+14:00이 있습니다. 허용되는 모든 값의 형식적 정의는 이 절 끝의 정규 표현식을 참조하십시오.

시간대 정의는 관할 기관에 의해 때때로 변경됩니다. 검증 가능한 자격 증명을 교체하거나 새로 발급할 때, 구현자는 현지 시간대 규칙의 변경으로 인해 예상치 못한 유효성 공백이 생기지 않도록 하는 것이 좋습니다. 예를 들어 기본 오프셋이 UTC-8이고 2024년에 일광 절약 시간제 시행을 중단하기로 결정한 America/Los_Angeles 시간대를 생각해 보십시오. 어떤 검증 가능한 자격 증명validUtil 값이 2024-07-12T12:00:00-07:00이었는데, 재발급된 자격 증명의 validFrom 값이 2024-07-12T12:00:00-08:00이 되면, 검증 가능한 자격 증명이 유효하지 않은 1시간의 공백이 생깁니다.

dateTimeStamp 값의 유효성을 검사하려는 구현자는 편의를 위해 [XMLSCHEMA11-2] 사양에서 가져와 아래에 제시한 정규 표현식을 사용할 수 있습니다. 오해의 여지를 없애기 위해 명시하면, [XMLSCHEMA11-2]의 정규 표현식이 규범적 정의입니다. 아래 정규 표현식을 통과하는 모든 dateTimeStamp 값이 유효한 시점을 나타내는 것은 아니라는 점에 유의하십시오. 예를 들어 아래 정규 표현식은 모든 달에 31일을 허용하므로, 윤년과 윤초를 포함할 수 있는 한편 실제로 존재하지 않는 날짜까지 허용합니다. 그렇더라도 dateTimeStamp 값을 생성하는 최신 시스템 라이브러리는 대체로 오류 없이 유효한 dateTimeStamp 값을 생성합니다. 아래 정규 표현식에서 읽기 쉽도록 넣은 공백을 제외하면, 최신 시스템에서 라이브러리가 생성한 날짜와 시간을 처리하는 데 충분한 경우가 많습니다.

예제 32: 유효한 XML 스키마 1.1 제2부 dateTimeStamp를 판별하는 정규 표현식
-?([1-9][0-9]{3,}|0[0-9]{3})
-(0[1-9]|1[0-2])
-(0[1-9]|[12][0-9]|3[01])
T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.[0-9]+)?|(24:00:00(\.0+)?))
(Z|(\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))

5.9 권한 부여

이 절은 비규범적입니다.

검증 가능한 자격 증명주체를 신뢰할 수 있게 식별하기 위한 수단입니다. 역할 기반 액세스 제어(RBAC)와 속성 기반 액세스 제어(ABAC)가 이러한 식별을 바탕으로 주체에게 리소스 액세스 권한을 부여한다는 점은 인정하지만, 이 사양은 RBAC 또는 ABAC를 위한 완전한 솔루션을 제공하지 않습니다. 함께 사용할 권한 부여 프레임워크가 없다면 권한 부여는 이 사양의 적절한 사용 사례가 아닙니다.

작업 그룹은 이 사양을 작성할 때 권한 부여 사용 사례를 고려했으며, 이 사양 위에 구축하는 아키텍처 계층으로 해당 작업을 추진하고 있습니다.

5.10 예약된 확장 지점

이 사양은 잠재적인 확장 지점으로 사용할 여러 속성을 예약합니다. 일부 구현자가 이러한 속성에 관심을 나타냈지만, 이 사양에 포함하기에는 이르다고 판단했습니다. 이러한 속성은 어느 것도 이 사양에서 정의하지 않는다는 점이 중요합니다. 따라서 구현자는 이러한 속성의 사용이 실험적인 것으로 간주된다는 점에 유의해야 합니다.

구현자는 이러한 속성을 MAY 사용할 수 있지만, 규범적으로 명세하는 과정에서 속성 및/또는 그 의미가 변경될 수 있음을 SHOULD 예상해야 합니다. 구현자는 구현 방식을 설명하는 공개 사양 없이 이러한 속성을 SHOULD NOT 사용해서는 안 됩니다.

다음 속성의 사용 방식이 충돌하지 않도록 구현은 예약된 속성과 연결된 값에 MUST type 속성을 지정해야 합니다. type 정보 추가에 관한 자세한 내용은 4.5 유형절을 참조하십시오.

예약된 속성 설명
confidenceMethod 검증자가 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션 내부나 그 자체의 속성 값이 정확하다는 신뢰도를 높이는 데 사용할 수 있는 하나 이상의 방법을 지정하는 속성입니다. 연결된 어휘 URL은 MUST https://www.w3.org/2018/credentials#confidenceMethod이어야 합니다. 사용 예를 포함하여 신뢰도 방법에 관해 자세히 알아보려는 구현자는 검증 가능한 자격 증명 신뢰도 방법 v1.0 사양을 참조할 수 있습니다.
renderMethod 자격 증명을 시각적, 청각적, 촉각적 또는 기타 형식으로 렌더링하는 하나 이상의 방법을 지정하는 속성입니다. 연결된 어휘 URL은 MUST https://www.w3.org/2018/credentials#renderMethod이어야 합니다. 사용 예를 포함하여 렌더링 방법에 관해 자세히 알아보려는 구현자는 검증 가능한 자격 증명 렌더링 방법 v1.0 사양을 참조할 수 있습니다.

이 사양에서 정의한 확장 지점 및 이 절에서 정의한 예약된 확장 지점과 관련된 사양의 비공식 목록은 검증 가능한 자격 증명 확장에서 확인할 수 있습니다. 디렉터리에서 예약된 확장 지점을 참조하는 항목은 SHOULD 실험적인 것으로 취급해야 합니다.

5.11 생태계 호환성

이 문서에서 제공하는 데이터 모델을 기본적으로 사용하지 않지만, 이 사양의 여러 개념과 부합하는 디지털 자격 증명 형식이 다수 있습니다. 이 문서가 발행된 시점에 이러한 디지털 자격 증명 형식의 예로는 JSON 웹 토큰(JWT), CBOR 웹 토큰(CWT), JSON 고급 전자 서명(JAdES), ISO-18013-5:2021 (mDL), AnonCreds, 고르디언 엔벌로프 인증된 연쇄 데이터 컨테이너(ACDC)가 있습니다.

개념적으로 부합하는 디지털 자격 증명 형식을 이 절의 규칙에 따라 적합 문서로 변환할 수 있으면 해당 형식은 "W3C 검증 가능한 자격 증명 생태계와 호환됨"으로 간주합니다. 사양 작성자는 검증 가능한 자격 증명 생태계와의 호환성을 지원하는 변환을 문서화할 때 다음 규칙을 따르는 것이 좋습니다. 변환 사양은 —

참고: 검증 가능한 자격 증명의 요건은 무엇입니까?

디지털 자격 증명은 W3C 검증 가능한 자격 증명 생태계와 호환되는 것으로 간주되려면 적합 문서이면서 이 사양의 해당 요구 사항에서 설명한 보호 메커니즘을 하나 이상 사용해야 한다는 점에 유의하십시오. 일부 커뮤니티에서는 적합 문서가 아닌 일부 디지털 자격 증명 형식을 "검증 가능한 자격 증명"이라고 부를 수 있지만, 그렇게 부른다고 해서 해당 디지털 자격 증명이 이 사양을 준수하는 것은 아닙니다. 예를 들어 SD-JWT-VC [SD-JWT-VC] 사양은 이름에 "VC"라는 글자를 사용하지만 W3C 검증 가능한 자격 증명과 호환되지 않는다고 명시적으로 밝힙니다.

5.12 검증 가능한 자격 증명 그래프

검증 가능한 자격 증명을 표현할 때(예: 프레젠테이션) 한 검증 가능한 자격 증명의 데이터를 다른 검증 가능한 자격 증명의 동일한 데이터로 오인하지 않도록 해야 합니다. 예를 들어 다음 형식의 객체를 각각 포함하는 두 검증 가능한 자격 증명이 있다고 가정합니다: {"type": "Person", "name": "Jane Doe"}. 한 객체가 다른 객체와 동일한 사람을 설명하는지는 알 수 없습니다. 즉, 두 검증 가능한 자격 증명이 동일한 엔터티 및/또는 속성을 다루는지 확인하지 않고 데이터를 병합하면 데이터 집합이 손상될 수 있습니다.

서로 다른 검증 가능한 자격 증명의 데이터가 실수로 뒤섞이지 않도록 검증 가능한 자격 증명 그래프라는 개념을 사용하여 각 검증 가능한 자격 증명을 캡슐화합니다. 단순한 검증 가능한 자격 증명, 즉 JSON-LD 문서에 하나의 자격 증명과 그에 연결된 증명이 포함될 수 있는 경우 이 그래프는 기본 그래프입니다. 프레젠테이션의 경우 각 verifiableCredential 속성 값은 프레젠테이션 내부에서 별도의 명명된 그래프로 분리되며, 그 유형은 VerifiableCredentialGraph 입니다. 이 그래프에는 하나의 검증 가능한 자격 증명 또는 봉투형 검증 가능한 자격 증명이 포함됩니다.

이러한 그래프는 JSON-LD 처리 시 한 그래프의 그래프 노드 식별자를 다른 그래프의 식별자와 올바르게 분리하는 구체적인 효과가 있습니다. 입력을 애플리케이션별 JSON-LD 문서로 제한하는 구현도 한 검증 가능한 자격 증명의 데이터를 다른 자격 증명의 데이터와 병합할 때 이 점을 고려해야 합니다. 예를 들어 credentialSubject.id가 두 검증 가능한 자격 증명에서 같더라도, 객체에는 앞 단락에서 설명한 "Jane Doe" 형식의 객체가 포함될 수 있습니다. 비슷한 속성을 가진 것처럼 보이지만 URL과 같은 전역 식별자를 사용하는 id 속성이 없는 객체는 병합하지 않는 것이 중요합니다.

5.13 보호 메커니즘 사양

4.12 보호 메커니즘절에서 설명한 것처럼, 구현자가 적합 문서를 보호하는 데 사용할 수 있는 전략은 여러 가지입니다. 유용성과 상호 운용성을 극대화하기 위해 적합 문서를 보호하는 새로운 방식을 작성하려는 사양 작성자에게 이 절의 지침을 제공합니다.

보호 메커니즘 사양은 MUST 적합 문서의 콘텐츠 무결성을 보호하는 규범적 알고리즘을 문서화해야 합니다. 이 알고리즘은 MAY 일반적인 성격을 지닐 수 있으며, MAY 적합 문서 이외의 데이터를 보호하는 데 사용할 수 있습니다.

보호 메커니즘 사양은 MUST 보호된 적합 문서의 정보를 독립적으로 반환하는 검증 알고리즘을 제공해야 합니다. 반환 정보에는 proof, JOSE/COSE 헤더 매개변수 및 서명과 같은 보호 메커니즘 정보가 포함되지 않아야 합니다. 검증 알고리즘은 MAY 보호 메커니즘의 세부 정보처럼 유효성 검사나 디버깅 등에 유용한 추가 정보를 반환할 수 있습니다. 검증 알고리즘은 MUST 미디어 유형(문자열 inputMediaType)과 입력 데이터(바이트 시퀀스 또는 inputData)를 받는 인터페이스를 제공해야 합니다. 보호 메커니즘 사양은 MAY 이 문서에서 지정한 것 이외의 알고리즘과 인터페이스를 제공할 수 있습니다. 검증 알고리즘은 최소한 다음 항목을 포함하는 검증 결과를 반환합니다.

불리언 verified
검증 성공 시 값이 true이고, 실패 시 false인 검증 상태입니다.
verifiedDocument
성공적으로 보호된 정보만 포함하는 문서입니다.
문자열 mediaType
[RFC6838]에서 정의한 미디어 유형입니다.

보호 메커니즘 사양은 유효성 검사에 중요한, URL로 참조되는 모든 정보에 대해 SHOULD 무결성 보호를 제공해야 합니다. 이러한 보호를 구현할 수 있는 메커니즘은 5.3 관련 리소스의 무결성절과 C.1 기본 컨텍스트절에서 설명합니다.

새로운 유형의 내장 증명을 만드는 보호 메커니즘 사양은 MUST 속성을 지정해야 합니다. 이 속성은 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션증명 그래프와 연결합니다. 보호 메커니즘의 요구 사항은 다음과 같습니다.

참고

마지막 요구 사항은 보호 메커니즘이 기본 그래프를 보호하고, 검증 가능한 프레젠테이션의 경우 프레젠테이션에 포함된 각 검증 가능한 자격 증명을 해당 증명 그래프와 함께 보호한다는 뜻입니다. 그림 9 또는 그림 14도 참조하십시오.

proof 속성은 [VC-DATA-INTEGRITY]에서 정의한 것이며, 내장 보호 메커니즘에서 MAY 사용할 수 있습니다.

보호 메커니즘 사양은 SHOULD 해당 보호 메커니즘을 보호 메커니즘절에 등록해야 합니다. 이 절은 검증 가능한 자격 증명 확장 문서에 있습니다.

참고: 보호 메커니즘 선택은 사용 사례에 따라 달라집니다

허용되는 보호 메커니즘은 여러 가지이며, 이 사양은 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션과 함께 사용할 특정 보호 메커니즘을 의무화하지 않습니다. 이 사양을 작성한 작업 그룹은 다음 두 가지 보호 메커니즘을 표준화했습니다. 검증 가능한 자격 증명 데이터 무결성 1.0 [VC-DATA-INTEGRITY] 및 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]. 커뮤니티에 알려진 다른 보호 메커니즘은 보호 메커니즘절, 즉 검증 가능한 자격 증명 확장 문서에서 확인할 수 있습니다.

6. 구문

3. 핵심 데이터 모델절, 4. 기본 개념절 및 5. 고급 개념절에서 설명한 데이터 모델은 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 정규 구조 표현입니다. 모든 구문은 해당 데이터 모델을 특정 형식으로 표현한 것입니다. 이 절에서는 application/vcapplication/vp를 위해 데이터 모델을 JSON-LD로 직렬화하는 방법을 지정합니다. 이들은 각각 검증 가능한 자격 증명검증 가능한 프레젠테이션의 기본 미디어 유형입니다. 구문 매핑은 JSON-LD에 대해서만 제공되지만, 애플리케이션과 서비스는 application/vc 또는 application/vp로 다시 매핑할 수 있는 다른 모든 데이터 표현 구문(예: XML, YAML 또는 CBOR)을 사용할 수 있습니다. 검증유효성 검사 요구 사항은 데이터 모델을 기준으로 정의되므로, 모든 직렬화 구문은 처리, 유효성 검사 또는 비교를 위해 결정론적으로 데이터 모델로 변환되어야 합니다.

이 사양에서 속성 값의 예상 개수와 그 값을 담는 결과 데이터 유형은 속성에 따라 달라질 수 있습니다. 다음 속성이 존재하는 경우 단일 값으로 표현됩니다. id (4.4 식별자절), issuer(4.7 발급자절) 및 validFrom/validUntil(4.9 유효 기간절). 그 밖의 모든 속성은 존재하는 경우 단일 값 또는 값의 배열로 표현됩니다.

6.1 JSON-LD

이 사양에서는 이 사양에 설명된 데이터 모델을 직렬화하기 위해 JSON-LD 1.1을 사용합니다. JSON-LD는 그래프 기반 데이터 모델을 표현할 수 있게 하므로 유용합니다. 이 모델은 검증 가능한 자격 증명의 기반이며, JSON-LD는 기계 판독 가능한 의미론도 표현할 수 있습니다. 또한 데이터 모델을 확장할 때도 유용합니다(3. 핵심 데이터 모델절 및 5.2 확장성절 참조).

JSON-LD는 연결 데이터를 직렬화하는 데 사용되는 JSON 기반 형식입니다. 연결 데이터는 리소스 기술 프레임워크(RDF) [RDF11-CONCEPTS]를 사용하여 모델링됩니다. RDF는 진술의 그래프를 모델링하는 기술입니다. 각 진술은 하나의 주체→속성→값(엔터티→특성→값이라고도 함) 관계이며, 이 사양에서는 이를 주장이라고 합니다. JSON-LD는 관용적인 JSON을 사용하여 RDF를 표현할 수 있게 하는 기술이므로, JSON에 익숙한 개발자는 RDF를 JSON으로 처리하는 애플리케이션을 작성할 수 있습니다. 자세한 내용은 JSON-LD와 RDF의 관계를 참조하십시오.

주요 JSON-LD 기능

일반적으로 이 문서에서 설명하는 데이터 모델과 구문을 사용하면 개발자는 검증 가능한 자격 증명을 대체로 JSON 문서처럼 다룰 수 있으며, 예제를 조금만 수정하여 자신의 소프트웨어 시스템에 복사해 붙여 넣을 수 있습니다. 이 접근 방식의 설계 목표는 진입 장벽을 낮추면서도 서로 다른 소프트웨어 시스템 사이의 전역 상호 운용성을 보장하는 것입니다. 이 절에서는 이를 가능하게 하는 데 사용되는 몇 가지 JSON-LD 기능을 설명합니다. 대부분의 개발자는 이러한 기능을 알아차리지 못할 가능성이 크지만, 구현자는 세부 사항에 관심을 가질 수 있습니다. 이 사양에서 사용하는 JSON-LD 1.1의 주요 기능은 다음과 같습니다.

  • @id@type 키워드에는 각각 idtype이라는 별칭이 지정되어 있으므로, 개발자는 이 사양을 관용적인 JSON으로 사용할 수 있습니다.
  • 정수, 날짜, 측정 단위, URL 등의 데이터 유형에는 유형이 자동으로 지정되어, 이를 필요로 하는 사용 사례에 더 강력한 유형 보장을 제공합니다.
  • verifiableCredential 속성JSON-LD 1.1 그래프 컨테이너로 정의됩니다. 이를 위해 서로 다른 엔터티가 주장한 데이터 집합을 분리하는 데 사용되는 명명된 그래프를 만들어야 합니다. 예를 들어 이를 통해 각 발급자가 제공한 데이터 그래프와 보유자검증 가능한 자격 증명을 제시하면서 제공한 데이터 그래프를 암호학적으로 올바르게 분리하여, 각 그래프에 있는 정보의 출처가 보존되도록 합니다.
  • @protected 속성 기능은 JSON-LD 1.1에서 이 사양에 정의된 용어를 재정의할 수 없도록 하는 데 사용됩니다. 즉, 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 맨 위에 동일한 @context 선언이 있는 한, 데이터 모델 사용자가 이해하는 모든 용어의 상호 운용성이 JSON-LD 1.1 프로세서 사용 여부와 관계없이 보장됩니다.

JSON-LD에 대한 제한

상호 운용성을 높이기 위해 이 사양은 데이터 모델의 JSON-LD 표현 사용을 제한합니다. JSON-LD 압축 문서 형식MUST application/vc 또는 application/vp 미디어 유형을 사용하는 데이터 모델의 모든 표현에 사용해야 합니다.

6.3 유형별 자격 증명 처리절에서 자세히 설명하듯이, 일부 소프트웨어 애플리케이션은 일반적인 JSON-LD 처리를 수행하지 않을 수 있습니다. 적합 문서 작성자는 @context 값의 JSON-LD 키워드를 사용하여 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 값에 전역적으로 영향을 주는 경우, 예를 들어 @base 또는 @vocab 키워드 중 하나나 둘 다를 설정하면 상호 운용성이 저하될 수 있다는 점에 유의하는 것이 좋습니다. 예를 들어 이러한 값을 설정하면 @context 값에 대한 JSON 스키마 테스트가 잘못 구현된 경우 실패할 수 있습니다. 이는 유형별 자격 증명 처리를 수행하면서 @base 및/또는 @vocab 값이 @context 값에 표현될 것으로 예상하지 않는 구현에서 발생할 수 있습니다.

상호 운용성을 높이기 위해 적합 문서 작성자는 유형별 자격 증명 처리를 수행할 때 쉽게 감지되지 않는 JSON-LD 기능을 사용하지 않는 것이 좋습니다. 이러한 기능은 다음과 같습니다.

  • 문서의 용어 및 값 처리를 전역적으로 변경하는 JSON-LD 키워드를 @context 값에 인라인으로 선언하는 기능(예: @base 또는 @vocab 설정)
  • @vocab 재설정처럼 이전 컨텍스트의 선언을 재정의하는 JSON-LD 컨텍스트 사용
  • @context 속성에 JSON-LD 컨텍스트를 인라인으로 선언하는 기능
  • JSON-LD 용어와 유형에 전체 URL(예: https://www.w3.org/2018/credentials#VerifiableCredential 또는 https://vocab.example/myvocab#SomeNewType)을 이러한 값의 축약형(예: VerifiableCredential 또는 SomeNewType) 대신 사용하는 기능. 이러한 축약형은 JSON-LD @context 매핑(예: https://www.w3.org/ns/credentials/v2)에 명시적으로 정의됩니다.

이 사양에서는 @vocab 사용에 주의를 요구하지만, 실험·개발·지역화된 배포를 쉽게 하는 등 이 기능의 정당한 용도도 있습니다. 애플리케이션 개발자가 프로덕션 환경에서 @vocab을 사용하려는 경우, 용어 충돌을 줄이고 의미론적 상호 운용성의 이점을 활용하려면 사용하지 않는 것이 좋습니다. 또한 @vocab을 사용하면 "정의되지 않은 용어" 오류 보고가 비활성화되고, 이후의 사용이 이전의 모든 @vocab 선언을 재정의한다는 점을 이해해야 합니다. 서로 다른 @vocab 값은 문서에 포함된 정보의 의미론을 바꿀 수 있으므로, 이러한 변경이 개발 중인 애플리케이션에 영향을 주는지, 영향을 준다면 어떤 방식인지 이해하는 것이 중요합니다.

목록과 배열

JSON-LD 1.1을 사용하면 목록, 배열, 심지어 목록의 목록도 표현할 수 있습니다. 목록과 배열이 필요한 사용 사례에서 RDF 의미론을 사용하려는 경우 JSON-LD 1.1의 목록에 관한 지침을 따르는 것이 좋습니다.

일반적으로 JSON 배열에는 순서가 있지만, JSON-LD 배열은 @list 키워드를 사용하지 않는 한 순서가 없습니다.

참고: 배열 순서는 중요하지 않을 수 있습니다

유형별 자격 증명 처리를 수행하여 이 데이터 모델을 사용할 수 있지만, 이 방식으로 배열을 사용하는 경우 위 지침을 따르지 않으면 JSON-LD에서 배열 항목의 순서가 보장되지 않는다는 점에 유의해야 합니다. 이로 인해 예상치 못한 동작이 발생할 수 있습니다.

JSON 구조나 순서가 애플리케이션에 중요하다면 해당 요소를 @json으로 표시하는 것이 좋습니다. 이때 사용 사례에 특화된 @context를 사용합니다. 이러한 선언의 예는 아래와 같습니다.

예제 33: 행렬을 내장 JSON 데이터 구조로 정의하는 @context 파일
{
  "@context":
    {
      "matrix": {
        "@id": "https://website.example/vocabulary#matrix",
        "@type": "@json"
      }
    }
}

아래 예제에서 위에 표시한 컨텍스트를 사용하고 https://website.example/matrix/v1 컨텍스트를 @context 속성에 포함하면 credentialSubject.matrix의 값이 JSON 의미론을 유지하므로, 2차원 행렬에 있는 모든 요소의 정확한 순서가 보존됩니다.

예제 34: 내장 JSON 데이터 구조가 포함된 검증 가능한 자격 증명
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2",
    "https://website.example/matrix/v1"
  ],
  "id": "http://university.example/credentials/1872",
  "type": [
    "VerifiableCredential",
    "ExampleMatrixCredential"
  ],
  "issuer": "https://university.example/issuers/565049",
  "validFrom": "2010-01-01T19:23:24Z",
  "credentialSubject": {
    "id": "did:example:ebfeb1f712ebc6f1c276e12ec21",
    "matrix": [
      [1,2,3,4,5,6,7,8,9,10,11,12],
      [1,1,1,1,1,1,1,1,0,0,0,0],
      [0,0,1,1,1,1,1,1,1,0,0,0]
    ]
  }
}

6.2 미디어 유형

[RFC6838]에서 정의한 미디어 유형은 검증 가능한 자격 증명을 표현하는 데 사용되는 구문과 그 밖의 유용한 처리 지침을 식별합니다.

이 사양의 데이터 모델을 표현하는 데 사용되는 구문은 SHOULD 미디어 유형으로 식별해야 하며, 이 절에서 설명한 규칙도 SHOULD 검증 가능한 자격 증명과 함께 사용할 미디어 유형을 정의하거나 사용할 때는 따라야 합니다.

핵심 데이터 모델과 연결된 미디어 유형은 두 가지이며, D. IANA 고려 사항절에 나열되어 있습니다. 바로 application/vcapplication/vp입니다.

application/vcapplication/vp 미디어 유형은 특정 보호 메커니즘을 전제로 하지 않지만, 보호 메커니즘과 함께 사용하기 위한 것입니다. 이러한 미디어 유형의 무결성을 보호하려면 보호 메커니즘을 적용해야 합니다. 콘텐츠 전달에 어떤 미디어 유형을 사용하든 콘텐츠가 안전하다고 가정해서는 안 됩니다.

미디어 유형 정밀도

이 절은 비규범적입니다.

개발자나 시스템이 정밀도가 낮은 미디어 유형을 사용하여 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 전달하는 경우가 있습니다. 정밀도가 낮은 미디어 유형을 사용하는 이유는 다음과 같습니다.

  • 파일 확장자를 사용할 수 없고 미디어 유형을 확인할 수 없으면 웹 서버는 기본적으로 text/plain 또는 application/octet-stream을 사용합니다.
  • 개발자가 파일의 콘텐츠보다 덜 구체적인 미디어 유형으로 이어지는 파일 확장자를 추가합니다. 예를 들어 .jsonapplication/json 미디어 유형으로 이어질 수 있고, .jsonldapplication/ld+json 미디어 유형으로 이어질 수 있습니다.
  • 특정 트랜잭션에서 프로토콜이 정밀도가 더 낮은 미디어 유형을 요구합니다. 예를 들어 application/json과 같이 application/vp보다 덜 정밀한 유형을 요구할 수 있습니다.

사용된 미디어 유형을 해당 프로토콜에서 허용할 수 있고 페이로드에서 의도한 미디어 유형을 확인할 수 있다면, 구현자는 오류를 발생시키지 않는 것이 좋습니다. 예를 들어 애플리케이션이 application/vc 미디어 유형과 관련된 규칙을 준수하는 페이로드만 허용하지만 페이로드에 application/json 또는 application/ld+json이라는 태그가 대신 지정되어 있다면, 애플리케이션은 해당 페이로드가 정밀도가 더 높은 미디어 유형도 준수하는지 확인하기 위해 다음 단계를 수행할 수 있습니다.

  1. 페이로드를 JSON 문서로 구문 분석합니다.
  2. @context 속성의 첫 번째 요소가 https://www.w3.org/ns/credentials/v2와 일치하는지 확인합니다.
  3. application/vp 미디어 유형으로 간주합니다. 이는 JSON 문서에 최상위 type 속성이 있고 그 안에 VerifiablePresentation 요소가 있는 경우입니다. 페이로드가 적합한 검증 가능한 프레젠테이션을 표현하는지 확인하기 위해 이 사양에 따라 이후의 추가 검사를 계속 수행해야 합니다.
  4. application/vc 미디어 유형으로 간주합니다. 이는 JSON 문서에 최상위 type 속성이 있고 그 안에 VerifiableCredential 요소가 있는 경우입니다. 페이로드가 적합한 검증 가능한 자격 증명을 표현하는지 확인하기 위해 이 사양에 따라 이후의 추가 검사를 계속 수행해야 합니다.

가능하면 구현자는 이 사양에서 정의한 모든 페이로드에 가장 정밀한 미디어 유형을 사용하는 것이 좋습니다. 또한 페이로드에 정밀도가 낮은 미디어 유형 태그가 지정되어 있다고 해서 그 페이로드가 정밀도가 높은 유형의 태그를 지정하는 데 필요한 규칙을 충족하지 않는다는 의미는 아님을 알아야 합니다. 마찬가지로 정밀도가 높은 미디어 유형 태그가 지정되어 있다고 해서 페이로드가 해당 미디어 유형과 관련된 요구 사항을 충족한다는 의미도 아닙니다. 페이로드 수신자는 연결된 미디어 유형과 관계없이 페이로드가 해당 시스템에서 사용하기 위한 요구 사항을 준수하는지 적절히 검사해야 합니다.

HTTP 클라이언트와 서버는 검증 가능한 자격 증명검증 가능한 프레젠테이션과 연결된 미디어 유형을 Accept 헤더와 콘텐츠 유형을 나타낼 때 사용합니다. 구현자는 HTTP 서버가 Accept 헤더를 무시하고 다른 콘텐츠 유형을 반환하거나 415 Unsupported Media Type과 같은 오류 코드를 반환할 수 있다는 점에 유의해야 합니다.

6.3 유형별 자격 증명 처리

이 절은 비규범적입니다.

JSON은 여러 종류의 정보를 표현하는 데 사용할 수 있으므로, 특정 JSON 문서의 소비자는 해당 문서를 다른 가능한 표현과 구분하고 그 컨텍스트를 제공하는 정보를 갖고 있어야만 작성자의 의도를 올바르게 해석할 수 있습니다. 이러한 해석을 돕는 정보는 JSON 문서 외부에 완전히 존재하거나 문서 내부에서 연결될 수 있습니다. 압축된 JSON-LD 문서에는 @context 속성이 포함되며, 이 속성은 주장을 표현하기 위한 컨텍스트 정보를 내부적으로 표현하거나 그 정보에 연결합니다. 이러한 기능을 사용하면 JSON-LD 문서를 한 컨텍스트에서 다른 컨텍스트로 변환하는 범용 프로세서를 작성할 수 있습니다. 그러나 소비자가 이미 예상한 컨텍스트와 구조를 사용하는 JSON-LD 문서를 받는 경우에는 이러한 변환이 필요하지 않습니다. 발급자가 작성하는 검증 가능한 자격 증명처럼 JSON-LD 문서를 작성하는 사람은 상호 운용성을 촉진하기 위해 적절한 JSON-LD 컨텍스트를 제공하고 이 규칙을 따라야 합니다.

아래 내용은 JSON-LD 문서를 소비하기 위해 변환할 필요가 없도록, 애플리케이션이 이미 이해하는 컨텍스트와 구조로 문서가 표현되었는지 확인하는 방법을 소비자가 이해하도록 돕습니다. 이는 소비자가 어떤 컨텍스트도 이해할 필요가 없다는 뜻이 아닙니다. 소비 애플리케이션은 함께 사용할 컨텍스트와 문서 구조 중 선택한 집합만 이해하면 되며, 그 밖의 것은 이해할 필요가 없습니다. 발급자는 다른 JSON 형식 데이터에서와 마찬가지로, 범용 프로세서를 사용하지 않는 소비자를 돕기 위해 자신의 검증 가능한 자격 증명에 관한 컨텍스트와 정보를 게시할 수 있습니다.

일반 JSON-LD 처리는 JSON-LD 소프트웨어 라이브러리로 적합 문서를 처리하는 메커니즘으로 정의됩니다. 이 처리는 다양한 변환을 수행하여 이루어집니다. 유형별 자격 증명 처리는 JSON-LD 소프트웨어 라이브러리가 필요하지 않은, 적합 문서를 처리하는 더 가벼운 메커니즘으로 정의됩니다. 검증 가능한 자격 증명의 일부 소비자는 특정 유형의 자격 증명만 사용하면 됩니다. 이러한 소비자는 일반 처리 대신 유형별 자격 증명 처리를 사용할 수 있습니다. 유형별 자격 증명 처리가 유용할 수 있는 상황에는 다음이 포함되지만 이에 국한되지 않습니다.

즉, 유형별 자격 증명 처리는 소비하거나 생성하는 문서가 적합 문서인 한 허용됩니다.

유형별 자격 증명 처리를 사용하려는 구현자는 다음 규칙을 따르는 것이 좋습니다.

@context 속성과 연결된 모든 값이 예상한 순서로 되어 있고, 컨텍스트 파일의 콘텐츠가 각 파일에 대해 올바른 것으로 알려진 암호학적 해시와 일치하며, 도메인 전문가가 해당 콘텐츠가 의도한 사용 사례에 적합하다고 판단했는지 확인하십시오.

JSON 스키마와 함께 정적 컨텍스트 파일을 사용하는 것은 위 규칙을 구현하는 데 허용되는 한 가지 접근 방식입니다. 이를 통해 유형별 자격 증명 처리를 수행할 때 용어 식별, 유형 지정 및 순서가 올바른지 확인할 수 있습니다.

위 규칙은 @context 메커니즘을 통해 리터럴 JSON 키를 URI에 매핑하는 두 처리 메커니즘 사이의 의미론적 상호 운용성을 보장합니다. 일반 JSON-LD 처리는 알고리즘에 제공된 이전에 보지 못한 @context 값을 사용하여 모든 용어가 올바르게 지정되었는지 확인할 수 있습니다. 반면 유형별 자격 증명 처리를 수행하는 구현은 미리 이해하도록 설계된 특정 @context 값만 허용하므로, JSON-LD API를 호출하지 않고도 동일한 의미론을 얻습니다. 다시 말해 두 처리 메커니즘 모두 데이터 교환이 이루어지는 컨텍스트를 @context를 사용하여 명시적으로 나타냅니다. 이 사용 방식은 동일한 적합 문서 의미론으로 이어집니다.

7. 알고리즘

이 절에는 구현이 검증과 같은 일반적인 작업을 수행하는 데 사용할 수 있는 알고리즘이 포함되어 있습니다. 알고리즘 형식으로 표현된 적합성 요구 사항은 인프라 표준 [INFRA]의 규범적 개념을 사용합니다. 구현 요구 사항에 관한 자세한 지침은 알고리즘 적합성을 다루는 인프라 표준 부분을 참조하십시오.

참고: 구현자는 추가 검사, 경고 및 오류를 포함할 수 있습니다.

이 절의 알고리즘에는 구현이 이 사양에 대한 적합성을 테스트하는 데 사용하는 최소한의 검사만 포함되어 있다는 점에 유의하십시오. 구현은 개발자가 잠재적인 문제를 디버깅하는 데 도움이 되는 유용한 경고를 보고하는 추가 검사를 제공할 것으로 예상됩니다. 마찬가지로 구현은 유해한 콘텐츠를 차단하기 위해 새로운 유형의 오류를 보고할 수 있는 추가 검사를 제공할 가능성이 큽니다. 이러한 추가 검사는 이 사양의 향후 버전에 포함될 수 있습니다.

7.1 검증

이 절에는 적합한 검증자 구현MUST 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 검증할 때 실행해야 하는 알고리즘이 포함되어 있습니다. 이 알고리즘은 미디어 유형(문자열 inputMediaType)과 보호된 데이터(바이트 시퀀스 inputData)를 받아 다음을 포함하는 을 반환합니다.

검증 알고리즘은 다음과 같습니다.

  1. 다음 단계를 수행하여 보호 메커니즘이 적합 문서를 올바르게 보호했는지 확인합니다.
    1. 보호 메커니즘을 검증할 때 사용할 암호 스위트를 결정하기 위해 verifyProof 함수를 설정합니다. 이때 inputMediaType보호 메커니즘절, 즉 검증 가능한 자격 증명 확장 문서의 해당 절 또는 구현에 알려진 기타 메커니즘을 사용합니다. verifyProof 함수는 MUST 5.13 보호 메커니즘 사양절에 설명된 인터페이스를 구현해야 합니다.
    2. verifyProof 함수가 바이트 시퀀스를 예상하면 inputMediaTypeinputData를 알고리즘에 제공합니다. verifyProof 함수가 을 예상하면 inputMediaTypeJSON 바이트를 인프라 값으로 구문 분석한 결과를 제공합니다. 이 구문 분석에는 inputData를 입력으로 사용합니다. resultverifyProof 함수 호출 결과로 설정합니다. 호출에 성공하면 result에는 status, document, mediaType, controller, controlledIdentifierDocument, warningserrors 속성이 포함됩니다.
    3. result.statusfalse로 설정되어 있으면 CRYPTOGRAPHIC_SECURITY_ERRORresult.errors에 추가합니다.
  2. result.statustrue로 설정되어 있으면 result.document적합 문서인지 확인합니다. 그렇지 않으면 result.statusfalse로 설정하고, document 속성을 result에서 제거한 다음 하나 이상의 MALFORMED_VALUE_ERRORresult.errors에 추가합니다. 디버깅 과정에 도움이 되도록 다른 경고와 오류를 MAY 포함할 수 있습니다.
  3. result를 반환합니다.

구현이 동일한 잘못된 입력에 대해 오류를 반환하는 한, 보호 메커니즘의 상태를 검증하는 단계와 입력 문서가 적합 문서인지 검증하는 단계는 MAY 위에 제시된 것과 다른 순서로 수행할 수 있습니다. 구현은 MAY 위에서 설명한 것과 다른 오류를 생성할 수 있습니다.

7.2 문제 세부 정보

구현이 문서를 처리하는 동안 이상을 감지하면 ProblemDetails 객체를 사용하여 다른 소프트웨어 시스템에 문제를 보고할 수 있습니다. 이러한 객체의 인터페이스는 데이터를 인코딩할 때 [RFC9457]을 따릅니다. ProblemDetails 객체는 다음 속성으로 구성됩니다.

type
type 속성MUST 존재해야 하며 그 값은 MUST 문제 유형을 식별하는 URL이어야 합니다.
title
title 속성SHOULD 문제를 설명하는 짧지만 구체적인 사람이 읽을 수 있는 문자열을 제공해야 합니다.
detail
detail 속성SHOULD 문제를 설명하는 더 긴 사람이 읽을 수 있는 문자열을 제공해야 합니다.

이 사양에서는 다음 문제 설명 유형을 정의합니다.

https://www.w3.org/TR/vc-data-model#PARSING_ERROR
입력을 구문 분석하는 동안 오류가 발생했습니다.
https://www.w3.org/TR/vc-data-model#CRYPTOGRAPHIC_SECURITY_ERROR
문서의 보호 메커니즘이 문서 생성 후 콘텐츠가 변경된 것을 감지했습니다. 잠재적인 변조가 감지되었습니다. 7.1 검증절을 참조하십시오.
https://www.w3.org/TR/vc-data-model#MALFORMED_VALUE_ERROR
특정 속성과 연결된 값의 형식이 잘못되었습니다. 속성의 이름과 해당 속성의 경로는 SHOULD ProblemDetails 객체에 제공해야 합니다. 7.1 검증절을 참조하십시오.
https://www.w3.org/TR/vc-data-model#RANGE_ERROR
제공된 값이 연결된 값의 예상 범위를 벗어났습니다. 예를 들어 배열에 지정된 인덱스 값이 현재 배열 크기보다 큽니다.

구현은 MAY 추가 유형이나 속성을 지정하여 ProblemDetails 객체를 확장할 수 있습니다. 이 메커니즘 사용에 관한 자세한 지침은 확장 멤버절, 즉 [RFC9457]를 참조하십시오.

8. 접근성 고려 사항

이 절은 비규범적입니다.

구현자는 이 사양에서 설명하는 데이터를 처리할 때 여러 접근성 고려 사항에 유의해야 합니다. 모든 웹 표준이나 프로토콜을 구현할 때와 마찬가지로 접근성 문제를 무시하면 많은 사람이 이 정보를 사용할 수 없게 됩니다. 능력과 관계없이 모든 사람이 이 데이터를 사용할 수 있도록 [WCAG21]과 같은 접근성 지침 및 표준을 따르는 것이 중요합니다. 이는 역사적으로 보조 기술에 문제를 일으켜 온 암호화를 사용하는 시스템을 구축할 때 특히 중요합니다.

이 절에서는 이 데이터 모델을 사용할 때 고려해야 할 일반적인 접근성 고려 사항을 자세히 설명합니다.

8.1 데이터 우선 접근 방식

이 절은 비규범적입니다.

정부 발행 신분증처럼 오늘날 사용되는 많은 물리적 자격 증명은 작은 글씨, 작고 고해상도인 이미지에 대한 의존성, 시각 장애인을 위한 지원 수단의 부재 등을 포함하여 접근성이 좋지 않습니다.

이 데이터 모델을 사용하여 검증 가능한 자격 증명을 만들 때 데이터 모델 설계자는 데이터 우선 접근 방식을 사용하는 것이 좋습니다. 예를 들어 자격 증명을 나타내기 위해 데이터와 그래픽 이미지 중 하나를 선택해야 한다면, 설계자는 기관 이름이나 전문 자격 증명 등 이미지의 모든 요소를 기계가 판독할 수 있는 방식으로 표현해야 합니다. 이 정보를 전달하기 위해 보는 사람이 이미지를 해석하는 방식에 의존해서는 안 됩니다. 데이터 우선 접근 방식은 서로 다른 능력을 지닌 사람들을 위한 다양한 인터페이스를 구축하는 기초 요소를 제공하므로 선호됩니다.

9. 국제화 고려 사항

이 절은 비규범적입니다.

구현자는 이 사양에서 설명하는 데이터를 게시할 때 여러 국제화 고려 사항에 유의하는 것이 좋습니다. 모든 웹 표준이나 프로토콜을 구현할 때와 마찬가지로 국제화를 무시하면 서로 다른 언어와 사회 전반에서 데이터를 생성하고 사용하기 어려워집니다. 이는 사양의 적용 가능성을 제한하고 표준으로서의 가치를 크게 떨어뜨립니다.

구현자는 웹의 문자열: 언어 및 방향 메타데이터 문서 [STRING-META]를 반드시 읽는 것이 좋습니다. 이 문서는 W3C 국제화 활동에서 발행했으며, 국제화를 지원하기 위해 신뢰할 수 있는 텍스트 메타데이터를 제공해야 할 필요성을 자세히 설명합니다. 국제화 고려 사항에 관한 최신 정보는 검증 가능한 자격 증명 구현 지침 [VC-IMP-GUIDE] 문서도 읽어 보십시오.

이 절에서는 이 데이터 모델을 사용할 때 고려해야 할 일반적인 국제화 고려 사항을 간략히 설명하고, 구현자가 읽어 볼 만한 웹의 문자열: 언어 및 방향 메타데이터 문서 [STRING-META]의 특정 부분을 강조합니다.

9.1 언어 및 기본 방향

데이터 게시자는 웹상의 문자열: 언어 및 방향 메타데이터의 구문 간 표현 섹션을 읽어 언어 및 기본 방향 정보를 JSON-LD 1.1, JavaScript 객체 표기법(JSON) 데이터 교환 형식, 간결한 이진 객체 표현(CBOR)과 같은 여러 표현 구문에서 나타낼 수 있도록 할 것을 강력히 권장합니다.

언어 값 객체는 사람이 읽을 수 있는 텍스트 문자열, 해당 언어 및 선택적으로 텍스트 방향으로 구성됩니다. 다음 템플릿은 언어 값 객체검증 가능한 자격 증명에서 표현하는 일반적인 패턴을 보여 줍니다:

예제 35: 자연어 문자열의 설계 패턴
"myProperty": {
  "@value": "문자열 값",
  "@language": "LANGUAGE"
  "@direction": "DIRECTION"
}

언어 값 객체가 문자열 값 대신 사용되는 경우, 객체는 @value 속성을 반드시 포함해야 하고, @language 속성을 포함하는 것이 좋으며, @direction 속성도 포함할 수 있습니다. @value 속성은 문자열로 구성됩니다. @language 속성은 언어 식별 태그에서 정의한 올바른 형식의 언어 태그인 문자열로 구성됩니다. 사용되는 모든 언어 태그는 유효한 것이 좋습니다. @direction 속성은 JSON-LD 1.1@direction 속성에서 정의한 기본 방향 문자열을 값으로 하는 문자열로 구성됩니다. 언어 값 객체절대로 @value, @language, @direction 이외의 다른 키를 포함해서는 안 됩니다.

위 템플릿을 사용하여 다음 예제에서는 텍스트 방향을 지정하지 않고 영어로 된 책 제목을 표현합니다.

예제 36: 자연어 텍스트를 영어로 표현하기
"title": {
  "@value": "HTML과 CSS: 웹사이트 설계 및 제작",
  "@language": "en"
}

다음 예제에서는 오른쪽에서 왼쪽으로의 기본 방향을 가진 아랍어로 표현된 유사한 제목을 사용합니다.

예제 37: 기본 방향이 오른쪽에서 왼쪽인 아랍어 텍스트
"title": {
  "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
  "@language": "ar",
  "@direction": "rtl"
}
참고: 국제화된 텍스트를 올바르게 렌더링하는 것은 어렵습니다

많은 시스템이 텍스트 문자열의 첫 번째 문자를 사용하여 기본 방향을 결정하기 때문에, 언어와 방향을 명시적으로 표현하지 않으면 위 텍스트는 왼쪽에서 오른쪽 방향으로 잘못 렌더링될 가능성이 높습니다.

여러 언어 값 객체는 속성의 배열 값으로 제공할 수 있습니다:

예제 38: 책 제목을 위한 여러 언어 값 객체
"title": [
  {
    "@value": "HTML과 CSS: 웹사이트 설계 및 제작",
    "@language": "en"
  },
  {
    "@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
    "@language": "ar",
    "@direction": "rtl"
  }
]

작성자는 값의 배열에서 텍스트 문자열과 언어 값 객체를 함께 사용할 수도 있습니다:

예제 39: 텍스트 문자열과 언어 값 객체를 하나의 배열에서 함께 사용할 수 있습니다
"title": [
  "Příklad názvu knihy",
  {
    "@value": "책 제목의 예",
    "@language": "en"
  }
]

9.2 기본 언어 및 방향 제공

각 자연어 문자열 속성 값의 언어 및 기본 방향은 각 속성 값에 대한 언어 값 객체를 통해서나, 전체 자격 증명의 모든 값에 대한 기본 언어 및 기본 방향을 통해 제공하는 것이 좋습니다. 값별 언어 값 객체를 사용하는 것이 권장됩니다. 문서 기본값을 사용하면 후속 처리기가 원래는 선택 사항인 JSON-LD 확장 기반 변환을 수행해야 할 수 있기 때문입니다. 자세한 내용은 [JSON-LD11] 사양의 문자열 국제화 섹션을 참조하십시오. 연결된 언어가 없는 자연어 문자열 값은 언어 값이 undefined (언어 태그 "und")인 것처럼 처리하는 것이 좋습니다. 연결된 기본 방향이 없는 자연어 문자열 값은 방향 값이 "auto"인 것처럼 처리하는 것이 좋습니다.

A. 위협 모델

이 절은 비규범적입니다.

이 절에서는 보안 고려 사항과 개인정보 보호 고려 사항을 포함하여 이 사양의 일반적인 위협 모델을 자세히 설명합니다. 각 위협과 그 대응에 대한 전체 분석은 검증 가능한 자격 증명 데이터 모델 위협 모델에서 제공합니다. 구현자는 이 사양이 제공하는 각각의 구체적인 기능에 해당 문서의 조언을 적용해야 합니다.

A.1 대상 위협

  1. 자격 증명 콘텐츠 변조 보안 — 공격자가 발급된 검증 가능한 자격 증명에 접근하여 그 내용을 수정함으로써 표현된 주장을 변경하거나, 이후의 검증 과정이 무결성 보호의 부재를 감지하지 못한 채 이를 받아들이기를 바라며 보호 메커니즘을 제거합니다.
  2. 발급 시 신원 증명 실패 보안발급자주체에 대한 신뢰를 확립하는 과정이 실패하여, 다른 사람의 정보를 제시한 공격자가 진본 자격 증명을 받습니다. 이 자격 증명은 피해자를 주체로 명시하며 이후의 모든 검증을 통과합니다.

A.2 구현 위협

  1. 자격 증명 콘텐츠를 통한 코드 삽입 보안검증 가능한 자격 증명rdf:HTML 값의 마크업처럼 삽입 가능한 코드를 포함한 값을 전달하며, 콘텐츠를 적절히 처리하지 않고 렌더링하는 소비자가 해당 코드를 실행하게 됩니다.
  2. 서명 기반 상관관계 분석 개인정보 보호 — 서명 값, 타임스탬프 또는 공개 키 식별자처럼 보호 메커니즘을 구성하는 값이 세션과 도메인이 달라져도 동일하게 유지되므로, 페이로드에 상관관계를 나타내는 식별자가 없더라도 검증자프레젠테이션을 동일한 보유자와 연결할 수 있습니다.
  3. 상태 및 철회 조회를 통한 상관관계 분석 개인정보 보호자격 증명의 상태를 확인하는 행위가 상호작용이 진행 중임을 누설하여, 발급자자격 증명이 제시되는 모든 곳을 파악할 수 있으며, 발급자검증자가 공모하여 보유자의 상관관계를 분석할 수 있습니다.
  4. 서명 키 침해 및 잘못된 관리 보안 — 개인 서명 키가 침해되면 공격자는 검증 과정에서 진본으로 판정되는 자격 증명을 위조할 수 있습니다. 하나의 키를 여러 용도로 재사용하거나 지나치게 긴 암호 사용 기간 동안 계속 사용하면 침해 가능성이 커집니다.
  5. 보호되지 않은 외부 리소스 변조 보안 — 이미지, JSON-LD 컨텍스트 또는 JSON 스키마처럼 검증 가능한 자격 증명에서 연결된 콘텐츠는 보호 메커니즘의 보호 범위 밖에 있으므로, 공격자가 이를 수정하면 검증이 여전히 성공하더라도 취약점이 생깁니다.
  6. 프레젠테이션 교환 공격(MITM, 재생 및 스푸핑) 보안 — 이 데이터 모델 자체만으로는 검증 가능한 프레젠테이션의 교환에 대한 중간자, 재생 및 스푸핑 공격을 방지하지 못합니다. 검증자는 자신이 의도된 수신자인지, 프레젠테이션이 재사용되지 않았는지 또는 보유자에게 주장을 제시할 권한이 있는지 확신할 수 없습니다.
  7. 부적절하거나 맥락에서 벗어난 자격 증명 사용 보안 — 유효한 서명과 성공적인 상태 확인만으로는 자격 증명이 사용되는 맥락에 적합하다는 사실을 입증하지 못합니다. 따라서 검증만으로 충분하다고 여기는 검증자는 출처와 성격이 당면한 목적에 맞지 않는 자격 증명을 받아들이게 됩니다.

A.3 배포 위협

  1. 식별자 기반 상관관계 분석 개인정보 보호검증 가능한 자격 증명에는 주체 식별자, 이메일 주소 또는 정부 발행 식별자 같은 장기 식별자가 포함되어 있어, 두 검증자 또는 발급자검증자가 공모하여 여러 도메인에서 보유자를 추적할 수 있습니다.
  2. 신뢰할 수 없는 사용자 에이전트 소프트웨어 개인정보 보호엔터티의 사용자 에이전트 역할을 하는 소프트웨어, 특히 보유자의 디지털 지갑이 보유자가 허용한 것보다 더 많은 정보를 공개하여 사용자의 이익에 반해 작동하거나, 동시에 둘 이상의 역할을 수행할 때 모든 당사자의 최선의 이익을 위해 행동하지 못합니다.
  3. 과도한 데이터 공개 개인정보 보호검증 가능한 자격 증명이 상호작용에 필요한 것보다 더 많은 개인 식별 정보를 전달하거나, 검증자가 필요한 최소한보다 더 많은 정보를 요청하여 주체자격 증명을 사용할 때마다 정보가 공개됩니다.
  4. 메타데이터 기반 상관관계 분석 개인정보 보호 — 확장, 자격 증명 유형 및 기술 프로필의 선택은 비교적 적은 수의 발급자만 특정 조합을 사용할 때 상관관계를 분석할 수 있는 지문으로 작용하여, 보유자가 기대하는 가명성을 낮춥니다.
  5. 소지자 자격 증명 재사용 및 상관관계 분석 개인정보 보호 — 여러 사이트에서 동일한 소지자 자격 증명을 반복해서 사용하면 해당 사이트들이 공모하여 보유자를 추적할 수 있으며, 그 자체로는 개인을 식별하지 않는 것처럼 보이는 정보도 통계적으로 개인을 식별할 수 있습니다.
  6. 사용 패턴을 통한 상관관계 분석 개인정보 보호 — 개별 공개를 최소화하더라도 검증 가능한 자격 증명이 제시되는 패턴은 익명성 상실로 이어집니다. 이는 하나의 검증자에게 반복해서 제시하거나 여러 검증자가 공모하는 경우 또는 주체 식별자가 여러 프레젠테이션에서 안정적으로 유지되는 경우에 발생할 수 있습니다.
  7. 악의적이거나 기만적인 검증자에게 공개 개인정보 보호검증자가 악의적으로 행동하여 보유자에게 해를 끼칠 수 있는 정보를 요청합니다. 예를 들어 은행 계좌 번호를 요청한 뒤 다른 정보와 결합하여 사기를 저지를 수 있습니다.
  8. 데이터 절도 및 자격 증명 허니팟 보안검증 가능한 자격 증명검증 가능한 프레젠테이션을 저장하면 공격자를 끌어들이는 민감한 데이터의 허니팟이 생기며, 생태계 전반의 보존 및 보호 방식에 따라 절도 피해 규모가 결정됩니다.
  9. 발급자 측 상관관계 분석 및 개인정보 보호 무력화 개인정보 보호 — 많은 개인정보 보호 수단은 발급자가 이를 무력화하지 않는 데 의존합니다. 발급자가 수명이 짧고 자동으로 갱신되는 자격 증명을 발급하거나 각 자격 증명마다 고유 키를 생성하면, 보유자의 행동을 검증자가 분석할 수 없는 경우에도 발급자는 그 행동의 상관관계를 분석할 수 있습니다.
  10. 부적절한 유효 기간 보안 — 변동성이 큰 정보의 예정된 사용 기간보다 유효 기간이 길면 오래된 정보를 신뢰하게 되는 기간이 생기며, 유효 기간이 너무 짧으면 보유자검증자가 잦은 재발급으로 부담을 받습니다.
  11. 기기 절도 및 사칭 보안 — 분실되거나 도난당한 기기를 손에 넣은 공격자가 피해자의 검증 가능한 자격 증명을 신뢰하는 시스템에 무단으로 접근하여 보유자를 사칭합니다.

A.4 외부 위협

  1. 저장소 제공자의 데이터 마이닝 및 강제 공개 개인정보 보호 — 제3자 자격 증명 저장소는 저장된 검증 가능한 자격 증명을 운영자에게 노출합니다. 운영자는 개인정보를 마이닝하거나 법적 절차에 따라 이를 공개하도록 강제될 수 있습니다.
  2. 기기 추적 및 핑거프린팅 개인정보 보호 — 주소 추적, 브라우저 핑거프린팅 및 광고 추적기처럼 검증 가능한 자격 증명 외부의 추적 메커니즘이 자격 증명 데이터와 결합하여 상관관계를 분석할 수 있는 새로운 정보를 드러냅니다. 또한 연결된 외부 리소스를 가져오면 이를 호스팅하는 서버에 활동 신호가 전달됩니다.
  3. 자격 증명 및 데이터 집계 개인정보 보호 — 동일한 주체에 관한 두 가지 정보를 보유하면 각각을 따로 고려할 때보다 더 많은 사실이 드러나므로, 검증자나 공모하는 사이트는 시간이 지나며 더 많은 정보가 누설될수록 커지는 프로필을 구축할 수 있습니다.
  4. 프레젠테이션 이후의 무단 데이터 사용 개인정보 보호보유자가 명시된 목적을 위해 검증 가능한 프레젠테이션을 공유한 뒤, 검증자보유자가 동의한 범위를 넘어 데이터를 사용합니다. 이 데이터 모델은 보유자프레젠테이션 이후 허가된 사용을 강제할 방법을 제공하지 않습니다.

A.5 종속성 위협

  1. 암호 스위트 노후화 보안검증 가능한 자격 증명을 보호하는 암호 스위트와 라이브러리에는 수명이 있으며, 결국 새로운 공격과 기술 발전에 취약해집니다. 그 이후에는 공격자가 자격 증명을 위조하거나 수정해도 검증 과정에서 여전히 진본으로 판정될 수 있습니다.

개인정보 보호 고려 사항

이 절은 비규범적입니다.

이 절에서는 검증 가능한 자격 증명 데이터 모델을 프로덕션 환경에 배포할 때의 일반적인 개인정보 보호 고려 사항과 구체적인 개인정보 보호 영향을 자세히 설명합니다. 위에서 요약한 개인정보 보호 위협과 각 위협에 대한 대응의 전체 분석은 검증 가능한 자격 증명 데이터 모델 위협 모델에서 제공합니다.

개인정보 보호 스펙트럼

이 절은 비규범적입니다.

개인정보 보호에는 가명 상태부터 신원이 명확히 식별된 상태까지 이어지는 스펙트럼이 있음을 인식하는 것이 중요합니다. 사용 사례에 따라 사람마다 자신이 제공할 의향이 있는 정보와 그 정보에서 도출될 수 있는 정보를 어느 정도까지 허용할 수 있는지가 다릅니다.

왼쪽은 빨간색,
              가운데는 주황색, 오른쪽은 녹색인 가로 막대입니다. 빨간색에는 '상관관계 분석 가능성이 매우 높음(전역
              ID). 예: 정부 발행 신분증, 배송지 주소, 신용카드 번호'라는 텍스트가 있습니다.
              주황색에는 '공모를 통해 상관관계 분석 가능(개인 식별 정보). 예: 이름, 생년월일,
              우편번호'라는 텍스트가 있습니다. 녹색에는 '상관관계 분석 불가능
              (가명). 예: 21세 이상'이라는 텍스트가 있습니다.
그림 13 가명에서 완전히 식별된 상태까지 이르는 개인정보 보호 스펙트럼.

개인정보 보호 솔루션은 사용 사례에 따라 달라집니다. 예를 들어 주류 구매 시 규정에서 요구하는 사항은 구매자가 특정 연령을 넘었는지 확인하는 것뿐이므로, 많은 사람은 익명으로 남기를 원할 것입니다. 반면 의료 전문가가 환자에게 작성한 처방전을 조제할 때 약국은 처방자와 환자 모두의 신원을 더 확실하게 식별해야 할 법적 의무가 있습니다. 모든 사용 사례에 적합한 단 하나의 개인정보 보호 접근 방식은 없습니다.

참고: 일부 사용 사례에서는 연령 증명만으로 충분하지 않을 수 있습니다

주류를 구매할 때 익명으로 남고 싶은 사람도 판매자에게 충분한 확신을 주기 위해 사진이 있는 신분증을 제시해야 할 수 있습니다. 판매자는 이름이나 특정 연령을 넘었다는 사실 이외의 세부 정보를 알 필요가 없을 수 있지만, 단순한 연령 증명만으로는 규정을 충족하기에 충분하지 않은 경우가 많습니다.

검증 가능한 자격 증명 데이터 모델은 개인정보 보호 스펙트럼 전체를 지원하고자 하며, 특정 거래에 적합한 익명성 수준에 대해 철학적 입장을 취하지 않습니다. 개인정보 보호에 적대적인 특정 시나리오를 피하려는 구현자는 검증 가능한 자격 증명 데이터 모델 위협 모델에 문서화된 개인정보 보호 위협과 대응을 지침으로 삼을 수 있습니다.

소지자 자격 증명

이 절은 비규범적입니다.

소지자 자격 증명은 콘서트 티켓과 같이 개인정보 보호를 강화하는 정보로서, 그 보유자에게 특정 리소스를 이용할 권리를 부여하면서도 보유자가 민감한 정보를 공개하도록 요구하지 않습니다. 위험이 낮은 시나리오에서 엔터티는 여러 보유자가 동일한 검증 가능한 자격 증명을 제시하는 것이 문제가 되지 않거나 큰 경제적 손실 또는 평판 손실을 초래하지 않는 경우 소지자 자격 증명을 자주 사용합니다.

무기명 자격 증명검증 가능한 자격 증명credentialSubject 속성 안에 중첩된 id 속성으로 표현되는 주체 식별자를 지정하지 않음으로써 가능해집니다. 예를 들어, 다음 검증 가능한 자격 증명무기명 자격 증명입니다:

예제 40: 발급자 속성 사용
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": ["VerifiableCredential", "ExampleDegreeCredential"],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    // 소지자 자격 증명에는 'id' 속성이 지정되지 않는다는 점에 유의하십시오
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "이학 및 문학 학사"
    }
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "이학 및 문학 학사"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaeeqT7HurSBgrT5SixCj7tedhneKLTcfAYB1EXcL8kWhbQ",
    "cryptosuite": "ecdsa-rdfc-2019",
    "proofPurpose": "assertionMethod",
    "proofValue": "z4hW4NvxVgngUq4EtpLg2c81nKQRc6wRbtEjHX5rwBqruhHeZM34v59BVFVbNJpXe34JWc8QgmgNPst7FsubZX1gg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "이학 및 문학 학사"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "created": "2026-09-20T18:58:27Z",
    "verificationMethod": "did:key:zDnaewn1dKu2maKbFzdyGdbYBD6RiGXGt2EbmavAkXC6tqejD",
    "cryptosuite": "ecdsa-sd-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0AhVhABXYC-0lZ4Xx-WXiKSYxMDwFQOaKX_ADYSYWIVlOiL3uqnjhzi9zwVqiu317h0X9HjVMhmtPk1piGdJDlf2eMHlgjgCQD3x4ufe2HBDPjUMUz_QsQ5m-P423r-5o-M4-yUJOCmdBYILMu0X4rU-mw3lqCDcIfKZMViJy4Jv3uuoqSk0rKjWpEhVhA1olqQa3J5A0cikeB5QvVkullchMSKRh5mA4hCCKR9h8U4KG7-shPIHcLuSX0CxCbSxgfoONXG9C_nmi_YkOTc1hAgAx4UJxqvWsBqG9apIrlcs0Er9foX9mXqLz4Jhz7xa3PW85AW7Rif5LmYFD9w1uP7B7T_yqqKM2lCpEs5gTkrlhAqHvTk76qIPVLGsHMcgmfdhzPwayS9ZntQ9oh5lhS0lKPVRk9GX8tSlmTkJAHo-HT-KsL5zJLxNmay2W2UUaPN1hAStUj_K-sKK6nyFR1shzGx4XrSBmwtGx55kfis_rfbshBetzwXf66gzgwC9fJZX387KI50l5KGm_lz9E_4kwqmlhAeX6Wg-NiC_K17EEFDC3jb30nW7DRRyjNXwnRbR7oOCtqliL_E5oxgJQBEgzsfageFaq_BX7bnxOHv_weGIhXFIFnL2lzc3Vlcg"
  }
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "이학 및 문학 학사"
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "verificationMethod": "did:key:zUC718hxFZkEyEXS6ccqGeo6G6aNXZE3iB8UZmobREMMjyXL7ABoLrJjUEUVDnVDxE5pLt2CNVdWkihrdfXhKekaQQG7GfxvJ7TfaaYozoXauhJb3EjdzB9CHsmM3E6hkUb8Z1G",
    "cryptosuite": "bbs-2023",
    "proofPurpose": "assertionMethod",
    "proofValue": "u2V0ChVhQkDqwfcr013XQOpA6hMuCYrq3cQNTltYaoHZaXQtoUUkgSv12TNIh4KCgdPQUiH81Cl-XhdR4fiUIJ2XaGZW8kVRUkfD_o8jtqMi416PEVHVYQPSTbMszZ2Jz7GwOgk-46QAM8ZQ-NITiCGJSYADkfiJ7drHmhnEXifHmmlKM3zCnc0pq4l3ZkBkIESZ4DrQomVNYYICW39Y-ApmGfIO8-LaxztqzYFQuNOORiJmEwFb97OMnmArUWuHIVwMxnH9BioL9gBPQqKfkdFtd-HDGfXt1PWzaQe02hbJNAM2qf2HY2K054sfBehbSD13fX_aSK0xvZ1ggXk-s6uuewy01lBpkSD-ZTj8EcMDfItF-S31K9RboRaCBZy9pc3N1ZXI"
  }
}
보호된 헤더
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "이학 및 문학 학사"
    }
  }
}
application/vc+jwt
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzL3RlbXBvcmFyeS8yODkzNDc5MjM4NzQ5MjM4NCIsInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJFeGFtcGxlRGVncmVlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzE0IiwidmFsaWRGcm9tIjoiMjAxNy0xMC0yMlQxMjoyMzo0OFoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsidHlwZSI6IkV4YW1wbGVCYWNoZWxvckRlZ3JlZSIsIm5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIn19fQ .vX8wD_mRxh7PDFij37iZHlANepzaTZey8jvIfe5_9i2bqZkoCzVj7nbG9j_Hq5sxBdjmhdVA0fl8ZJ_sIrTlVw
application/vc
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "id": "http://university.example/credentials/temporary/28934792387492384",
  "type": [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "type": "ExampleBachelorDegree",
      "name": "이학 및 문학 학사"
    }
  }
}
application/vc+cose
d28443a10128a05901a27b2240636f6e74657874223a5b2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f7632222c2268747470733a2f2f7777772e77332e6f72672f6e732f63726564656e7469616c732f6578616d706c65732f7632225d2c226964223a22687474703a2f2f756e69766572736974792e6578616d706c652f63726564656e7469616c732f74656d706f726172792f3238393334373932333837343932333834222c2274797065223a5b2256657269666961626c6543726564656e7469616c222c224578616d706c6544656772656543726564656e7469616c225d2c22697373756572223a2268747470733a2f2f756e69766572736974792e6578616d706c652f697373756572732f3134222c2276616c696446726f6d223a22323031372d31302d32325431323a32333a34385a222c2263726564656e7469616c5375626a656374223a7b22646567726565223a7b2274797065223a224578616d706c6542616368656c6f72446567726565222c226e616d65223a2242616368656c6f72206f6620536369656e636520616e642041727473227d7d7d5840bd84715376ee56f09c05ad660fc875c0ace8d692b786105e52ecdb22c039101d282f6e7c49d3b3c3352d1f4709153b630e16f3e4338e5a16fa1698ce7c1771c0
eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ .eyJpYXQiOjE3ODk5MzA3MDcsImV4cCI6MTc5MTE0MDMwNywiX3NkX2FsZyI6InNoYS0yNTYiLCJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy8xNCIsInZhbGlkRnJvbSI6IjIwMTctMTAtMjJUMTI6MjM6NDhaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiZGVncmVlIjp7Im5hbWUiOiJCYWNoZWxvciBvZiBTY2llbmNlIGFuZCBBcnRzIiwiX3NkIjpbIkFHOHVnU1h2dzJSR3h1V2pnTG1YbkkxWDFCZ3c4U3pZTnk3TjJaX2FXczQiXX19LCJfc2QiOlsiSUozbnlwMkg1ZEkxeEdHMDVHalM4YlQtTlBSbHdocUplYlJaOHVzNWZhUSIsIndER3JtRTAzSTloUzl0ZFdqZjJDTlpsMEFwVVE4X2lIUXpZSnB0bXN0enciXX0 .JCH0J4ULV0FGLCu6aZ9t05q6JzIEh3-qalycGgZBNx4ULXnIeNdsj7NTUNGWZoAM7ZS57HJtu0Lg3E8fWFVpmw ~WyI2eFFWYXRFRnkxaklWV0tGcnRLbnJBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0~WyJGbzdoaU1zVWpKN3pmSGJQTHFzY3lBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d~WyJYZWIyQnpwUG5GSEdjajdfdl85M0xBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0~
{
  "kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
  "alg": "ES256"
}
{
  "iat": 1789930707,
  "exp": 1791140307,
  "_sd_alg": "sha-256",
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://www.w3.org/ns/credentials/examples/v2"
  ],
  "issuer": "https://university.example/issuers/14",
  "validFrom": "2017-10-22T12:23:48Z",
  "credentialSubject": {
    "degree": {
      "name": "이학 및 문학 학사",
      "_sd": [
        "AG8ugSXvw2RGxuWjgLmXnI1X1Bgw8SzYNy7N2Z_aWs4"
      ]
    }
  },
  "_sd": [
    "IJ3nyp2H5dI1xGG05GjS8bT-NPRlwhqJebRZ8us5faQ",
    "wDGrmE03I9hS9tdWjf2CNZl0ApUQ8_iHQzYJptmstzw"
  ]
}

클레임: id

SHA-256 해시: IJ3nyp2H5dI1xGG05GjS8bT-NPRlwhqJebRZ8us5faQ

공개 정보: WyI2eFFWYXRFRnkxaklWV0tGcnRLbnJBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0

내용: [
  "6xQVatEFy1jIVWKFrtKnrA",
  "id",
  "http://university.example/credentials/temporary/28934792387492384"
]

클레임: type

SHA-256 해시: wDGrmE03I9hS9tdWjf2CNZl0ApUQ8_iHQzYJptmstzw

공개 정보: WyJGbzdoaU1zVWpKN3pmSGJQTHFzY3lBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d

내용: [
  "Fo7hiMsUjJ7zfHbPLqscyA",
  "type",
  [
    "VerifiableCredential",
    "ExampleDegreeCredential"
  ]
]

클레임: type

SHA-256 해시: AG8ugSXvw2RGxuWjgLmXnI1X1Bgw8SzYNy7N2Z_aWs4

공개 정보: WyJYZWIyQnpwUG5GSEdjajdfdl85M0xBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0

내용: [
  "Xeb2BzpPnFHGcj7_v_93LA",
  "type",
  "ExampleBachelorDegree"
]

무기명 자격 증명은 개인정보 보호를 강화하지만, 발급자는 여전히 무기명 자격 증명보유자가 예상하는 것보다 더 많은 정보를 의도치 않게 공개하지 않도록 설계에 주의를 기울여야 합니다. 무기명 자격 증명의 설계 및 재사용으로 인해 발생하는 상관관계 위험과 이에 대한 대응은 검증 가능한 자격 증명 데이터 모델 위협 모델의 무기명 자격 증명 재사용 및 상관관계에 설명되어 있습니다.

비공개 브라우징

이 절은 비규범적입니다.

이상적인 비공개 브라우징 시나리오에서는 개인 식별 정보(PII)가 전혀 공개되지 않습니다. 많은 자격 증명에 PII가 포함되므로, 보유자에게 소프트웨어를 제공하는 조직은 비공개 브라우징 모드에서 자격 증명프레젠테이션을 사용할 경우 이 정보가 공개될 수 있음을 경고해야 합니다. 브라우저 공급업체마다 비공개 브라우징을 다르게 처리하고 일부 브라우저에는 이 기능이 없을 수도 있으므로, 구현자는 개인정보 보호를 제공하기 위해 비공개 브라우징 모드에 의존해서는 안 됩니다. 대신 소프트웨어가 직접 사용할 수 있고 개인정보 보호를 보장하는 도구에 의존하는 것이 좋습니다.

보안 고려 사항

이 절은 비규범적입니다.

W3C는 전체론적인 위협 모델링 접근 방식으로 전환하고 있으며, 새로운 사양에서 보안 고려 사항 절을 폐기하는 과정에 있습니다. 보안 고려 사항 관련 문서는 부록 A. 위협 모델을 참조하십시오.

B. 유효성 검사

이 절은 비규범적입니다.

이 사양에서는 유효성 검사, 즉 검증 가능한 자격 증명이나 검증 가능한 프레젠테이션의 유효성 검사 과정에 대한 적합성 기준을 제공하지 않습니다. 그러나 독자는 이 데이터 모델의 정보가 검증자유효성 검사 과정에서 어떻게 사용될 것으로 예상되는지 궁금할 수 있습니다. 이 절에서는 이 사양의 속성을 검증자가 사용할 것으로 예상되는 방식에 관해 작업 그룹에서 나눈 논의 중 일부를 정리합니다.

B.1 자격 증명 유형

이 절은 비규범적입니다.

검증자보유자에게 하나 이상의 검증 가능한 자격 증명을 요청할 때, 받고자 하는 자격 증명의 유형을 지정할 수 있습니다. 자격 증명 유형과 각 유형 및 해당 유형의 각 클레임에 대한 검증 스키마는 사양 작성자가 정의하며 검증 가능한 자격 증명 확장과 같은 곳에 게시됩니다.

자격 증명의 유형은 type 속성을 통해 표현됩니다. 특정 유형의 검증 가능한 자격 증명에는 속성(깊게 중첩될 수도 있음)이 포함되며, 이를 사용하여 검증자가 실행하는 일련의 처리 규칙을 프레젠테이션이 충족하는지 여부를 판단할 수 있습니다. 특정 type검증 가능한 자격 증명을 요청함으로써, 검증자보유자로부터 특정 정보를 수집할 수 있으며, 이 정보는 각 검증 가능한 자격 증명발급자에게서 비롯된 것으로, 검증자보유자와의 상호작용에서 다음 단계를 결정할 수 있게 합니다.

검증자가 특정 유형의 검증 가능한 자격 증명을 요청할 때, 해당 유형과 관련된 필수 및 선택적 클레임 집합이 있습니다. 필수 클레임이 포함되지 않은 경우 검증자검증 가능한 자격 증명 검증은 실패하며, 특정 유형과 관련되지 않은 모든 클레임은 무시됩니다. 다시 말해, 검증자는 수신한 검증 가능한 자격 증명에 대해 입력 검증을 수행하고, 자격 증명 유형 사양에 따라 잘못된 형식의 입력을 거부합니다.

B.2 자격 증명 주체

이 절은 비규범적입니다.

보유자가 제시한 검증 가능한 자격 증명에서 각 credentialSubjectid 속성과 연결된 값은 검증자에게 주체를 식별합니다. 보유자주체이기도 한 경우, 검증자보유자와 관련된 검증 메타데이터를 가지고 있다면 보유자를 인증할 수 있습니다. 그러면 검증자검증 가능한 프레젠테이션에 포함된 보유자가 생성한 서명을 사용하여 보유자를 인증할 수 있습니다. id 속성은 선택 사항입니다. 검증자검증 가능한 자격 증명의 다른 속성을 사용하여 주체를 고유하게 식별할 수도 있습니다.

참고: 인증은 이 문서의 범위를 벗어납니다

인증 및 WebAuthn이 검증 가능한 자격 증명과 어떻게 함께 작동할 수 있는지에 대한 정보는 검증 가능한 자격 증명 구현 지침 1.0 문서를 참조하십시오.

B.3 발급자

이 절은 비규범적입니다.

issuer 속성과 연결된 값은 발급자검증자에게 식별합니다.

issuer 속성과 관련된 메타데이터는 검증자검증 알고리즘, 즉 7.1 검증절에 정의된 알고리즘을 통해 이용할 수 있습니다. 이 메타데이터에는 보호 메커니즘이 각 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 보호하는 데 사용한 검증 방법의 검증된 제어자 식별 정보가 포함됩니다. 제어자는 일반적으로 각각의 issuer 또는 holder입니다.

일부 생태계에서는 발급자와 검증 방법 제어자 사이에 더 복잡한 관계가 존재할 수 있으며, 위에서 설명한 매핑과 함께 또는 그 대신 검증된 발급자 목록을 사용할 수도 있습니다.

B.4 보유자

이 절은 비규범적입니다.

holder 속성과 연결된 값은 보유자검증자에게 식별하는 데 사용됩니다.

흔히 holder 속성의 값으로 식별되는 보유자에 관한 관련 메타데이터를 검증자가 이용하거나 검색할 수 있는 경우가 많습니다. 예를 들어, 보유자검증 가능한 프레젠테이션을 보호하는 데 사용되는 검증 자료가 포함된 정보를 게시할 수 있습니다. 이 메타데이터는 검증 가능한 프레젠테이션의 증명을 확인할 때 사용됩니다. 일부 암호화 식별자는 필요한 모든 메타데이터를 식별자 자체에 포함합니다. 이러한 경우에는 추가 메타데이터가 필요하지 않습니다. 다른 식별자는 이러한 메타데이터가 검증자가 사용할 수 있도록 자동으로 게시되는 검증 가능한 데이터 레지스트리를 사용하며, 보유자가 추가 작업을 수행할 필요가 없습니다.

검증 가능한 자격 증명 구현 지침 1.0검증 가능한 자격 증명 사용 사례에서 주체보유자와 관련된 추가 예제를 참조하십시오.

참고: 유효성 검사는 비즈니스 규칙을 적용하는 과정입니다

유효성 검사는 검증자가 특정 검증 가능한 자격 증명 사용의 적절성을 평가하기 위해 비즈니스 규칙을 적용하는 과정입니다.

검증자는 주어진 검증 가능한 프레젠테이션을 복잡한 비즈니스 규칙에 따라 유효성 검사해야 할 수도 있습니다. 예를 들어, 검증자는 보유자검증 가능한 자격 증명주체와 동일한 엔터티라는 확신이 필요할 수 있습니다. 이러한 상황에서는 다음 요소를 통해 검증자가 포함된 검증 가능한 자격 증명에서 해당 식별자에 관해 표현된 클레임이 실제로 현재 제시자에 관한 것이라는 합리적인 확신을 얻을 수 있습니다:

B.5 발급일

이 절은 비규범적입니다.

validFrom검증자가 예상하는 범위 안에 있어야 합니다. 예를 들어 검증자검증 가능한 자격 증명의 유효 기간 시작 시점이 미래가 아닌지 확인할 수 있습니다.

B.6 증명(서명)

이 절은 비규범적입니다.

검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 정보가 변조되지 않았음을 입증하는 데 사용하는 보호 메커니즘을 암호학적 증명이라고 합니다. 암호학적 증명에는 디지털 서명과 영지식 증명을 비롯해 여러 유형이 있습니다. 일반적으로 암호학적 증명을 검증할 때 구현은 다음 사항을 확인해야 합니다.

일반적으로 디지털 서명을 검증할 때 구현은 다음 사항을 확인해야 합니다.

B.7 유효 기간

이 절은 비규범적입니다.

검증자validFromvalidUntil 속성이 일정한 범위 안에 있을 것으로 예상합니다. 예를 들어 검증자검증 가능한 자격 증명의 유효 기간 종료 시점이 과거가 아닌지 확인할 수 있습니다. 일부 자격 증명은 원래 유효 기간이 만료된 뒤에도 부차적인 목적으로 유용할 수 있으므로, validFromvalidUntil 속성으로 표현되는 유효 기간은 항상 검증 에 수행되는 유효성 검사의 구성 요소로 간주합니다.

B.8 상태

이 절은 비규범적입니다.

credentialStatus 속성을 사용할 수 있는 경우, 검증 가능한 자격 증명의 상태는 검증자검증 가능한 자격 증명에 대한 credentialStatus 유형 정의와 검증자 자체의 상태 평가 기준에 따라 평가할 것으로 예상됩니다. 예를 들어, 검증자검증 가능한 자격 증명의 상태가 "발급자가 사유로 인해 철회함"이 아님을 확인할 수 있습니다.

B.9 스키마

이 절은 비규범적입니다.

credentialSchema 속성을 사용할 수 있는 경우, 검증 가능한 자격 증명의 스키마는 검증자검증 가능한 자격 증명에 대한 credentialSchema 유형 정의와 검증자 자체의 스키마 평가 기준에 따라 평가할 것으로 예상됩니다. 예를 들어, credentialSchematype 값이 [VC-JSON-SCHEMA]인 경우, 검증자는 자격 증명의 데이터가 주어진 JSON 스키마에 대해 유효한지 확인할 수 있습니다.

B.10 목적 적합성

이 절은 비규범적입니다.

목적 적합성은 검증 가능한 자격 증명의 사용자 지정 속성검증자의 목적에 적합한지 여부에 관한 것입니다. 예를 들어, 검증자주체가 21세를 초과했는지 판단해야 하는 경우, 특정 birthdate 속성이나 ageOver와 같은 더 추상적인 속성에 의존할 수 있습니다.

발급자는 해당 클레임을 하는 데 있어 검증자의 신뢰를 받습니다. 예를 들어, 프랜차이즈 패스트푸드 매장은 해당 프랜차이즈의 본사가 제시한 할인 쿠폰 클레임을 신뢰합니다. 발급자검증 가능한 자격 증명에 표현한 정책 정보는, 정책을 무시하는 데 따른 책임을 감수하지 않는 한 보유자검증자가 존중해야 합니다.

B.11 "인공 지능" 및 "기계 학습"

이 절은 비규범적입니다.

오늘날 일반적으로 "인공지능" 및/또는 "기계 학습"이라고 불리는 것을 사용하는 시스템은 복잡한 작업을 인간의 수행 수준에 도달하거나 이를 능가하는 수준으로 수행할 수 있습니다. 여기에는 검증 가능한 자격 증명의 획득 및 사용과 같은 작업이 포함될 수 있습니다. 이러한 작업을 사용하여 오늘날 일반적으로 CAPTCHA를 통해 수행하는 것처럼 인간과 자동화된 "봇" 활동을 구분하는 방식은, 예를 들어 더 이상 충분하거나 허용 가능한 보호를 제공하지 못할 수 있습니다.

검증 가능한 자격 증명을 사용하는 보안 아키텍처를 구현하거나 그 콘텐츠에 대해 유효성 검사를 수행하는 구현자는, 오늘날 일반적으로 "인공지능"이라고 불리는 것과 같은 기계 기반 행위자가 존재하며, 이들이 다른 시스템과의 상호작용에 사용하기 위해 합법적으로 검증 가능한 자격 증명을 보유할 수 있다는 점을 고려할 것을 권고합니다. 구현자는 또한 위협 행위자가 이러한 "인공지능" 시스템과 검증 가능한 자격 증명을 결합하여 자신의 시스템과 상호작용할 때 인간인 것처럼 가장할 수 있는 방법도 고려할 수 있습니다. 이러한 시스템에는 소셜 미디어, 선거, 에너지 분배, 공급 망 및 자율주행 차량 시스템과 같은 글로벌 인프라가 포함될 수 있으나 이에 국한되지는 않습니다.

C. 컨텍스트, 어휘, 유형 및 자격 증명 스키마

C.1 기본 컨텍스트

구현은 https://www.w3.org/ns/credentials/v2에 있는 기본 컨텍스트 값을 이미 가져온 것으로 반드시 취급해야 합니다. 다음 값은 기본 컨텍스트 파일의 16진수로 인코딩된 SHA2-256 다이제스트 값입니다: 59955ced6697d61e03f2b2556febe5308ab16842846f5b586d7f1f7adec92734. 최신 Unix 명령줄 인터페이스에서 다음 명령을 실행하여 위의 암호화 다이제스트를 확인할 수 있습니다: curl -s https://www.w3.org/ns/credentials/v2 | openssl dgst -sha256.

애플리케이션에서 사용하는 모든 JSON-LD 컨텍스트 URL에는 종단 간 보안을 보장하기 위해 동일한 메커니즘 또는 기능적으로 동등한 메커니즘을 사용할 것을 강력히 권고합니다. 리소스의 암호화 해시 값이 예상된 해시 값과 일치하지 않는 경우 구현은 오류를 발생시킬 것으로 예상됩니다.

JSON-LD 확장 또는 RDF로 변환과 같은 작업 중에 위의 기본 컨텍스트뿐만 아니라 모든 @context 속성의 다른 컨텍스트와 값을 적용하는 구현은 오류 없이 이를 수행할 것으로 예상됩니다. 이러한 작업을 수행한 결과 오류가 발생하면, 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션반드시 검증 실패로 이어져야 합니다.

참고: 해시 값 변경이 감지되면 정오표를 참조하십시오

이 사양에서 관련 암호화 해시 값이 있는 파일이 변경될 가능성은 극히 낮습니다. 그러나 사양에서 중대한 정오표가 발견되고 생태계 안정성을 보장하기 위해 수정이 필요한 경우, 암호화 해시 값이 변경될 수 있습니다. 따라서 파일의 HTTP 캐시 시간은 무한대로 설정되지 않으며, 암호화 해시 값 변경이 감지되면 구현자는 정오표를 확인할 것을 권고합니다.

이 섹션은 검증 가능한 자격 증명검증 가능한 프레젠테이션을 검증할 때, 검증자발급자 또는 보유자자격 증명 또는 프레젠테이션을 보호할 때 가지고 있던 정보와 일치하는 정보를 갖도록 보장하는 것이 중요함을 상기시키기 위한 것입니다. 이 정보에는 적어도 다음이 포함될 수 있습니다:

  1. 자격 증명 자체의 내용으로, 보호 메커니즘을 사용하여 검증 가능한 자격 증명검증 가능한 프레젠테이션에서 보호됩니다. 자세한 내용은 4.12 보호 메커니즘 섹션을 참조하십시오.
  2. JSON-LD 컨텍스트와 같이 외부 URL에 대한 링크에 의미가 의존하는 자격 증명의 콘텐츠로, 로컬 정적 복사본 또는 파일의 암호화 다이제스트를 사용하여 보호할 수 있습니다. 자세한 내용은 5.3 관련 리소스의 무결성 섹션을 참조하십시오.

검증자는 URL을 통해 연결된 리소스와 같이 자격 증명 내부에서 참조되는 다른 데이터가 기본적으로 암호화 방식으로 보호되지 않는다는 점에 유의해야 합니다. 영구적으로 캐시된 파일 및/또는 암호화 해시를 사용하여 검증 가능한 자격 증명의 보안에 중요한 모든 URL에 동일한 종류의 보호가 제공되도록 하는 것이 모범 사례로 간주됩니다. 궁극적으로 연결된 모든 외부 콘텐츠의 암호화 다이제스트를 알고 있으면 검증자가 해당 콘텐츠가 발급자 또는 보유자가 의도한 것과 동일한지 확인할 수 있습니다.

C.2 어휘

RDF 어휘 처리에 의존하는 구현은 MUST 기본 컨텍스트에서 사용하는 다음 어휘 URL이 규범적인 JSON-LD 직렬화를 로드할 때 궁극적으로 다음 파일로 해석되도록 보장해야 합니다. 구현은 의미상 동등한 어휘 파일의 다른 직렬화를 MAY 사용할 수 있습니다. 개발자가 각 파일의 콘텐츠가 올바른지 검증할 수 있도록 각 JSON-LD 문서의 암호학적 해시를 제공합니다.

JSON-LD 문서 및 해시
URL: https://www.w3.org/2018/credentials#
해석된 문서: https://www.w3.org/2018/credentials/index.jsonld
SHA2-256 다이제스트: 9db03c54d69a8ec3944f10770e342b33e58a79045c957c35d51285976fc467c4
URL: https://w3id.org/security#
해석된 문서: https://w3c.github.io/vc-data-integrity/vocab/security/vocabulary.jsonld
SHA2-256 다이제스트: 134f9a8ccbd3b2063baf7c77e9ff9931903b489951f01f5202af893bdb65e282

최신 UNIX 계열 OS 명령줄 인터페이스에서 <DOCUMENT_URL>을 적절한 값으로 바꾸고 다음과 같은 명령을 실행하여 위에 나열된 암호학적 다이제스트를 확인할 수 있습니다: curl -sL -H "Accept: application/ld+json" <DOCUMENT_URL> | openssl dgst -sha256

참고: schema.org는 정기적으로 변경되지만 안정적인 것으로 간주됩니다

구현자와 문서 작성자는 schema.org의 암호학적 다이제스트가 제공되지 않는다는 점에 주목할 수 있습니다. 이는 schema.org 어휘가 정기적으로 변경되므로 제공된 다이제스트가 게시 후 몇 주 안에 오래된 값이 되기 때문입니다. 작업 그룹은 이 우려 사항을 논의한 뒤, 이 사양에서 사용하는 schema.org의 어휘 용어는 수년 동안 안정적이었으며 의미가 변경될 가능성이 매우 낮다고 결론지었습니다.

이 사양에서는 이러한 정의를 활용하는 프로세서와 다른 사양을 위해 다음 기본 클래스를 정의합니다:

기본 클래스 목적
CredentialEvidence evidence 속성에 배치되는 특정 증거 유형의 상위 클래스 역할을 합니다.
CredentialSchema credentialSchema 속성에 배치되는 특정 스키마 유형의 상위 클래스 역할을 합니다.
CredentialStatus credentialStatus 속성에 배치되는 특정 자격 증명 상태 유형의 상위 클래스 역할을 합니다.
ConfidenceMethod confidenceMethod 속성에 배치되는 특정 신뢰도 방법 유형의 상위 클래스 역할을 합니다.
RefreshService credentialRefresh 속성에 배치되는 특정 갱신 서비스 유형의 상위 클래스 역할을 합니다.
RenderMethod renderMethod 속성에 배치되는 특정 렌더링 방법 유형의 상위 클래스 역할을 합니다.
TermsOfUse termsOfUse 속성에 배치되는 특정 이용 약관 유형의 상위 클래스 역할을 합니다.

C.3 데이터 유형

이 절에서는 이 사양에서 사용하는 데이터 유형을 정의합니다.

C.3.1 sriString 데이터 유형

sriString 데이터 유형은 하위 리소스 무결성 사양에 명시된 방법을 사용해 리소스의 무결성 정보를 제공하기 위해 값과 연결됩니다. sriString 데이터 유형은 다음과 같이 정의합니다:

이 데이터 유형을 나타내는 URL
https://www.w3.org/2018/credentials#sriString
어휘 공간
문자열 형식의 제한 사항은 ABNF 문법을 참조하십시오. 이 문법은 integrity 속성을 정의하며 [SRI] 사양에 명시되어 있습니다.
값 공간
alg가 해시 함수를 식별하고 val이 표준 수학적 개념의 정수인 (alg,val) 쌍의 목록이며, 비어 있을 수도 있습니다.
어휘-값 매핑
어휘 공간의 모든 요소는 메타데이터 구문 분석 알고리즘을 따라 값 공간에 매핑됩니다. 이 알고리즘은 ABNF 문법을 기반으로 하며, 이 문법은 [SRI] 사양에 정의되어 있습니다.
정규 매핑
정규 매핑은 어휘-값 매핑으로 구성됩니다.

C.4 컨텍스트, 유형 및 자격 증명 스키마의 차이

이 절은 비규범적입니다.

검증 가능한 자격 증명검증 가능한 프레젠테이션 데이터 모델은 [JSON-LD11] 및 [VC-JSON-SCHEMA]을 포함한 다양한 기반 기술을 활용합니다. 이 섹션에서는 @context, type, credentialSchema 속성을 비교하고, 데이터 모델의 이러한 기능을 사용할 수 있는 보다 구체적인 사용 사례 중 일부를 다룹니다.

type 속성은 이 속성이 나타나는 검증 가능한 자격 증명의 유형, 즉 해당 검증 가능한 자격 증명에 어떤 클레임 집합이 포함되어 있는지를 고유하게 식별하는 데 사용됩니다. 이 속성과 그 값 집합 내의 VerifiableCredential 값은 필수입니다. 이 검증 가능한 자격 증명의 고유한 하위 유형을 나타내는 값을 하나 더 포함하는 것이 좋은 관행이지만, 배열에서 추가 유형 값을 생략하거나 포함하는 것 모두 허용됩니다. 많은 검증자는 특정 하위 유형의 검증 가능한 자격 증명을 요청하므로, 하위 유형 값을 생략하면 검증자가 보유자에게 어떤 검증 가능한 자격 증명이 필요한지 알려 주기 더 어려워질 수 있습니다. 검증 가능한 자격 증명에 여러 하위 유형이 있는 경우, 이를 모두 type 속성에 나열하는 것이 합리적입니다. 검증 가능한 자격 증명의 [JSON-LD11] 표현에서 type 속성을 사용하면 기계가 의미론을 확인할 수 있으므로 검증 가능한 자격 증명의 의미론을 적용할 수 있습니다. [JSON-LD11]에서 이 기술은 클레임 집합의 분류만 설명하는 것이 아니라, 그래프 내 속성 하위 그래프의 구조와 의미론도 전달합니다. [JSON-LD11]에서는 이것이 그래프 내 노드의 유형을 나타내므로 일부 검증 가능한 자격 증명의 [JSON-LD11] 표현은 검증 가능한 자격 증명의 여러 객체에서 type 속성을 사용합니다.

[JSON-LD11] 관점에서 @context 속성의 주요 목적은 검증 가능한 자격 증명에 있는 데이터의 의미와 데이터의 용어 정의를 기계가 읽을 수 있는 방식으로 전달하는 것입니다. @context 속성은 검증 가능한 자격 증명검증 가능한 프레젠테이션의 속성에 대한 전역적으로 고유한 URL을 짧은 형식의 별칭 이름으로 매핑하여 [JSON-LD11] 표현을 사람이 더 쉽게 읽을 수 있도록 합니다. [JSON-LD11] 관점에서 이 매핑은 또한 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 데이터가 더 큰 기계 판독 가능 데이터 그래프와 어떻게 관련되는지를 강화함으로써, 자격 증명의 데이터를 기계 판독 가능 데이터 네트워크로 모델링할 수 있게 합니다. 이는 당사자들이 서로 조정할 수 없는 생태계에서 데이터의 의미를 다른 데이터와 어떻게 연결해야 하는지 기계에 알려 주는 데 유용합니다. 이 속성은 집합의 첫 번째 값이 https://www.w3.org/ns/credentials/v2여야 하며 필수입니다.

@context 속성은 데이터를 그래프 데이터 모델에 매핑하는 데 사용되고, [JSON-LD11]의 type 속성은 그래프 내 노드를 설명하는 데 사용되므로, 두 속성을 함께 사용할 때 type 속성은 더욱 중요해집니다. 예를 들어, [JSON-LD11]을 사용해 해석된 @context 리소스 내에 type 속성이 포함되지 않으면, 검증 가능한 자격 증명의 생성 및 소비 과정에서 클레임이 누락되거나 그 무결성이 더 이상 보호되지 않을 수 있습니다. 또는 검증 가능한 자격 증명의 생성 또는 소비 과정에서 오류가 발생할 수도 있습니다. 이는 구현의 설계 선택에 따라 달라지며, 현재 구현에서는 두 방식 모두 사용되고 있으므로 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 [JSON-LD11] 표현을 사용할 때 이러한 속성에 주의를 기울이는 것이 중요합니다.

credentialSchema 속성의 주요 목적은 검증 가능한 자격 증명의 구조와 나타나는 각 속성 값의 데이터 유형을 정의하는 것입니다. credentialSchema검증 가능한 자격 증명의 클레임 집합의 내용과 구조를 정의하는 데 유용한 반면, [JSON-LD11] 및 검증 가능한 자격 증명@context는 데이터의 의미론과 용어 정의를 전달하는 데만 사용하는 것이 가장 적합하며, 검증 가능한 자격 증명의 구조를 정의하는 데도 사용할 수 있습니다.

일부 [JSON-LD11] 기능을 사용하여 검증 가능한 자격 증명의 내용을 암시할 수 있지만, 일반적으로 데이터 모델의 데이터 유형을 제한하기 위해 @context를 사용하는 것은 권장되지 않습니다. 예를 들어, "@type": "@json"은 의미론을 개방된 상태로 두고 엄격하게 정의하지 않는 데 유용합니다. 구현자가 자격 증명의 클레임 데이터 유형을 제한하려는 경우 이는 위험할 수 있으며, 사용하지 않을 것으로 예상됩니다.

credentialSchema@context 속성을 함께 사용하면, 생성자와 소비자 모두 검증 가능한 자격 증명검증 가능한 프레젠테이션의 예상 내용과 데이터 유형에 대해 더 큰 확신을 가질 수 있습니다.

D. IANA 고려 사항

이 절은 비규범적입니다.

이 절은 검토와 승인 및 IANA 등록을 위해 인터넷 엔지니어링 운영 그룹 (IESG)에 제출됩니다.

D.1 application/vc

이 사양은 검증 가능한 자격 증명 형식을 준수하는 문서를 식별하기 위해 특별히 application/vc 미디어 유형을 등록합니다.

유형 이름: application
하위 유형 이름: vc
필수 매개변수: 없음
인코딩 고려 사항: application/vc 미디어 유형을 사용하는 리소스는 application/ld+json 미디어 유형의 모든 요구 사항을 준수해야 하므로, JavaScript 객체 표기법 (JSON) 데이터 교환 형식의 섹션 11에 명시된 것과 동일한 인코딩 고려 사항이 적용됩니다.
보안 고려 사항: 검증 가능한 자격 증명 데이터 모델 v2.0에 정의된 바와 같습니다.
연락처: W3C 검증 가능한 자격 증명 워킹 그룹 public-vc-wg@w3.org

검증 가능한 자격 증명 형식은 JSON-LD 규칙을 사용하지만, 특정 미디어 유형의 사용을 정당화하는 검증 가능한 자격 증명 구현에 대한 여러 제약 조건과 추가 요구 사항이 있다는 점에 유의하십시오.

이 미디어 유형은 포괄 증명에서 포괄된 페이로드를 나타내는 데 사용할 수 있습니다.

자격 증명은 유효한 JSON-LD 문서일 것으로 예상됩니다. application/vc 미디어 유형으로 제공되는 검증 가능한 자격 증명은 외부 컨텍스트에 대한 참조를 포함한 모든 JSON-LD 1.1 컨텍스트 정보를 문서 본문에 포함할 것으로 예상됩니다. http://www.w3.org/ns/json-ld#context HTTP Link 헤더를 통해 연결된 컨텍스트 (JSON-LD 1.1섹션 6.1 참조)는 무시됩니다.

D.2 application/vp

이 사양은 application/vp 미디어 유형을 검증 가능한 프레젠테이션 형식을 준수하는 문서를 식별하는 용도로 등록합니다.

유형 이름: application
하위 유형 이름: vp
필수 매개변수: 없음
인코딩 고려 사항: application/vp 미디어 유형을 사용하는 리소스는 application/ld+json 미디어 유형의 모든 요구 사항을 준수해야 하므로, JavaScript 객체 표기법(JSON) 데이터 교환 형식의 11절에 명시된 것과 동일한 인코딩 고려 사항이 적용됩니다.
보안 고려 사항: 검증 가능한 자격 증명 데이터 모델 v2.0에 정의된 대로입니다.
연락처: W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org

검증 가능한 프레젠테이션 형식은 JSON-LD 규칙을 사용하지만, 검증 가능한 프레젠테이션 구현에는 특정 미디어 유형의 사용을 정당화하는 여러 제약과 추가 요구 사항이 있다는 점에 유의하십시오.

이 미디어 유형은 포괄 증명에서 포괄된 페이로드를 나타내는 데 사용할 수 있습니다.

프레젠테이션은 유효한 JSON-LD 문서여야 합니다. 검증 가능한 프레젠테이션application/vp 미디어 유형으로 제공할 때는 외부 컨텍스트에 대한 참조를 포함한 모든 JSON-LD 1.1 컨텍스트 정보가 문서 본문에 있어야 합니다. http://www.w3.org/ns/json-ld#context HTTP Link 헤더를 통해 연결된 컨텍스트는 (6.1절, [JSON-LD11] 참조) 무시됩니다.

E. 검증 가능한 프레젠테이션의 추가 다이어그램

이 절은 비규범적입니다.

그림 14그림 9의 변형입니다. 여기서는 검증 가능한 프레젠테이션이 두 개의 검증 가능한 자격 증명을 참조하고, 내장 증명을 사용합니다. 이 증명은 [VC-DATA-INTEGRITY]에 기반합니다. 각 검증 가능한 자격 증명 그래프는 자체적으로 분리된 증명 그래프에 연결됩니다. verifiableCredential 속성은 검증 가능한 프레젠테이션검증 가능한 자격 증명 그래프에 연결하는 데 사용됩니다. 프레젠테이션 증명 그래프검증 가능한 프레젠테이션 그래프, 두 검증 가능한 자격 증명 그래프, 그리고 증명 그래프의 디지털 서명을 나타냅니다. 이 증명 그래프들은 검증 가능한 자격 증명 그래프에서 연결됩니다. 이 경우 완전한 검증 가능한 프레젠테이션은 여섯 개의 정보 그래프로 구성됩니다.


위쪽에 ‘검증 가능한 프레젠테이션 그래프’가 있고, ‘proof’를 통해 아래쪽의
‘검증 가능한 프레젠테이션 증명 그래프’에 연결된 다이어그램입니다. 검증 가능한 프레젠테이션 그래프에는
‘Presentation ABC’라는 객체가 있으며 세 가지 속성을 가집니다. ‘type’의 값은 ‘VerifiablePresentation’이고,
‘termsOfUse’의 값은 ‘Do Not Archive’이며, 아래에 자세히 설명된 ‘verifiableCredential’ 인스턴스가 두 개 있습니다.
이 그래프에는 괄호 안에 ‘(기본 그래프)’라는 설명이 붙어 있습니다. 이 그래프는 ‘verifiableCredential’을 통해
그림 6의 두 가지 변형으로 구성된 부분에 연결됩니다. 하나는 그림 6과 동일하고, 다른 하나는 유효 날짜를 나타내는
레이블, 사람 이름, nonce 및 서명 값에 약간의 차이가 있습니다. 다만 이 검증 가능한 자격 증명 그래프에는
기본 그래프가 아니라 명명된 그래프라는 설명이 붙어 있습니다. 검증 가능한 프레젠테이션 증명 그래프에는
‘Signature 8920’이라는 객체가 있으며 다섯 가지 속성을 가집니다. ‘type’의 값은 ‘DataIntegrityProof’이고,
‘verificationMethod’의 값은 ‘Example Presenter Public Key 11’이며, ‘created’의 값은
‘2024-01-02T12:43:56Z’, ‘nonce’의 값은 ‘hasdkyruod87j’, ‘proofValue’의 값은 ‘zpewJHoan87=’입니다.
이 그래프에는 괄호 안에 ‘(명명된 그래프)’라는 설명이 붙어 있습니다.
그림 14 그림 9의 변형: 두 개의 검증 가능한 자격 증명을 참조하는 정보 그래프. 이 그래프는 검증 가능한 프레젠테이션과 관련되며, 내장 증명을 사용합니다. 이 증명은 검증 가능한 자격 증명 데이터 무결성 1.0 [VC-DATA-INTEGRITY]에 기반합니다.

아래 그림 15에 표시된 검증 가능한 프레젠테이션그림 14와 동일하지만, 포괄 증명을 사용합니다. 이 증명은 [VC-JOSE-COSE]에 기반합니다. 각 검증 가능한 자격 증명 그래프에는 하나의 EnvelopedVerifiableCredential 인스턴스가 포함됩니다. 이 인스턴스는 data: URL [RFC2397]을 통해 포괄 증명으로 보호된 검증 가능한 자격 증명을 참조합니다.


왼쪽에는 ‘JWT(디코딩됨)’라고 표시된 상자가 있고, 그 안에 ‘헤더’, ‘페이로드’, ‘서명’이라는
세 개의 텍스트 레이블이 세로로 쌓여 있는 다이어그램입니다. ‘헤더’ 레이블은 화살표를 통해
오른쪽에 있는 별도의 사각형에 연결됩니다. 이 사각형에는 ‘kid: aB8J-_Z’, ‘alg: ES384’,
‘cty: vc’, ‘iss: https://example.com’, ‘iat: 1704690029’, ‘typ: vp+sd-jwt’라는
여섯 개의 텍스트 필드가 있습니다. 왼쪽의 ‘페이로드’ 레이블은 화살표를 통해 세 개의 관련 그래프가
세로로 쌓인 별도의 사각형에 연결됩니다. 맨 위 그래프에서 시작하는 ‘verifiableCredential’ 레이블의
화살표 두 개가 각각 나머지 두 그래프에 연결됩니다. 맨 위 그래프에는 ‘검증 가능한 프레젠테이션 그래프
(JSON으로 직렬화됨)’라는 레이블이 있고, 나머지 두 그래프에는 모두 ‘검증 가능한 자격 증명 그래프
(JSON으로 직렬화됨)’라는 레이블이 있습니다. 사각형의 맨 위 그래프에는 ‘Presentation ABC’ 객체가 있고,
세 가지 속성을 가집니다. ‘type’의 값은 VerifiablePresentation이고 ‘termsOfUse’의 값은
‘Do Not Archive’입니다. 아래쪽 그래프 중 하나에는 ‘data:application/vc+sd-jwt,QzVjV...RMjU’가
주체로 포함되며, ‘type’의 값이 ‘EnvelopedVerifiableCredential’인 단일 속성을 가집니다.
마지막 아래쪽 그래프도 동일하지만 주체의 레이블이 ‘data:application/vc+sd-jwt,RkOyT...KjOl’입니다.
마지막으로 왼쪽의 ‘서명’ 레이블은 화살표를 통해 ‘cYjaSdfIoJH45NIqw3MYnasGIba...’라는
단일 텍스트 필드를 포함하는 별도의 사각형에 연결됩니다.
그림 15 그림 10의 변형: 두 개의 검증 가능한 자격 증명을 참조하는 정보 그래프. 이 그래프는 검증 가능한 프레젠테이션과 관련되며, 포괄 증명을 사용하며, 이 증명은 JOSE [VC-JOSE-COSE]에 기반합니다.

F. 개정 이력

이 절에는 이 사양에 그동안 적용된 실질적인 변경 사항이 포함되어 있습니다.

다음 v2.0 두 번째 후보 권고안 이후의 변경 사항:

다음 v2.0 첫 번째 후보 권고안 이후의 변경 사항:

다음 v1.1 권고안 이후의 변경 사항:

다음 v1.0 권고안 이후의 변경 사항:

G. 감사의 글

이 절은 비규범적입니다.

작업 그룹은 다음 분들의 문서 콘텐츠에 대한 기여뿐 아니라, 다양한 의견 속에서 변화와 논의 및 합의를 이끌어 낸 이 표준 커뮤니티에서의 헌신적인 노력에도 감사를 표합니다: David Chadwick, Dave Longley, Ted Thibodeau Jr., Brent Zundel, Ivan Herman, Joe Andrieu 및 Gabe Cohen.

이 사양에 관한 작업은 Christopher Allen, Shannon Appelcline, Kiara Robles, Brian Weller, Betty Dhamers, Kaliya Young, Manu Sporny, Drummond Reed, Joe Andrieu, Heather Vescent, Kim Hamilton Duffy, Samantha Chase, Andrew Hughes, Will Abramson, Erica Connell, Eric Schuh, Zaïda Rivai 및 Shigeya Suzuki가 운영한 Rebooting the Web of Trust 커뮤니티의 지원을 받았습니다. Phil Windley, Kaliya Young, Doc Searls 및 Heidi Nobantu Saul이 진행한 Internet Identity Workshop의 참가자들도 이 사양에 관해 교육하고 토론하며 개선하기 위한 여러 작업 세션을 통해 이 작업을 다듬는 데 도움을 주었습니다.

작업 그룹은 또한 여러 W3C 표준화 주기 동안 전문적으로 그룹을 관리하고 꾸준히 이끌어 준 작업 그룹 의장 Dan Burnett, Matt Stone, Brent Zundel, Wayne Chang 및 Kristina Yasuda와 W3C 직원 연락 담당자 Kazuyuki Ashimura 및 Ivan Herman에게 감사를 표합니다. 또한 여러 작업 항목의 인큐베이션을 감독하여 이 사양에 반영되도록 한 W3C 자격 증명 커뮤니티 그룹 의장 Christopher Allen, Joe Andrieu, Kim Hamilton Duffy, Heather Vescent, Wayne Chang, Mike Prorock, Harrison Tang, Kimberly Wilson Linson 및 Will Abramson에게도 감사를 표합니다.

이 사양에 관한 작업의 일부는 미국 국토안보부 과학기술국이 계약 HSHQDC-17-C-00019, 70RSAT20T00000010/P00001, 70RSAT20T00000029, 70RSAT21T00000016/P00001, 70RSAT23T00000005, 70RSAT23C00000030, 70RSAT23R00000006, 70RSAT24T00000014, 70RSAT22T00000001에 따라 지원했으며, 미국 국립과학재단이 NSF 22-572에 따라 지원했습니다. 이 사양의 콘텐츠가 반드시 미국 정부의 입장이나 정책을 반영하는 것은 아니며, 공식적인 지지를 의미하는 것으로 해석해서는 안 됩니다.

작업 그룹은 이 사양을 검토하고 의견을 제공한 다음 분들에게 감사를 표합니다 (이름이 제공된 경우 이름, 그렇지 않은 경우 GitHub 사용자명을 기준으로 알파벳순):

Abhishek Mahadevan Raju, Adam C. Migus, Addison Phillips, Adrian Gropper, Aisp-GitHub, Alen Horvat, Alexander Mühle, AlexAndrei98, Allen Brown, Amy Guy, Andor Kesselman, Andres Paglayan, Andres Uribe, Andrew Hughes, Andrew Jones, Andrew Whitehead, Andy Miller, Anil John, Anthony Camilleri, Anthony Nadalin, Benjamin Collins, Benjamin Goering, Benjamin Young, Bert Van Nuffelen, Bohdan Andriyiv, Brent Zundel, Brian Richter, Bruno Zimmermann, caribouW3, cdr, Chaoxinhu, Charles "Chaals" McCathieNevile, Charles E. Lehner, Chris Abernethy, Chris Buchanan, Christian Lundkvist, Christine Lemmer-Webber, Christoph Lange, Christopher Allen, Christopher Lemmer Webber, ckennedy422, Clare Nelson, confiks, Dan Brickley, Daniel Buchner, Daniel Burnett, Daniel Hardman, Darrell O'Donnell, Dave Longley, David Ammouial, David Chadwick, David Ezell, David Hyland-Wood, David I. Lehn, David Janes, David Waite, Denis Ah-Kang, Denisthemalice, Devin Rousso, Dmitri Zagidulin, Dominique Hazael-Massieux, Drummond Reed, Emmanuel, enuoCM, Eric Elliott, Eric Korb, Eric Prud'hommeaux, etaleo, Evstifeev Roman, Fabricio Gregorio, Filip Kolarik, Gabe Cohen, Ganesh Annan, George Aristy, glauserr, Golda Velez, Grace Huang, Grant Noble, Greg Bernstein, Gregg Kellogg, Heather Vescent, Henry Andrews, Henry Story, Ian B. Jacobs, Ilan, Isaac Henderson, isaackps, Iso5786, Ivan Herman, Jace Hensley, Jack Tanner, James Schoening, Janina Sajka, Jan Forster Cognizone, Jeff Burdges, Jeffrey Yasskin, Jim Masloski, Jim St.Clair, Joe Andrieu, Joel Gustafson, Joel Thorstensson, John Tibbetts, Jonathan Holt, José San Juan, Juan Caballero, Julien Fraichot, Justin Richer, Kaan Uzdoğan, Kaliya Young, Kazuyuki Ashimura, Ken Ebert, Kendall Weihe, Kerri Lemoie, Kevin Dean, Kevin Griffin, Kim Hamilton Duffy, Konstantin Tsabolov, Kristijan Sedlak, Kristina Yasuda, Kyle Den Hartog, Lal Chandran, Lance, Lautaro Dragan, Leonard Rosenthol, Liam Missin, Liam Quin, Line Kofoed, Lionel Wolberger, Logan Porter, Lovesh Harchandani, Lukas J. Han, Mahmoud Alkhraishi, Maik Riechert, Manu Sporny, Marcel Jackisch, Mark Foster, Mark Harrison, Mark Moir, Markus Sabadello, Martin Thomson, Marty Reed, Matt Peterson, Matt Stone, Matthew Peterson, Matthieu Bosquet, Matti Taimela, Melvin Carvalho, Michael B. Jones, Michael Herman, Michael Lodder, Michael Richardson, Mike Prorock, Mike Varley, Mircea Nistor, MIZUKI Sonoko / Igarashi, nage, Nate Otto, Nathan George, Niclas Mietz, Niko Lockenvitz, Nikos Fotiou, Nis Jespersen, Oliver Terbu, Pat McBennett, Patrick St-Louis, Paul Bastian, Paul F. Dietrich, Paulo Jorge Q. Ferreira, Pelle Braendgaard, Pete Rowley, Phil Archer, Phillip Long, Pierre-Antoine Champin, Rajesh Rathnam, Ralph Swick, Renato Iannella, Reto Gmür, Reza Soltani, Richard Bergquist, Richard Ishida, Richard Varn, Rieks Joosten, RorschachRev, Ryan Grant, Samuel Müller, Samuel Smith, Sarven Capadisli, Sebastian Crane, Sebastian Elfors, Shawn Butterfield, Shigeya Suzuki, Sho Nakatani, Shuji Kamitsuna, Snorre Lothar von Gohren Edwin, Sten Reijers, Stephen Curran, Steve Huguenin, Steve McCown, Steven Rowat, Taro, tcibm, Ted Thibodeau Jr., Tim Bouma, Timo Glastra, Tobias Käfer, Tobias Looker, Tom Jones, Torsten Lodderstedt, Tzviya Siegman, Victor Dods, Vincent Kelleher, Vladimir Alexiev, Víctor Herraiz Posada, Wayne Chang, whatisthejava, Will Abramson, William Entriken 및 Yancy Ribbens.

H. 참고문헌

H.1 규범적 참고문헌

[i18n-glossary]
국제화 용어집. Richard Ishida; Addison Phillips. W3C. 2024년 10월 17일. W3C 작업 그룹 참고 문서. URL: https://www.w3.org/TR/i18n-glossary/
[INFRA]
Infra 표준. Anne van Kesteren; Domenic Denicola. WHATWG. 현행 표준. URL: https://infra.spec.whatwg.org/
[JSON-LD11]
JSON-LD 1.1. Gregg Kellogg; Pierre-Antoine Champin; Dave Longley. W3C. 2020년 7월 16일. W3C 권고안. URL: https://www.w3.org/TR/json-ld11/
[JSON-LD11-API]
JSON-LD 1.1 처리 알고리즘 및 API. Gregg Kellogg; Dave Longley; Pierre-Antoine Champin. W3C. 2020년 7월 16일. W3C 권고안. URL: https://www.w3.org/TR/json-ld11-api/
[RFC2119]
요구 수준을 나타내기 위해 RFC에서 사용하는 핵심어. S. Bradner. IETF. 1997년 3월. 현행 모범 사례. URL: https://www.rfc-editor.org/info/rfc2119/
[RFC2397]
"data" URL 체계. L. Masinter. IETF. 1998년 8월. 제안 표준. URL: https://www.rfc-editor.org/info/rfc2397/
[RFC6838]
미디어 유형 사양 및 등록 절차. N. Freed; J. Klensin; T. Hansen. IETF. 2013년 1월. 현행 모범 사례. URL: https://www.rfc-editor.org/info/rfc6838/
[RFC8174]
RFC 2119 핵심어에서 대문자와 소문자의 모호성. B. Leiba. IETF. 2017년 5월. 현행 모범 사례. URL: https://www.rfc-editor.org/info/rfc8174/
[RFC9457]
HTTP API를 위한 문제 세부 정보. M. Nottingham; E. Wilde; S. Dalal. IETF. 2023년 7월. 제안 표준. URL: https://www.rfc-editor.org/info/rfc9457/
[SRI]
하위 리소스 무결성. Frederik Braun. W3C. 2026년 3월 20일. W3C 작업 초안. URL: https://www.w3.org/TR/sri-2/
[URL]
URL 표준. Anne van Kesteren. WHATWG. 현행 표준. URL: https://url.spec.whatwg.org/
[VC-DATA-INTEGRITY]
검증 가능한 자격 증명 데이터 무결성 1.0. Ivan Herman; Manu Sporny; Ted Thibodeau Jr; Dave Longley; Greg Bernstein. W3C. 2025년 5월 15일. W3C 권고안. URL: https://www.w3.org/TR/vc-data-integrity/
[VC-JOSE-COSE]
JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호. Michael Jones; Gabe Cohen; Michael Prorock. W3C. 2025년 5월 15일. W3C 권고안. URL: https://www.w3.org/TR/vc-jose-cose/
[XMLSCHEMA11-2]
W3C XML 스키마 정의 언어(XSD) 1.1 제2부: 데이터 유형. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron 외. W3C. 2012년 4월 5일. W3C 권고안. URL: https://www.w3.org/TR/xmlschema11-2/

H.2 정보성 참고문헌

[BCP47]
언어 식별 태그. Addison Phillips; Mark Davis. IETF. 2009년 9월. 최선의 현행 관행. URL: https://www.rfc-editor.org/info/bcp47
[CID]
제어된 식별자 v1.0. Michael Jones; Manu Sporny. W3C. 2025년 5월 15일. W3C 권고안. URL: https://www.w3.org/TR/cid-1.0/
[DID]
탈중앙화 식별자(DID) v1.0. Manu Sporny; Amy Guy; Markus Sabadello; Drummond Reed. W3C. 2022년 7월 19일. W3C 권고안. URL: https://www.w3.org/TR/did-core/
[ETSI-TRUST-LISTS]
전자 서명 및 인프라(ESI); 신뢰 목록. ETSI. ETSI. ETSI 표준 TS 119 612 V2.1.1 (2015-07). URL: https://www.etsi.org/deliver/etsi_ts/119600_119699/119612/02.01.01_60/ts_119612v020101p.pdf
[JSON]
JavaScript 객체 표기법(JSON) 데이터 교환 형식. T. Bray, 편집. IETF. 2017년 12월. 인터넷 표준. URL: https://www.rfc-editor.org/info/rfc8259/
[LD-BP]
연결 데이터 게시 모범 사례. Bernadette Hyland; Ghislain Auguste Atemezing; Boris Villazón-Terrazas. W3C. 2014년 1월 9일. W3C 작업 그룹 참고 문서. URL: https://www.w3.org/TR/ld-bp/
[LINKED-DATA]
연결 데이터 설계 문제. Tim Berners-Lee. W3C. 2006년 7월 27일. W3C 내부 문서. URL: https://www.w3.org/DesignIssues/LinkedData.html
[RDF-SCHEMA]
RDF 스키마 1.1. Dan Brickley; Ramanathan Guha. W3C. 2014년 2월 25일. W3C 권고안. URL: https://www.w3.org/TR/rdf-schema/
[RDF11-CONCEPTS]
RDF 1.1 개념 및 추상 구문. Richard Cyganiak; David Wood; Markus Lanthaler. W3C. 2014년 2월 25일. W3C 권고안. URL: https://www.w3.org/TR/rdf11-concepts/
[RFC7049]
간결한 이진 객체 표현 (CBOR). C. Bormann; P. Hoffman. IETF. 2013년 10월. 제안 표준. URL: https://www.rfc-editor.org/info/rfc7049/
[RFC7159]
JavaScript 객체 표기법(JSON) 데이터 교환 형식. T. Bray, 편집. IETF. 2014년 3월. 제안 표준. URL: https://www.rfc-editor.org/info/rfc7159/
[RFC7231]
하이퍼텍스트 전송 프로토콜(HTTP/1.1): 의미 체계 및 콘텐츠. R. Fielding, 편집; J. Reschke, 편집. IETF. 2014년 6월. 제안 표준. URL: https://httpwg.org/specs/rfc7231.html
[RFC9110]
HTTP 의미 체계. R. Fielding, 편집; M. Nottingham, 편집; J. Reschke, 편집. IETF. 2022년 6월. 인터넷 표준. URL: https://httpwg.org/specs/rfc9110.html
[SCHEMA-ORG]
Schema.org. W3C Schema.org 커뮤니티 그룹. W3C. 6.0. URL: https://schema.org/
[SD-JWT-VC]
SD-JWT 기반 검증 가능한 디지털 자격 증명. Oliver Terbu; Daniel Fett; Brian Campbell. 인터넷 엔지니어링 태스크 포스. 인터넷 초안. URL: https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/
[STRING-META]
웹의 문자열: 언어 및 방향 메타데이터. Richard Ishida; Addison Phillips. W3C. 2026년 7월 16일. FPWD. URL: https://www.w3.org/TR/string-meta/
[VC-BARCODES]
검증 가능한 자격 증명 바코드 v1.0. Wesley Smith; Elaine Wooton; Manu Sporny. W3C. 2026년 8월 22일. W3C 작업 초안. URL: https://www.w3.org/TR/vc-barcodes-1.0/
[VC-CONFIDENCE-METHOD]
검증 가능한 자격 증명 신뢰도 방법 v1.0. Joe Andrieu; Denken Chen. W3C. 2026년 8월 17일. W3C 작업 초안. URL: https://www.w3.org/TR/vc-confidence-method/
[VC-DATA-MODEL-2.0]
검증 가능한 자격 증명 데이터 모델 v2.0. Ivan Herman; Michael Jones; Manu Sporny; Ted Thibodeau Jr; Gabe Cohen. W3C. 2025년 5월 15일. W3C 권고안. URL: https://www.w3.org/TR/vc-data-model-2.0/
[VC-DI-BBS]
데이터 무결성 BBS 암호 스위트 v1.0. Greg Bernstein; Manu Sporny. W3C. 2026년 4월 7일. CRD. URL: https://www.w3.org/TR/vc-di-bbs/
[VC-EXTENSIONS]
검증 가능한 자격 증명 확장. Manu Sporny. W3C 검증 가능한 자격 증명 작업 그룹. W3C 편집자 초안. URL: https://w3c.github.io/vc-extensions/
[VC-IMP-GUIDE]
검증 가능한 자격 증명 구현 지침 1.0. Andrei Sambra. W3C. 2019년 9월 24일. W3C 작업 그룹 참고 문서. URL: https://www.w3.org/TR/vc-imp-guide/
[VC-JSON-SCHEMA]
검증 가능한 자격 증명 JSON 스키마 사양. Gabe Cohen; Orie Steele. W3C 검증 가능한 자격 증명 작업 그룹. FPWD. URL: https://www.w3.org/TR/vc-json-schema/
[VC-OVERVIEW]
검증 가능한 자격 증명 개요 v1.0. Ivan Herman. W3C. 2026년 7월 30일. W3C 작업 그룹 참고 문서. URL: https://www.w3.org/TR/vc-overview-1.0/
[VC-RENDER-METHOD]
검증 가능한 자격 증명 렌더링 방법 v1.0. Dmitri Zagidulin; Manu Sporny; Patrick St-Louis; Isaac Koh. W3C. 2026년 8월 22일. W3C 작업 초안. URL: https://www.w3.org/TR/vc-render-method/
[VC-USE-CASES]
검증 가능한 자격 증명 사용 사례. Joe Andrieu; Kevin Dean. W3C. 2026년 3월 18일. W3C 작업 그룹 참고 문서. URL: https://www.w3.org/TR/vc-use-cases/
[WCAG21]
웹 콘텐츠 접근성 지침(WCAG) 2.1. Michael Cooper; Andrew Kirkpatrick; Joshue O'Connor; Alastair Campbell. W3C. 2025년 5월 6일. W3C 권고안. URL: https://www.w3.org/TR/WCAG21/