Copyright © 2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
하나의 검증 가능한 자격 증명은 일련의 주장을 발급자가 표현하는 특정 방식으로, 운전면허증이나 교육 수료증 등이 그 예입니다. 이 명세는 검증 가능한 자격 증명을 위한 확장 가능한 데이터 모델과, 이를 변조로부터 보호하는 방법 및 3자 생태계를 설명합니다. 이 생태계는 이러한 자격 증명을 교환하며 발급자, 보유자, 그리고 검증자로 구성됩니다. 또한 이 문서에서는 보안, 개인정보 보호, 국제화 및 접근성과 관련하여 생태계에서 고려해야 할 다양한 사항을 다루며, 해당 생태계는 이 명세에 설명된 기술을 사용합니다.
이 절에서는 이 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 다음 W3C 표준 및 초안 색인에서 확인할 수 있습니다.
이 명세에 대한 의견은 언제든지 환영합니다. GitHub에 직접 이슈를 제출하거나, 그렇게 할 수 없는 경우 public-vc-comments@w3.org로 보내 주세요. (구독, 아카이브).
이 문서는 검증 가능한 자격 증명 워킹 그룹에서 권고안 트랙을 사용하여 작업 초안으로 발행했습니다.
작업 초안으로 발행되었다고 해서 W3C와 그 회원이 승인했다는 의미는 아닙니다.
이 문서는 초안이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 적절하지 않습니다.
이 문서는 W3C 특허 정책에 따라 운영되는 그룹에서 작성했습니다. W3C는 모든 특허 공개 사항의 공개 목록을 관리하며, 이 목록에는 그룹의 결과물과 관련하여 이루어진 특허 공개가 포함됩니다. 해당 페이지에는 특허 공개 지침도 포함되어 있습니다. 개인이 다음을 포함한다고 판단하는 특허에 대해 실제로 알고 있다면 필수 청구항 해당 정보를 다음에 따라 공개해야 합니다: W3C 특허 정책 제6절.
이 문서에는 2025년 8월 18일 W3C 프로세스 문서가 적용됩니다.
이 절은 비규범적입니다.
자격 증명은 일상생활에 필수적입니다. 운전면허증은 자동차 운전 능력을 확인하고, 대학 학위는 교육 수준을 증명하며, 정부 발행 여권은 국가 간 이동 시 시민권을 입증합니다. 이 명세는 이러한 종류의 자격 증명을 웹에서 암호학적으로 안전하고 개인정보 보호를 존중하며 기계로 검증할 수 있는 방식으로 표현하는 메커니즘을 제공합니다. 이러한 자격 증명은 현실 세계에서 사용할 때 이점을 제공하지만, 웹에서의 사용은 여전히 실현하기 어렵습니다.
현재 웹에서는 교육 자격, 의료 데이터, 금융 계정 세부 정보 및 기타 제3자가 검증한 개인정보를 기계 판독 가능한 방식으로 표현하기 어렵습니다. 웹에서 디지털 자격 증명을 표현하기 어렵다는 점은 현실의 자격 증명이 제공하는 것과 동일한 이점을 얻는 데 방해가 됩니다.
검증 가능한 자격 증명과 관련된 개념에 익숙하지 않은 분들을 위해 다음 절에서는 다음 사항의 개요를 제공합니다:
이 명세를 뒷받침한 사용 사례와 요구 사항은 검증 가능한 자격 증명 사용 사례 [VC-USE-CASES]에서 확인할 수 있습니다.
이 절은 비규범적입니다.
실물 세계에서 자격 증명은 다음으로 구성될 수 있습니다:
검증 가능한 자격 증명은 정보의 디지털 표현입니다(즉, 자격 증명은 발급자가 제시한 하나 이상의 주장을 모은 것입니다). 이는 4.12 보호 메커니즘절에서 설명하는 보호 메커니즘 중 하나를 사용하여 작성자의 진위를 검증할 수 있고, 이식 가능한 형태로 변조 흔적을 확인할 수 있게 만들 수 있습니다. 물리적 자격 증명으로 표현할 수 있는 모든 정보는 디지털 자격 증명으로도 표현할 수 있으므로, 검증 가능한 자격 증명으로도 표현할 수 있습니다. 디지털 서명과 같은 기술을 사용하면 검증 가능한 자격 증명을 그에 대응하는 물리적 자격 증명보다 변조 여부를 더 쉽게 확인할 수 있고 더 신뢰할 수 있게 만들 수 있습니다. 검증 가능한 자격 증명 바코드 v1.0을 사용하면 물리적 자격 증명에도 검증 가능한 자격 증명을 포함하여 동일한 이점을 얻을 수 있습니다.
보유자는 검증 가능한 자격 증명으로 검증 가능한 프레젠테이션을 생성한 다음, 이 검증 가능한 프레젠테이션을 검증자와 공유하여 특정 특성을 지닌 검증 가능한 자격 증명을 보유하고 있음을 증명할 수 있습니다.
검증 가능한 자격 증명과 검증 가능한 프레젠테이션은 모두 빠르게 전송할 수 있으므로 원격으로 신뢰를 구축할 때 실물 자격 증명보다 편리합니다.
이 명세는 디지털 자격 증명을 쉽게 표현할 수 있도록 개선하는 동시에 이 목표와 여러 개인정보 보호 목표 사이의 균형을 이루고자 합니다. 디지털 정보의 지속성과 서로 다른 디지털 데이터 출처를 쉽게 수집하고 연관 지을 수 있다는 점은 개인정보 보호 우려를 낳으며, 검증 가능하고 쉽게 기계로 판독할 수 있는 자격 증명을 사용하면 이러한 우려가 심화될 수 있습니다. 또한 실물 자격 증명에 사용되는 보안 수단(홀로그램이나 워터마크 등)은 적어도 많은 사람에게 익숙하지만, 디지털 자격 증명을 보호하는 암호화 메커니즘은 비전문가가 이해하거나 평가하기 어려울 수 있습니다. 이 문서는 개인정보 보호 고려 사항에서 이러한 문제 중 일부를 다루며, 검증 가능한 자격 증명 데이터 모델 위협 모델에서는 이를 자세히 분석하고 각각의 대응 방안을 설명합니다. 영지식 증명과 같은 개인정보 보호 강화 기술을 사용하여 이 데이터 모델을 활용하는 방법의 예도 이 문서 전반에서 제공합니다.
검증 가능한 자격 증명과 검증 가능한 프레젠테이션이라는 용어에서 "검증 가능한"이라는 단어는 자격 증명 또는 프레젠테이션을 검증할 수 있는 특성을 의미하며, 검증은 검증자가 수행합니다. 그 의미는 이 문서에서 정의합니다. 검증은 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션이 해당 발급자 또는 제시자의 진정하고 현재 유효한 진술이라는 사실만 확립합니다. 내부에 인코딩된 주장이 사실임을 의미하지는 않습니다. 이러한 주장에 의존하기 전에 검증자는 별도로 유효성 검사를 수행합니다: 이는 자체 정책에 따라 발급자가 그러한 주장을 할 수 있다고 신뢰할 수 있는지 그리고 해당 주장이 검증자의 목적에 적합한지 판단하는 과정입니다. 이 과정은 부록 B. 유효성 검사에서 자세히 설명합니다.
이 절은 비규범적입니다.
이 절에서는 검증 가능한 자격 증명이 유용할 것으로 예상되는 생태계의 핵심 행위자 역할과 이들 사이의 관계를 설명합니다. 역할은 여러 다양한 방식으로 구현할 수 있는 추상화입니다. 역할의 분리는 표준화에 적합한 인터페이스와 프로토콜을 제시합니다. 이 명세에서는 다음 역할을 소개합니다:
그림 1에서 볼 수 있듯이 모든 역할은 검증 가능한 데이터 레지스트리를 사용하여 식별자를 검증할 수 있습니다. 예를 들어 발급자는 식별자와 연결된 검증 자료를 레지스트리에서 가져온 다음 엔터티에게 해당 비공개 암호화 키를 보유하고 있음을 증명하도록 요구하여 그 식별자가 특정 엔터티에 속하는지 확인할 수 있습니다.
위의 그림 1은 이 명세의 나머지 개념을 구체적으로 이해하기 위한 생태계의 예를 제공합니다. 보호된 환경이나 독점 시스템과 같은 다른 생태계에서도 검증 가능한 자격 증명이 이점을 제공합니다.
이 생태계는 일반적인 양자 간 또는 연합 신원 제공자 모델과 대조됩니다. IdP로 줄여 부르기도 하는 신원 제공자는 보유자의 신원 정보를 생성, 유지 및 관리하는 동시에 연합 또는 분산 네트워크 내의 신뢰 당사자 애플리케이션에 인증 서비스를 제공하는 시스템입니다. 연합 신원 모델에서는 보유자의 신원이 신원 제공자와 긴밀하게 연결됩니다(다만 보유자는 여러 개의 신원을 가질 수 있고, 각 신원에는 고유한 식별자와 신원 제공자가 연결될 수 있습니다. 이러한 구성은 개인정보 보호, 업무용과 개인용의 구분 및 기타 고려 사항을 지원하는 데 적합할 수 있습니다): 식별된 보유자에 관한 정보가 신뢰 당사자에게 필요할 때마다 신원 제공자에게서 직접 정보를 얻으므로 신원 제공자는 그러한 모든 트랜잭션에 참여하고 이를 알게 됩니다. 이와 달리 이 명세에서는 신원 제공자의 개념을 발급자와 보유자라는 서로 다른 두 개념으로 분리하는 3자 모델을 설명합니다. 발급자는 한 번의 상호작용에서 검증 가능한 자격 증명을 보유자에게 제공하고, 이후 보유자는 별도의 상호작용에서 이를 검증자에게 제시합니다. 이러한 상호작용에는 발급자가 참여하지 않으며 발급자가 이를 인지할 필요조차 없습니다. 이 명세에서는 이러한 개념을 다른 명세와 비교하거나 매핑하는 경우를 제외하고 "신원 제공자", "연합 신원" 또는 "신뢰 당사자"라는 용어를 사용하지 않습니다.
많은 경우 검증 가능한 자격 증명의 보유자는 주체이지만, 그렇지 않은 경우도 있습니다. 예를 들어 부모(보유자)가 자녀(주체)의 검증 가능한 자격 증명을 보유하거나, 반려동물 소유자( 보유자)가 반려동물( 주체)의 검증 가능한 자격 증명을 보유할 수 있습니다. 이러한 예외 사례에 대한 자세한 내용은 검증 가능한 자격 증명 구현 지침 1.0의 주체-보유자 관계 절을 참조하세요.
검증 가능한 자격 증명 생태계와 구체적인 수명 주기 예제를 더 깊이 살펴보려면 검증 가능한 자격 증명 개요 v1.0을 참조하세요 [VC-OVERVIEW].
비규범적으로 표시된 절뿐만 아니라 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고 사항도 비규범적입니다. 이 명세의 그 밖의 모든 내용은 규범적입니다.
이 문서의 핵심 단어 MAY, MUST, MUST NOT, OPTIONAL, RECOMMENDED, REQUIRED, SHOULD 및 SHOULD NOT은 BCP 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에서 유효하지 않은 문자를 포함하는 예도 있습니다.
구현자는 이 정보를 유효한 문서로 사용하려는 경우 이러한 내용을
제거해야 합니다.
이 문서 전반에 제공되는 예에는 개념을 쉽게 이해할 수 있도록
name 및 description 같은 설명 속성에 영어 값을 사용한
명세의 각
예가 포함되어 있습니다. 이러한 예는 국제적 사용에 필요한 데이터
구조를 반드시 반영하는 것은 아니며, 다음 절에서 자세히 설명합니다:
9. 국제화 고려 사항.
다음 용어는 이 명세의 개념을 설명하는 데 사용됩니다.
did:example:123456abcdef입니다. 자세한 내용은
분산 식별자
(DID) v1.0 사양을 참조하십시오.
verifiableCredential과 같은 특정 속성과 연결된
그래프입니다. 이러한 속성은
해당 JSON 객체에 정의된 모든 주장을 포함하는 별도의 그래프를 생성합니다.
이 절은 비규범적입니다.
다음 절에서는 이 명세의 기반을 이루는 주장, 자격 증명, 프레젠테이션, 검증 가능한 자격 증명 및 검증 가능한 프레젠테이션 같은 핵심 데이터 모델 개념을 설명합니다.
독자는 이 절에서 설명하는 자격 증명과 프레젠테이션 같은 일부 개념에 이 명세에서 정의한 미디어 유형이 없다는 점을 알 수 있습니다. 그러나 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션은 적합 문서로 정의되며 관련 미디어 유형이 있습니다. 이러한 개념의 구체적인 차이, 즉 자격 증명 및 프레젠테이션과 검증 가능한 자격 증명 및 검증 가능한 프레젠테이션의 차이는 "검증 가능한" 객체는 암호학적 방식으로 보호되지만 나머지는 그렇지 않다는 점뿐입니다. 자세한 내용은 4.12 보안 메커니즘을 참조하세요.
이 절은 비규범적입니다.
주장은 주체에 관한 진술입니다. 주체는 주장의 대상입니다. 주장은 주체- 속성-값 관계를 사용하여 표현합니다.
위의 그림 2에 나타낸 주장의 데이터 모델은 강력하며 매우 다양한 진술을 표현할 수 있습니다. 예를 들어 누군가가 특정 대학을 졸업했는지를 아래 그림 3처럼 표현할 수 있습니다.
개별 주장을 결합하여 주체에 관한 정보 그래프를 표현할 수 있습니다. 아래 그림 4의 예는 Pat이 Sam을 알고 있으며 Sam이 교수로 고용되어 있다는 주장을 추가하여 이전 주장을 확장합니다.
여기까지 주장과 정보 그래프의 개념을 소개했습니다. 주장을 신뢰할지 판단하는 데 도움이 되도록 그래프에 더 많은 정보가 추가될 것으로 예상됩니다.
이 절은 비규범적입니다.
자격 증명은 동일한 엔터티가 제시한 하나 이상의 주장 집합입니다. 자격 증명에는 식별자와 자격 증명의 속성을 설명하는 메타데이터도 포함될 수 있습니다. 이러한 속성에는 발급자, 유효 날짜 및 기간, 대표 이미지, 검증 자료, 상태 정보 등이 있습니다. 검증 가능한 자격 증명은 누가 발급했는지를 암호학적으로 증명하는 변조 감지형 주장과 메타데이터의 집합입니다. 검증 가능한 자격 증명의 예로는 디지털 직원 신분증, 디지털 운전면허증 및 디지털 교육 수료증 등이 있지만 이에 국한되지 않습니다.
위의 그림 5는 검증 가능한 자격 증명의 기본 구성 요소를 보여 주지만, 주장이 정보 그래프로 구성되고 그 그래프가 다시 검증 가능한 자격 증명으로 구성되는 방법의 세부 사항은 추상화합니다.
아래 그림
6은
검증
가능한 자격 증명 데이터 무결성
1.0에 기반한 내장 증명을 사용하는
검증 가능한 자격 증명을 더 완전하게 보여 줍니다. 이는 최소 두 개의 정보 그래프로 구성됩니다.
첫 번째 정보 그래프인 검증 가능한 자격 증명 그래프
(기본 그래프)는
자격 증명 메타데이터와 다른 주장을 통해
검증 가능한 자격 증명 자체를 표현합니다. proof 속성이 참조하는 두
번째
정보 그래프는
검증 가능한 자격 증명의 증명 그래프이며 별도의
명명된 그래프입니다. 증명 그래프는
디지털 증명을 표현하며, 이
경우에는 디지털 서명입니다. 여러 정보 그래프가 필요한 이유에
관심 있는 독자는
5.12 검증 가능한 자격 증명 그래프를 참조할 수 있습니다.
아래 그림 7은 그림 6과 동일한 검증 가능한 자격 증명을 보여 주지만, JOSE [VC-JOSE-COSE]를 사용하여 보호합니다. 페이로드에는 하나의 정보 그래프만 있으며, 이는 자격 증명 메타데이터와 다른 주장을 포함하는 검증 가능한 자격 증명 그래프입니다.
이 절은 비규범적입니다.
개인정보 보호 강화는 이 명세의 핵심 설계 특성입니다. 따라서 이 기술을 사용하는 엔터티는 주어진 상황에 적합한 페르소나의 일부만 표현하는 것이 중요합니다. 자신의 페르소나 중 일부를 표현하는 것을 검증 가능한 프레젠테이션이라고 합니다. 서로 다른 페르소나의 예로는 개인의 직업적 페르소나, 온라인 게임 페르소나, 가족 페르소나 또는 익명 페르소나가 있습니다.
검증 가능한 프레젠테이션은 보유자가 생성하며, 여러 검증 가능한 자격 증명의 데이터를 표현할 수 있고 임의의 추가 데이터를 포함할 수 있습니다. 이는 검증자에게 주장을 제시하는 데 사용합니다. 또한 검증 가능한 자격 증명을 직접 제시할 수도 있습니다.
프레젠테이션의 데이터는 흔히 동일한 주체에 관한 것이지만 여러 발급자가 발급했을 수 있습니다. 이 정보를 집계하면 개인, 조직 또는 엔터티의 한 측면을 표현합니다.
위의 그림 8은 검증 가능한 프레젠테이션의 구성 요소를 보여 주지만, 검증 가능한 자격 증명이 정보 그래프로 구성되고 그 그래프가 다시 검증 가능한 프레젠테이션으로 구성되는 방법의 세부 사항은 추상화합니다.
아래 그림
9는
검증
가능한 자격 증명 데이터 무결성
1.0에 기반한 내장 증명을 사용하는
검증 가능한 프레젠테이션을 더 완전하게 보여 줍니다.
이는 최소 네 개의 정보 그래프로 구성됩니다.
첫 번째 정보 그래프인
검증 가능한 프레젠테이션 그래프
(기본 그래프)는
프레젠테이션 메타데이터를 통해
검증 가능한 프레젠테이션 자체를 표현합니다.
검증 가능한 프레젠테이션은
verifiableCredential 속성을 통해
검증 가능한 자격 증명을 참조합니다.
이 자격 증명은
자격 증명 메타데이터와 다른 주장을 포함하는 독립적인 검증 가능한 자격 증명 그래프입니다. 이
자격 증명은
proof 속성을 통해 검증 가능한 자격 증명 증명 그래프를 참조하며,
이는 자격 증명의 증명(일반적으로 디지털 서명)을 표현합니다.
이 검증 가능한 자격 증명 그래프와 이에 연결된 증명 그래프는
각각 두 번째와 세 번째 정보 그래프를 구성하며, 각각은 별도의
명명된 그래프입니다. 또한
프레젠테이션은 proof
속성을 통해
프레젠테이션의
증명 그래프인 네 번째 정보
그래프(또 다른 명명된 그래프)를 참조합니다. 이
프레젠테이션 증명 그래프는
검증 가능한 프레젠테이션 그래프,
검증 가능한 자격 증명 그래프 및
검증 가능한 자격 증명 그래프에서 연결된 증명 그래프의 디지털 서명을 나타냅니다.
아래 그림
10은
그림
9와 동일한 검증 가능한 프레젠테이션을 보여 주지만,
[VC-JOSE-COSE]에 기반한 포괄
증명을 사용합니다.
페이로드에는 두 개의 정보
그래프만 있습니다. 하나는 프레젠테이션 메타데이터를 통해
검증 가능한 프레젠테이션을 표현하는 검증 가능한 프레젠테이션
그래프이고, 다른 하나는 verifiableCredential
속성이 참조하는 해당
검증 가능한 자격 증명 그래프입니다.
검증 가능한 자격 증명 그래프에는
하나의
EnvelopedVerifiableCredential
인스턴스가 포함되어 있으며, 이 인스턴스는 data: URL [RFC2397]을 통해
그림
7에 표시된 포괄 증명으로 보호된
검증 가능한 자격 증명을 참조합니다.
data: URL은
그림
7에 표시된
검증 가능한 자격 증명을 참조합니다.
대학
자격 증명 모음처럼 서로 다른 주체에 관한 여러
자격 증명을 활용하는 프레젠테이션을 만들 수
있습니다.
이러한 주체는 서로 관련된 경우가 많지만 반드시 그럴 필요는 없습니다.
verifiableCredential 속성을 사용하여 여러
검증 가능한 자격 증명을 참조하면 이를 구현할 수 있습니다.
자세한 내용은 부록 E. 검증 가능한 프레젠테이션을 위한 추가 다이어그램을
참조하세요.
이 절에서는 문서 후반의 5. 고급 개념을 준비하기 위해 이 명세의 몇 가지 기본 개념을 소개합니다.
이 절은 비규범적입니다.
이 명세는 새로운 유형의 검증 가능한 자격 증명 프로토타입을 쉽게 만들 수 있도록 설계되었습니다. 개발자는 아래 템플릿을 복사하여 일반적인 검증 가능한 자격 증명 도구에 붙여 넣은 후 프로토타입 자격 증명의 발급, 보유 및 검증을 시작할 수 있습니다.
개발자는 아래의 MyPrototypeCredential을 생성하려는 자격 증명
유형으로 변경합니다. 검증 가능한 자격 증명은
주체에 관한 정보를 나타내므로
credentialSubject 객체의 각 속성-값 쌍은 자격 증명 주체의
특정 속성을 표현합니다. 개발자가 이러한 속성-값 조합을
여러 개 추가하면 수정한 객체를
적합한 발급자 구현으로 전송할 수 있으며, 개발자를 위한
검증 가능한 자격 증명이
생성됩니다. 프로토타입 제작의 관점에서 개발자가
해야 할 일은 이것이 전부입니다.
{
"@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 확장성에서 설명합니다. 또는
개발자가 자신의 사용 사례에 적합한 기존 어휘 및 컨텍스트 파일을
재사용할 수도 있습니다. 재사용 가능한 리소스는
검증 가능한 자격
증명 확장에서 찾아볼 수 있습니다.
검증 가능한 자격 증명은 하나 이상의 주체의 속성과 자격 증명 자체의 속성을 표현하는 데 사용합니다. 이 명세에서는 검증 가능한 자격 증명에 다음 속성을 정의합니다:
검증 가능한 자격 증명은 5.2 확장성에서 정의한 확장 메커니즘을 통해 추가 속성을 갖도록 확장할 수 있습니다.
두 소프트웨어 시스템이 데이터를 교환해야 하는 경우 두 시스템이 모두 이해하는 용어를 사용해야 합니다. 두 사람이 같은 언어를 사용하여 효과적으로 소통하는 상황을 생각해 보세요. 이때 "이름"과 "웹사이트" 같은 단어는 두 사람에게 동일한 의미를 갖습니다. 이를 대화의 맥락이라고 부르기도 합니다. 이 명세에서는 소프트웨어 시스템이 소통할 컨텍스트를 설정함으로써 유사한 결과를 얻기 위해 이와 비슷한 개념을 사용합니다.
검증 가능한 자격 증명과 검증 가능한 프레젠테이션을 처리하는 소프트웨어 시스템은
각 용어에 URL을 사용하여 용어를 식별합니다. 그러나 이러한
URL은
길고 사람이 이해하기 어려울 수 있지만, 짧고
사람이 이해하기 쉬운 별칭이 더 유용할 수 있습니다. 이 명세에서는
@context 속성을 사용하여 짧은 별칭을
URL에
매핑합니다.
검증 가능한 자격 증명과 검증 가능한 프레젠테이션은 MUST에 따라
@context 속성을 포함해야 합니다. 애플리케이션 개발자는 MUST에 따라
자신의 애플리케이션에서 사용하는 모든 JSON-LD
컨텍스트를 최소한 해당 애플리케이션에서 사용하는 용어의
의미에 영향을 주는 범위까지 이해해야 합니다. 이를 위한 한 가지
메커니즘은 검증 가능한 자격 증명 데이터 무결성
1.0 명세의
컨텍스트 유효성 검사 절에서 설명합니다. 이 명세를
기반으로 하는 다른 명세는 MAY에 따라
5.3 관련 리소스의 무결성에서 설명하는
relatedResource 기능 또는 실질적으로 동일한 메커니즘을 사용하여
JSON-LD 컨텍스트의 무결성을 보호하도록 요구할 수 있습니다.
@context 속성의 값은 MUST에 따라
첫 번째 항목이 값
https://www.w3.org/ns/credentials/v2인
URL인 순서 집합이어야 합니다.
순서 집합의 이후 항목은 MUST에 따라
각각
JSON-LD 컨텍스트로 처리할 수 있는
URL과 객체의 임의 조합으로 구성되어야 합니다.
{
"@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
1.1 명세의
3.1절: 컨텍스트에서 자세히 설명합니다.
사람, 제품 또는 조직과 같은 특정 대상에 관한 진술을 표현할 때
해당 대상의 전역 고유 식별자를 사용하면 유용할 수 있습니다.
전역 고유 식별자를 사용하면 다른 사람도 동일한 대상에 관한 진술을
표현할 수 있습니다. 이 명세에서는 이러한 식별자를 위한 선택적 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 속성은 OPTIONAL입니다. 존재하는 경우
id 속성의 값은
MUST에 따라 단일 URL이어야 하며, 이 URL은 MAY에
따라
역참조할 수 있습니다.
id의 URL은 역참조할 수 있는 경우
id에 관한 기계 판독 가능한 정보가 포함된 문서를 반환하도록 하는 것이
RECOMMENDED됩니다.
{
"@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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: 6bOVl1lgkItq-wMkJs2T7TuJXFVQik-ZBp4HmfKCBEU
공개 정보: WyJNQUtMcGhYekhVbXFleTVOeHlyMDVBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"MAKLphXzHUmqey5Nxyr05A",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: fj40rEPUOaxMO1pjKcXq2RluvgZl8dWwnjVYTW2FEgQ
공개 정보: WyJkU216T09tUDlzbFhxWmtiYlFDY0JnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"dSmzOOmP9slXqZkbbQCcBg",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: iYH73w9AhijSl-xNSLhqaLG7wsXdTmnUzQfo6hiDqaA
공개 정보: WyJISzhKNld3NXZNM2Q1eWxXNWprMWd3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"HK8J6Ww5vM3d5ylW5jk1gw",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: YeT9KENrj5vdAXdRMCg-6Kddd-j240f6nqgSnYBYxs0
공개 정보: WyI3Q0JMbC1BX0lqRW5hUUFNUGRyRjRnIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"7CBLl-A_IjEnaQAMPdrF4g",
"type",
"ExampleBachelorDegree"
]
위 예에서는 두 가지 유형의 식별자를 사용합니다. 첫 번째 식별자는 검증 가능한 자격 증명을 위한 것으로 HTTP 기반 URL을 사용합니다. 두 번째 식별자는 검증 가능한 자격 증명의 주체, 즉 주장의 대상을 위한 것으로 탈중앙화 식별자, 즉 DID를 사용합니다.
DID는 검증 가능한 자격 증명이 유용해지는 데 필수적이지 않은 식별자 유형입니다. 구체적으로 검증 가능한 자격 증명은 DID에 의존하지 않으며, DID도 검증 가능한 자격 증명에 의존하지 않습니다. 그러나 많은 검증 가능한 자격 증명에서 DID를 사용하며, 이 명세를 구현하는 소프트웨어 라이브러리는 DID를 해석해야 합니다. DID 기반 URL은 주체, 발급자, 보유자, 자격 증명 상태 목록, 암호화 키 및 검증 가능한 자격 증명과 연결된 기타 기계 판독 가능 정보의 식별자를 표현하는 데 사용합니다.
이 문서에서 지정하는 종류의 객체를 처리하는 소프트웨어 시스템은
제공된 검증 가능한 자격 증명 또는
검증 가능한 프레젠테이션이 의도한 사용 사례에
적합한지 판단하기 위해 유형 정보를 사용합니다. 이 명세에서는 객체 유형 정보를 표현하기 위한
type 속성을 정의합니다. 이 유형 정보는 부록
B.
유효성 검사에 설명된
유효성 검사 과정에서 사용할 수 있습니다.
검증 가능한 자격 증명과
검증 가능한 프레젠테이션에는 MUST에 따라
연결된 값을 가진
type 속성이 포함되어야 합니다.
type 속성의 값은 MUST에 따라 하나 이상의
용어 및
절대 URL 문자열이어야 합니다.
둘 이상의 값을 제공하는 경우 순서는 중요하지 않습니다.
{
"@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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: -Go7T2UUbsXF09osjZtjIXERMFlk1jwPPwK0jaw3EZs
공개 정보: WyJjMEVadEhfWEprNkZjYkR6N2lwM2JBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"c0EZtH_XJk6FcbDz7ip3bA",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: HE_vis7TFoksolW8xxYsVr2ELivEfy_gztoovCFuqgs
공개 정보: WyI3cGVuRktGNm9lV3MyOUh2Q3ZDdzZ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"7penFKF6oeWs29HvCvCw6w",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: DkVXkkPlgV9Sh6qH_53TxtsDcdZSlrojyb-3G1O12hs
공개 정보: WyJDekhLMTY3cEl0OENpb0g4dXp4TGZBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"CzHK167pIt8CioH8uzxLfA",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
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
1.1의 유형 시스템과 동일하며,
3.5절:
유형 지정 및
9절: JSON-LD
문법에서 자세히 설명합니다. JSON-LD 컨텍스트를 사용하는 경우(다음 절 참조:
5.2 확장성) 이 명세에서는 JSON-LD 문서를
더 쉽게 이해할 수 있도록 @type 키워드의 별칭으로
type을 사용합니다. 애플리케이션 개발자와 문서 작성자는
JSON-LD 유형 시스템의 세부 사항을 이해할 필요가 없지만, 상호 운용 가능한 확장성을
지원하려는 이 명세의 구현자는 이해해야 합니다.
모든 자격 증명, 프레젠테이션 및
캡슐화된 객체는 소프트웨어 시스템이 이 추가 정보를
더 쉽게 감지하고 처리할 수 있도록 ExampleDegreeCredential 같은
더 구체적인 추가 유형을
SHOULD에 따라 지정하거나 해당 유형과 연결해야 합니다.
이 명세에서 정의한 캡슐화된 객체를 처리할 때, 예를 들어
credentialSubject 객체와 연결되거나 그 내부에 깊이 중첩된 객체를 처리할 때
소프트웨어 시스템은 계층 구조에서 더 상위에 있는 캡슐화
객체에 지정된 유형 정보를 SHOULD에 따라 사용해야 합니다.
구체적으로 자격 증명과 같은 캡슐화 객체는
검증자가 캡슐화 객체의
유형을 기반으로 연결된 객체의 내용을 빠르게 판단할 수 있도록
연결된 객체의 유형을 SHOULD에 따라 전달해야 합니다.
예를 들어 type이
ExampleDegreeCredential인 자격 증명 객체는
credentialSubject 속성과 연결된 객체에 다음 식별 정보가
포함되어 있음을 검증자에게 알립니다:
id 속성의 주체.
type 속성의 학위 유형.
name 속성의 학위 명칭.
이를 통해 구현자는 type 속성과 연결된 값을
검증에 사용할 수 있습니다. 객체 유형과 이에 연결된 값은
적어도 해당 유형의 URL에서 찾을 수 있는 사람이 읽을 수 있는 명세에
문서화되어야 합니다. 예를 들어 BitstringStatusList 유형의 사람이 읽을 수 있는
정의는
https://www.w3.org/ns/credentials/status/#BitstringStatusList에서 확인할 수 있습니다. 또한 동일한 URL에서
HTTP 콘텐츠 협상을 통해
기계 판독 가능한 버전을 제공하는 것이
좋습니다.
새로운 유형의 검증 가능한 자격 증명을 생성하는 방법에 대한 설명은 이 명세의 범위를 벗어납니다. 이에 관심 있는 독자는 검증 가능한 자격 증명 구현 지침 1.0의 새 자격 증명 유형 생성 절을 읽는 것이 좋습니다.
자격 증명을 표시할 때는
발급자가 제공하여
자격 증명에 이름과 그 목적에 대한 간단한 설명을
덧붙이는 텍스트가 있으면 유용할 수 있습니다. name 및 description 속성은
이러한 용도로 사용됩니다.
name 속성의 값은 반드시
하나 이상의 문자열 또는
언어 값 객체여야 하며, 이에 대해서는
9.1 언어 및 기본 방향에 설명되어 있습니다. 이상적으로는
자격 증명의 이름이 간결하고 사람이 읽을 수 있으며, 개인이
보유하고 있는 하나의 자격 증명을 다른 자격 증명과
빠르게 구별할 수 있도록 해야 합니다.
description 속성의 값은 반드시 하나 이상의
문자열 또는 언어 값 객체여야 하며, 이에 대해서는
9.1 언어 및 기본 방향에 설명되어 있습니다. 이상적으로는
자격 증명의 설명이 몇 문장 이하의 길이이며,
개인이 자격 증명의 전체
클레임을 살펴보지 않고도 그 내용을 떠올릴 수 있을 만큼 충분한
정보를 전달해야 합니다.
{
"@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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: 6chfnuZVz7PoAaLPmBE26Ch2oR2DWubxHmL4Wwhcz8c
공개 정보: WyI2bGRBMFQ4LVhTY0FYSWRqWnBxQ1Z3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"6ldA0T8-XScAXIdjZpqCVw",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: rSPlTQ8IMseN2IU483V-_N150i3tP3_0--gjrEqVzek
공개 정보: WyI5OVFHdnEtNFBKbGpOOUlMM0EtaEhBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"99QGvq-4PJljN9IL3A-hHA",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: 2LmVGqBlCF-WwpkruY0VW_-8IkT-LXEyINLEgh1o_GQ
공개 정보: WyJQS1hScElweGVRanIycUR6a0J3T1dRIiwgImlkIiwgImh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5Il0
내용: [
"PKXRpIpxeQjr2qDzkBwOWQ",
"id",
"https://university.example/issuers/565049"
]
SHA-256 해시: s-PPXTgFg3Tar7VO83cG_27W0xLCwBgz-Yj4_IuAKco
공개 정보: WyJRYUlKRGNQN29tRjRodGFTX0t2ckVnIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"QaIJDcP7omF4htaS_KvrEg",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: Tj72-ql9B0K5MjhfHvgG4d7_ETMCUg95iXlV1LUofFE
공개 정보: WyIzakJxSUltWE5mUXBsd2k2RHNTc3pBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"3jBqIImXNfQplwi6DsSszA",
"type",
"ExampleBachelorDegree"
]
이름과 설명은 여러 언어로 콘텐츠를 표현하는 것도 지원합니다.
언어 및 기본 방향
정보가 포함된 문자열을 표현하려면
@value, @language 및
@direction
속성을 포함하는 객체를 사용하여 각각 텍스트 값, 언어 태그 및 기본 방향을
표현할 수 있습니다. 자세한 내용은
9.1 언어 및 기본 방향을
참조하십시오.
아래 예제의 @direction 속성은 관련 단일 언어 문자열에 필수가 아닙니다.
이러한 문자열의 기본 방향이 @direction 값으로 설정된 방향과
동일하기 때문입니다. 여기서는 예시를 명확히 하고 복사+붙여넣기+편집을 통해
올바르게 작동하는 결과를 얻을 수 있도록 @direction 속성을 포함했습니다. 구현자는
JSON-LD
1.1 사양의
문자열
국제화 절을 읽어보는 것이 좋습니다.
{
"@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"
}]
}
}
}
이 사양은 검증 가능한 자격 증명의 발급자를 표현하기 위한 속성을 정의합니다.
검증 가능한 자격 증명에는 MUST
issuer 속성이 있어야 합니다.
issuer 속성의 값은 MUST
URL이거나, 값이 URL인
id 속성을 포함하는 객체여야 합니다. 어느 경우든
발급자는 전 세계적으로 모호하지 않게 자신을 식별하기 위해 이 URL을 선택합니다. 해당 URL을 역참조했을 때,
제어된 식별자
v1.0 사양에 정의된
제어된 식별자 문서가 반환되도록 하는 것이 RECOMMENDED됩니다. 이 문서는
발급자에 관한 것으로, 자격 증명에 표현된 정보를 검증하는 데 사용할 수 있습니다.
{
"@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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: xW9e9xlk_RiIhoQ3YFL3aCHIuz4ppvMs_gKMpXyOFAo
공개 정보: WyJLMkVheUxRMzhFYVZmZjdIUzNwYkxBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"K2EayLQ38EaVff7HS3pbLA",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: wdlDEWj93tazna5kAoE3TEKJEzFXBbRgw9N7B085E1Y
공개 정보: WyJYc25oRlUxM3RYeUc0elp0MlVfWElnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"XsnhFU13tXyG4zZt2U_XIg",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: XQqIkyKsgB9IbbgfU7KE3HduYcJXGMUnWuxojB7equ4
공개 정보: WyJBcUNuTHBDNXpIU3VnYjdnMGdPU09nIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"AqCnLpC5zHSugb7g0gOSOg",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: staiQsUtySpl5JE6xe82NWsTrpbmooHZVAFcjOZ8Glk
공개 정보: WyJ4T3BvX0NWZ3lmT1pwenoxOEtMZ0N3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"xOpo_CVgyfOZpzz18KLgCw",
"type",
"ExampleBachelorDegree"
]
또한 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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: iCdFkdgwSnQi0eEcqFdTYJWNUoJgXugJL8FCqLRUe6o
공개 정보: WyJZdlZKM2k1OTNsZ2szS1JZSlZPS3NnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"YvVJ3i593lgk3KRYJVOKsg",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: wUfyYdPxL9Wk-oxHoke_HkQVmVoOIFcT5axNZPirNig
공개 정보: WyJNSjQ0WWFiWEpHNkZXZThvMTZSQmJ3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"MJ44YabXJG6FWe8o16RBbw",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: 2lVnG2G1U0g6AUQm_e11RXTofb_3hQ_NMRAbfluZcew
공개 정보: WyJKSFR6TXo1ZjNpZnJxbnFTX3E0WWtRIiwgImlkIiwgImRpZDpleGFtcGxlOjc2ZTEyZWM3MTJlYmM2ZjFjMjIxZWJmZWIxZiJd
내용: [
"JHTzMz5f3ifrqnqS_q4YkQ",
"id",
"did:example:76e12ec712ebc6f1c221ebfeb1f"
]
SHA-256 해시: AfTpSXDAR0yEkjFwQAuKl81hN6qlHViSFPAQkECZz5E
공개 정보: WyJFZl9tT25uU1JteUZTNjIxbDlyTlpBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"Ef_mOnnSRmyFS621l9rNZA",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: u9RdqIfkJs_d0_9YJ8nr7C4AV2LFN6Nm-Om22VcgLO8
공개 정보: WyJzSVBPX2ZsVVlVMFFwTHhpU0NqU09BIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"sIPO_flUYU0QpLxiSCjSOA",
"type",
"ExampleBachelorDegree"
]
검증 가능한 자격 증명에는 하나 이상의 주체에 관한 주장이 포함됩니다.
이 사양은 하나 이상의 주체에 관한
주장을 표현하기 위한 credentialSubject 속성을 정의합니다.
검증 가능한 자격 증명은 MUST
credentialSubject 속성을 포함해야 합니다.
credentialSubject 속성의 값은 객체의
집합이며, 각 객체는 하나 이상의 주장의 주체여야 합니다(MUST).
이러한 주장은
credentialSubject 속성 내부에
직렬화되어야 합니다(MUST). 또한 각 객체는
주체를 식별하기 위한 id 속성을 포함할 수 있습니다(MAY). 자세한 내용은 4.4 식별자절을 참조하십시오.
{
"@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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: YG087LxBrC5IVXVg373rTeqHHjCjPpj9ktvXbiukwpo
공개 정보: WyI2YUxqb0l4M3VhTTBLYUE3NVRkd0NnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"6aLjoIx3uaM0KaA75TdwCg",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: ZAs6iwWYXtbLwNVROzzvt-BwSX1UiQV45RC6cFNR0k0
공개 정보: WyJ0UWtfUHpLZl91R29YeWZrcFFSakpBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"tQk_PzKf_uGoXyfkpQRjJA",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: _QBWc7NCPhyiR5gM1wByHfOk2PFKTw1_Pecn2OAjrVY
공개 정보: WyJDV3MzcmZIM1dPanZTdDlKTlVkUjN3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"CWs3rfH3WOjvSt9JNUdR3w",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: Kn5OyoH6vN3W-IteSrARyEqWEHEYyAd8PEnX2zeqJhg
공개 정보: WyJsVVNKMHNxUEtBYlhlaDV6YVQwV21RIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"lUSJ0sqPKAbXeh5zaT0WmQ",
"type",
"ExampleBachelorDegree"
]
검증 가능한 자격 증명에서 여러 주체에 관한 정보를 표현할 수도 있습니다. 아래
예제에서는
서로 배우자인 두 주체를 지정합니다.
여러 주체를 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", "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"
}]
}
이 사양은 발급자가 자격 증명이 유효해지는 날짜와 시간을
표현할 수 있도록 validFrom 속성을 정의하고,
자격 증명이 더 이상 유효하지 않게 되는 날짜와 시간을
표현하기 위해 validUntil 속성을 정의합니다.
날짜와 시간을 비교할 때 계산은 "시간적으로" 수행됩니다. 즉, 문자열 값을 타임라인의 한 지점으로 존재하는 "시간 값"으로 변환합니다. 그런 다음 비교하는 날짜와 시간이 타임라인의 특정 지점을 기준으로 어디에 있는지 확인하여 시간 비교를 수행합니다.
validFrom 속성이 있는 경우 그
값은 자격 증명이 유효해지는 날짜와 시간을 나타내는
[XMLSCHEMA11-2]
dateTimeStamp 문자열 값이어야 합니다(MUST). 이는 미래 또는
과거의 날짜와 시간일 수 있습니다. 이 값은 credentialSubject
속성과 관련된 정보가 유효해지는 가장 이른 시점을 나타냅니다.
validUntil 값도 존재하는 경우 validFrom 값은
validUntil 값이 표현하는 시점과 시간적으로 같거나 그보다 이른
시점을 표현해야 합니다(MUST).
validUntil 속성이 있는 경우 그
값은 자격 증명이 더 이상 유효하지 않게 되는 날짜와 시간을 나타내는
[XMLSCHEMA11-2]
dateTimeStamp 문자열 값이어야 합니다(MUST). 이는 과거 또는
미래의 날짜와 시간일 수 있습니다. 이 값은 credentialSubject
속성과 관련된 정보가 유효한 가장 늦은 시점을 나타냅니다.
validFrom 값도 존재하는 경우 validUntil
값은 validFrom 값이 표현하는 시점과 시간적으로 같거나 그보다 늦은
시점을 표현해야 합니다(MUST).
{
"@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"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: 85-3CWrOsSFcvMKUOxHpA43fEdwCl4d0B5F_UzYGuEI
공개 정보: WyJQM0lKNC1VUWFFaEViYnQxa3lneWdnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"P3IJ4-UQaEhEbbt1kygygg",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: XzUWF2xf-IKdpEiIt7c16MrV_AeVZDoJ4lHXgkevweY
공개 정보: WyJzWU5zeUNvajJJdnV6ODA4WmVSVGxnIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"sYNsyCoj2Ivuz808ZeRTlg",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: 6PPOAC2fX_xG6swlgDnIrDmFj6MGe9TcI4Gizjo5jBs
공개 정보: WyJ0aHNDeXR1eEFyXzBORGFuNnRGNkdBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"thsCytuxAr_0NDan6tF6GA",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: Sljbe0zVTYTsswifkhOcH92AXXWTeoVVXRLmgBp7vto
공개 정보: WyIxcElFc0RDV1ZON2VEVElSVUVTbkp3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"1pIEsDCWVN7eDTIRUESnJw",
"type",
"ExampleBachelorDegree"
]
validFrom 및 validUntil이 없으면
검증 가능한 자격 증명의 유효 기간은
무기한 유효한 것으로 간주됩니다. 이러한 경우 검증 가능한 자격 증명은
verifiable credential이 생성된 시점부터 유효한 것으로 간주됩니다.
이 사양은 검증 가능한 자격 증명이 정지되었거나 폐기되었는지와 같은 상태 관련 정보를 확인하기 위한 credentialStatus 속성을 정의합니다.
credentialStatus 속성이 있는 경우 이 속성과 연결된 값은
하나의 객체 또는 하나 이상의 객체로 이루어진 집합입니다. 모든 객체에 대해 다음 속성이
정의됩니다.
id 속성은 OPTIONAL입니다. 이 속성은
자격 증명 상태 객체의 고유 식별자를 제공하는 데 사용할 수 있습니다(MAY). 이 속성이 있는 경우
4.4
식별자절의 규범적 지침을
따라야 합니다(MUST).
type 속성은 REQUIRED입니다. 이 속성은
객체가 표현하는 상태 정보의 유형을 나타내는 데 사용됩니다. 4.5 유형절의 관련 규범적 지침을 따라야 합니다(MUST).
자격 증명 상태 정보의 정확한 내용은
구체적인 credentialStatus 유형 정의에 따라 결정되며,
구현이 간단한지 또는 개인정보 보호를 강화하는지 등의 요인에 따라 달라집니다.
이 값은 자격 증명의 현재 상태와 URL에서 기계가 읽을 수 있는
정보를 가져올 수 있는지를 판단하기에 충분한 정보를 제공합니다. 예를 들어 객체에는
자격 증명이 정지되었거나 폐기되었는지를
나타내는 외부 문서의 링크가 포함될 수 있습니다.
{
"@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"
}
}
하나의 자격 증명에는 폐기 또는 정지 여부와 같이 둘 이상의 상태가 연결될 수 있습니다.
{
"@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). 예를 들어 검증자가 특정 보유자 또는 주체에 관심을 보일 때 발급자에게 직간접적으로 알리는 방식이 이에 해당합니다. 허용할 수 없는 접근 방식에는 자격 증명을 사용할 때마다 특정 개인의 상태를 확인하기 위해 자격 증명의 발급자에게 연락하는 "홈으로 연락하기" 방식이나, 자격 증명을 사용할 때마다 발급자에게 정보를 요청하여 발급자가 특정 개인에 대한 검증자의 관심을 추론할 수 있게 하는 "가명성 저하" 방식이 포함됩니다.
데이터 스키마는 주어진 데이터 모음에 특정 구조를 적용할 때 유용합니다. 이 사양에서는 최소한 다음 두 가지 유형의 데이터 스키마를 고려합니다.
데이터 스키마는 @context 속성과 다른 용도로 사용된다는 점을 이해하는 것이
중요합니다. @context 속성은 데이터 구조나 데이터 구문을 강제하지 않으며,
대체 표현 형식에 대한 임의의 인코딩을 정의할 수 있게 하지도 않습니다.
이 사양은 발급자가 발급하는 검증 가능한 자격 증명에 포함할 수 있는 데이터 스키마를 표현하기 위해 다음 속성을 정의합니다.
credentialSchema 속성의 값은
제공된 데이터가 제공된 스키마를 준수하는지 판단하기에 충분한 정보를 검증자에게 제공하는 하나 이상의 데이터 스키마여야
합니다(MUST). 각 credentialSchema는
type(예:
JsonSchema)과 스키마 파일을 식별하는 URL이어야 하는 id 속성을 지정해야 합니다(MUST).
구체적인 유형 정의에 따라 각 데이터 스키마의 정확한 내용이 결정됩니다.
여러 스키마가 있는 경우 각 스키마와 연결된 type 속성에 명시된
처리 규칙에 따라 유효성이 결정됩니다.
credentialSchema 속성을 사용하면 유형 정의에
주석을 달거나 어휘의 특정 버전에 고정할 수 있습니다. 검증 가능한 자격 증명의 작성자는
콘텐츠 무결성 보호 메커니즘으로 보호된 어휘의 정적 버전을
credentialSchema를 사용하여 포함할 수 있습니다.
credentialSchema 속성을 사용하면 자격 증명에 대한 구문 검사도 수행할 수 있으며,
JSON 스키마 [VC-JSON-SCHEMA]
유효성 검사와 같은 검증 메커니즘도
사용할 수 있습니다.
{
"@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] 파일을 가리킵니다.
이 사양에서는 두 가지 종류의 보호 메커니즘을 인정합니다. 하나는 엔벨로핑 증명을 사용하는 메커니즘이고 다른 하나는 내장 증명을 사용하는 메커니즘입니다.
엔벨로핑 증명은 이 데이터 모델의 직렬화된 표현을 감쌉니다. 이러한 RECOMMENDED 엔벨로핑 증명 메커니즘 중 하나는 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]에 정의되어 있습니다.
내장 증명은 증명이 데이터 모델의 직렬화된 표현에 포함되는 메커니즘입니다. 이러한 RECOMMENDED 내장 증명 메커니즘 중 하나는 검증 가능한 자격 증명 데이터 무결성 1.0 [VC-DATA-INTEGRITY]에 정의되어 있습니다.
이 두 종류의 보호 메커니즘은 서로 배타적이지 않습니다. 추가적인 보호 메커니즘 사양도 5.13 보호 메커니즘 사양절의 규칙에 따라 정의될 수 있습니다.
{
"@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 속성을 통해
원본 데이터에 디지털 서명을 추가하여 원본 자격 증명을 보호합니다. 그 결과 현대적인 프로그래밍 환경과
데이터베이스 시스템에서 쉽게 관리할 수 있는 검증 가능한 자격 증명이 생성됩니다.
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 형식을 이해하는 도구를 사용하여 처리할 수 있는 검증 가능한 자격 증명이 생성됩니다.
검증 가능한 프레젠테이션은 여러 검증 가능한 자격 증명의 정보를 집계하는 데 사용할 수 있습니다(MAY).
검증 가능한 프레젠테이션은 수명이 극히 짧고 검증자가 제공한 챌린지에 바인딩되어야 합니다(SHOULD). 이를 달성하는 구체적인 방법은 보호 메커니즘, 전송 프로토콜 및 검증자 정책에 따라 달라집니다. 특정 보호 메커니즘이나 임베딩 프로토콜에서 추가 요구 사항을 정의하지 않는 한, 검증자는 일반적으로 검증 가능한 프레젠테이션이 제시된 검증 가능한 자격 증명과 연관되어 있다고 가정할 수 없습니다.
검증 가능한 프레젠테이션의 기본 그래프는 검증 가능한 프레젠테이션 그래프라고도 합니다.
검증 가능한 프레젠테이션에는 다음 속성이 정의됩니다.
id 속성은 선택 사항입니다. 이 속성은
검증 가능한 프레젠테이션의
고유 식별자를 제공하는 데 사용할 수 있습니다(MAY). 이 속성이 있는 경우
4.4
식별자절의 규범적 지침을
따라야 합니다(MUST).
type 속성은 있어야 합니다(MUST).
이 속성은 검증 가능한 프레젠테이션의 유형을
표현하는 데 사용됩니다. 이 속성의 값 중 하나는
VerifiablePresentation이어야 하지만(MUST),
추가 유형을 포함할 수도 있습니다(MAY).
4.5
유형절의 관련 규범적 지침을
따라야 합니다(MUST).
verifiableCredential 속성은 존재할 수 있습니다(MAY). 그 값은 하나 이상의 검증 가능한 자격 증명 및/또는
엔벨로프된 검증 가능한 자격 증명
객체여야 합니다(MUST). 값은 숫자, 문자열 또는 URL과 같은
객체가 아닌 값이어서는 안 됩니다(MUST NOT). 이러한 객체를
검증 가능한 자격 증명 그래프라고 하며,
보호 메커니즘을 사용하여 보호된 정보를
표현해야 합니다(MUST).
자세한 내용은 5.12
검증 가능한 자격 증명 그래프절을 참조하십시오.
holder 속성을 포함할 수 있습니다(MAY). 이 속성이 있는 경우 그 값은
URL 또는 id 속성을 포함하는 객체여야
합니다(MUST). holder의 URL 또는 그 id는 역참조했을
때
검증 가능한 프레젠테이션에
표현된 정보를 검증하는 데 사용할 수 있는
보유자에 관한 기계 판독 가능 정보를 포함하는 문서가
반환되는 것이 RECOMMENDED됩니다.
holder 속성이 없으면 보유자에 관한 정보는 보호 메커니즘을 통해 얻거나
검증 가능한 프레젠테이션의
유효성 검사와 관련되지 않습니다.
아래 예제는 검증 가능한 프레젠테이션을 보여 줍니다.
{
"@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]와 같이
페이로드를 "엔벨로프"하는 보호 메커니즘을 사용하여 보호된 하나 이상의 검증 가능한 자격 증명을
포함할 수 있습니다. 이는 type이
EnvelopedVerifiableCredential인 객체를 verifiableCredential
속성과 연결하여 달성할 수 있습니다.
verifiableCredential 속성과 연결하는 데 사용됩니다. 객체의
@context 속성은 있어야 하며(MUST),
이 사양이 제공하는 기본 컨텍스트에 정의된 것과 같이 최소한 id,
type 및 EnvelopedVerifiableCredential 용어를 정의하는
이 사양의 기본 컨텍스트와 같은 컨텍스트를 포함해야 합니다.
객체의 id 값은 검증 가능한 자격 증명을
엔벨로핑 보안
체계를 사용하여 보호된 형태로 표현하는 data: URL이어야 합니다(MUST)
[RFC2397]. 이러한 체계의 예로
JOSE
및 COSE를 사용한 검증 가능한 자격 증명
보호 [VC-JOSE-COSE]가
있습니다. 객체의 type 값은
EnvelopedVerifiableCredential이어야 합니다(MUST).
아래 예제는 엔벨로프된 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션을 보여 줍니다.
{
"@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"
}]
}
구현자는 이 절에서 설명하는 객체와 id 값으로 표현된 엔벨로프된 프레젠테이션을
RDF 환경에서 처리하고, RDF와 관련된 객체 사이에 연결을 생성하고자 할 수 있습니다.
이를 수행하려는 필요성과 그 메커니즘은 사용 사례에 따라 달라지므로
구현에 따라서도 달라집니다.
JOSE 및
COSE를 사용한 검증 가능한 자격 증명
보호 [VC-JOSE-COSE]와 같이
페이로드를 "엔벨로프"하는 메커니즘을 사용하여 보호된 검증 가능한 프레젠테이션을
표현할 수 있습니다. 이는 type이
EnvelopedVerifiablePresentation인 객체를 사용하여 달성할 수 있습니다.
@context 속성은 있어야 하며(MUST),
이 사양이 제공하는 기본 컨텍스트에 정의된 것과 같이 최소한 id,
type 및 EnvelopedVerifiablePresentation 용어를 정의하는
이 사양의 기본 컨텍스트와 같은 컨텍스트를 포함해야 합니다.
객체의 id 값은 검증 가능한 프레젠테이션을
엔벨로핑 보호
메커니즘을 사용하여 보호된 형태로 표현하는 data: URL이어야 합니다(MUST) [RFC2397]. 이러한 메커니즘의 예로
JOSE
및 COSE를 사용한 검증 가능한 자격 증명
보호 [VC-JOSE-COSE]가
있습니다. 객체의 type 값은
EnvelopedVerifiablePresentation이어야 합니다(MUST).
아래 예제는 엔벨로프된 검증 가능한 프레젠테이션을 보여 줍니다.
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vp+jwt,eyJraWQiO...zhwGfQ",
"type": "EnvelopedVerifiablePresentation"
}
일부 영지식 암호 방식에서는 보유자가 주장을 검증 가능한 자격 증명에서 받았으며 이를 보유하고 있음을, 해당 검증 가능한 자격 증명의 모든 주장을 공개하지 않고도 간접적으로 증명할 수 있습니다. 이러한 방식에서는 검증 가능한 자격 증명을 사용하여 제시 가능한 데이터를 파생할 수 있습니다. 이 데이터는 검증자가 발급자를 신뢰한다면 그 값을 신뢰할 수 있도록 암호학적으로 보증됩니다.
일부 선택적 공개 체계에서는 검증 가능한 자격 증명에서 파생된 주장의 일부를 공유할 수 있습니다.
직접 내장된 검증 가능한 자격 증명 대신 파생 데이터를 포함하는 ZKP 형식의 검증 가능한 프레젠테이션의 예는 5.7 영지식 증명절을 참조하십시오.
보유자는 검증 가능한 프레젠테이션의
verifiableCredential 속성을 사용하여
자신을 포함한 모든 발급자의 검증 가능한 자격 증명을
포함할 수 있습니다(MAY). 검증 가능한 자격 증명의
발급자가 보유자인 경우,
해당 검증 가능한 자격 증명의
주장은
자체 주장으로 간주됩니다.
이러한 자체 주장은 이를 포함하는 검증 가능한 프레젠테이션을 보호하는 것과
동일한 메커니즘이나 다른 검증 가능한 자격 증명에 사용할 수 있는
모든 메커니즘으로 보호할 수 있습니다.
이러한 자체 주장된 주체, 즉 주장의 대상에는 제한이 없습니다. 따라서 이러한 주장에는
보유자, 함께 포함된 다른 검증 가능한 자격 증명 중 하나, 심지어 자체 주장된
검증 가능한 자격 증명이 포함된
검증 가능한 프레젠테이션에 관한 진술도 포함될 수 있습니다.
각 경우 id 속성은 특정 주체를 식별하는 데 사용됩니다. 이는 해당 주체에 관한
주장이 제시되는 객체에서, 자체 주장되지 않은
검증 가능한 자격 증명과 동일한 방식으로 이루어집니다.
자체 주장 검증 가능한 자격 증명을 포함하고,
해당 자격 증명이 검증 가능한 프레젠테이션과 동일한
메커니즘으로만 보호되는 검증 가능한 프레젠테이션은
holder 속성을 포함해야 합니다(MUST).
검증 가능한 자격 증명에 대해 정의된 모든 규범적 요구 사항은 자체 주장 검증 가능한 자격 증명에도 적용됩니다.
검증 가능한 프레젠테이션에 포함된 검증 가능한 자격 증명은 해당 검증 가능한 자격 증명의
issuer 속성 값이
검증 가능한 프레젠테이션의
holder 속성 값과 같으면 자체 주장된 것으로
간주됩니다.
아래 예제는 검증 가능한 프레젠테이션과 동일한 메커니즘을 사용하여 보호된 자체 주장 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션을 보여 줍니다.
{
"@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": [{ ... }]
}
아래 예제는 검증 가능한 프레젠테이션에 관한 주장을 담고 있는 자체 주장 검증 가능한 자격 증명을 포함하는 검증 가능한 프레젠테이션을 보여 줍니다. 이 자격 증명은 검증 가능한 프레젠테이션과 동일한 메커니즘을 사용하여 보호됩니다.
{
"@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": { ... }
}
4. 기본 개념절에서 소개한 개념을 바탕으로, 이 절에서는 검증 가능한 자격 증명에 관한 더 복잡한 주제를 살펴봅니다.
이 절은 비규범적입니다.
검증 가능한 자격 증명의 신뢰 모델은 다음과 같은 기대를 기반으로 합니다.
기존 신뢰 관계가 없다면 보유자는 발급자가 제공되는 검증 가능한 자격 증명을 발급할 자격이 있는지 판단할 대역 외 수단을 사용할 수 있습니다.
참고: 보유자가 항상 발급자를 신뢰해야 하는 것은 아닙니다. 발급된 검증 가능한 자격 증명이 주체에 관한 주장일 수 있는데, 그 주체가 보유자가 아니거나 특정 인물을 가리키지 않을 수도 있기 때문입니다. 또한 보유자는 정보의 진실성에 대한 책임을 지지 않고 이를 검증자에게 전달하고자 할 수 있습니다.
이 신뢰 모델은 다음 사항을 보장한다는 점에서 다른 신뢰 모델과 구별됩니다.
검증자가 어떤 발급자를 어떤 데이터나 목적에 대해 신뢰할지 결정하는 방법은 이 권고안의 범위를 벗어납니다. 잘 알려진 조직과 같은 일부 발급자는 평판만으로 많은 검증자의 신뢰를 받을 수 있습니다. 일부 발급자와 검증자는 가입 규칙에 따라 모든 구성원이 서로 신뢰하는 공동체의 구성원일 수 있습니다. 일부 검증자는 발급자를 심사하고 전자 서명 및 인프라(ESI); 신뢰 목록 [ETSI-TRUST-LISTS] 또는 Adobe 승인 신뢰 목록과 같은 신뢰 목록에 올리는 일을 담당하는 특정 신뢰 서비스 제공자를 신뢰할 수 있습니다.
발급자와 검증자 사이의 기대를 분리하면 더 유연하고 동적인 신뢰 모델이 만들어져 시장 경쟁과 고객의 선택권이 확대됩니다.
이 신뢰 모델이 실무 그룹에서 연구한 여러 위협 모델과 어떻게 상호 작용하는지 자세히 알아보려면 검증 가능한 자격 증명 사용 사례 [VC-USE-CASES]를 참조하십시오.
이 사양에 상세히 기술된 데이터 모델은 보다 전통적인 인증 기관 신뢰 모델이 제공하는 것과 같은 전이적 신뢰 모델을 전제로 하지 않습니다. 검증 가능한 자격 증명 데이터 모델에서 검증자는 발급자를 직접 신뢰하거나 신뢰하지 않습니다. 검증 가능한 자격 증명 데이터 모델을 사용해 전이적 신뢰 모델을 구축할 수는 있지만, 구현자는 보안 취약점을 알아보는 것이 좋습니다. 이러한 취약점은 인증 기관 시스템이 채택한 방식으로 신뢰를 광범위하게 위임할 때 발생합니다.
검증 가능한 자격 증명 데이터 모델의 목표 중 하나는 허가 없는 혁신을 가능하게 하는 것입니다. 이를 위해 데이터 모델은 여러 가지 방식으로 확장 가능해야 합니다. 데이터 모델은 다음을 충족해야 합니다.
이 데이터 모델링 접근 방식은 흔히 개방 세계 가정이라고 하며, 이는 어떤 엔터티든 다른 어떤 엔터티에 관해 무엇이든 말할 수 있음을 의미합니다. 이 접근 방식은 단순하고 예측 가능한 소프트웨어 시스템을 구축하는 것과 상충하는 듯 보일 수 있지만, 개방 세계 가정에서는 폐쇄형 소프트웨어 시스템보다 확장성과 프로그램 정확성의 균형을 맞추기가 언제나 더 어렵습니다.
이 절의 나머지 부분에서는 일련의 예제를 통해 확장성과 프로그램 정확성을 모두 달성하는 방법을 설명합니다.
아래에 표시된 자격 증명으로 시작한다고 가정하겠습니다.
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"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
{
"@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
{
"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"
]
}
SHA-256 해시: 2amujV65jGcoDCGqgG9bLH5j8Ot9Vy4c1eHyjBKgDUk
공개 정보: WyIwVnVZZzNMSjNSQlpHWXZuVGZBUUVBIiwgImlkIiwgImh0dHA6Ly92Yy5leGFtcGxlL2NyZWRlbnRpYWxzLzQ2NDMiXQ
내용: [
"0VuYg3LJ3RBZGYvnTfAQEA",
"id",
"http://vc.example/credentials/4643"
]
SHA-256 해시: C676vRagWk9GGPr2d0IegFzdntOWH05rEpq4YjpV-RQ
공개 정보: WyJDLVZMYWNQTUlDZjJuSG1IOWt1bkdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIl1d
내용: [
"C-VLacPMICf2nHmH9kunGQ",
"type",
[
"VerifiableCredential"
]
]
SHA-256 해시: Q0Npm5A5AW7JAhQsf0m9Cg2I7SJ2UIwq21DPD933RC8
공개 정보: WyJjMmFhdmdVSU9UR3MtNUFCUVVESUFRIiwgImlkIiwgImRpZDpleGFtcGxlOmFiY2RlZjEyMzQ1NjciXQ
내용: [
"c2aavgUIOTGs-5ABQUDIAQ",
"id",
"did:example:abcdef1234567"
]
이 검증 가능한 자격 증명은 엔터티가
did:example:abcdef1234567과 연결되어 있으며 name 값으로
Jane Doe를 가진다고 명시합니다.
이제 개발자가 검증 가능한 자격 증명을 확장하여 내부 회사 참조 번호와 Jane이 좋아하는 음식이라는 두 가지 추가 정보를 저장하려 한다고 가정하겠습니다.
먼저 아래와 같이 두 개의 새 용어가 포함된 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에 게시되었다고 가정하면,
이 컨텍스트를 포함하고 새로운 속성과
자격 증명 유형을 검증
가능한 자격 증명에 추가하여 이 예제를 확장할 수 있습니다.
{
"@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 상세 체크리스트를 연결 데이터 게시 모범 사례에서 따라야 합니다. 특히 다음 지침이 중요합니다.
또한 기계 판독 가능 설명(즉,
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 속성의 마지막 값으로 포함해야 합니다.
시스템에서 만료된
검증 가능한 자격 증명을 수동 또는 자동으로 갱신할 수 있으면 유용합니다.
검증 가능한 자격 증명의 유효 기간에 관한 자세한 내용은 B.7 유효 기간절을 참조하십시오.
이 사양은 refreshService 속성을 정의합니다. 이 속성을 사용하면
발급자가 갱신 서비스의 링크를 포함할 수 있습니다.
발급자는 갱신 서비스를 검증 가능한 자격 증명 안에 요소로 포함할 수 있습니다. 이 방식은 검증자 또는 보유자(또는 둘 다)를 위한 경우에 사용합니다. 또는 갱신 서비스를 검증 가능한 프레젠테이션 안에 포함할 수도 있는데, 이 방식은 보유자만을 위한 경우에 사용합니다. 후자의 경우 보유자는 검증 가능한 자격 증명을 갱신한 다음 검증 가능한 프레젠테이션을 만들어 검증자와 공유할 수 있습니다. 전자의 경우 갱신 서비스를 검증 가능한 자격 증명 안에 포함하면 보유자 또는 검증자가 나중에 자격 증명을 업데이트할 수 있습니다.
갱신 서비스는
자격 증명이 만료되었거나 발급자가
자격 증명 상태 정보를 게시하지 않을 때만 사용될 것으로 예상됩니다. 발급자는
refreshService 속성을 공개 정보가 포함되지 않았거나 갱신 서비스가 어떤 방식으로도 보호되지 않은 검증 가능한 자격 증명에는 넣지 않는 것이 좋습니다.
refreshService 속성의 값은 MUST 수신자의
소프트웨어가
검증 가능한 자격 증명을 갱신할 수 있을 만큼 충분한 정보를 제공하는
하나 이상의 갱신 서비스여야 합니다. 각 refreshService 값은 MUST
자체 type을 지정해야 합니다. 각 갱신 서비스의 정확한 내용은 특정
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 속성을
검증 가능한 자격 증명에 넣어
검증자가 이용할 수 있게 하면
보유자에게서 통제권과 동의를 박탈하고,
검증 가능한 자격 증명을 검증자에게 직접 발급할 수 있게 되어,
보유자를 우회할 수 있습니다.
이용 약관은 발급자 또는 보유자가
검증 가능한 자격 증명 또는
검증 가능한 프레젠테이션이 발급된 조건을 전달하는 데 사용할 수 있습니다. 발급자는 자신의 이용 약관을
검증 가능한 자격 증명 안에 넣습니다. 보유자는 자신의 이용 약관을 검증 가능한 프레젠테이션 안에 넣습니다. 이 사양은 이용 약관 정보를 표현하기 위한
termsOfUse 속성을 정의합니다.
termsOfUse 속성의 값은 다른 정보와 함께 다음 중 일부 또는 전부를
검증자에게 알리는 데 사용할 수 있습니다.
termsOfUse 속성의 값은 MUST
작성자가 자격 증명
또는 프레젠테이션을 발급할 때 적용한 하나 이상의 이용 약관 정책을 지정해야 합니다. 수신자(보유자 또는
검증자)가 지정된 이용 약관을 준수할 의사가 없다면,
그에 따른 책임은 수신자 자신에게 있으며 명시된 이용 약관을 위반할 경우
법적 책임을 질 수 있습니다. 각 termsOfUse 값은 MUST
자체 유형(예: TrustFrameworkPolicy)을 지정해야 하며, MAY 인스턴스 id를 지정할 수 있습니다. 각 이용 약관의 정확한 내용은
특정 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] 문서의 관련 절에서 발전 중인 이 기능을 자세히 살펴보는 것이 좋습니다.
발급자는 검증자에게 추가적인 뒷받침 정보를 제공하기 위해 검증 가능한 자격 증명에 증거를 포함할 수 있습니다. 검증자는 이를 사용해 검증 가능한 자격 증명의 주장을 어느 정도 신뢰할 수 있는지 판단할 수 있습니다. 예를 들어 발급자는 주체가 제공한 실물 문서를 확인하거나 자격 증명을 발급하기 전에 일련의 신원 조사를 수행할 수 있습니다. 특정 상황에서는 이 정보가 검증자가 특정 자격 증명을 신뢰할 때의 위험을 판단하는 데 유용합니다.
이 사양은 증거 정보를 표현하기 위한 evidence 속성을 정의합니다.
evidence 속성이 있으면 그 값은 MUST 단일 객체 또는 하나 이상의 객체
집합이어야 합니다. 모든 증거 객체에는 다음 속성이 정의됩니다.
id 속성은 OPTIONAL입니다. 이 속성은 증거 객체에
고유 식별자를 제공하기 위해
MAY 사용될 수 있습니다. 이 속성이 있으면
4.4 식별자절의 규범적 지침을 MUST 따라야 합니다.
type 속성은 REQUIRED입니다. 객체가 표현하는 증거 정보의 유형을 나타내는 데 사용합니다.
관련 규범적 지침은 다음
4.5
유형절에 있으며 이를 MUST 따라야 합니다.
이 사양이 첨부 파일, 자격 증명 참조 및 자격 증명이 아닌 데이터의 참조를 지원할 수 있는 방법은 5.3 관련 리소스의 무결성절을 참조하십시오.
{
"@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
보호 메커니즘절을 참조하십시오.
영지식 증명은 보호 메커니즘으로, 보유자가 실제 값을 공개하지 않고도 특정 값이 포함된 검증 가능한 자격 증명을 보유하고 있음을 증명할 수 있게 합니다. 예를 들어 생년월일을 공개하지 않고도 개인이 25세를 초과했음을 증명할 수 있습니다. 이 데이터 모델은 영지식 증명을 사용한 보호를 지원합니다.
영지식 증명 메커니즘으로 구현할 수 있으며 검증 가능한 자격 증명과 호환되는 기능에는 다음이 포함됩니다.
보호 메커니즘을 만드는 사양 작성자는 MUST NOT 정보가 유출되어 검증자가 보유자를 여러 검증 가능한 프레젠테이션이 서로 다른 검증자에게 제시될 때에도 상관관계로 연결할 수 있게 하는 방식으로 메커니즘을 설계해서는 안 됩니다.
모든 영지식 증명 메커니즘이 모든 기능을 지원하는 것은 아닙니다. 특정 영지식 증명 메커니즘이 제공하는 기능과 기법의 구체적인 내용 및 이를 검증 가능한 자격 증명과 함께 사용할 때의 규범적 요구 사항은 해당 영지식 증명 메커니즘으로 검증 가능한 자격 증명을 보호하는 사양에서 확인할 수 있습니다. 이러한 사양의 예는 데이터 무결성 BBS 암호 스위트 v1.0을 참조하십시오.
대부분의 경우 보유자가 영지식 메커니즘을 검증 가능한 자격 증명과 함께 사용하려면 발급자가 검증 가능한 자격 증명을 이러한 기능을 지원하는 방식으로 보호해야 합니다.
아래 그림은 이 데이터 모델을 사용하여 영지식 방식으로 검증 가능한 자격 증명을 발급하고 제시하는 방법을 보여 줍니다.
다음은 검증 가능한 자격 증명과 검증 가능한 프레젠테이션의 예로, 데이터 무결성 BBS 암호 스위트 v1.0의 연결 불가능한 선택적 공개 보호 메커니즘을 사용합니다.
{
"@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 기반 연결 불가능 공개 방식을 활성화하여 기본 증명을 만들었습니다. 보유자는 이 기본 증명을 사용하여 원본 검증 가능한 자격 증명의 특정 정보만 공개하는 파생 증명을 만들 수 있습니다.
{
"@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"
}
]
}
]
}
위 검증 가능한 프레젠테이션에는 앞선 예제 정보의 연결 불가능한 하위 집합과 파생 증명을 담은 검증 가능한 자격 증명이 포함되어 있습니다. 검증자는 파생 증명을 사용하여 정보가 예상한 발급자에게서 비롯되었고 이 특정 정보 교환에 바인딩되어 있음을 확인할 수 있습니다.
구현자는 시간 값을 표현하고 처리하는 일이 겉보기만큼 간단하지 않으며, 세계 각 지역에서 즉시 알아차리기 어렵거나 일관되게 적용되지 않는 다양한 특이 사항이 있음을 이해하는 것이 좋습니다. 예를 들면 다음과 같습니다.
2023-01-01T00:00:00Z)으로 표현할 수 있습니다.
이는 벽시계에 표시되는 실제 시각이 한 지역에는 존재하지만 다른 지역에는 존재하지 않을 수도 있음을
보여 주는 몇 가지 예에 불과합니다. 따라서 구현자는 일광 절약 시간제(서머타임)의 영향을 받는 값보다
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 값을 생성합니다. 아래 정규 표현식에서 읽기 쉽도록 넣은 공백을 제외하면,
최신 시스템에서 라이브러리가 생성한 날짜와 시간을 처리하는 데 충분한 경우가 많습니다.
-?([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))
이 절은 비규범적입니다.
검증 가능한 자격 증명은 주체를 신뢰할 수 있게 식별하기 위한 수단입니다. 역할 기반 액세스 제어(RBAC)와 속성 기반 액세스 제어(ABAC)가 이러한 식별을 바탕으로 주체에게 리소스 액세스 권한을 부여한다는 점은 인정하지만, 이 사양은 RBAC 또는 ABAC를 위한 완전한 솔루션을 제공하지 않습니다. 함께 사용할 권한 부여 프레임워크가 없다면 권한 부여는 이 사양의 적절한 사용 사례가 아닙니다.
작업 그룹은 이 사양을 작성할 때 권한 부여 사용 사례를 고려했으며, 이 사양 위에 구축하는 아키텍처 계층으로 해당 작업을 추진하고 있습니다.
이 사양은 잠재적인 확장 지점으로 사용할 여러 속성을 예약합니다. 일부 구현자가 이러한 속성에 관심을 나타냈지만, 이 사양에 포함하기에는 이르다고 판단했습니다. 이러한 속성은 어느 것도 이 사양에서 정의하지 않는다는 점이 중요합니다. 따라서 구현자는 이러한 속성의 사용이 실험적인 것으로 간주된다는 점에 유의해야 합니다.
구현자는 이러한 속성을 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 실험적인 것으로 취급해야 합니다.
이 문서에서 제공하는 데이터 모델을 기본적으로 사용하지 않지만, 이 사양의 여러 개념과 부합하는 디지털 자격 증명 형식이 다수 있습니다. 이 문서가 발행된 시점에 이러한 디지털 자격 증명 형식의 예로는 JSON 웹 토큰(JWT), CBOR 웹 토큰(CWT), JSON 고급 전자 서명(JAdES), ISO-18013-5:2021 (mDL), AnonCreds, 고르디언 엔벌로프 및 인증된 연쇄 데이터 컨테이너(ACDC)가 있습니다.
개념적으로 부합하는 디지털 자격 증명 형식을 이 절의 규칙에 따라 적합 문서로 변환할 수 있으면 해당 형식은 "W3C 검증 가능한 자격 증명 생태계와 호환됨"으로 간주합니다. 사양 작성자는 검증 가능한 자격 증명 생태계와의 호환성을 지원하는 변환을 문서화할 때 다음 규칙을 따르는 것이 좋습니다. 변환 사양은 —
@context 값을 보존해야 합니다.
디지털 자격 증명은 W3C 검증 가능한 자격 증명 생태계와 호환되는 것으로 간주되려면 적합 문서이면서 이 사양의 해당 요구 사항에서 설명한 보호 메커니즘을 하나 이상 사용해야 한다는 점에 유의하십시오. 일부 커뮤니티에서는 적합 문서가 아닌 일부 디지털 자격 증명 형식을 "검증 가능한 자격 증명"이라고 부를 수 있지만, 그렇게 부른다고 해서 해당 디지털 자격 증명이 이 사양을 준수하는 것은 아닙니다. 예를 들어 SD-JWT-VC [SD-JWT-VC] 사양은 이름에 "VC"라는 글자를 사용하지만 W3C 검증 가능한 자격 증명과 호환되지 않는다고 명시적으로 밝힙니다.
검증 가능한 자격 증명을 표현할 때(예:
프레젠테이션) 한 검증
가능한 자격 증명의 데이터를 다른 검증 가능한 자격 증명의 동일한 데이터로 오인하지 않도록
해야 합니다.
예를 들어 다음 형식의 객체를 각각 포함하는 두 검증 가능한 자격 증명이 있다고 가정합니다:
{"type": "Person", "name": "Jane
Doe"}. 한 객체가 다른 객체와 동일한 사람을 설명하는지는 알 수 없습니다. 즉, 두 검증
가능한 자격 증명이 동일한 엔터티 및/또는 속성을 다루는지 확인하지 않고
데이터를 병합하면 데이터 집합이 손상될 수 있습니다.
서로 다른 검증 가능한 자격 증명의 데이터가 실수로 뒤섞이지 않도록
검증 가능한
자격 증명 그래프라는 개념을 사용하여 각 검증 가능한 자격 증명을 캡슐화합니다.
단순한 검증 가능한 자격 증명, 즉 JSON-LD 문서에 하나의 자격 증명과
그에 연결된 증명이 포함될 수 있는 경우 이 그래프는 기본 그래프입니다. 프레젠테이션의 경우
각 verifiableCredential 속성 값은 프레젠테이션 내부에서 별도의
명명된 그래프로 분리되며, 그 유형은 VerifiableCredentialGraph
입니다. 이 그래프에는 하나의 검증 가능한 자격 증명 또는
봉투형 검증 가능한 자격 증명이 포함됩니다.
이러한 그래프는 JSON-LD 처리 시 한 그래프의 그래프 노드 식별자를
다른 그래프의 식별자와 올바르게 분리하는 구체적인 효과가 있습니다. 입력을 애플리케이션별
JSON-LD 문서로 제한하는 구현도 한 검증 가능한 자격 증명의 데이터를 다른 자격 증명의 데이터와
병합할 때 이 점을 고려해야 합니다. 예를 들어 credentialSubject.id가 두 검증
가능한 자격 증명에서 같더라도,
객체에는 앞 단락에서 설명한 "Jane Doe" 형식의 객체가 포함될 수 있습니다. 비슷한 속성을 가진 것처럼 보이지만
URL과 같은 전역 식별자를 사용하는 id 속성이 없는 객체는 병합하지 않는 것이 중요합니다.
4.12 보호 메커니즘절에서 설명한 것처럼, 구현자가 적합 문서를 보호하는 데 사용할 수 있는 전략은 여러 가지입니다. 유용성과 상호 운용성을 극대화하기 위해 적합 문서를 보호하는 새로운 방식을 작성하려는 사양 작성자에게 이 절의 지침을 제공합니다.
보호 메커니즘 사양은 MUST 적합 문서의 콘텐츠 무결성을 보호하는 규범적 알고리즘을 문서화해야 합니다. 이 알고리즘은 MAY 일반적인 성격을 지닐 수 있으며, MAY 적합 문서 이외의 데이터를 보호하는 데 사용할 수 있습니다.
보호 메커니즘 사양은 MUST 보호된 적합
문서의 정보를 독립적으로 반환하는 검증 알고리즘을 제공해야 합니다.
반환 정보에는 proof, JOSE/COSE 헤더 매개변수 및 서명과 같은 보호 메커니즘 정보가 포함되지 않아야 합니다.
검증 알고리즘은 MAY 보호 메커니즘의 세부 정보처럼 유효성 검사나 디버깅 등에 유용한 추가 정보를 반환할 수 있습니다.
검증 알고리즘은 MUST 미디어 유형(문자열
inputMediaType)과 입력 데이터(바이트 시퀀스 또는 맵 inputData)를 받는 인터페이스를 제공해야 합니다.
보호 메커니즘 사양은 MAY 이 문서에서 지정한 것 이외의 알고리즘과 인터페이스를 제공할 수 있습니다.
검증 알고리즘은 최소한 다음 항목을 포함하는
검증 결과를 반환합니다.
true이고, 실패 시 false인 검증 상태입니다.
보호 메커니즘 사양은 유효성 검사에 중요한, URL로 참조되는 모든 정보에 대해 SHOULD 무결성 보호를 제공해야 합니다. 이러한 보호를 구현할 수 있는 메커니즘은 5.3 관련 리소스의 무결성절과 C.1 기본 컨텍스트절에서 설명합니다.
새로운 유형의 내장 증명을 만드는 보호 메커니즘 사양은 MUST 속성을 지정해야 합니다. 이 속성은 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 증명 그래프와 연결합니다. 보호 메커니즘의 요구 사항은 다음과 같습니다.
@context 파일을 정의할 수 있습니다.
마지막 요구 사항은 보호 메커니즘이 기본 그래프를 보호하고, 검증 가능한 프레젠테이션의 경우 프레젠테이션에 포함된 각 검증 가능한 자격 증명을 해당 증명 그래프와 함께 보호한다는 뜻입니다. 그림 9 또는 그림 14도 참조하십시오.
proof 속성은 [VC-DATA-INTEGRITY]에서 정의한 것이며,
내장 보호 메커니즘에서 MAY 사용할 수 있습니다.
보호 메커니즘 사양은 SHOULD 해당 보호 메커니즘을 보호 메커니즘절에 등록해야 합니다. 이 절은 검증 가능한 자격 증명 확장 문서에 있습니다.
허용되는 보호 메커니즘은 여러 가지이며, 이 사양은 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션과 함께 사용할 특정 보호 메커니즘을 의무화하지 않습니다. 이 사양을 작성한 작업 그룹은 다음 두 가지 보호 메커니즘을 표준화했습니다. 검증 가능한 자격 증명 데이터 무결성 1.0 [VC-DATA-INTEGRITY] 및 JOSE 및 COSE를 사용한 검증 가능한 자격 증명 보호 [VC-JOSE-COSE]. 커뮤니티에 알려진 다른 보호 메커니즘은 보호 메커니즘절, 즉 검증 가능한 자격 증명 확장 문서에서 확인할 수 있습니다.
3.
핵심 데이터
모델절,
4.
기본 개념절 및 5. 고급 개념절에서 설명한 데이터 모델은 검증 가능한
자격 증명 또는 검증 가능한 프레젠테이션의 정규 구조 표현입니다.
모든 구문은 해당 데이터 모델을 특정 형식으로 표현한 것입니다. 이 절에서는
application/vc와 application/vp를 위해 데이터 모델을 JSON-LD로
직렬화하는 방법을 지정합니다. 이들은 각각 검증 가능한 자격 증명과 검증 가능한 프레젠테이션의 기본 미디어 유형입니다.
구문 매핑은 JSON-LD에 대해서만 제공되지만, 애플리케이션과 서비스는
application/vc 또는 application/vp로 다시 매핑할 수 있는
다른 모든 데이터 표현 구문(예: XML, YAML 또는 CBOR)을 사용할 수 있습니다.
검증
및 유효성 검사
요구 사항은 데이터 모델을 기준으로 정의되므로, 모든 직렬화 구문은 처리, 유효성 검사 또는 비교를 위해
결정론적으로 데이터 모델로 변환되어야 합니다.
이 사양에서 속성 값의 예상 개수와 그 값을 담는 결과 데이터 유형은 속성에 따라 달라질 수 있습니다.
다음 속성이 존재하는 경우 단일 값으로 표현됩니다. id
(4.4
식별자절), issuer(4.7 발급자절) 및
validFrom/validUntil(4.9 유효
기간절). 그 밖의 모든 속성은 존재하는 경우 단일 값 또는 값의 배열로 표현됩니다.
이 사양에서는 이 사양에 설명된 데이터 모델을 직렬화하기 위해 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 문서처럼 다룰 수 있으며, 예제를 조금만 수정하여 자신의 소프트웨어 시스템에 복사해 붙여 넣을 수 있습니다. 이 접근 방식의 설계 목표는 진입 장벽을 낮추면서도 서로 다른 소프트웨어 시스템 사이의 전역 상호 운용성을 보장하는 것입니다. 이 절에서는 이를 가능하게 하는 데 사용되는 몇 가지 JSON-LD 기능을 설명합니다. 대부분의 개발자는 이러한 기능을 알아차리지 못할 가능성이 크지만, 구현자는 세부 사항에 관심을 가질 수 있습니다. 이 사양에서 사용하는 JSON-LD 1.1의 주요 기능은 다음과 같습니다.
@id 및 @type 키워드에는 각각 id와
type이라는 별칭이 지정되어 있으므로, 개발자는 이 사양을 관용적인 JSON으로 사용할 수 있습니다.
verifiableCredential 속성은
JSON-LD 1.1 그래프
컨테이너로 정의됩니다. 이를 위해 서로 다른 엔터티가 주장한 데이터 집합을 분리하는 데 사용되는 명명된 그래프를 만들어야 합니다. 예를 들어 이를 통해 각 발급자가 제공한 데이터 그래프와 보유자가 검증 가능한 자격 증명을 제시하면서 제공한 데이터 그래프를
암호학적으로 올바르게 분리하여, 각 그래프에 있는 정보의 출처가 보존되도록 합니다.
@protected 속성 기능은 JSON-LD 1.1에서 이 사양에 정의된 용어를
재정의할 수 없도록 하는 데 사용됩니다.
즉, 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 맨 위에 동일한
@context 선언이 있는 한, 데이터 모델 사용자가 이해하는 모든 용어의 상호 운용성이
JSON-LD
1.1 프로세서 사용 여부와 관계없이 보장됩니다.
상호 운용성을 높이기 위해 이 사양은 데이터 모델의 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 기능을 사용하지 않는 것이 좋습니다. 이러한 기능은 다음과 같습니다.
@context 값에
인라인으로 선언하는 기능(예: @base 또는 @vocab 설정)
@vocab 재설정처럼 이전 컨텍스트의 선언을 재정의하는 JSON-LD 컨텍스트 사용
@context 속성에 JSON-LD 컨텍스트를 인라인으로 선언하는 기능
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를 사용합니다. 이러한 선언의 예는 아래와 같습니다.
{
"@context":
{
"matrix": {
"@id": "https://website.example/vocabulary#matrix",
"@type": "@json"
}
}
}
아래 예제에서 위에 표시한 컨텍스트를 사용하고 https://website.example/matrix/v1 컨텍스트를
@context 속성에 포함하면 credentialSubject.matrix의 값이 JSON 의미론을
유지하므로, 2차원 행렬에 있는 모든 요소의 정확한 순서가 보존됩니다.
{
"@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]
]
}
}
[RFC6838]에서 정의한 미디어 유형은 검증 가능한 자격 증명을 표현하는 데 사용되는 구문과 그 밖의 유용한 처리 지침을 식별합니다.
이 사양의 데이터 모델을 표현하는 데 사용되는 구문은 SHOULD 미디어 유형으로 식별해야 하며, 이 절에서 설명한 규칙도 SHOULD 검증 가능한 자격 증명과 함께 사용할 미디어 유형을 정의하거나 사용할 때는 따라야 합니다.
핵심 데이터 모델과 연결된 미디어 유형은 두 가지이며, D. IANA
고려 사항절에 나열되어 있습니다. 바로 application/vc와
application/vp입니다.
application/vc 및 application/vp 미디어 유형은 특정 보호 메커니즘을
전제로 하지 않지만, 보호 메커니즘과 함께 사용하기 위한 것입니다. 이러한 미디어 유형의 무결성을 보호하려면
보호 메커니즘을 적용해야 합니다. 콘텐츠 전달에 어떤 미디어 유형을 사용하든 콘텐츠가 안전하다고 가정해서는 안 됩니다.
이 절은 비규범적입니다.
개발자나 시스템이 정밀도가 낮은 미디어 유형을 사용하여 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 전달하는 경우가 있습니다. 정밀도가 낮은 미디어 유형을 사용하는 이유는 다음과 같습니다.
text/plain 또는 application/octet-stream을 사용합니다.
.json은 application/json 미디어 유형으로 이어질 수 있고,
.jsonld는 application/ld+json 미디어 유형으로 이어질 수 있습니다.
application/json과 같이 application/vp보다 덜 정밀한 유형을 요구할 수 있습니다.
사용된 미디어 유형을 해당 프로토콜에서 허용할 수 있고 페이로드에서 의도한 미디어 유형을 확인할 수 있다면,
구현자는 오류를 발생시키지 않는 것이 좋습니다. 예를 들어 애플리케이션이 application/vc 미디어
유형과 관련된 규칙을 준수하는 페이로드만 허용하지만 페이로드에 application/json 또는
application/ld+json이라는 태그가 대신 지정되어 있다면, 애플리케이션은 해당 페이로드가 정밀도가
더 높은 미디어 유형도 준수하는지 확인하기 위해 다음 단계를 수행할 수 있습니다.
@context 속성의 첫 번째 요소가
https://www.w3.org/ns/credentials/v2와 일치하는지 확인합니다.
application/vp 미디어 유형으로 간주합니다. 이는 JSON 문서에 최상위
type 속성이 있고 그 안에 VerifiablePresentation 요소가 있는 경우입니다.
페이로드가 적합한
검증 가능한 프레젠테이션을 표현하는지 확인하기 위해
이 사양에 따라 이후의 추가 검사를 계속 수행해야 합니다.
application/vc 미디어 유형으로 간주합니다. 이는 JSON 문서에 최상위
type 속성이 있고 그 안에 VerifiableCredential 요소가 있는 경우입니다.
페이로드가 적합한
검증 가능한 자격 증명을 표현하는지 확인하기 위해
이 사양에 따라 이후의 추가 검사를 계속 수행해야 합니다.
가능하면 구현자는 이 사양에서 정의한 모든 페이로드에 가장 정밀한 미디어 유형을 사용하는 것이 좋습니다. 또한 페이로드에 정밀도가 낮은 미디어 유형 태그가 지정되어 있다고 해서 그 페이로드가 정밀도가 높은 유형의 태그를 지정하는 데 필요한 규칙을 충족하지 않는다는 의미는 아님을 알아야 합니다. 마찬가지로 정밀도가 높은 미디어 유형 태그가 지정되어 있다고 해서 페이로드가 해당 미디어 유형과 관련된 요구 사항을 충족한다는 의미도 아닙니다. 페이로드 수신자는 연결된 미디어 유형과 관계없이 페이로드가 해당 시스템에서 사용하기 위한 요구 사항을 준수하는지 적절히 검사해야 합니다.
HTTP 클라이언트와 서버는 검증 가능한 자격 증명 및 검증 가능한 프레젠테이션과 연결된 미디어 유형을
Accept 헤더와 콘텐츠 유형을 나타낼 때 사용합니다. 구현자는 HTTP 서버가 Accept 헤더를 무시하고 다른 콘텐츠 유형을
반환하거나 415 Unsupported Media Type과
같은 오류 코드를 반환할 수 있다는 점에 유의해야 합니다.
이 절은 비규범적입니다.
JSON은 여러 종류의 정보를 표현하는 데 사용할 수 있으므로, 특정 JSON 문서의 소비자는 해당 문서를 다른 가능한 표현과
구분하고 그 컨텍스트를 제공하는 정보를 갖고 있어야만 작성자의 의도를 올바르게 해석할 수 있습니다. 이러한 해석을 돕는 정보는
JSON 문서 외부에 완전히 존재하거나 문서 내부에서 연결될 수 있습니다. 압축된 JSON-LD 문서에는 @context
속성이 포함되며, 이 속성은 주장을 표현하기 위한 컨텍스트 정보를 내부적으로 표현하거나 그 정보에 연결합니다.
이러한 기능을 사용하면 JSON-LD 문서를 한 컨텍스트에서 다른 컨텍스트로 변환하는 범용 프로세서를 작성할 수 있습니다.
그러나 소비자가 이미 예상한 컨텍스트와 구조를 사용하는 JSON-LD 문서를 받는 경우에는 이러한 변환이 필요하지 않습니다.
발급자가
작성하는 검증 가능한 자격 증명처럼 JSON-LD 문서를
작성하는 사람은 상호 운용성을 촉진하기 위해 적절한 JSON-LD 컨텍스트를 제공하고 이 규칙을 따라야 합니다.
아래 내용은 JSON-LD 문서를 소비하기 위해 변환할 필요가 없도록, 애플리케이션이 이미 이해하는 컨텍스트와 구조로 문서가 표현되었는지 확인하는 방법을 소비자가 이해하도록 돕습니다. 이는 소비자가 어떤 컨텍스트도 이해할 필요가 없다는 뜻이 아닙니다. 소비 애플리케이션은 함께 사용할 컨텍스트와 문서 구조 중 선택한 집합만 이해하면 되며, 그 밖의 것은 이해할 필요가 없습니다. 발급자는 다른 JSON 형식 데이터에서와 마찬가지로, 범용 프로세서를 사용하지 않는 소비자를 돕기 위해 자신의 검증 가능한 자격 증명에 관한 컨텍스트와 정보를 게시할 수 있습니다.
일반 JSON-LD 처리는 JSON-LD 소프트웨어 라이브러리로 적합 문서를 처리하는 메커니즘으로 정의됩니다. 이 처리는 다양한 변환을 수행하여 이루어집니다. 유형별 자격 증명 처리는 JSON-LD 소프트웨어 라이브러리가 필요하지 않은, 적합 문서를 처리하는 더 가벼운 메커니즘으로 정의됩니다. 검증 가능한 자격 증명의 일부 소비자는 특정 유형의 자격 증명만 사용하면 됩니다. 이러한 소비자는 일반 처리 대신 유형별 자격 증명 처리를 사용할 수 있습니다. 유형별 자격 증명 처리가 유용할 수 있는 상황에는 다음이 포함되지만 이에 국한되지 않습니다.
+json 구조화 미디어 유형 접미사를 사용하여 미디어 유형을 처리하기로 선택한 경우
즉, 유형별 자격 증명 처리는 소비하거나 생성하는 문서가 적합 문서인 한 허용됩니다.
유형별 자격 증명
처리를 사용하려는 구현자는 다음 규칙을 따르는 것이 좋습니다.
@context 속성과 연결된 모든 값이 예상한 순서로 되어 있고, 컨텍스트 파일의 콘텐츠가 각 파일에 대해
올바른 것으로 알려진 암호학적 해시와 일치하며, 도메인 전문가가 해당 콘텐츠가 의도한 사용 사례에 적합하다고 판단했는지 확인하십시오.
JSON 스키마와 함께 정적 컨텍스트 파일을 사용하는 것은 위 규칙을 구현하는 데 허용되는 한 가지 접근 방식입니다. 이를 통해 유형별 자격 증명 처리를 수행할 때 용어 식별, 유형 지정 및 순서가 올바른지 확인할 수 있습니다.
위 규칙은 @context 메커니즘을 통해 리터럴 JSON 키를 URI에 매핑하는 두 처리 메커니즘 사이의
의미론적 상호 운용성을 보장합니다. 일반 JSON-LD 처리는 알고리즘에 제공된 이전에
보지 못한
@context 값을 사용하여 모든 용어가 올바르게 지정되었는지 확인할 수 있습니다. 반면 유형별 자격 증명 처리를 수행하는 구현은 미리 이해하도록
설계된 특정 @context 값만 허용하므로, JSON-LD API를 호출하지 않고도 동일한 의미론을 얻습니다.
다시 말해 두 처리 메커니즘 모두 데이터 교환이 이루어지는 컨텍스트를 @context를 사용하여 명시적으로 나타냅니다.
이 사용 방식은 동일한 적합 문서 의미론으로 이어집니다.
이 절에는 구현이 검증과 같은 일반적인 작업을 수행하는 데 사용할 수 있는 알고리즘이 포함되어 있습니다. 알고리즘 형식으로 표현된 적합성 요구 사항은 인프라 표준 [INFRA]의 규범적 개념을 사용합니다. 구현 요구 사항에 관한 자세한 지침은 알고리즘 적합성을 다루는 인프라 표준 부분을 참조하십시오.
이 절의 알고리즘에는 구현이 이 사양에 대한 적합성을 테스트하는 데 사용하는 최소한의 검사만 포함되어 있다는 점에 유의하십시오. 구현은 개발자가 잠재적인 문제를 디버깅하는 데 도움이 되는 유용한 경고를 보고하는 추가 검사를 제공할 것으로 예상됩니다. 마찬가지로 구현은 유해한 콘텐츠를 차단하기 위해 새로운 유형의 오류를 보고할 수 있는 추가 검사를 제공할 가능성이 큽니다. 이러한 추가 검사는 이 사양의 향후 버전에 포함될 수 있습니다.
이 절에는 적합한 검증자 구현이 MUST 검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 검증할 때 실행해야 하는 알고리즘이 포함되어 있습니다. 이 알고리즘은 미디어 유형(문자열 inputMediaType)과 보호된 데이터(바이트 시퀀스 inputData)를 받아 다음을 포함하는 맵을 반환합니다.
검증 알고리즘은 다음과 같습니다.
false로 설정되어 있으면
CRYPTOGRAPHIC_SECURITY_ERROR를
result.errors에 추가합니다.
true로 설정되어 있으면
result.document가 적합
문서인지 확인합니다. 그렇지 않으면
result.status를 false로 설정하고, document 속성을
result에서 제거한 다음 하나 이상의 MALFORMED_VALUE_ERROR를
result.errors에 추가합니다.
디버깅 과정에 도움이 되도록
다른 경고와 오류를 MAY 포함할 수 있습니다.
구현이 동일한 잘못된 입력에 대해 오류를 반환하는 한, 보호 메커니즘의 상태를 검증하는 단계와 입력 문서가 적합 문서인지 검증하는 단계는 MAY 위에 제시된 것과 다른 순서로 수행할 수 있습니다. 구현은 MAY 위에서 설명한 것과 다른 오류를 생성할 수 있습니다.
구현이 문서를 처리하는 동안 이상을 감지하면 ProblemDetails 객체를 사용하여 다른 소프트웨어 시스템에 문제를 보고할 수 있습니다. 이러한 객체의 인터페이스는 데이터를 인코딩할 때 [RFC9457]을 따릅니다. ProblemDetails 객체는 다음 속성으로 구성됩니다.
type 속성은 MUST 존재해야 하며 그 값은
MUST 문제 유형을 식별하는 URL이어야 합니다.
title 속성은 SHOULD 문제를 설명하는 짧지만
구체적인 사람이 읽을 수 있는 문자열을 제공해야 합니다.
detail 속성은 SHOULD 문제를 설명하는 더 긴
사람이 읽을 수 있는 문자열을 제공해야 합니다.
이 사양에서는 다음 문제 설명 유형을 정의합니다.
구현은 MAY 추가 유형이나 속성을 지정하여 ProblemDetails 객체를 확장할 수 있습니다. 이 메커니즘 사용에 관한 자세한 지침은 확장 멤버절, 즉 [RFC9457]를 참조하십시오.
이 절은 비규범적입니다.
구현자는 이 사양에서 설명하는 데이터를 처리할 때 여러 접근성 고려 사항에 유의해야 합니다. 모든 웹 표준이나 프로토콜을 구현할 때와 마찬가지로 접근성 문제를 무시하면 많은 사람이 이 정보를 사용할 수 없게 됩니다. 능력과 관계없이 모든 사람이 이 데이터를 사용할 수 있도록 [WCAG21]과 같은 접근성 지침 및 표준을 따르는 것이 중요합니다. 이는 역사적으로 보조 기술에 문제를 일으켜 온 암호화를 사용하는 시스템을 구축할 때 특히 중요합니다.
이 절에서는 이 데이터 모델을 사용할 때 고려해야 할 일반적인 접근성 고려 사항을 자세히 설명합니다.
이 절은 비규범적입니다.
정부 발행 신분증처럼 오늘날 사용되는 많은 물리적 자격 증명은 작은 글씨, 작고 고해상도인 이미지에 대한 의존성, 시각 장애인을 위한 지원 수단의 부재 등을 포함하여 접근성이 좋지 않습니다.
이 데이터 모델을 사용하여 검증 가능한 자격 증명을 만들 때 데이터 모델 설계자는 데이터 우선 접근 방식을 사용하는 것이 좋습니다. 예를 들어 자격 증명을 나타내기 위해 데이터와 그래픽 이미지 중 하나를 선택해야 한다면, 설계자는 기관 이름이나 전문 자격 증명 등 이미지의 모든 요소를 기계가 판독할 수 있는 방식으로 표현해야 합니다. 이 정보를 전달하기 위해 보는 사람이 이미지를 해석하는 방식에 의존해서는 안 됩니다. 데이터 우선 접근 방식은 서로 다른 능력을 지닌 사람들을 위한 다양한 인터페이스를 구축하는 기초 요소를 제공하므로 선호됩니다.
이 절은 비규범적입니다.
구현자는 이 사양에서 설명하는 데이터를 게시할 때 여러 국제화 고려 사항에 유의하는 것이 좋습니다. 모든 웹 표준이나 프로토콜을 구현할 때와 마찬가지로 국제화를 무시하면 서로 다른 언어와 사회 전반에서 데이터를 생성하고 사용하기 어려워집니다. 이는 사양의 적용 가능성을 제한하고 표준으로서의 가치를 크게 떨어뜨립니다.
구현자는 웹의 문자열: 언어 및 방향 메타데이터 문서 [STRING-META]를 반드시 읽는 것이 좋습니다. 이 문서는 W3C 국제화 활동에서 발행했으며, 국제화를 지원하기 위해 신뢰할 수 있는 텍스트 메타데이터를 제공해야 할 필요성을 자세히 설명합니다. 국제화 고려 사항에 관한 최신 정보는 검증 가능한 자격 증명 구현 지침 [VC-IMP-GUIDE] 문서도 읽어 보십시오.
이 절에서는 이 데이터 모델을 사용할 때 고려해야 할 일반적인 국제화 고려 사항을 간략히 설명하고, 구현자가 읽어 볼 만한 웹의 문자열: 언어 및 방향 메타데이터 문서 [STRING-META]의 특정 부분을 강조합니다.
데이터 게시자는 웹상의 문자열: 언어 및 방향 메타데이터의 구문 간 표현 섹션을 읽어 언어 및 기본 방향 정보를 JSON-LD 1.1, JavaScript 객체 표기법(JSON) 데이터 교환 형식, 간결한 이진 객체 표현(CBOR)과 같은 여러 표현 구문에서 나타낼 수 있도록 할 것을 강력히 권장합니다.
언어 값 객체는 사람이 읽을 수 있는 텍스트 문자열, 해당 언어 및 선택적으로 텍스트 방향으로 구성됩니다. 다음 템플릿은 언어 값 객체를 검증 가능한 자격 증명에서 표현하는 일반적인 패턴을 보여 줍니다:
"myProperty": {
"@value": "문자열 값",
"@language": "LANGUAGE"
"@direction": "DIRECTION"
}
언어 값 객체가 문자열
값 대신 사용되는 경우,
객체는 @value 속성을 반드시 포함해야 하고, @language 속성을 포함하는 것이 좋으며,
@direction 속성도 포함할 수 있습니다.
@value 속성은
문자열로 구성됩니다. @language 속성은 언어 식별 태그에서 정의한
올바른 형식의
언어 태그인 문자열로 구성됩니다. 사용되는 모든
언어 태그는
유효한 것이 좋습니다. @direction 속성은
JSON-LD
1.1의 @direction 속성에서 정의한 기본
방향 문자열을 값으로 하는 문자열로 구성됩니다.
언어 값 객체는 절대로
@value, @language, @direction 이외의 다른 키를 포함해서는
안 됩니다.
위 템플릿을 사용하여 다음 예제에서는 텍스트 방향을 지정하지 않고 영어로 된 책 제목을 표현합니다.
"title": {
"@value": "HTML과 CSS: 웹사이트 설계 및 제작",
"@language": "en"
}
다음 예제에서는 오른쪽에서 왼쪽으로의 기본 방향을 가진 아랍어로 표현된 유사한 제목을 사용합니다.
"title": {
"@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
"@language": "ar",
"@direction": "rtl"
}
많은 시스템이 텍스트 문자열의 첫 번째 문자를 사용하여 기본 방향을 결정하기 때문에, 언어와 방향을 명시적으로 표현하지 않으면 위 텍스트는 왼쪽에서 오른쪽 방향으로 잘못 렌더링될 가능성이 높습니다.
여러 언어 값 객체는 속성의 배열 값으로 제공할 수 있습니다:
"title": [
{
"@value": "HTML과 CSS: 웹사이트 설계 및 제작",
"@language": "en"
},
{
"@value": "HTML و CSS: تصميم و إنشاء مواقع الويب",
"@language": "ar",
"@direction": "rtl"
}
]
작성자는 값의 배열에서 텍스트 문자열과 언어 값 객체를 함께 사용할 수도 있습니다:
"title": [ "Příklad názvu knihy", { "@value": "책 제목의 예", "@language": "en" } ]
각 자연어 문자열 속성 값의 언어 및 기본 방향은 각 속성
값에 대한 언어 값 객체를 통해서나, 전체
자격 증명의 모든 값에 대한 기본 언어 및 기본 방향을 통해 제공하는 것이 좋습니다. 값별 언어 값 객체를 사용하는 것이 권장됩니다.
문서 기본값을 사용하면 후속 처리기가
원래는 선택 사항인 JSON-LD 확장 기반 변환을 수행해야 할 수 있기 때문입니다. 자세한 내용은
[JSON-LD11] 사양의
문자열 국제화 섹션을 참조하십시오.
연결된 언어가 없는 자연어 문자열 값은 언어 값이
undefined
(언어 태그 "und")인 것처럼 처리하는 것이 좋습니다. 연결된 기본
방향이 없는 자연어 문자열 값은 방향 값이
"auto"인 것처럼 처리하는 것이 좋습니다.
이 절은 비규범적입니다.
이 절에서는 보안 고려 사항과 개인정보 보호 고려 사항을 포함하여 이 사양의 일반적인 위협 모델을 자세히 설명합니다. 각 위협과 그 대응에 대한 전체 분석은 검증 가능한 자격 증명 데이터 모델 위협 모델에서 제공합니다. 구현자는 이 사양이 제공하는 각각의 구체적인 기능에 해당 문서의 조언을 적용해야 합니다.
rdf:HTML 값의 마크업처럼 삽입 가능한 코드를 포함한 값을 전달하며, 콘텐츠를 적절히 처리하지 않고
렌더링하는 소비자가 해당 코드를 실행하게 됩니다.
이 절은 비규범적입니다.
이 절에서는 검증 가능한 자격 증명 데이터 모델을 프로덕션 환경에 배포할 때의 일반적인 개인정보 보호 고려 사항과 구체적인 개인정보 보호 영향을 자세히 설명합니다. 위에서 요약한 개인정보 보호 위협과 각 위협에 대한 대응의 전체 분석은 검증 가능한 자격 증명 데이터 모델 위협 모델에서 제공합니다.
이 절은 비규범적입니다.
개인정보 보호에는 가명 상태부터 신원이 명확히 식별된 상태까지 이어지는 스펙트럼이 있음을 인식하는 것이 중요합니다. 사용 사례에 따라 사람마다 자신이 제공할 의향이 있는 정보와 그 정보에서 도출될 수 있는 정보를 어느 정도까지 허용할 수 있는지가 다릅니다.
개인정보 보호 솔루션은 사용 사례에 따라 달라집니다. 예를 들어 주류 구매 시 규정에서 요구하는 사항은 구매자가 특정 연령을 넘었는지 확인하는 것뿐이므로, 많은 사람은 익명으로 남기를 원할 것입니다. 반면 의료 전문가가 환자에게 작성한 처방전을 조제할 때 약국은 처방자와 환자 모두의 신원을 더 확실하게 식별해야 할 법적 의무가 있습니다. 모든 사용 사례에 적합한 단 하나의 개인정보 보호 접근 방식은 없습니다.
주류를 구매할 때 익명으로 남고 싶은 사람도 판매자에게 충분한 확신을 주기 위해 사진이 있는 신분증을 제시해야 할 수 있습니다. 판매자는 이름이나 특정 연령을 넘었다는 사실 이외의 세부 정보를 알 필요가 없을 수 있지만, 단순한 연령 증명만으로는 규정을 충족하기에 충분하지 않은 경우가 많습니다.
검증 가능한 자격 증명 데이터 모델은 개인정보 보호 스펙트럼 전체를 지원하고자 하며, 특정 거래에 적합한 익명성 수준에 대해 철학적 입장을 취하지 않습니다. 개인정보 보호에 적대적인 특정 시나리오를 피하려는 구현자는 검증 가능한 자격 증명 데이터 모델 위협 모델에 문서화된 개인정보 보호 위협과 대응을 지침으로 삼을 수 있습니다.
이 절은 비규범적입니다.
소지자 자격 증명은 콘서트 티켓과 같이 개인정보 보호를 강화하는 정보로서, 그 보유자에게 특정 리소스를 이용할 권리를 부여하면서도 보유자가 민감한 정보를 공개하도록 요구하지 않습니다. 위험이 낮은 시나리오에서 엔터티는 여러 보유자가 동일한 검증 가능한 자격 증명을 제시하는 것이 문제가 되지 않거나 큰 경제적 손실 또는 평판 손실을 초래하지 않는 경우 소지자 자격 증명을 자주 사용합니다.
무기명 자격 증명인 검증 가능한 자격 증명은
credentialSubject 속성 안에 중첩된
id 속성으로 표현되는 주체 식별자를 지정하지 않음으로써
가능해집니다. 예를 들어, 다음
검증 가능한 자격 증명은 무기명 자격
증명입니다:
{
"@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": "이학 및 문학 학사"
}
}
}
{
"@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"
}
}
{
"@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"
}
}
{
"@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
{
"@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
{
"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"
]
}
SHA-256 해시: IJ3nyp2H5dI1xGG05GjS8bT-NPRlwhqJebRZ8us5faQ
공개 정보: WyI2eFFWYXRFRnkxaklWV0tGcnRLbnJBIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvdGVtcG9yYXJ5LzI4OTM0NzkyMzg3NDkyMzg0Il0
내용: [
"6xQVatEFy1jIVWKFrtKnrA",
"id",
"http://university.example/credentials/temporary/28934792387492384"
]
SHA-256 해시: wDGrmE03I9hS9tdWjf2CNZl0ApUQ8_iHQzYJptmstzw
공개 정보: WyJGbzdoaU1zVWpKN3pmSGJQTHFzY3lBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIl1d
내용: [
"Fo7hiMsUjJ7zfHbPLqscyA",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential"
]
]
SHA-256 해시: AG8ugSXvw2RGxuWjgLmXnI1X1Bgw8SzYNy7N2Z_aWs4
공개 정보: WyJYZWIyQnpwUG5GSEdjajdfdl85M0xBIiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"Xeb2BzpPnFHGcj7_v_93LA",
"type",
"ExampleBachelorDegree"
]
무기명 자격 증명은 개인정보 보호를 강화하지만, 발급자는 여전히 무기명 자격 증명의 보유자가 예상하는 것보다 더 많은 정보를 의도치 않게 공개하지 않도록 설계에 주의를 기울여야 합니다. 무기명 자격 증명의 설계 및 재사용으로 인해 발생하는 상관관계 위험과 이에 대한 대응은 검증 가능한 자격 증명 데이터 모델 위협 모델의 무기명 자격 증명 재사용 및 상관관계에 설명되어 있습니다.
이 절은 비규범적입니다.
이상적인 비공개 브라우징 시나리오에서는 개인 식별 정보(PII)가 전혀 공개되지 않습니다. 많은 자격 증명에 PII가 포함되므로, 보유자에게 소프트웨어를 제공하는 조직은 비공개 브라우징 모드에서 자격 증명과 프레젠테이션을 사용할 경우 이 정보가 공개될 수 있음을 경고해야 합니다. 브라우저 공급업체마다 비공개 브라우징을 다르게 처리하고 일부 브라우저에는 이 기능이 없을 수도 있으므로, 구현자는 개인정보 보호를 제공하기 위해 비공개 브라우징 모드에 의존해서는 안 됩니다. 대신 소프트웨어가 직접 사용할 수 있고 개인정보 보호를 보장하는 도구에 의존하는 것이 좋습니다.
이 절은 비규범적입니다.
W3C는 전체론적인 위협 모델링 접근 방식으로 전환하고 있으며, 새로운 사양에서 보안 고려 사항 절을 폐기하는 과정에 있습니다. 보안 고려 사항 관련 문서는 부록 A. 위협 모델을 참조하십시오.
이 절은 비규범적입니다.
이 사양에서는 유효성 검사, 즉 검증 가능한 자격 증명이나 검증 가능한 프레젠테이션의 유효성 검사 과정에 대한 적합성 기준을 제공하지 않습니다. 그러나 독자는 이 데이터 모델의 정보가 검증자의 유효성 검사 과정에서 어떻게 사용될 것으로 예상되는지 궁금할 수 있습니다. 이 절에서는 이 사양의 속성을 검증자가 사용할 것으로 예상되는 방식에 관해 작업 그룹에서 나눈 논의 중 일부를 정리합니다.
이 절은 비규범적입니다.
검증자가 보유자에게 하나 이상의 검증 가능한 자격 증명을 요청할 때, 받고자 하는 자격 증명의 유형을 지정할 수 있습니다. 자격 증명 유형과 각 유형 및 해당 유형의 각 클레임에 대한 검증 스키마는 사양 작성자가 정의하며 검증 가능한 자격 증명 확장과 같은 곳에 게시됩니다.
자격 증명의 유형은 type
속성을 통해 표현됩니다. 특정 유형의 검증 가능한 자격 증명에는
속성(깊게 중첩될 수도 있음)이 포함되며, 이를 사용하여
검증자가 실행하는 일련의 처리 규칙을
프레젠테이션이 충족하는지 여부를 판단할 수 있습니다.
특정 type의 검증 가능한 자격 증명을 요청함으로써,
검증자는 보유자로부터 특정 정보를 수집할 수 있으며, 이 정보는 각 검증 가능한 자격 증명의 발급자에게서 비롯된 것으로, 검증자가 보유자와의 상호작용에서 다음 단계를 결정할 수 있게 합니다.
검증자가 특정 유형의 검증 가능한 자격 증명을 요청할 때, 해당 유형과 관련된 필수 및 선택적 클레임 집합이 있습니다. 필수 클레임이 포함되지 않은 경우 검증자의 검증 가능한 자격 증명 검증은 실패하며, 특정 유형과 관련되지 않은 모든 클레임은 무시됩니다. 다시 말해, 검증자는 수신한 검증 가능한 자격 증명에 대해 입력 검증을 수행하고, 자격 증명 유형 사양에 따라 잘못된 형식의 입력을 거부합니다.
이 절은 비규범적입니다.
보유자가 제시한 검증
가능한 자격 증명에서 각
credentialSubject의 id 속성과
연결된 값은 검증자에게
주체를 식별합니다. 보유자가 주체이기도 한 경우,
검증자는 보유자와 관련된 검증
메타데이터를 가지고 있다면 보유자를 인증할 수 있습니다. 그러면 검증자는
검증 가능한 프레젠테이션에 포함된 보유자가 생성한 서명을 사용하여
보유자를 인증할 수 있습니다. id 속성은 선택 사항입니다. 검증자는
검증 가능한 자격 증명의 다른 속성을 사용하여
주체를 고유하게 식별할 수도 있습니다.
인증 및 WebAuthn이 검증 가능한 자격 증명과 어떻게 함께 작동할 수 있는지에 대한 정보는 검증 가능한 자격 증명 구현 지침 1.0 문서를 참조하십시오.
이 절은 비규범적입니다.
issuer 속성과 연결된 값은 발급자를
검증자에게 식별합니다.
issuer 속성과 관련된 메타데이터는 검증자가
검증 알고리즘, 즉 7.1 검증절에
정의된 알고리즘을 통해 이용할 수 있습니다. 이 메타데이터에는 보호 메커니즘이 각
검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션을 보호하는 데 사용한 검증 방법의
검증된 제어자 식별 정보가 포함됩니다. 제어자는 일반적으로 각각의 issuer 또는 holder입니다.
일부 생태계에서는 발급자와 검증 방법 제어자 사이에 더 복잡한 관계가 존재할 수 있으며, 위에서 설명한 매핑과 함께 또는 그 대신 검증된 발급자 목록을 사용할 수도 있습니다.
이 절은 비규범적입니다.
holder 속성과 연결된 값은
보유자를 검증자에게 식별하는 데 사용됩니다.
흔히 holder 속성의 값으로 식별되는 보유자에 관한 관련 메타데이터를
검증자가 이용하거나 검색할 수 있는 경우가 많습니다. 예를 들어, 보유자는
검증 가능한 프레젠테이션을 보호하는 데 사용되는
검증 자료가 포함된 정보를 게시할 수 있습니다. 이
메타데이터는 검증 가능한 프레젠테이션의 증명을 확인할 때 사용됩니다.
일부 암호화 식별자는 필요한 모든 메타데이터를 식별자
자체에 포함합니다. 이러한 경우에는 추가 메타데이터가 필요하지 않습니다. 다른 식별자는
이러한 메타데이터가 검증자가 사용할 수 있도록 자동으로 게시되는 검증 가능한 데이터 레지스트리를
사용하며, 보유자가 추가 작업을 수행할 필요가 없습니다.
검증 가능한 자격 증명 구현 지침 1.0 및 검증 가능한 자격 증명 사용 사례에서 주체와 보유자와 관련된 추가 예제를 참조하십시오.
유효성 검사는 검증자가 특정 검증 가능한 자격 증명 사용의 적절성을 평가하기 위해 비즈니스 규칙을 적용하는 과정입니다.
검증자는 주어진 검증 가능한 프레젠테이션을 복잡한 비즈니스 규칙에 따라 유효성 검사해야 할 수도 있습니다. 예를 들어, 검증자는 보유자가 검증 가능한 자격 증명의 주체와 동일한 엔터티라는 확신이 필요할 수 있습니다. 이러한 상황에서는 다음 요소를 통해 검증자가 포함된 검증 가능한 자격 증명에서 해당 식별자에 관해 표현된 클레임이 실제로 현재 제시자에 관한 것이라는 합리적인 확신을 얻을 수 있습니다:
holder 속성에 있는 식별자와
credentialSubject 배열에 있는 하나 이상의 객체 중 하나 이상의 식별자 속성이
동일합니다.
이 절은 비규범적입니다.
validFrom은 검증자가 예상하는 범위 안에 있어야 합니다. 예를 들어
검증자는 검증
가능한 자격 증명의 유효 기간 시작 시점이 미래가 아닌지 확인할 수 있습니다.
이 절은 비규범적입니다.
검증 가능한 자격 증명 또는 검증 가능한 프레젠테이션의 정보가 변조되지 않았음을 입증하는 데 사용하는 보호 메커니즘을 암호학적 증명이라고 합니다. 암호학적 증명에는 디지털 서명과 영지식 증명을 비롯해 여러 유형이 있습니다. 일반적으로 암호학적 증명을 검증할 때 구현은 다음 사항을 확인해야 합니다.
일반적으로 디지털 서명을 검증할 때 구현은 다음 사항을 확인해야 합니다.
이 절은 비규범적입니다.
검증자는 validFrom 및 validUntil 속성이
일정한 범위 안에 있을 것으로 예상합니다. 예를 들어 검증자는
검증 가능한 자격 증명의 유효 기간 종료 시점이 과거가 아닌지 확인할 수 있습니다.
일부 자격 증명은 원래 유효 기간이 만료된 뒤에도 부차적인 목적으로 유용할 수 있으므로,
validFrom 및 validUntil 속성으로 표현되는 유효 기간은 항상 검증 후에 수행되는
유효성 검사의 구성 요소로 간주합니다.
이 절은 비규범적입니다.
credentialStatus 속성을 사용할 수 있는 경우,
검증 가능한 자격 증명의 상태는
검증자가
검증 가능한 자격 증명에 대한
credentialStatus 유형 정의와
검증자 자체의 상태 평가
기준에 따라 평가할 것으로 예상됩니다. 예를 들어, 검증자는
검증 가능한 자격 증명의 상태가 "발급자가 사유로 인해 철회함"이 아님을 확인할 수 있습니다.
이 절은 비규범적입니다.
credentialSchema 속성을 사용할 수 있는 경우,
검증 가능한 자격 증명의 스키마는
검증자가
검증 가능한 자격 증명에 대한
credentialSchema 유형 정의와
검증자 자체의 스키마 평가
기준에 따라 평가할 것으로 예상됩니다. 예를 들어, credentialSchema의 type
값이 [VC-JSON-SCHEMA]인 경우, 검증자는 자격 증명의
데이터가 주어진 JSON 스키마에 대해 유효한지 확인할 수 있습니다.
이 절은 비규범적입니다.
목적 적합성은
검증 가능한 자격 증명의 사용자 지정 속성이
검증자의 목적에 적합한지 여부에 관한 것입니다.
예를 들어, 검증자가 주체가
21세를 초과했는지 판단해야 하는 경우, 특정 birthdate
속성이나 ageOver와 같은 더 추상적인 속성에
의존할 수 있습니다.
발급자는 해당 클레임을 하는 데 있어 검증자의 신뢰를 받습니다. 예를 들어, 프랜차이즈 패스트푸드 매장은 해당 프랜차이즈의 본사가 제시한 할인 쿠폰 클레임을 신뢰합니다. 발급자가 검증 가능한 자격 증명에 표현한 정책 정보는, 정책을 무시하는 데 따른 책임을 감수하지 않는 한 보유자와 검증자가 존중해야 합니다.
이 절은 비규범적입니다.
오늘날 일반적으로 "인공지능" 및/또는 "기계 학습"이라고 불리는 것을 사용하는 시스템은 복잡한 작업을 인간의 수행 수준에 도달하거나 이를 능가하는 수준으로 수행할 수 있습니다. 여기에는 검증 가능한 자격 증명의 획득 및 사용과 같은 작업이 포함될 수 있습니다. 이러한 작업을 사용하여 오늘날 일반적으로 CAPTCHA를 통해 수행하는 것처럼 인간과 자동화된 "봇" 활동을 구분하는 방식은, 예를 들어 더 이상 충분하거나 허용 가능한 보호를 제공하지 못할 수 있습니다.
검증 가능한 자격 증명을 사용하는 보안 아키텍처를 구현하거나 그 콘텐츠에 대해 유효성 검사를 수행하는 구현자는, 오늘날 일반적으로 "인공지능"이라고 불리는 것과 같은 기계 기반 행위자가 존재하며, 이들이 다른 시스템과의 상호작용에 사용하기 위해 합법적으로 검증 가능한 자격 증명을 보유할 수 있다는 점을 고려할 것을 권고합니다. 구현자는 또한 위협 행위자가 이러한 "인공지능" 시스템과 검증 가능한 자격 증명을 결합하여 자신의 시스템과 상호작용할 때 인간인 것처럼 가장할 수 있는 방법도 고려할 수 있습니다. 이러한 시스템에는 소셜 미디어, 선거, 에너지 분배, 공급 망 및 자율주행 차량 시스템과 같은 글로벌 인프라가 포함될 수 있으나 이에 국한되지는 않습니다.
구현은 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 캐시 시간은 무한대로 설정되지 않으며, 암호화 해시 값 변경이 감지되면 구현자는 정오표를 확인할 것을 권고합니다.
이 섹션은 검증 가능한 자격 증명과 검증 가능한 프레젠테이션을 검증할 때, 검증자가 발급자 또는 보유자가 자격 증명 또는 프레젠테이션을 보호할 때 가지고 있던 정보와 일치하는 정보를 갖도록 보장하는 것이 중요함을 상기시키기 위한 것입니다. 이 정보에는 적어도 다음이 포함될 수 있습니다:
검증자는 URL을 통해 연결된 리소스와 같이 자격 증명 내부에서 참조되는 다른 데이터가 기본적으로 암호화 방식으로 보호되지 않는다는 점에 유의해야 합니다. 영구적으로 캐시된 파일 및/또는 암호화 해시를 사용하여 검증 가능한 자격 증명의 보안에 중요한 모든 URL에 동일한 종류의 보호가 제공되도록 하는 것이 모범 사례로 간주됩니다. 궁극적으로 연결된 모든 외부 콘텐츠의 암호화 다이제스트를 알고 있으면 검증자가 해당 콘텐츠가 발급자 또는 보유자가 의도한 것과 동일한지 확인할 수 있습니다.
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의 어휘 용어는 수년 동안 안정적이었으며
의미가 변경될 가능성이 매우 낮다고 결론지었습니다.
이 사양에서는 이러한 정의를 활용하는 프로세서와 다른 사양을 위해 다음 기본 클래스를 정의합니다:
| 기본 클래스 | 목적 |
|---|---|
CredentialEvidence
|
evidence 속성에 배치되는 특정 증거 유형의 상위 클래스 역할을 합니다. |
CredentialSchema
|
credentialSchema 속성에 배치되는 특정 스키마 유형의 상위 클래스 역할을 합니다. |
CredentialStatus
|
credentialStatus 속성에 배치되는 특정 자격 증명 상태 유형의 상위 클래스 역할을 합니다. |
ConfidenceMethod
|
confidenceMethod 속성에 배치되는 특정 신뢰도 방법 유형의 상위 클래스 역할을 합니다.
|
RefreshService
|
credentialRefresh 속성에 배치되는 특정 갱신 서비스 유형의 상위 클래스 역할을 합니다. |
RenderMethod
|
renderMethod 속성에 배치되는 특정 렌더링 방법 유형의 상위 클래스 역할을 합니다.
|
TermsOfUse
|
termsOfUse 속성에 배치되는 특정 이용 약관 유형의 상위 클래스 역할을 합니다. |
이 절에서는 이 사양에서 사용하는 데이터 유형을 정의합니다.
sriString 데이터 유형은 하위 리소스 무결성 사양에 명시된 방법을 사용해
리소스의 무결성 정보를 제공하기 위해 값과 연결됩니다. sriString 데이터 유형은 다음과 같이 정의합니다:
https://www.w3.org/2018/credentials#sriStringintegrity 속성을 정의하며 [SRI]
사양에 명시되어 있습니다.
이 절은 비규범적입니다.
검증 가능한 자격 증명 및 검증 가능한 프레젠테이션 데이터 모델은
[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 속성을
함께 사용하면, 생성자와 소비자 모두
검증 가능한 자격 증명
및 검증 가능한 프레젠테이션의 예상 내용과 데이터 유형에 대해 더 큰 확신을 가질 수 있습니다.
이 절은 비규범적입니다.
이 절은 검토와 승인 및 IANA 등록을 위해 인터넷 엔지니어링 운영 그룹 (IESG)에 제출됩니다.
이 사양은 검증 가능한 자격 증명 형식을 준수하는 문서를 식별하기 위해 특별히
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
참조)는 무시됩니다.
이 사양은 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] 참조) 무시됩니다.
이 절은 비규범적입니다.
그림
14는 그림
9의 변형입니다. 여기서는
검증 가능한 프레젠테이션이 두 개의 검증 가능한
자격 증명을 참조하고,
내장 증명을 사용합니다. 이 증명은 [VC-DATA-INTEGRITY]에 기반합니다. 각 검증 가능한 자격 증명 그래프는 자체적으로 분리된
증명 그래프에 연결됩니다. verifiableCredential 속성은 검증 가능한 프레젠테이션을 검증 가능한 자격 증명 그래프에 연결하는 데 사용됩니다. 프레젠테이션
증명 그래프는 검증 가능한 프레젠테이션 그래프, 두 검증 가능한 자격 증명 그래프, 그리고 증명 그래프의 디지털 서명을 나타냅니다. 이 증명 그래프들은 검증 가능한 자격 증명 그래프에서 연결됩니다. 이 경우 완전한
검증 가능한 프레젠테이션은 여섯 개의 정보
그래프로 구성됩니다.
아래
그림
15에 표시된
검증 가능한 프레젠테이션은 그림
14와 동일하지만,
포괄 증명을 사용합니다. 이 증명은 [VC-JOSE-COSE]에 기반합니다.
각 검증 가능한 자격 증명 그래프에는 하나의
EnvelopedVerifiableCredential
인스턴스가 포함됩니다. 이 인스턴스는 data: URL [RFC2397]을 통해
포괄 증명으로 보호된 검증 가능한 자격 증명을 참조합니다.
이 절에는 이 사양에 그동안 적용된 실질적인 변경 사항이 포함되어 있습니다.
다음 v2.0 두 번째 후보 권고안 이후의 변경 사항:
다음 v2.0 첫 번째 후보 권고안 이후의 변경 사항:
@vocab을 제거하고 애플리케이션별 컨텍스트 파일에서의 사용에 관한 경고를 추가함.
application/vc 및 application/vp 미디어 유형을 확정함.
다음 v1.1 권고안 이후의 변경 사항:
proof 관련 설명을 제거함.
issuer 속성에 허용되는 값을 세부 조정함.
name 및 description 속성 지원을 추가함.
dateTimeStamp가 사용되도록 함. 시간 값과 시간대를 올바르게 사용하는 방법에 관한 추가 지침을 제공함.
validFrom을 선택 사항으로 변경함.
relatedResource 기능을 추가함.
renderMethod와 confidenceMethod를 추가함.
termsOfUse를 추가함.
application/vc 및 application/vp 미디어 유형을 추가함.
issuanceDate/expirationDate의 이름을
validFrom/validUntil로 변경함.
credentialSubject 값은 문자열일 수 없음을 명확히 함.
다음 v1.0 권고안 이후의 변경 사항:
id 속성에서 허용하도록 요구 사항을 완화함.
해당 속성은 credentialStatus 및 refreshService 절에 있음.
issuer, issuanceDate, credentialStatus, 날짜,
끊어진 링크 및 사소한 구문 오류와 관련된 편집상의 버그를 수정함.
이 절은 비규범적입니다.
작업 그룹은 다음 분들의 문서 콘텐츠에 대한 기여뿐 아니라, 다양한 의견 속에서 변화와 논의 및 합의를 이끌어 낸 이 표준 커뮤니티에서의 헌신적인 노력에도 감사를 표합니다: 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.
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: