다음도 참조 번역.
Copyright © 2025 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
이 명세는 검증 가능한 자격 증명 데이터 모델 [VC-DATA-MODEL-2.0]을 준수하는 자격 증명 및 프레젠테이션을 JSON Object Signing and Encryption (JOSE), JWT를 위한 선택적 공개 [SD-JWT], 그리고 CBOR Object Signing and Encryption (COSE) [RFC9052]으로 보호하는 방법을 정의한다. 이를 통해 검증 가능한 자격 증명 데이터 모델 [VC-DATA-MODEL-2.0]을 널리 채택된 서명 및 암호화 표준으로 구현할 수 있다.
이 절은 이 문서가 공개된 시점의 상태를 설명한다. 현재 W3C 공개 문서 목록과 이 기술 보고서의 최신 개정판은 https://www.w3.org/TR/의 W3C 표준 및 초안 색인에서 확인할 수 있다.
작업 그룹은 이 명세에 대한 구현 피드백을 적극적으로 구하고 있다. 후보 권고안 단계를 종료하기 위해, 작업 그룹은 명세의 각 필수 기능마다 최소 두 개의 독립적인 구현이 필요하다는 요구사항을 설정했다. 적합성 테스트 프로세스에 대한 자세한 내용은 구현 보고서에 나열된 테스트 스위트를 참조하라.
이 문서는 검증 가능한 자격 증명 작업 그룹이 권고안 트랙을 사용하여 권고안으로 공개했다.
W3C는 이 명세를 웹의 표준으로 널리 배포할 것을 권장한다.
W3C 권고안은 광범위한 합의 형성 이후 W3C와 그 회원들의 승인을 받았으며, 구현에 대해 작업 그룹 구성원들의 로열티 없는 라이선스 약속을 보유한 명세이다.
이 문서는 W3C 특허 정책에 따라 운영되는 그룹에 의해 작성되었다. W3C는 해당 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지한다. 해당 페이지에는 특허 공개 지침도 포함되어 있다. 개인이 해당 개인이 필수 청구항을 포함한다고 믿는 특허에 대해 실제 지식을 가지고 있는 경우, W3C 특허 정책 제6절에 따라 그 정보를 공개해야 한다.
이 문서는 2023년 11월 3일 W3C 프로세스 문서의 적용을 받는다.
이 명세는 [VC-DATA-MODEL-2.0]에 설명된 검증 가능한 자격 증명 및 검증 가능한 프레젠테이션을 표현하는 미디어 유형을 IETF의 JOSE, OAuth 및 COSE 작업 그룹에서 정의한 접근 방식을 사용하여 보호하는 방법을 정의한다. 여기에는 JSON Web Signature (JWS) [RFC7515], JWT를 위한 선택적 공개 [SD-JWT], 그리고 CBOR Object Signing and Encryption (COSE) [RFC9052]가 포함된다. 이 명세는 콘텐츠 유형 [RFC6838]을 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 보호되지 않은 문서의 데이터 유형과 [VC-DATA-MODEL-2.0]을 준수하는 보호된 문서의 데이터 유형을 구분한다.
JSON Web Signature (JWS) [RFC7515]는 JSON 기반 데이터 구조를 사용하여 JSON 문서를 포함한 문서에 디지털 서명을 하는 표준 수단을 정의한다. 이는 문서에 포함된 정보의 무결성, 진정성 및 부인 방지를 보장하는 수단을 제공한다. Selective Disclosure for JWTs (SD-JWT) [SD-JWT]는 JWS를 기반으로 하며, 문서 요소의 선택적 공개를 가능하게 하는 메커니즘도 제공한다. 이러한 특성은 JWS와 SD-JWT를 [VC-DATA-MODEL-2.0]을 준수하는 문서를 보호하는 데 특히 적합하게 만든다.
CBOR Object Signing and Encryption (COSE) [RFC9052]은 Concise Binary Object Representation (CBOR) [RFC8949]을 사용하여 디지털 서명된 데이터 구조를 표현하는 표준 수단을 정의한다. JWS와 마찬가지로, COSE는 정보의 무결성, 진정성 및 기밀성을 보호하는 표준화된 방법을 제공한다. 이는 유연하고 확장 가능한 암호화 옵션 집합을 제공하여, 서명 및 암호화에 광범위한 알고리즘을 사용할 수 있게 한다.
COSE는 두 가지 주요 작업, 즉 서명과 암호화를 지원한다. 서명의 경우, COSE는 RSA, ECDSA, EdDSA와 같은 다양한 알고리즘을 사용하여 CBOR 데이터에 대한 디지털 서명을 생성할 수 있게 한다. 이러한 서명은 데이터 무결성과 진정성에 대한 보증을 제공한다. COSE는 또한 암호화를 지원하여, 대칭 또는 비대칭 암호화 알고리즘으로 CBOR 데이터를 암호화함으로써 그 기밀성을 가능하게 한다.
비규범으로 표시된 절뿐만 아니라, 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고 사항은 비규범이다. 이 명세의 그 밖의 모든 것은 규범이다.
이 문서에서 핵심 단어 MAY, MUST, MUST NOT, NOT RECOMMENDED, RECOMMENDED, SHOULD, 그리고 SHOULD NOT은 여기에 표시된 것처럼 모두 대문자로 나타날 때, 그리고 오직 그 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 한다.
적합한 JWS 문서는 3.1 JOSE 사용 절의 모든 "MUST" 문을 준수하는 문서이다.
적합한 JWS 발급자 구현은 적합한 JWS 문서를 생성하고, 이를 3.1 JOSE 사용 절에 설명된 대로 MUST 보호해야 한다.
적합한 JWS 검증자 구현은 적합한 JWS 문서를 3.1 JOSE 사용 절에 설명된 대로 검증한다.
적합한 SD-JWT 문서는 3.2 SD-JWT 사용 절의 모든 "MUST" 문을 준수하는 문서이다.
적합한 SD-JWT 발급자 구현은 적합한 SD-JWT 문서를 생성하고, 이를 3.2 SD-JWT 사용 절에 설명된 대로 MUST 보호해야 한다.
적합한 SD-JWT 검증자 구현은 적합한 SD-JWT 문서를 3.2 SD-JWT 사용 절에 설명된 대로 검증한다.
적합한 COSE 문서는 3.3 COSE 사용 절의 모든 "MUST" 문을 준수하는 문서이다.
적합한 COSE 발급자 구현은 적합한 COSE 문서를 생성하고, 이를 3.3 COSE 사용 절에 설명된 대로 MUST 보호해야 한다.
적합한 COSE 검증자 구현은 적합한 COSE 문서를 3.3 COSE 사용 절에 설명된 대로 검증한다.
검증 가능한
자격 증명 데이터 모델 v2.0은
enveloping proof를 적용하여 JSON 및 CBOR 클레임을 보호하는
이 명세의 접근 방식을 설명한다.
이 명세는 다양한 enveloping proof 메커니즘을 사용하여
서로 다른 데이터 구조를 보호하는 방법을 정의한다.
검증 가능한 자격 증명의 맥락에서는 다음과 같다.
모든 경우에, 검증 가능한 자격 증명 또는 프레젠테이션의 기본 데이터 모델은 [VC-DATA-MODEL-2.0]과 일관되게 유지되지만, 인코딩 및 보안 메커니즘은 서로 다르다.
보호 메커니즘의 규범 문은
application/vc+jwt 및
application/vp+jwt,
application/vc+sd-jwt 및
application/vp+sd-jwt,
application/vc+cose 및
application/vp+cose를 보호하는 데 적용된다.
JSON Web Token 구현자는 구현 요구사항을 검토할 것을 권고한다.
JWT의 발급자, 보유자 및 검증자는
[VC-DATA-MODEL-2.0]을 보호하기 위해
JSON Web Token을 사용할 때
"alg": "none"이라는 JSON Web Token 헤더 매개변수 설정의 영향을
MUST 이해해야 한다.
[VC-DATA-MODEL-2.0]의
콘텐츠 유형이 JSON Web Token을 사용하여 보호되는 경우,
"alg": "none"이라는 헤더 매개변수 설정은
JWT Claims Set으로 인코딩된 검증 가능한 자격 증명 또는
검증 가능한 프레젠테이션에 무결성 보호가 없다는 것을 전달하는 데 사용된다.
발급자, 보유자 및 검증자는 무결성 보호가 없는 모든 JWT Claims Set을 MUST 무시해야 한다.
JWT Claim Names vc 및 vp는
검증 가능한 자격 증명 또는 검증 가능한
프레젠테이션을 구성하는 어떤 JWT Claims Set에도
MUST NOT 존재해서는 안 된다.
이 명세는 IETF 초안 [SD-JWT]에 정의된 Selective Disclosure for JWTs (SD-JWT)를 사용한다. 구현자는 SD-JWT 형식과 처리 요구사항의 전체 세부사항에 대해 이 초안을 참조하는 것이 SHOULD 한다.
이 절은 이 명세에서 사용되는 용어를 정의한다. 이러한 용어가 이 명세에 나타날 때마다 해당 용어에 대한 링크가 포함된다.
이 절은 JOSE, SD-JWT 및 COSE를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 문서를 보호하는 방법을 개괄한다.
[VC-DATA-MODEL-2.0]을 준수하는 문서와 그 관련 미디어 유형은 연결된 데이터를 설명하기 위한 확장 가능한 형식인 JSON-LD에 의존한다. 다음을 참조하라: JSON-LD와 RDF의 관계.
이 접근 방식의 이점은 페이로드를 매핑이나 변환 없이 [VC-DATA-MODEL-2.0]에 직접 부합하도록 만들 수 있는 동시에, JOSE, SD-JWT 및 COSE의 맥락에서 이해되는 등록된 헤더 매개변수와 클레임도 지원할 수 있다는 점이다.
미디어 유형을 사용하여 검증 가능한 자격 증명과 검증 가능한 프레젠테이션을 다른 종류의 보호된 JSON 또는 CBOR과 구분하는 것이 RECOMMENDED된다.
더 일반적인 미디어 유형(또는 상위 유형) 대신,
사용 가능한 가장 구체적인 미디어 유형(또는 하위 유형)을 SHOULD 사용해야 한다.
예를 들어, 일반적인 application/sd-jwt 대신
application/vc+sd-jwt를 SHOULD 사용해야 한다. 단, 보호된
봉투 형식을 더 잘 식별할 수 있는 더 구체적인 미디어 유형이 있는 경우는 예외이다.
구현이 어떤 미디어 유형을 사용할지 모르는 경우, 이 명세에 정의된 미디어 유형을 MUST 사용해야 한다.
이 절은 JOSE를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 검증 가능한 자격 증명을 보호하는 방법을 자세히 설명한다.
적합한 JWS 발급자 구현은 이 미디어 유형을 보호하기 위해 [RFC7515]를 MUST 사용해야 한다. 보호되지 않은 검증 가능한 자격 증명은 인코딩되지 않은 JWS 페이로드이다.
typ 헤더 매개변수는 vc+jwt여야 SHOULD 한다.
존재하는 경우, cty 헤더 매개변수는
vc여야 SHOULD 한다.
cty 헤더 매개변수 값은 vc+jwt를 사용할 때
서로 다른 유형의 보호된 콘텐츠를 구분하는 데 사용할 수 있다.
content type 헤더 매개변수는 선택 사항이며,
사용 가능한 경우 application/vc보다 더 구체적인 미디어 유형을
표현하는 데 사용할 수 있다.
typ 및 cty의 사용에 관한 추가 세부사항은
등록된 헤더 매개변수
이름을 참조하라.
적합한 JWS 검증자 구현은 이 미디어 유형을 사용하는 적합한 JWS 문서를 검증하기 위해 [RFC7515]를 MUST 사용해야 한다.
보안되지 않은 채널을 통해 전송할 때 보호된 검증 가능한 자격 증명을 암호화하려면, 구현자는 [RFC7516]의 JSON Web Encryption (JWE)을 사용할 MAY 있으며, 이는 [RFC7519]의 중첩 JWT 설명에 따라 보호된 검증 가능한 자격 증명을 JWE의 평문 페이로드로 중첩함으로써 수행한다.
{
"@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"
}]
}
{
"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",
"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"
}
]
}
application/vc+jwt
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
이 절은 JOSE를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 검증 가능한 프레젠테이션을 보호하는 방법을 자세히 설명한다.
적합한 JWS 발급자 구현은 이 미디어 유형을 보호하기 위해 [RFC7515]를 MUST 사용해야 한다. 보호되지 않은 검증 가능한 프레젠테이션은 인코딩되지 않은 JWS 페이로드이다.
typ 헤더 매개변수는 vp+jwt여야 SHOULD 한다.
존재하는 경우, cty 헤더 매개변수는
vp여야 SHOULD 한다.
cty 헤더 매개변수 값은 vp+jwt를 사용할 때
서로 다른 유형의 보호된 콘텐츠를 구분하는 데 사용할 수 있다.
content type 헤더 매개변수는 선택 사항이며,
사용 가능한 경우 application/vc보다 더 구체적인 미디어 유형을
표현하는 데 사용할 수 있다.
typ 및 cty의 사용에 관한 추가 세부사항은
등록된 헤더 매개변수
이름을 참조하라.
적합한 JWS 검증자 구현은 이 미디어 유형을 사용하는 적합한 JWS 문서를 검증하기 위해 [RFC7515]를 MUST 사용해야 한다.
검증 가능한 프레젠테이션에서 보호되는 검증 가능한 자격 증명은 [VC-DATA-MODEL-2.0]에서 정의한 Enveloped Verifiable Credential 유형을 MUST 사용해야 한다.
검증 가능한 프레젠테이션 안의 검증 가능한 프레젠테이션은 [VC-DATA-MODEL-2.0]에서 정의한 Enveloped Verifiable Presentation 유형을 MUST 사용해야 한다.
검증 가능한 프레젠테이션 안의 자격 증명은 MUST 보호되어야 한다. 이 경우, 이러한 자격 증명은 JWS를 사용하여 보호된다.
보안되지 않은 채널을 통해 전송할 때 보호된 검증 가능한 프레젠테이션을 암호화하려면, 구현자는 [RFC7516]의 JSON Web Encryption (JWE)을 사용할 MAY 있으며, 이는 [RFC7519]의 중첩 JWT 설명에 따라 보호된 검증 가능한 프레젠테이션을 JWE의 평문 페이로드로 중첩함으로써 수행한다.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [{
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["EnvelopedVerifiableCredential"],
"id": "data:application/vc+jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMzODQifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL2V4YW1wbGUub3JnL2V4YW1wbGVzL2RlZ3JlZS5qc29uIiwidHlwZSI6Ikpzb25TY2hlbWEifSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZToxMjMiLCJkZWdyZWUiOnsidHlwZSI6IkJhY2hlbG9yRGVncmVlIiwibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMifX19.d2k4O3FytQJf83kLh-HsXuPvh6yeOlhJELVo5TF71gu7elslQyOf2ZItAXrtbXF4Kz9WivNdztOayz4VUQ0Mwa8yCDZkP9B2pH-9S_tcAFxeoeJ6Z4XnFuL_DOfkR1fP"
}]
}
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
application/vp
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMzODQifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL2V4YW1wbGUub3JnL2V4YW1wbGVzL2RlZ3JlZS5qc29uIiwidHlwZSI6Ikpzb25TY2hlbWEifSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZToxMjMiLCJkZWdyZWUiOnsidHlwZSI6IkJhY2hlbG9yRGVncmVlIiwibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMifX19.d2k4O3FytQJf83kLh-HsXuPvh6yeOlhJELVo5TF71gu7elslQyOf2ZItAXrtbXF4Kz9WivNdztOayz4VUQ0Mwa8yCDZkP9B2pH-9S_tcAFxeoeJ6Z4XnFuL_DOfkR1fP;data:application/vc+jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMzODQifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaWQiOiJodHRwOi8vdW5pdmVyc2l0eS5leGFtcGxlL2NyZWRlbnRpYWxzLzE4NzIiLCJ0eXBlIjpbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwiRXhhbXBsZUFsdW1uaUNyZWRlbnRpYWwiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiaWQiOiJodHRwczovL2V4YW1wbGUub3JnL2V4YW1wbGVzL2RlZ3JlZS5qc29uIiwidHlwZSI6Ikpzb25TY2hlbWEifSwiY3JlZGVudGlhbFN1YmplY3QiOnsiaWQiOiJkaWQ6ZXhhbXBsZToxMjMiLCJkZWdyZWUiOnsidHlwZSI6IkJhY2hlbG9yRGVncmVlIiwibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMifX19.d2k4O3FytQJf83kLh-HsXuPvh6yeOlhJELVo5TF71gu7elslQyOf2ZItAXrtbXF4Kz9WivNdztOayz4VUQ0Mwa8yCDZkP9B2pH-9S_tcAFxeoeJ6Z4XnFuL_DOfkR1fP",
"type": "EnvelopedVerifiableCredential"
}
]
}
application/vp+jwt
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "EnvelopedVerifiablePresentation",
"id": "data:application/vp+jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwidHlwZSI6IlZlcmlmaWFibGVQcmVzZW50YXRpb24iLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6W3siQGNvbnRleHQiOiJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJpZCI6ImRhdGE6YXBwbGljYXRpb24vdmMrand0LGV5SnJhV1FpT2lKRmVFaHJRazFYT1dadFltdDJWakkyTm0xU2NIVlFNbk5WV1Y5T1gwVlhTVTR4YkdGd1ZYcFBPSEp2SWl3aVlXeG5Jam9pUlZNek9EUWlmUS5leUpBWTI5dWRHVjRkQ0k2V3lKb2RIUndjem92TDNkM2R5NTNNeTV2Y21jdmJuTXZZM0psWkdWdWRHbGhiSE12ZGpJaUxDSm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdlpYaGhiWEJzWlhNdmRqSWlYU3dpYVdRaU9pSm9kSFJ3T2k4dmRXNXBkbVZ5YzJsMGVTNWxlR0Z0Y0d4bEwyTnlaV1JsYm5ScFlXeHpMekU0TnpJaUxDSjBlWEJsSWpwYklsWmxjbWxtYVdGaWJHVkRjbVZrWlc1MGFXRnNJaXdpUlhoaGJYQnNaVUZzZFcxdWFVTnlaV1JsYm5ScFlXd2lYU3dpYVhOemRXVnlJam9pYUhSMGNITTZMeTkxYm1sMlpYSnphWFI1TG1WNFlXMXdiR1V2YVhOemRXVnljeTgxTmpVd05Ea2lMQ0oyWVd4cFpFWnliMjBpT2lJeU1ERXdMVEF4TFRBeFZERTVPakl6T2pJMFdpSXNJbU55WldSbGJuUnBZV3hUWTJobGJXRWlPbnNpYVdRaU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdWIzSm5MMlY0WVcxd2JHVnpMMlJsWjNKbFpTNXFjMjl1SWl3aWRIbHdaU0k2SWtwemIyNVRZMmhsYldFaWZTd2lZM0psWkdWdWRHbGhiRk4xWW1wbFkzUWlPbnNpYVdRaU9pSmthV1E2WlhoaGJYQnNaVG94TWpNaUxDSmtaV2R5WldVaU9uc2lkSGx3WlNJNklrSmhZMmhsYkc5eVJHVm5jbVZsSWl3aWJtRnRaU0k2SWtKaFkyaGxiRzl5SUc5bUlGTmphV1Z1WTJVZ1lXNWtJRUZ5ZEhNaWZYMTkuZDJrNE8zRnl0UUpmODNrTGgtSHNYdVB2aDZ5ZU9saEpFTFZvNVRGNzFndTdlbHNsUXlPZjJaSXRBWHJ0YlhGNEt6OVdpdk5kenRPYXl6NFZVUTBNd2E4eUNEWmtQOUIycEgtOVNfdGNBRnhlb2VKNlo0WG5GdUxfRE9ma1IxZlA7ZGF0YTphcHBsaWNhdGlvbi92Yytqd3QsZXlKcmFXUWlPaUpGZUVoclFrMVhPV1p0WW10MlZqSTJObTFTY0hWUU1uTlZXVjlPWDBWWFNVNHhiR0Z3VlhwUE9ISnZJaXdpWVd4bklqb2lSVk16T0RRaWZRLmV5SkFZMjl1ZEdWNGRDSTZXeUpvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2Ym5NdlkzSmxaR1Z1ZEdsaGJITXZkaklpTENKb2RIUndjem92TDNkM2R5NTNNeTV2Y21jdmJuTXZZM0psWkdWdWRHbGhiSE12WlhoaGJYQnNaWE12ZGpJaVhTd2lhV1FpT2lKb2RIUndPaTh2ZFc1cGRtVnljMmwwZVM1bGVHRnRjR3hsTDJOeVpXUmxiblJwWVd4ekx6RTROeklpTENKMGVYQmxJanBiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2lSWGhoYlhCc1pVRnNkVzF1YVVOeVpXUmxiblJwWVd3aVhTd2lhWE56ZFdWeUlqb2lhSFIwY0hNNkx5OTFibWwyWlhKemFYUjVMbVY0WVcxd2JHVXZhWE56ZFdWeWN5ODFOalV3TkRraUxDSjJZV3hwWkVaeWIyMGlPaUl5TURFd0xUQXhMVEF4VkRFNU9qSXpPakkwV2lJc0ltTnlaV1JsYm5ScFlXeFRZMmhsYldFaU9uc2lhV1FpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1YjNKbkwyVjRZVzF3YkdWekwyUmxaM0psWlM1cWMyOXVJaXdpZEhsd1pTSTZJa3B6YjI1VFkyaGxiV0VpZlN3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKa2FXUTZaWGhoYlhCc1pUb3hNak1pTENKa1pXZHlaV1VpT25zaWRIbHdaU0k2SWtKaFkyaGxiRzl5UkdWbmNtVmxJaXdpYm1GdFpTSTZJa0poWTJobGJHOXlJRzltSUZOamFXVnVZMlVnWVc1a0lFRnlkSE1pZlgxOS5kMms0TzNGeXRRSmY4M2tMaC1Ic1h1UHZoNnllT2xoSkVMVm81VEY3MWd1N2Vsc2xReU9mMlpJdEFYcnRiWEY0S3o5V2l2TmR6dE9heXo0VlVRME13YTh5Q0Raa1A5QjJwSC05U190Y0FGeGVvZUo2WjRYbkZ1TF9ET2ZrUjFmUCIsInR5cGUiOiJFbnZlbG9wZWRWZXJpZmlhYmxlQ3JlZGVudGlhbCJ9XX0.DiZfXw5jTXeDBobq5ZdcL3S3o8mioZJlqo3iHDtLcEww5L_n2ZJfAJU-a-SmqvMYM--7w4CmeOfq890UGsg_aQ"
}
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
application/vp
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "EnvelopedVerifiablePresentation",
"id": "data:application/vp+jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwidHlwZSI6IlZlcmlmaWFibGVQcmVzZW50YXRpb24iLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6W3siQGNvbnRleHQiOiJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJpZCI6ImRhdGE6YXBwbGljYXRpb24vdmMrand0LGV5SnJhV1FpT2lKRmVFaHJRazFYT1dadFltdDJWakkyTm0xU2NIVlFNbk5WV1Y5T1gwVlhTVTR4YkdGd1ZYcFBPSEp2SWl3aVlXeG5Jam9pUlZNek9EUWlmUS5leUpBWTI5dWRHVjRkQ0k2V3lKb2RIUndjem92TDNkM2R5NTNNeTV2Y21jdmJuTXZZM0psWkdWdWRHbGhiSE12ZGpJaUxDSm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdlpYaGhiWEJzWlhNdmRqSWlYU3dpYVdRaU9pSm9kSFJ3T2k4dmRXNXBkbVZ5YzJsMGVTNWxlR0Z0Y0d4bEwyTnlaV1JsYm5ScFlXeHpMekU0TnpJaUxDSjBlWEJsSWpwYklsWmxjbWxtYVdGaWJHVkRjbVZrWlc1MGFXRnNJaXdpUlhoaGJYQnNaVUZzZFcxdWFVTnlaV1JsYm5ScFlXd2lYU3dpYVhOemRXVnlJam9pYUhSMGNITTZMeTkxYm1sMlpYSnphWFI1TG1WNFlXMXdiR1V2YVhOemRXVnljeTgxTmpVd05Ea2lMQ0oyWVd4cFpFWnliMjBpT2lJeU1ERXdMVEF4TFRBeFZERTVPakl6T2pJMFdpSXNJbU55WldSbGJuUnBZV3hUWTJobGJXRWlPbnNpYVdRaU9pSm9kSFJ3Y3pvdkwyVjRZVzF3YkdVdWIzSm5MMlY0WVcxd2JHVnpMMlJsWjNKbFpTNXFjMjl1SWl3aWRIbHdaU0k2SWtwemIyNVRZMmhsYldFaWZTd2lZM0psWkdWdWRHbGhiRk4xWW1wbFkzUWlPbnNpYVdRaU9pSmthV1E2WlhoaGJYQnNaVG94TWpNaUxDSmtaV2R5WldVaU9uc2lkSGx3WlNJNklrSmhZMmhsYkc5eVJHVm5jbVZsSWl3aWJtRnRaU0k2SWtKaFkyaGxiRzl5SUc5bUlGTmphV1Z1WTJVZ1lXNWtJRUZ5ZEhNaWZYMTkuZDJrNE8zRnl0UUpmODNrTGgtSHNYdVB2aDZ5ZU9saEpFTFZvNVRGNzFndTdlbHNsUXlPZjJaSXRBWHJ0YlhGNEt6OVdpdk5kenRPYXl6NFZVUTBNd2E4eUNEWmtQOUIycEgtOVNfdGNBRnhlb2VKNlo0WG5GdUxfRE9ma1IxZlA7ZGF0YTphcHBsaWNhdGlvbi92Yytqd3QsZXlKcmFXUWlPaUpGZUVoclFrMVhPV1p0WW10MlZqSTJObTFTY0hWUU1uTlZXVjlPWDBWWFNVNHhiR0Z3VlhwUE9ISnZJaXdpWVd4bklqb2lSVk16T0RRaWZRLmV5SkFZMjl1ZEdWNGRDSTZXeUpvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2Ym5NdlkzSmxaR1Z1ZEdsaGJITXZkaklpTENKb2RIUndjem92TDNkM2R5NTNNeTV2Y21jdmJuTXZZM0psWkdWdWRHbGhiSE12WlhoaGJYQnNaWE12ZGpJaVhTd2lhV1FpT2lKb2RIUndPaTh2ZFc1cGRtVnljMmwwZVM1bGVHRnRjR3hsTDJOeVpXUmxiblJwWVd4ekx6RTROeklpTENKMGVYQmxJanBiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2lSWGhoYlhCc1pVRnNkVzF1YVVOeVpXUmxiblJwWVd3aVhTd2lhWE56ZFdWeUlqb2lhSFIwY0hNNkx5OTFibWwyWlhKemFYUjVMbVY0WVcxd2JHVXZhWE56ZFdWeWN5ODFOalV3TkRraUxDSjJZV3hwWkVaeWIyMGlPaUl5TURFd0xUQXhMVEF4VkRFNU9qSXpPakkwV2lJc0ltTnlaV1JsYm5ScFlXeFRZMmhsYldFaU9uc2lhV1FpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1YjNKbkwyVjRZVzF3YkdWekwyUmxaM0psWlM1cWMyOXVJaXdpZEhsd1pTSTZJa3B6YjI1VFkyaGxiV0VpZlN3aVkzSmxaR1Z1ZEdsaGJGTjFZbXBsWTNRaU9uc2lhV1FpT2lKa2FXUTZaWGhoYlhCc1pUb3hNak1pTENKa1pXZHlaV1VpT25zaWRIbHdaU0k2SWtKaFkyaGxiRzl5UkdWbmNtVmxJaXdpYm1GdFpTSTZJa0poWTJobGJHOXlJRzltSUZOamFXVnVZMlVnWVc1a0lFRnlkSE1pZlgxOS5kMms0TzNGeXRRSmY4M2tMaC1Ic1h1UHZoNnllT2xoSkVMVm81VEY3MWd1N2Vsc2xReU9mMlpJdEFYcnRiWEY0S3o5V2l2TmR6dE9heXo0VlVRME13YTh5Q0Raa1A5QjJwSC05U190Y0FGeGVvZUo2WjRYbkZ1TF9ET2ZrUjFmUCIsInR5cGUiOiJFbnZlbG9wZWRWZXJpZmlhYmxlQ3JlZGVudGlhbCJ9XX0.DiZfXw5jTXeDBobq5ZdcL3S3o8mioZJlqo3iHDtLcEww5L_n2ZJfAJU-a-SmqvMYM--7w4CmeOfq890UGsg_aQ"
}
application/vp+jwt
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
구현은 JWS compact serialization을 MUST 지원해야 한다. JWS JSON serialization의 사용은 NOT RECOMMENDED된다.
이 절은 비규범이다.
JOSE 헤더 또는 JWT Claims Set에 존재할 때, IANA JSON Web Token Claims 레지스트리 또는 IANA JSON Web Signature and Encryption Header Parameters 레지스트리에 등록된 멤버는 해당 레지스트리에서 참조된 명세에 정의된 대로 해석되어야 한다.
등록된 헤더 매개변수 이름, JOSE 헤더 및 헤더 매개변수로 클레임 복제의 규범 문은 자격 증명과 프레젠테이션을 보호하는 데 적용된다.
인코딩되지 않은 JOSE 헤더는 JSON(application/json)이지 JSON-LD
(application/ld+json)가 아니다.
[VC-DATA-MODEL-2.0]에서 정의한
멤버와 혼동될 수 있는 클레임 및 헤더 매개변수를 식별하기 위해 IANA
JSON Web Token Claims
레지스트리와 IANA
JSON Web Signature and Encryption Header
Parameters
레지스트리를 사용하는 것이 RECOMMENDED된다.
여기에는 다음이 포함되지만 이에 국한되지는 않는다: iss,
kid, alg, iat,
exp, 그리고 cnf.
iat(Issued At) 및/또는
exp(Expiration Time) JWT 클레임이 존재하는 경우, 이들은
각각 서명의 발급 시간과 만료 시간을 나타낸다.
이것들은
유효 기간에 정의된
validFrom 및 validUntil 속성과는 다르며,
후자는 보호되는 데이터의 유효성을 나타낸다는 점에 유의하라.
nbf(Not Before) 클레임의 사용은 NOT RECOMMENDED된다.
서명에 미래 날짜를 할당하려는 시도는 별 의미가 없기 때문이다.
이 명세가 제공하는 클레임과 보안은 보호되는 데이터 및 [VC-DATA-MODEL-2.0]이 제공하는 의미론과 독립적이다. 이는 이 명세의 보안 기능이 데이터 무결성과 진정성을 보장하지만, 클레임 데이터의 해석을 지시하지는 않는다는 뜻이다.
구현자는 클레임과 속성 쌍이 동일한 개념적 엔티티를 가리킬 때,
JWT 클레임을
검증 가능한 자격 증명
속성의 값과 충돌하는 값으로 설정하는 것을 SHOULD 피해야 한다.
특히 iss와 issuer, jti와
id,
그리고 sub와 credentialSubject.id 같은 쌍의 경우가 그렇다.
예를 들어, JWK 클레임 iss는
검증 가능한 자격 증명 속성
issuer의 값과 충돌하는 값으로 설정되어서는 SHOULD NOT 안 된다.
JWT Claim Names vc 및 vp는
존재해서는 MUST NOT 안 된다.
추가 멤버가 헤더 매개변수와 클레임으로 존재할 수 있다. 이들이 이해되지 않는 경우, MUST 무시되어야 한다.
이 절은 JOSE를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 검증 가능한 자격 증명을 보호하는 방법을 자세히 설명한다.
적합한 SD-JWT 발급자 구현은 이 미디어 유형을 보호하기 위해 [SD-JWT]를 MUST 사용해야 한다. 보호되지 않은 검증 가능한 자격 증명은 입력 JWT Claims Set이다. 그런 다음 발급자는 입력 JWT Claims Set(즉, 보호되지 않은 검증 가능한 자격 증명)을 SD-JWT 발급 지침에 따라 [SD-JWT] 페이로드로 변환한다.
typ 헤더 매개변수는 vc+sd-jwt여야 SHOULD 한다.
존재하는 경우, cty 헤더 매개변수는
vc여야 SHOULD 한다.
cty 헤더 매개변수 값은 vc+sd-jwt를 사용할 때
서로 다른 유형의 보호된 콘텐츠를 구분하는 데 사용할 수 있다.
content type 헤더 매개변수는 선택 사항이며,
사용 가능한 경우 application/vc보다 더 구체적인 미디어 유형을
표현하는 데 사용할 수 있다.
typ 및 cty의 사용에 관한 추가 세부사항은
등록된 헤더 매개변수
이름을 참조하라.
적합한 SD-JWT 검증자 구현은 이 미디어 유형을 사용하는 적합한 JWS 문서를 검증하기 위해 [SD-JWT]를 MUST 사용해야 한다.
[SD-JWT]로
검증 가능한 자격 증명을
보호할 때,
구현자는 자격 증명의 유효성 검사 및 검증에 필요한 속성이
선택적으로 공개 가능하지 않도록 보장해야 SHOULD 한다
(즉, 그러한 속성은 공개되어야 SHOULD 한다).
이러한 속성에는 다음이 포함될 수 있지만 이에 국한되지는 않는다.
@context,
type,
credentialStatus,
credentialSchema,
그리고 relatedResource.
보안되지 않은 채널을 통해 전송할 때 보호된 검증 가능한 자격 증명을 암호화하려면, 구현자는 [RFC7516]의 JSON Web Encryption (JWE)을 사용할 MAY 있으며, 이는 [SD-JWT] 제11.2절의 지침에 따라 보호된 검증 가능한 자격 증명을 JWE의 평문 페이로드로 중첩함으로써 수행한다.
{
"@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"
}]
}
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"iat": 1745594772,
"exp": 1746804372,
"_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": [
"GQ0vkeEFgdVZLLtHYa7OJFjBkIyTFTj7JP1_Zgoxiz8"
]
},
"alumniOf": {
"name": "Example University"
},
"_sd": [
"QG8WcvFiqPJpOXUAOZrykaX1hSEhJDp6qQMdXb92OG4"
]
},
"credentialSchema": [
{
"_sd": [
"7KiNHCEHEcGrclLNkkuMvGsIewfBiUN0BVfp5c55Lio",
"q02YMzuiD_ncCAyKW8CLLmxfwdjUBoj-mmaa5RUN5eU"
]
},
{
"_sd": [
"Gddvot-e67xiQwBBr0aeqP8cg1t3AfLpEPu0L-JnlPE",
"yCCmNODhJGwjC2OR4WkoWG3bkU5_Aab3wp14C3cJ0hg"
]
}
],
"_sd": [
"Gag8nHrV4HlyKC-JZoJMeuMceJ5p5Sgh9Sed7d_asog",
"piwDQm0MGR9LCfGFyPwlHPb0Ovi3NZANqyFB6_bD14c"
]
}
SHA-256 해시: Gag8nHrV4HlyKC-JZoJMeuMceJ5p5Sgh9Sed7d_asog
공개: WyJGOEprZFJiT3hDbUM3UU9GbjZSX0F3IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMzczMiJd
내용: [
"F8JkdRbOxCmC7QOFn6R_Aw",
"id",
"http://university.example/credentials/3732"
]
SHA-256 해시: piwDQm0MGR9LCfGFyPwlHPb0Ovi3NZANqyFB6_bD14c
공개: WyI4d0NOVnpjcHRyZnVlQ3ZkX1ByVnpRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVEZWdyZWVDcmVkZW50aWFsIiwgIkV4YW1wbGVQZXJzb25DcmVkZW50aWFsIl1d
내용: [
"8wCNVzcptrfueCvd_PrVzQ",
"type",
[
"VerifiableCredential",
"ExampleDegreeCredential",
"ExamplePersonCredential"
]
]
SHA-256 해시: QG8WcvFiqPJpOXUAOZrykaX1hSEhJDp6qQMdXb92OG4
공개: WyIwcEYzMVBUem9oRnNnZW1qXzNMb2tBIiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd
내용: [
"0pF31PTzohFsgemj_3LokA",
"id",
"did:example:ebfeb1f712ebc6f1c276e12ec21"
]
SHA-256 해시: GQ0vkeEFgdVZLLtHYa7OJFjBkIyTFTj7JP1_Zgoxiz8
공개: WyJMaU9qeGZZTU9uOTVUcEhnRnp0SGZ3IiwgInR5cGUiLCAiRXhhbXBsZUJhY2hlbG9yRGVncmVlIl0
내용: [
"LiOjxfYMOn95TpHgFztHfw",
"type",
"ExampleBachelorDegree"
]
SHA-256 해시: q02YMzuiD_ncCAyKW8CLLmxfwdjUBoj-mmaa5RUN5eU
공개: WyJBTlUta1NPWGoxZWg3NHlUcC0xcjNnIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ
내용: [
"ANU-kSOXj1eh74yTp-1r3g",
"id",
"https://example.org/examples/degree.json"
]
SHA-256 해시: 7KiNHCEHEcGrclLNkkuMvGsIewfBiUN0BVfp5c55Lio
공개: WyJhcXRSLU93Wk0xWjh0eTFIbzBwa3BRIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd
내용: [
"aqtR-OwZM1Z8ty1Ho0pkpQ",
"type",
"JsonSchema"
]
SHA-256 해시: Gddvot-e67xiQwBBr0aeqP8cg1t3AfLpEPu0L-JnlPE
공개: WyJIdE91TkllQ2FaN0ZQY0lpQ3RoRS1nIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvYWx1bW5pLmpzb24iXQ
내용: [
"HtOuNIeCaZ7FPcIiCthE-g",
"id",
"https://example.org/examples/alumni.json"
]
SHA-256 해시: yCCmNODhJGwjC2OR4WkoWG3bkU5_Aab3wp14C3cJ0hg
공개: WyJKZWpaYy1JY0JvNjNJcUZiUWVpY19nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd
내용: [
"JejZc-IcBo63IqFbQeic_g",
"type",
"JsonSchema"
]
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
이 절은 [SD-JWT]를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 검증 가능한 프레젠테이션을 보호하는 방법을 자세히 설명한다.
적합한 SD-JWT 발급자 구현은 이 미디어 유형을 보호하기 위해 [SD-JWT]를 MUST 사용해야 한다. 보호되지 않은 검증 가능한 프레젠테이션은 인코딩되지 않은 [SD-JWT] 페이로드이다.
typ 헤더 매개변수는 vp+sd-jwt여야 SHOULD 한다.
존재하는 경우, cty 헤더 매개변수는
vp여야 SHOULD 한다.
cty 헤더 매개변수 값은 vp+sd-jwt를 사용할 때
서로 다른 유형의 보호된 콘텐츠를 구분하는 데 사용할 수 있다.
content type 헤더 매개변수는 선택 사항이며,
사용 가능한 경우 application/vc보다 더 구체적인 미디어 유형을
표현하는 데 사용할 수 있다.
typ 및 cty의 사용에 관한 추가 세부사항은
등록된 헤더 매개변수
이름을 참조하라.
적합한 SD-JWT 검증자 구현은 이 미디어 유형을 사용하는 적합한 JWS 문서를 검증하기 위해 [SD-JWT]를 MUST 사용해야 한다.
검증 가능한 프레젠테이션에서 보호되는 검증 가능한 자격 증명은 [VC-DATA-MODEL-2.0]에서 정의한 Enveloped Verifiable Credential 유형을 MUST 사용해야 한다.
검증 가능한 프레젠테이션 안의 검증 가능한 프레젠테이션은 [VC-DATA-MODEL-2.0]에서 정의한 Enveloped Verifiable Presentation 유형을 MUST 사용해야 한다.
검증 가능한 프레젠테이션 안의 자격 증명은 MUST 보호되어야 한다. 이 경우 이러한 자격 증명은 SD-JWT를 사용하여 보호된다.
[SD-JWT]로
검증 가능한
프레젠테이션을 보호할 때
구현자는 자격 증명의 유효성 검사 및 검증에 필요한 속성이
선택적으로 공개 가능하지 않도록 보장해야 SHOULD 한다
(즉, 그러한 속성은 공개되어야 SHOULD 한다).
이러한 속성에는 다음이 포함될 수 있지만 이에 국한되지는 않는다.
@context,
type,
credentialStatus,
credentialSchema,
그리고 relatedResource.
보안되지 않은 채널을 통해 전송할 때 보호된 검증 가능한 프레젠테이션을 암호화하려면, 구현자는 [RFC7516]의 JSON Web Encryption (JWE)을 사용할 MAY 있으며, 이는 [SD-JWT] 제11.2절의 지침에 따라 보호된 검증 가능한 프레젠테이션을 JWE의 평문 페이로드로 중첩함으로써 수행한다.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [{
"@context": "https://www.w3.org/ns/credentials/v2",
"type": "EnvelopedVerifiableCredential",
"id": "data:application/vc+sd-jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJfc2RfYWxnIjoic2hhLTI1NiIsIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsiNjVFLVZZbmE3UE5mSGVsUDN6THFwcE5ERXhSLWhjWkhSTnlxN2U0ZVdabyIsIjhJbEwtUGx4Ukt3S0hLaTMtTXhXMjM4d0FkTmQ0NHdabC1iY3NBc2JIQjAiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJMVXhqcWtsWS1hdDVSVmFoSXpxM3NJZ015dkdwVDlwdlUwdTRyU2ktMXl3Il19LCJfc2QiOlsiVmxZLW50ZklPOUI5RGRsUWp5U2REMldoVWI0bjc3Zl9HWDZ2U1dLQWpCNCJdfSwiX3NkIjpbIi1iREZ4Um94UUVlcEdjZFl6a250aTVGWXBsUTU5N0djaEdUTGVtLVJSY1UiLCJfREFVZ0xrTF9zVkVtLTBvcE8zaWhpeVFhS0ZzT08xUl9ONk1CUmprOWhFIl19.Kc083RKbBxc3Vr5qR3iEEPp3dKxTa6sPaWNsqtkIw8TvMRf9EZL2ajtgkWSBYzyzOzawOrCXryyp4rMTyI9vfA ~WyJiQ1RTaU9HNUo1VXhPY1QwUlNfd01nIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJTclNWMS01SjR6cWhOU3N3STIwaHdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJKX294dDhtUGUtaDl4MkQzc29uT1N3IiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ~WyJDMlpWektmZ185RUh1ajB2S1ExdWJnIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJ6Szd5QlFPbFhfX2Q0X0VoYUc0Y0pRIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~WyJ6b1pzRzMzeXBMeVRGMm9aS3ZmMVFnIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~"
}]
}
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"iat": 1745594772,
"exp": 1746804372,
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"_sd": [
"-TVRU6yQRkVF-5q086cXufxFu8vp4AZJO-h_U8zyF_Q",
"agL1w9EKxK0l6qVKx79DkuyGFh2szgHG9Rf0kG_2nug"
]
}
],
"_sd": [
"RzTr8zM0p1-0rwhLws02_I30D8G6kpDPFlOFgag0ya0"
]
}
SHA-256 해시: RzTr8zM0p1-0rwhLws02_I30D8G6kpDPFlOFgag0ya0
공개: WyIwempCdDNBa0VRd0tJbllMNmhvX0lBIiwgInR5cGUiLCAiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd
내용: [
"0zjBt3AkEQwKInYL6ho_IA",
"type",
"VerifiablePresentation"
]
SHA-256 해시: agL1w9EKxK0l6qVKx79DkuyGFh2szgHG9Rf0kG_2nug
공개: WyJHRXRVYzJuSS1Qd2xMYVhZM19Wd2p3IiwgInR5cGUiLCAiRW52ZWxvcGVkVmVyaWZpYWJsZUNyZWRlbnRpYWwiXQ
내용: [
"GEtUc2nI-PwlLaXY3_Vwjw",
"type",
"EnvelopedVerifiableCredential"
]
SHA-256 해시: -TVRU6yQRkVF-5q086cXufxFu8vp4AZJO-h_U8zyF_Q
공개: WyJRenl4OTJ5azNZQ2tyZmdRejZQVHVnIiwgImlkIiwgImRhdGE6YXBwbGljYXRpb24vdmMrc2Qtand0LCBleUpyYVdRaU9pSkZlRWhyUWsxWE9XWnRZbXQyVmpJMk5tMVNjSFZRTW5OVldWOU9YMFZYU1U0eGJHRndWWHBQT0hKdklpd2lZV3huSWpvaVJWTXlOVFlpZlEuZXlKZmMyUmZZV3huSWpvaWMyaGhMVEkxTmlJc0lrQmpiMjUwWlhoMElqcGJJbWgwZEhCek9pOHZkM2QzTG5jekxtOXlaeTl1Y3k5amNtVmtaVzUwYVdGc2N5OTJNaUlzSW1oMGRIQnpPaTh2ZDNkM0xuY3pMbTl5Wnk5dWN5OWpjbVZrWlc1MGFXRnNjeTlsZUdGdGNHeGxjeTkyTWlKZExDSnBjM04xWlhJaU9pSm9kSFJ3Y3pvdkwzVnVhWFpsY25OcGRIa3VaWGhoYlhCc1pTOXBjM04xWlhKekx6VTJOVEEwT1NJc0luWmhiR2xrUm5KdmJTSTZJakl3TVRBdE1ERXRNREZVTVRrNk1qTTZNalJhSWl3aVkzSmxaR1Z1ZEdsaGJGTmphR1Z0WVNJNmV5SmZjMlFpT2xzaU5qVkZMVlpaYm1FM1VFNW1TR1ZzVURONlRIRndjRTVFUlhoU0xXaGpXa2hTVG5seE4yVTBaVmRhYnlJc0lqaEpiRXd0VUd4NFVrdDNTMGhMYVRNdFRYaFhNak00ZDBGa1RtUTBOSGRhYkMxaVkzTkJjMkpJUWpBaVhYMHNJbU55WldSbGJuUnBZV3hUZFdKcVpXTjBJanA3SW1SbFozSmxaU0k2ZXlKdVlXMWxJam9pUW1GamFHVnNiM0lnYjJZZ1UyTnBaVzVqWlNCaGJtUWdRWEowY3lJc0lsOXpaQ0k2V3lKTVZYaHFjV3RzV1MxaGREVlNWbUZvU1hweE0zTkpaMDE1ZGtkd1ZEbHdkbFV3ZFRSeVUya3RNWGwzSWwxOUxDSmZjMlFpT2xzaVZteFpMVzUwWmtsUE9VSTVSR1JzVVdwNVUyUkVNbGRvVldJMGJqYzNabDlIV0RaMlUxZExRV3BDTkNKZGZTd2lYM05rSWpwYklpMWlSRVo0VW05NFVVVmxjRWRqWkZsNmEyNTBhVFZHV1hCc1VUVTVOMGRqYUVkVVRHVnRMVkpTWTFVaUxDSmZSRUZWWjB4clRGOXpWa1Z0TFRCdmNFOHphV2hwZVZGaFMwWnpUMDh4VWw5T05rMUNVbXByT1doRklsMTkuS2MwODNSS2JCeGMzVnI1cVIzaUVFUHAzZEt4VGE2c1BhV05zcXRrSXc4VHZNUmY5RVpMMmFqdGdrV1NCWXp5ek96YXdPckNYcnl5cDRyTVR5STl2ZkEgfld5SmlRMVJUYVU5SE5VbzFWWGhQWTFRd1VsTmZkMDFuSWl3Z0ltbGtJaXdnSW1oMGRIQTZMeTkxYm1sMlpYSnphWFI1TG1WNFlXMXdiR1V2WTNKbFpHVnVkR2xoYkhNdk1UZzNNaUpkfld5SlRjbE5XTVMwMVNqUjZjV2hPVTNOM1NUSXdhSGRSSWl3Z0luUjVjR1VpTENCYklsWmxjbWxtYVdGaWJHVkRjbVZrWlc1MGFXRnNJaXdnSWtWNFlXMXdiR1ZCYkhWdGJtbERjbVZrWlc1MGFXRnNJbDFkfld5SktYMjk0ZERodFVHVXRhRGw0TWtRemMyOXVUMU4zSWl3Z0ltbGtJaXdnSW1oMGRIQnpPaTh2WlhoaGJYQnNaUzV2Y21jdlpYaGhiWEJzWlhNdlpHVm5jbVZsTG1wemIyNGlYUX5XeUpETWxwV2VrdG1aMTg1UlVoMWFqQjJTMUV4ZFdKbklpd2dJblI1Y0dVaUxDQWlTbk52YmxOamFHVnRZU0pkfld5SjZTemQ1UWxGUGJGaGZYMlEwWDBWb1lVYzBZMHBSSWl3Z0ltbGtJaXdnSW1ScFpEcGxlR0Z0Y0d4bE9qRXlNeUpkfld5SjZiMXB6UnpNemVYQk1lVlJHTW05YVMzWm1NVkZuSWl3Z0luUjVjR1VpTENBaVFtRmphR1ZzYjNKRVpXZHlaV1VpWFF-Il0
내용: [
"Qzyx92yk3YCkrfgQz6PTug",
"id",
"data:application/vc+sd-jwt, eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJfc2RfYWxnIjoic2hhLTI1NiIsIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsiNjVFLVZZbmE3UE5mSGVsUDN6THFwcE5ERXhSLWhjWkhSTnlxN2U0ZVdabyIsIjhJbEwtUGx4Ukt3S0hLaTMtTXhXMjM4d0FkTmQ0NHdabC1iY3NBc2JIQjAiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJMVXhqcWtsWS1hdDVSVmFoSXpxM3NJZ015dkdwVDlwdlUwdTRyU2ktMXl3Il19LCJfc2QiOlsiVmxZLW50ZklPOUI5RGRsUWp5U2REMldoVWI0bjc3Zl9HWDZ2U1dLQWpCNCJdfSwiX3NkIjpbIi1iREZ4Um94UUVlcEdjZFl6a250aTVGWXBsUTU5N0djaEdUTGVtLVJSY1UiLCJfREFVZ0xrTF9zVkVtLTBvcE8zaWhpeVFhS0ZzT08xUl9ONk1CUmprOWhFIl19.Kc083RKbBxc3Vr5qR3iEEPp3dKxTa6sPaWNsqtkIw8TvMRf9EZL2ajtgkWSBYzyzOzawOrCXryyp4rMTyI9vfA ~WyJiQ1RTaU9HNUo1VXhPY1QwUlNfd01nIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJTclNWMS01SjR6cWhOU3N3STIwaHdRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJKX294dDhtUGUtaDl4MkQzc29uT1N3IiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ~WyJDMlpWektmZ185RUh1ajB2S1ExdWJnIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJ6Szd5QlFPbFhfX2Q0X0VoYUc0Y0pRIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~WyJ6b1pzRzMzeXBMeVRGMm9aS3ZmMVFnIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~"
]
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "EnvelopedVerifiablePresentation",
"id": "data:application/vp+sd-jwt,eyJhbGciOiJFUzM4NCIsImtpZCI6IlVRTV9fblE0UzZCTzhuUTRuT05YeHB4aHRob3lOeGI1M0xZZ1l6LTJBQnMiLCJ0eXAiOiJ2cCtsZCtqc29uK3NkLWp3dCIsImN0eSI6InZwK2xkK2pzb24ifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOlt7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiYWx1bW5pT2YiOnsibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSIsIl9zZCI6WyJoek9LRzU2cDI5c1ByTGFDNUE4RndFdUczVU05dUlZU1p1cU9YczJlVGJBIl19LCJfc2QiOlsiWVdXVmVDRndxQmk4WDBqSF9jV0NWWU16STNhOHBjTEVYRWZicFNSQVlndyJdfSwiX3NkIjpbIjJJZjhhaUs4REZwVWJ4dEc1cGMwel9SaFJzbm1ybGFRMEhzcTk4WFNyYWsiLCJUeDZ4ZWZMVUdUZUpfYWtVUFdGeHNvbUhobGtWVnpfNzVoaVZ6eWpyYmVzIl19XSwiX3NkIjpbIjd2anl0VVN3ZEJ0MXQ5RktlOVFfS3JIRXhFWGxrTEFaTzBKM0Jpd200dlkiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJpYXQiOjE3MDY1NjI4NDksImV4cCI6MTczODE4NTI0OSwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoidWtEd1U2ZzlQUVRFUWhYaEgyckRZNndMQlg3UHFlUjZBcGlhVHBEUXowcl8tdDl6UXNxem54Z0hEcE5oekZlQyIsInkiOiJMQnhVYnBVdFNGMVVKVTVpYnJIdkpINjBUSG5YMk1xa0xHZGltU1l0UGR4RlkxOEdhcldiS3FZV0djUkZHVE9BIn19fQ.kYD63YtBNYnLUTw6Szf1vs_Ug3UBXhPwCyqpNmPnPDa3rXZQhQLdB1BgaoO8zgQ-c3B41fxaXMnLHYV9-B20uboSpJP0B-2Vre917eQt1cSDswDGA_Ytvn4BSqYVBB2J~WyJFMkFsRzhsY2p0QVFrcllIbjlIbnVRIiwgInR5cGUiLCAiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd~WyI5NldYMDRneno4cVZzOVZLU2wwYTVnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJaekU2VFVaamtHMW1DWXBKMEhnc0l3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyItQ3NsS25GZGFYb2JiQWsyU0JBVGR3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJuRm1OWl9IczB3WWNoOFdkeTdnQUNRIiwgImlkIiwgImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSJd~"
}
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"iat": 1745594772,
"exp": 1746804372,
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"_sd": [
"3hRg373aTHUnR4ock2CASa3xwiiWe8eURwV5MFTP7vQ",
"Wobxt7GgUmEZJhBIdi2oSrh3xhKjjNWkDgskx3DI6kg"
]
}
SHA-256 해시: 3hRg373aTHUnR4ock2CASa3xwiiWe8eURwV5MFTP7vQ
공개: WyJZM3JRNVNkUFd3YW5ieTRlMGhMSDF3IiwgInR5cGUiLCAiRW52ZWxvcGVkVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd
내용: [
"Y3rQ5SdPWwanby4e0hLH1w",
"type",
"EnvelopedVerifiablePresentation"
]
SHA-256 해시: Wobxt7GgUmEZJhBIdi2oSrh3xhKjjNWkDgskx3DI6kg
공개: WyJFUWRUZEprS3Fjd3RrMkVVMUxkOTZnIiwgImlkIiwgImRhdGE6YXBwbGljYXRpb24vdnArc2Qtand0LCBleUpoYkdjaU9pSkZVek00TkNJc0ltdHBaQ0k2SWxWUlRWOWZibEUwVXpaQ1R6aHVVVFJ1VDA1WWVIQjRhSFJvYjNsT2VHSTFNMHhaWjFsNkxUSkJRbk1pTENKMGVYQWlPaUoyY0N0c1pDdHFjMjl1SzNOa0xXcDNkQ0lzSW1OMGVTSTZJblp3SzJ4a0sycHpiMjRpZlEuZXlKQVkyOXVkR1Y0ZENJNld5Sm9kSFJ3Y3pvdkwzZDNkeTUzTXk1dmNtY3Zibk12WTNKbFpHVnVkR2xoYkhNdmRqSWlMQ0pvZEhSd2N6b3ZMM2QzZHk1M015NXZjbWN2Ym5NdlkzSmxaR1Z1ZEdsaGJITXZaWGhoYlhCc1pYTXZkaklpWFN3aWRtVnlhV1pwWVdKc1pVTnlaV1JsYm5ScFlXd2lPbHQ3SWtCamIyNTBaWGgwSWpwYkltaDBkSEJ6T2k4dmQzZDNMbmN6TG05eVp5OXVjeTlqY21Wa1pXNTBhV0ZzY3k5Mk1pSXNJbWgwZEhCek9pOHZkM2QzTG5jekxtOXlaeTl1Y3k5amNtVmtaVzUwYVdGc2N5OWxlR0Z0Y0d4bGN5OTJNaUpkTENKcGMzTjFaWElpT2lKb2RIUndjem92TDNWdWFYWmxjbk5wZEhrdVpYaGhiWEJzWlM5cGMzTjFaWEp6THpVMk5UQTBPU0lzSW5aaGJHbGtSbkp2YlNJNklqSXdNVEF0TURFdE1ERlVNVGs2TWpNNk1qUmFJaXdpWTNKbFpHVnVkR2xoYkZOMVltcGxZM1FpT25zaVlXeDFiVzVwVDJZaU9uc2libUZ0WlNJNklrVjRZVzF3YkdVZ1ZXNXBkbVZ5YzJsMGVTSXNJbDl6WkNJNld5Sm9lazlMUnpVMmNESTVjMUJ5VEdGRE5VRTRSbmRGZFVjelZVMDVkVWxaVTFwMWNVOVljekpsVkdKQklsMTlMQ0pmYzJRaU9sc2lXVmRYVm1WRFJuZHhRbWs0V0RCcVNGOWpWME5XV1UxNlNUTmhPSEJqVEVWWVJXWmljRk5TUVZsbmR5SmRmU3dpWDNOa0lqcGJJakpKWmpoaGFVczRSRVp3VldKNGRFYzFjR013ZWw5U2FGSnpibTF5YkdGUk1FaHpjVGs0V0ZOeVlXc2lMQ0pVZURaNFpXWk1WVWRVWlVwZllXdFZVRmRHZUhOdmJVaG9iR3RXVm5wZk56Vm9hVlo2ZVdweVltVnpJbDE5WFN3aVgzTmtJanBiSWpkMmFubDBWVk4zWkVKME1YUTVSa3RsT1ZGZlMzSklSWGhGV0d4clRFRmFUekJLTTBKcGQyMDBkbGtpWFN3aVgzTmtYMkZzWnlJNkluTm9ZUzB5TlRZaUxDSnBZWFFpT2pFM01EWTFOakk0TkRrc0ltVjRjQ0k2TVRjek9ERTROVEkwT1N3aVkyNW1JanA3SW1wM2F5STZleUpyZEhraU9pSkZReUlzSW1OeWRpSTZJbEF0TXpnMElpd2lZV3huSWpvaVJWTXpPRFFpTENKNElqb2lkV3RFZDFVMlp6bFFVVlJGVVdoWWFFZ3lja1JaTm5kTVFsZzNVSEZsVWpaQmNHbGhWSEJFVVhvd2NsOHRkRGw2VVhOeGVtNTRaMGhFY0U1b2VrWmxReUlzSW5raU9pSk1RbmhWWW5CVmRGTkdNVlZLVlRWcFluSklka3BJTmpCVVNHNVlNazF4YTB4SFpHbHRVMWwwVUdSNFJsa3hPRWRoY2xkaVMzRlpWMGRqVWtaSFZFOUJJbjE5ZlEua1lENjNZdEJOWW5MVVR3NlN6ZjF2c19VZzNVQlhoUHdDeXFwTm1QblBEYTNyWFpRaFFMZEIxQmdhb084emdRLWMzQjQxZnhhWE1uTEhZVjktQjIwdWJvU3BKUDBCLTJWcmU5MTdlUXQxY1NEc3dER0FfWXR2bjRCU3FZVkJCMkp-V3lKRk1rRnNSemhzWTJwMFFWRnJjbGxJYmpsSWJuVlJJaXdnSW5SNWNHVWlMQ0FpVm1WeWFXWnBZV0pzWlZCeVpYTmxiblJoZEdsdmJpSmR-V3lJNU5sZFlNRFJuZW5vNGNWWnpPVlpMVTJ3d1lUVm5JaXdnSW1sa0lpd2dJbWgwZEhBNkx5OTFibWwyWlhKemFYUjVMbVY0WVcxd2JHVXZZM0psWkdWdWRHbGhiSE12TVRnM01pSmR-V3lKYWVrVTJWRlZhYW10SE1XMURXWEJLTUVobmMwbDNJaXdnSW5SNWNHVWlMQ0JiSWxabGNtbG1hV0ZpYkdWRGNtVmtaVzUwYVdGc0lpd2dJa1Y0WVcxd2JHVkJiSFZ0Ym1sRGNtVmtaVzUwYVdGc0lsMWR-V3lJdFEzTnNTMjVHWkdGWWIySmlRV3N5VTBKQlZHUjNJaXdnSW1sa0lpd2dJbVJwWkRwbGVHRnRjR3hsT21WaVptVmlNV1kzTVRKbFltTTJaakZqTWpjMlpURXlaV015TVNKZH5XeUp1Um0xT1dsOUljekIzV1dOb09GZGtlVGRuUVVOUklpd2dJbWxrSWl3Z0ltUnBaRHBsZUdGdGNHeGxPbU15TnpabE1USmxZekl4WldKbVpXSXhaamN4TW1WaVl6Wm1NU0pkfiJd
내용: [
"EQdTdJkKqcwtk2EU1Ld96g",
"id",
"data:application/vp+sd-jwt, eyJhbGciOiJFUzM4NCIsImtpZCI6IlVRTV9fblE0UzZCTzhuUTRuT05YeHB4aHRob3lOeGI1M0xZZ1l6LTJBQnMiLCJ0eXAiOiJ2cCtsZCtqc29uK3NkLWp3dCIsImN0eSI6InZwK2xkK2pzb24ifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOlt7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiYWx1bW5pT2YiOnsibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSIsIl9zZCI6WyJoek9LRzU2cDI5c1ByTGFDNUE4RndFdUczVU05dUlZU1p1cU9YczJlVGJBIl19LCJfc2QiOlsiWVdXVmVDRndxQmk4WDBqSF9jV0NWWU16STNhOHBjTEVYRWZicFNSQVlndyJdfSwiX3NkIjpbIjJJZjhhaUs4REZwVWJ4dEc1cGMwel9SaFJzbm1ybGFRMEhzcTk4WFNyYWsiLCJUeDZ4ZWZMVUdUZUpfYWtVUFdGeHNvbUhobGtWVnpfNzVoaVZ6eWpyYmVzIl19XSwiX3NkIjpbIjd2anl0VVN3ZEJ0MXQ5RktlOVFfS3JIRXhFWGxrTEFaTzBKM0Jpd200dlkiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJpYXQiOjE3MDY1NjI4NDksImV4cCI6MTczODE4NTI0OSwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoidWtEd1U2ZzlQUVRFUWhYaEgyckRZNndMQlg3UHFlUjZBcGlhVHBEUXowcl8tdDl6UXNxem54Z0hEcE5oekZlQyIsInkiOiJMQnhVYnBVdFNGMVVKVTVpYnJIdkpINjBUSG5YMk1xa0xHZGltU1l0UGR4RlkxOEdhcldiS3FZV0djUkZHVE9BIn19fQ.kYD63YtBNYnLUTw6Szf1vs_Ug3UBXhPwCyqpNmPnPDa3rXZQhQLdB1BgaoO8zgQ-c3B41fxaXMnLHYV9-B20uboSpJP0B-2Vre917eQt1cSDswDGA_Ytvn4BSqYVBB2J~WyJFMkFsRzhsY2p0QVFrcllIbjlIbnVRIiwgInR5cGUiLCAiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd~WyI5NldYMDRneno4cVZzOVZLU2wwYTVnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJaekU2VFVaamtHMW1DWXBKMEhnc0l3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyItQ3NsS25GZGFYb2JiQWsyU0JBVGR3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJuRm1OWl9IczB3WWNoOFdkeTdnQUNRIiwgImlkIiwgImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSJd~"
]
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
구현은 compact serialization(application/sd-jwt)을 MUST
지원해야 하며, JSON serialization(application/sd-jwt+json)을
MAY 지원할 수 있다.
JSON serialization이 사용되는 경우, 추가 JSON 멤버가 일관되게 이해되도록 보장하기 위해
프로파일을 정의하는 것이 RECOMMENDED된다.
COSE [RFC9052]는 CBOR [RFC8949]을 사용하여 정보를 인코딩하고 보호하는 일반적인 접근 방식이다. 검증 가능한 자격 증명은 COSE [RFC9052]를 사용하여 보호될 MAY 있으며, 이 절에서 개괄한 것처럼 콘텐츠 유형을 사용하여 식별되는 것이 SHOULD 한다.
이 절은 COSE를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 검증 가능한 자격 증명을 보호하는 방법을 자세히 설명한다.
적합한 COSE 발급자 구현은 이 미디어 유형을 보호하기 위해 [RFC9052]에 명시된 COSE_Sign1을 MUST 사용해야 한다. 보호되지 않은 검증 가능한 자격 증명은 인코딩되지 않은 COSE_Sign1 페이로드이다.
COSE "typ"(유형) 헤더 매개변수에
설명된 typ (16) 헤더 매개변수는
application/vc+cose여야 SHOULD 한다.
content type (3) 헤더 매개변수는
application/vc여야 SHOULD 한다.
content type (3) 헤더 매개변수는 선택 사항이며,
사용 가능한 경우 application/vc보다 더 구체적인 미디어 유형을
표현하는 데 사용할 수 있다.
추가 세부사항은 공통 COSE 헤더 매개변수를
참조하라.
적합한 COSE 검증자 구현은 이 미디어 유형을 사용하는 적합한 COSE 문서를 검증하기 위해 [RFC9052]에 명시된 COSE_Sign1을 MUST 사용해야 한다.
COSE로 보호된 검증 가능한 자격 증명을 검증 가능한 프레젠테이션 안에 Enveloped Verifiable Credentials로 포함할 때, 해당 자격 증명은 [RFC2397]에 명시된 대로 base64를 사용하여 MUST 인코딩되어야 한다.
보안되지 않은 채널을 통해 전송할 때 보호된 검증 가능한 자격 증명을 암호화하려면, 구현자는 [RFC9052] 제5절에 정의된 COSE 암호화를 사용할 MAY 있으며, 이는 보호된 검증 가능한 자격 증명을 암호화된 COSE 객체의 평문 페이로드로 중첩함으로써 수행한다.
{
"@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"
}]
}
{
"@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"
}
]
}
application/vc+cose
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
이 절은 COSE를 사용하여 [VC-DATA-MODEL-2.0]을 준수하는 검증 가능한 프레젠테이션을 보호하는 방법을 자세히 설명한다.
적합한 COSE 발급자 구현은 이 미디어 유형을 보호하기 위해 [RFC9052]에 명시된 COSE_Sign1을 MUST 사용해야 한다. 보호되지 않은 검증 가능한 프레젠테이션은 인코딩되지 않은 COSE_Sign1 페이로드이다.
COSE "typ"(유형) 헤더 매개변수에
설명된 typ (16) 헤더 매개변수는
application/vp+cose여야 SHOULD 한다.
content type (3) 헤더 매개변수는
application/vp여야 SHOULD 한다.
content type (3) 헤더 매개변수는 선택 사항이며,
사용 가능한 경우 application/vp보다 더 구체적인 미디어 유형을
표현하는 데 사용할 수 있다.
추가 세부사항은 공통 COSE 헤더 매개변수를
참조하라.
적합한 COSE 검증자 구현은 이 미디어 유형을 사용하는 적합한 COSE 문서를 검증하기 위해 [RFC9052]에 명시된 COSE_Sign1을 MUST 사용해야 한다.
검증 가능한 프레젠테이션에서 보호되는 검증 가능한 자격 증명은 [VC-DATA-MODEL-2.0]에서 정의한 Enveloped Verifiable Credential 유형을 MUST 사용해야 한다.
검증 가능한 프레젠테이션 안의 검증 가능한 프레젠테이션은 [VC-DATA-MODEL-2.0]에서 정의한 Enveloped Verifiable Presentation 유형을 MUST 사용해야 한다.
검증 가능한 프레젠테이션 안의 자격 증명은 MUST 보호되어야 한다. 이 경우 이러한 자격 증명은 COSE를 사용하여 보호된다.
보안되지 않은 채널을 통해 전송할 때 보호된 검증 가능한 프레젠테이션을 암호화하려면, 구현자는 [RFC9052] 제5절에 정의된 COSE 암호화를 사용할 MAY 있으며, 이는 보호된 검증 가능한 프레젠테이션을 암호화된 COSE 객체의 평문 페이로드로 중첩함으로써 수행한다.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [{
"@context": "https://www.w3.org/ns/credentials/v2",
"type": "EnvelopedVerifiableCredential",
"id": "data:application/vc+sd-jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJfc2RfYWxnIjoic2hhLTI1NiIsIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsiNWJBeDMteHBmQWxVS0ZJOXNuM2hWQ21wR2trcUlzWmMzLUxiMzNmWmpiayIsIlpjQXZIMDhsdEJySUpmSWh0OF9tS1BfYzNscG5YMWNHclltVG8wZ1lCeTgiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJST1Q3MUl0dTNMNlVXWFVqby1oWVdJQjY3bHVPTkVEUlNCaGxEVENxVU9RIl19LCJfc2QiOlsiTUVuZXNnMlhPUk5jY3NCTWVaXzE2MDJneTQwUi00WUJ2VlIweFE4b0Y4YyJdfSwiX3NkIjpbIkVlc2Jiay1mcGZwd2ZMOXdOczFxcjZ0aU43ZnEtSXQzWVM2V3ZCbl9iWG8iLCJab1I1ZGRhckdtZk15NEhuV0xVak5URnFURjNYRjZpdFBnZnlGQkhVX3FVIl19.gw3paxbkLjpi8CTsyRpXKbC7tpVa0q2sWKSD-_dcbuZ1LpZV3oQ8Ifzcm2bE8RY3fmJgbuyA9gbPL3sQBaTzkg ~WyJSeUQxVlB4VHBvbmtPeXZpczkta293IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJfVjd1eTd3ay1RM3VZd2ZpZ0NvWUVBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJhazdqMTlnYVMtRDJLX2hzY3RVZGNRIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ~WyJUTjBXaXVZRkhXWkV2ZDZIQUJHQS1nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJVMnBzMkxYVERVbVh3MDcxRVBmRUpnIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~WyJsQ042eTNEaTNDUk9VX3JuXzRENWRnIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~"
}]
}
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+sd-jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJfc2RfYWxnIjoic2hhLTI1NiIsIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsiNWJBeDMteHBmQWxVS0ZJOXNuM2hWQ21wR2trcUlzWmMzLUxiMzNmWmpiayIsIlpjQXZIMDhsdEJySUpmSWh0OF9tS1BfYzNscG5YMWNHclltVG8wZ1lCeTgiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJST1Q3MUl0dTNMNlVXWFVqby1oWVdJQjY3bHVPTkVEUlNCaGxEVENxVU9RIl19LCJfc2QiOlsiTUVuZXNnMlhPUk5jY3NCTWVaXzE2MDJneTQwUi00WUJ2VlIweFE4b0Y4YyJdfSwiX3NkIjpbIkVlc2Jiay1mcGZwd2ZMOXdOczFxcjZ0aU43ZnEtSXQzWVM2V3ZCbl9iWG8iLCJab1I1ZGRhckdtZk15NEhuV0xVak5URnFURjNYRjZpdFBnZnlGQkhVX3FVIl19.gw3paxbkLjpi8CTsyRpXKbC7tpVa0q2sWKSD-_dcbuZ1LpZV3oQ8Ifzcm2bE8RY3fmJgbuyA9gbPL3sQBaTzkg ~WyJSeUQxVlB4VHBvbmtPeXZpczkta293IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJfVjd1eTd3ay1RM3VZd2ZpZ0NvWUVBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJhazdqMTlnYVMtRDJLX2hzY3RVZGNRIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ~WyJUTjBXaXVZRkhXWkV2ZDZIQUJHQS1nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJVMnBzMkxYVERVbVh3MDcxRVBmRUpnIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~WyJsQ042eTNEaTNDUk9VX3JuXzRENWRnIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~;data:application/vc+sd-jwt,eyJraWQiOiJFeEhrQk1XOWZtYmt2VjI2Nm1ScHVQMnNVWV9OX0VXSU4xbGFwVXpPOHJvIiwiYWxnIjoiRVMyNTYifQ.eyJfc2RfYWxnIjoic2hhLTI1NiIsIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFNjaGVtYSI6eyJfc2QiOlsiNWJBeDMteHBmQWxVS0ZJOXNuM2hWQ21wR2trcUlzWmMzLUxiMzNmWmpiayIsIlpjQXZIMDhsdEJySUpmSWh0OF9tS1BfYzNscG5YMWNHclltVG8wZ1lCeTgiXX0sImNyZWRlbnRpYWxTdWJqZWN0Ijp7ImRlZ3JlZSI6eyJuYW1lIjoiQmFjaGVsb3Igb2YgU2NpZW5jZSBhbmQgQXJ0cyIsIl9zZCI6WyJST1Q3MUl0dTNMNlVXWFVqby1oWVdJQjY3bHVPTkVEUlNCaGxEVENxVU9RIl19LCJfc2QiOlsiTUVuZXNnMlhPUk5jY3NCTWVaXzE2MDJneTQwUi00WUJ2VlIweFE4b0Y4YyJdfSwiX3NkIjpbIkVlc2Jiay1mcGZwd2ZMOXdOczFxcjZ0aU43ZnEtSXQzWVM2V3ZCbl9iWG8iLCJab1I1ZGRhckdtZk15NEhuV0xVak5URnFURjNYRjZpdFBnZnlGQkhVX3FVIl19.gw3paxbkLjpi8CTsyRpXKbC7tpVa0q2sWKSD-_dcbuZ1LpZV3oQ8Ifzcm2bE8RY3fmJgbuyA9gbPL3sQBaTzkg ~WyJSeUQxVlB4VHBvbmtPeXZpczkta293IiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJfVjd1eTd3ay1RM3VZd2ZpZ0NvWUVBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJhazdqMTlnYVMtRDJLX2hzY3RVZGNRIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ~WyJUTjBXaXVZRkhXWkV2ZDZIQUJHQS1nIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJVMnBzMkxYVERVbVh3MDcxRVBmRUpnIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~WyJsQ042eTNEaTNDUk9VX3JuXzRENWRnIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~",
"type": "EnvelopedVerifiableCredential"
}
]
}
application/vp+cose
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "EnvelopedVerifiablePresentation",
"id": "data:application/vp+sd-jwt,eyJhbGciOiJFUzM4NCIsImtpZCI6IlVRTV9fblE0UzZCTzhuUTRuT05YeHB4aHRob3lOeGI1M0xZZ1l6LTJBQnMiLCJ0eXAiOiJ2cCtsZCtqc29uK3NkLWp3dCIsImN0eSI6InZwK2xkK2pzb24ifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOlt7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiYWx1bW5pT2YiOnsibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSIsIl9zZCI6WyJoek9LRzU2cDI5c1ByTGFDNUE4RndFdUczVU05dUlZU1p1cU9YczJlVGJBIl19LCJfc2QiOlsiWVdXVmVDRndxQmk4WDBqSF9jV0NWWU16STNhOHBjTEVYRWZicFNSQVlndyJdfSwiX3NkIjpbIjJJZjhhaUs4REZwVWJ4dEc1cGMwel9SaFJzbm1ybGFRMEhzcTk4WFNyYWsiLCJUeDZ4ZWZMVUdUZUpfYWtVUFdGeHNvbUhobGtWVnpfNzVoaVZ6eWpyYmVzIl19XSwiX3NkIjpbIjd2anl0VVN3ZEJ0MXQ5RktlOVFfS3JIRXhFWGxrTEFaTzBKM0Jpd200dlkiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJpYXQiOjE3MDY1NjI4NDksImV4cCI6MTczODE4NTI0OSwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoidWtEd1U2ZzlQUVRFUWhYaEgyckRZNndMQlg3UHFlUjZBcGlhVHBEUXowcl8tdDl6UXNxem54Z0hEcE5oekZlQyIsInkiOiJMQnhVYnBVdFNGMVVKVTVpYnJIdkpINjBUSG5YMk1xa0xHZGltU1l0UGR4RlkxOEdhcldiS3FZV0djUkZHVE9BIn19fQ.kYD63YtBNYnLUTw6Szf1vs_Ug3UBXhPwCyqpNmPnPDa3rXZQhQLdB1BgaoO8zgQ-c3B41fxaXMnLHYV9-B20uboSpJP0B-2Vre917eQt1cSDswDGA_Ytvn4BSqYVBB2J~WyJFMkFsRzhsY2p0QVFrcllIbjlIbnVRIiwgInR5cGUiLCAiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd~WyI5NldYMDRneno4cVZzOVZLU2wwYTVnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJaekU2VFVaamtHMW1DWXBKMEhnc0l3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyItQ3NsS25GZGFYb2JiQWsyU0JBVGR3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJuRm1OWl9IczB3WWNoOFdkeTdnQUNRIiwgImlkIiwgImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSJd~"
}
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "EnvelopedVerifiablePresentation",
"id": "data:application/vp+sd-jwt,eyJhbGciOiJFUzM4NCIsImtpZCI6IlVRTV9fblE0UzZCTzhuUTRuT05YeHB4aHRob3lOeGI1M0xZZ1l6LTJBQnMiLCJ0eXAiOiJ2cCtsZCtqc29uK3NkLWp3dCIsImN0eSI6InZwK2xkK2pzb24ifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwidmVyaWZpYWJsZUNyZWRlbnRpYWwiOlt7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJpc3N1ZXIiOiJodHRwczovL3VuaXZlcnNpdHkuZXhhbXBsZS9pc3N1ZXJzLzU2NTA0OSIsInZhbGlkRnJvbSI6IjIwMTAtMDEtMDFUMTk6MjM6MjRaIiwiY3JlZGVudGlhbFN1YmplY3QiOnsiYWx1bW5pT2YiOnsibmFtZSI6IkV4YW1wbGUgVW5pdmVyc2l0eSIsIl9zZCI6WyJoek9LRzU2cDI5c1ByTGFDNUE4RndFdUczVU05dUlZU1p1cU9YczJlVGJBIl19LCJfc2QiOlsiWVdXVmVDRndxQmk4WDBqSF9jV0NWWU16STNhOHBjTEVYRWZicFNSQVlndyJdfSwiX3NkIjpbIjJJZjhhaUs4REZwVWJ4dEc1cGMwel9SaFJzbm1ybGFRMEhzcTk4WFNyYWsiLCJUeDZ4ZWZMVUdUZUpfYWtVUFdGeHNvbUhobGtWVnpfNzVoaVZ6eWpyYmVzIl19XSwiX3NkIjpbIjd2anl0VVN3ZEJ0MXQ5RktlOVFfS3JIRXhFWGxrTEFaTzBKM0Jpd200dlkiXSwiX3NkX2FsZyI6InNoYS0yNTYiLCJpYXQiOjE3MDY1NjI4NDksImV4cCI6MTczODE4NTI0OSwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsImNydiI6IlAtMzg0IiwiYWxnIjoiRVMzODQiLCJ4IjoidWtEd1U2ZzlQUVRFUWhYaEgyckRZNndMQlg3UHFlUjZBcGlhVHBEUXowcl8tdDl6UXNxem54Z0hEcE5oekZlQyIsInkiOiJMQnhVYnBVdFNGMVVKVTVpYnJIdkpINjBUSG5YMk1xa0xHZGltU1l0UGR4RlkxOEdhcldiS3FZV0djUkZHVE9BIn19fQ.kYD63YtBNYnLUTw6Szf1vs_Ug3UBXhPwCyqpNmPnPDa3rXZQhQLdB1BgaoO8zgQ-c3B41fxaXMnLHYV9-B20uboSpJP0B-2Vre917eQt1cSDswDGA_Ytvn4BSqYVBB2J~WyJFMkFsRzhsY2p0QVFrcllIbjlIbnVRIiwgInR5cGUiLCAiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd~WyI5NldYMDRneno4cVZzOVZLU2wwYTVnIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJaekU2VFVaamtHMW1DWXBKMEhnc0l3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyItQ3NsS25GZGFYb2JiQWsyU0JBVGR3IiwgImlkIiwgImRpZDpleGFtcGxlOmViZmViMWY3MTJlYmM2ZjFjMjc2ZTEyZWMyMSJd~WyJuRm1OWl9IczB3WWNoOFdkeTdnQUNRIiwgImlkIiwgImRpZDpleGFtcGxlOmMyNzZlMTJlYzIxZWJmZWIxZjcxMmViYzZmMSJd~"
}
application/vp+cose
이 예제에 대한 자세한 내용은 검증 가능한 자격 증명 데이터 모델 v2.0을 참조하라.
COSE 헤더에 존재하거나 CWT 클레임으로 존재할 때, IANA CBOR Web Token (CWT) Claims 레지스트리 또는 IANA COSE Header Parameters 레지스트리에 등록된 멤버는 해당 레지스트리에서 참조된 명세에 정의된 대로 해석되어야 한다. CBOR Web Token (CWT) [RFC8392] Claims는 I-D.ietf-cose-cwt-claims-in-headers에 명시된 대로 COSE 헤더 매개변수에 포함될 MAY 있다.
헤더 매개변수, 클레임, 그리고 COSE 헤더의 CBOR Web Token (CWT) 클레임에 있는 규범 문은 자격 증명 및 프레젠테이션을 보호하는 데 적용된다.
[VC-DATA-MODEL-2.0]에서 정의한
멤버와 혼동될 수 있는 클레임 및 헤더 매개변수를 식별하기 위해 IANA
CBOR Web Token Claims
레지스트리와 IANA
COSE Header Parameters
레지스트리를 사용하는 것이 RECOMMENDED된다.
여기에는 다음이 포함되지만 이에 국한되지는 않는다: iss,
kid, alg, iat,
exp, 그리고 cnf.
iat(Issued At) 및/또는
exp(Expiration Time) CWT 클레임이 존재하는 경우, 이들은
각각 서명의 발급 시간과 만료 시간을 나타낸다.
이것들은
유효 기간에 정의된
validFrom 및 validUntil 속성과는 다르며,
후자는 보호되는 데이터의 유효성을 나타낸다는 점에 유의하라.
nbf(Not Before) 클레임의 사용은 NOT RECOMMENDED된다.
서명에 미래 날짜를 할당하려는 시도는 별 의미가 없기 때문이다.
추가 멤버가 헤더 매개변수와 클레임으로 존재할 수 있다. 이들이 이해되지 않는 경우, MUST 무시되어야 한다.
검증 절차를 완료하려면, 검증자는 자격 증명을 보호하는 데 사용된 암호화 키를 얻어야 한다.
발급자와 보유자의 검증 키를 발견하는 방법에는 여러 가지가 있다.
이러한 JOSE 헤더 매개변수 및 JWT 클레임은 검증자가 검증 키를 발견하는 데 사용할 수 있다.
kid가
JOSE 헤더 또는
COSE 헤더에 존재하는 경우,
검증자는
검증
절차를 수행할 때, 검증 가능한 자격 증명을
보호하는 데 어떤 키가 사용되었는지를 나타내는 힌트로
이 매개변수를 사용할 수 있다. 이는
RFC7515에 정의된 바와 같다.
iss가
JOSE 헤더,
JWT 클레임,
또는 COSE 헤더에 존재하는 경우,
검증자는
검증 절차에서 사용할
JSON Web Key를 얻기 위해
이 매개변수를 사용할 수 있다.
issuer
속성의 값은 문자열 또는 객체일 수 있다.
issuer 값이 문자열인 경우, 존재한다면 iss 값은
issuer 값과 MUST 일치해야 한다.
issuer 값이 id 값을 가진 객체인 경우,
존재한다면 iss 값은 issuer.id 값과
MUST 일치해야 한다.
kid도
JOSE 헤더에 존재하는 경우,
이는 사용된 특정 키를 구별하는 데 사용된다.
cnf가
JOSE 헤더,
JWT 클레임,
또는 COSE 헤더에 존재하는 경우,
검증자는
검증 절차에서 사용하기 위해
[RFC7800] 또는
[RFC8747]에
설명된 방식으로 소유 증명 키를 식별하는 데 이 매개변수를
MAY 사용할 수 있다.
보유자가 발급자에게 제공한 소유 증명 키를 사용하여, 검증 가능한 프레젠테이션에서 검증자가 검증할 수 있는 검증 가능한 자격 증명 안에서 보유자와의 암호학적 바인딩을 설정하는 것이 RECOMMENDED된다.
이 명세와 함께 제어된 식별자 문서를 사용할 때, 다음 요구사항이 적용된다.
검증 메서드의 type 속성 값은
JsonWebKey여야 MUST 한다.
검증 자료는 JsonWebKey의 publicKeyJwk
속성으로 표현되어야 MUST 한다.
이 키 자료는 kid 또는 iss와 같은
JOSE 또는 COSE 메시지 봉투의 힌트를 기반으로 검색된다.
이 문서 작성 시점에는 DID URL 또는 제어된 식별자 문서에서
JWK 형식의 공개 키를 검색하는 표준 방법이 없다.
iss가 없고, 발급자가 [URL]로 식별되는 경우, kid는 제어된 식별자 문서 또는 DID Document에 나열된 검증 메서드를 가리키는 절대 [URL]이어야 MUST 한다.
[URL]
식별자를 사용할 때,
kid는 [RFC7638]에 정의된
JWK Thumbprint URI를 포함하는 절대
[URL]인
것이 RECOMMENDED된다.
예:
https://vendor.example/issuers/42/keys/urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs
{
"issuer": {
"id": "https://university.example/issuers/565049"
}
// ...
}
{
"alg": "ES384",
"kid": "https://university.example/issuers/565049#key-123
}
보유자가 [URL]로 식별되고 iss가 없는 경우, kid는 제어된 식별자 문서에 나열된 검증 메서드를 가리키는 절대 [URL]이어야 MUST 한다.
{
"holder": {
"id": "https://university.example/issuers/565049"
}
// ...
}
{
"alg": "ES384",
"kid": "https://university.example/issuers/565049#key-123
}
이 명세는 여러 서로 다른 키 발견 프로토콜과 함께 사용될 수 있다. 따라서 검증 키의 발견은 4. 키 발견에 설명되어 있으며, 검증 절차를 시작하기 전에 성공한 것으로 간주된다.
일반 규칙으로, 검증자는 신뢰할 수 없는 데이터의 처리를 최소화하기 위해 노력해야 SHOULD 한다. 여기에는 키 발견 절차의 일부로 보호된 헤더, 보호되지 않은 헤더 또는 페이로드를 처리하는 것을 최소화하는 것이 포함된다.
검증이 성공한 후에는, 5.4 유효성 검사 절에 설명된 대로 추가 유효성 검사 확인을 수행해야 SHOULD 한다.
다음 알고리즘의 출력은 다음과 같다.
status: 검증 결과를 나타내는 불리언 값으로,
성공 시 true, 실패 시 false이다.
document: [VC-DATA-MODEL-2.0]을 준수하는 문서
mediaType: vc 또는 vp
이 알고리즘의 입력은 다음과 같다.
inputMediaType: vc+jwt 또는 vp+jwt
inputDocument: JWT [RFC7519]로
보호된 검증 가능한 자격 증명
JWT [RFC7519]로 보호된 검증 가능한 자격 증명 또는 프레젠테이션을 수신하면, 보유자 또는 검증자는 다음 알고리즘을 따른다.
status를 true로 설정한다.
mediaType을 vc 또는 vp로 설정한다.
document를 디코딩된 JWS 페이로드로 설정한다.
status를 false로 설정한다.
document를 null로 설정한다.
mediaType을 null로 설정한다.
이 알고리즘의 입력은 다음과 같다.
inputMediaType: vc+sd-jwt
inputDocument: [SD-JWT]로 보호된 검증 가능한 자격 증명
[SD-JWT]로 보호된 검증 가능한 자격 증명 또는 프레젠테이션을 수신하면, 보유자 또는 검증자는 다음 알고리즘을 따른다.
status를 false로 설정한다.
document를 null로 설정한다.
mediaType을 null로 설정한다.
이 알고리즘의 입력은 다음과 같다.
inputMediaType: vc+cose 또는
vp+cose
inputDocument: CBOR Object Signing and Encryption (COSE):
Structures and Process로 보호된
검증 가능한 자격 증명 또는
검증 가능한
프레젠테이션
[RFC9052]로 보호된 검증 가능한 자격 증명 또는 프레젠테이션을 수신하면, 보유자 또는 검증자는 다음 알고리즘을 따른다.
status를 true로 설정한다.
mediaType을 vc 또는 vp로 설정한다.
document를 디코딩된 COSE_Sign1 페이로드로 설정한다.
status를 false로 설정한다.
document를 null로 설정한다.
mediaType을 null로 설정한다.
typ에 대해 예상되는 모든 클레임은 존재해야 MUST 한다.
이해되는 모든 클레임은 검증자의 유효성 검사 정책에 따라
평가되어야 MUST 한다.
이해되지 않는 모든 클레임은 무시되어야 MUST 한다.
검증에서 반환된 검증된 document는
검증 가능한 자격 증명 데이터 모델
v2.0에 설명된 대로 올바른 형식의 compact JSON-LD 문서여야
MUST 한다.
credentialSchema와 같은 스키마 확장 메커니즘은
확인되어야 SHOULD 한다.
확장 메커니즘 type이 이해되지 않는 경우,
이 속성은 무시되어야 MUST 한다.
credentialStatus와 같은 상태 확장 메커니즘은
확인되어야 SHOULD 한다.
확장 메커니즘 type이 이해되지 않는 경우,
이 속성은 무시되어야 MUST 한다.
검증자의 유효성 검사 정책, 자격 증명의 유형, 그리고 보호 메커니즘의 유형에 따라 추가 유효성 검사 확인이 적용될 MAY 있다. 예를 들어, 여러 자격 증명 간의 의존성, 여러 자격 증명과 관련된 순서 또는 시간 정보, 그리고/또는 여러 프레젠테이션으로 인해, 그렇지 않으면 유효한 자격 증명 또는 프레젠테이션이 유효하지 않은 것으로 간주될 수 있다.
이 절은 비규범이다.
이 명세는
검증 가능한 자격 증명 데이터
모델을 준수하는 페이로드가 있는 JSON Web Token
(JWT)을
식별하기 위해 특별히 application/vc+jwt
미디어 유형을 등록한다.
| 유형 이름: | application |
| 하위 유형 이름: | vc+jwt |
| 필수 매개변수: | N/A |
| 선택적 매개변수: | N/A |
| 인코딩 고려사항: |
binary; application/jwt 값은 마침표('.')로 구분된 일련의
base64url 인코딩 값(그중 일부는 빈 문자열일 수 있음)이다.
|
| 보안 고려사항: | |
| 상호운용성 고려사항: |
이 명세에 정의된 대로이다. |
| 공개된 명세: | https://www.w3.org/TR/vc-jose-cose |
| 이 미디어를 사용할 애플리케이션: |
[VC-DATA-MODEL-2.0]을 준수하는 W3C 검증 가능한 자격 증명 발급자, 보유자 및 검증자 소프트웨어가 이 미디어 유형을 사용할 애플리케이션에 포함된다. 적합한 애플리케이션 유형은 여기와 여기에 설명되어 있다. |
| 사용 제한: | N/A |
| 추가 정보: |
|
| 작성자: | Ivan Herman ivan@w3.org |
| 의도된 사용: | COMMON |
| 변경 관리자: | W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org |
이 명세는
검증 가능한 자격 증명 데이터 모델의 검증 가능한 프레젠테이션 정의를 준수하는
페이로드가 있는 JSON Web Token (JWT)을
식별하기 위해 특별히 application/vp+jwt
미디어 유형을 등록한다.
| 유형 이름: | application |
| 하위 유형 이름: | vp+jwt |
| 필수 매개변수: | N/A |
| 선택적 매개변수: | N/A |
| 인코딩 고려사항: |
binary; application/jwt 값은 마침표('.')로 구분된 일련의
base64url 인코딩 값(그중 일부는 빈 문자열일 수 있음)이다.
|
| 보안 고려사항: | |
| 상호운용성 고려사항: |
이 명세에 정의된 대로이다. |
| 공개된 명세: | https://www.w3.org/TR/vc-jose-cose |
| 이 미디어를 사용할 애플리케이션: |
[VC-DATA-MODEL-2.0]을 준수하는 W3C 검증 가능한 자격 증명 발급자, 보유자 및 검증자 소프트웨어가 이 미디어 유형을 사용할 애플리케이션에 포함된다. 적합한 애플리케이션 유형은 여기와 여기에 설명되어 있다. |
| 사용 제한: | N/A |
| 추가 정보: |
|
| 작성자: | Ivan Herman ivan@w3.org |
| 의도된 사용: | COMMON |
| 변경 관리자: | W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org |
이 명세는
검증 가능한 자격 증명 데이터
모델을 준수하는 페이로드가 있는
JWT를
위한 선택적 공개(SD-JWT)를 식별하기 위해 특별히
application/vc+sd-jwt
미디어 유형을 등록한다.
| 유형 이름: | application |
| 하위 유형 이름: | vc+sd-jwt |
| 필수 매개변수: | N/A |
| 선택적 매개변수: | N/A |
| 인코딩 고려사항: |
binary; application/sd-jwt 값은 마침표('.')와 물결표('~') 문자로
구분된 일련의 base64url 인코딩 값(그중 일부는 빈 문자열일 수 있음)이다.
|
| 보안 고려사항: |
이 명세에 정의된 대로이다. JWT를 위한 선택적 공개(SD-JWT)의 보안 고려사항도 참조하라. |
| 상호운용성 고려사항: |
이 명세에 정의된 대로이다. |
| 공개된 명세: | https://www.w3.org/TR/vc-jose-cose |
| 이 미디어를 사용할 애플리케이션: |
[VC-DATA-MODEL-2.0]을 준수하는 W3C 검증 가능한 자격 증명 발급자, 보유자 및 검증자 소프트웨어가 이 미디어 유형을 사용할 애플리케이션에 포함된다. 적합한 애플리케이션 유형은 여기와 여기에 설명되어 있다. |
| 사용 제한: | N/A |
| 추가 정보: |
|
| 작성자: | Ivan Herman ivan@w3.org |
| 의도된 사용: | COMMON |
| 변경 관리자: | W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org |
이 명세는
검증 가능한 자격 증명 데이터 모델의 검증 가능한 프레젠테이션 정의를 준수하는
페이로드가 있는 JWT를
위한 선택적 공개(SD-JWT)를 식별하기 위해 특별히
application/vp+sd-jwt
미디어 유형을 등록한다.
| 유형 이름: | application |
| 하위 유형 이름: | vp+sd-jwt |
| 필수 매개변수: | N/A |
| 선택적 매개변수: | N/A |
| 인코딩 고려사항: |
binary; application/sd-jwt 값은 마침표('.')와 물결표('~') 문자로
구분된 일련의 base64url 인코딩 값(그중 일부는 빈 문자열일 수 있음)이다.
|
| 보안 고려사항: |
이 명세에 정의된 대로이다. JWT를 위한 선택적 공개(SD-JWT)의 보안 고려사항도 참조하라. |
| 상호운용성 고려사항: |
이 명세에 정의된 대로이다. |
| 공개된 명세: | https://www.w3.org/TR/vc-jose-cose |
| 이 미디어를 사용할 애플리케이션: |
[VC-DATA-MODEL-2.0]을 준수하는 W3C 검증 가능한 자격 증명 발급자, 보유자 및 검증자 소프트웨어가 이 미디어 유형을 사용할 애플리케이션에 포함된다. 적합한 애플리케이션 유형은 여기와 여기에 설명되어 있다. |
| 사용 제한: | N/A |
| 추가 정보: |
|
| 작성자: | Ivan Herman ivan@w3.org |
| 의도된 사용: | COMMON |
| 변경 관리자: | W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org |
이 명세는
검증 가능한 자격 증명 데이터
모델을 준수하는 페이로드가 있는 COSE 객체 [RFC9052]를
식별하기 위해 특별히 application/vc+cose
미디어 유형을 등록한다.
| 유형 이름: | application |
| 하위 유형 이름: | vc+cose |
| 필수 매개변수: | N/A |
| 선택적 매개변수: | N/A |
| 인코딩 고려사항: | binary (CBOR) |
| 보안 고려사항: | |
| 상호운용성 고려사항: |
이 명세에 정의된 대로이다. |
| 공개된 명세: | https://www.w3.org/TR/vc-jose-cose |
| 이 미디어를 사용할 애플리케이션: |
[VC-DATA-MODEL-2.0]을 준수하는 W3C 검증 가능한 자격 증명 발급자, 보유자 및 검증자 소프트웨어가 이 미디어 유형을 사용할 애플리케이션에 포함된다. 적합한 애플리케이션 유형은 여기와 여기에 설명되어 있다. |
| 사용 제한: | N/A |
| 추가 정보: |
|
| 작성자: | Ivan Herman ivan@w3.org |
| 의도된 사용: | COMMON |
| 변경 관리자: | W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org |
이 명세는
검증 가능한 자격 증명 데이터 모델의 검증 가능한 프레젠테이션 정의를 준수하는
페이로드가 있는 COSE 객체 [RFC9052]를
식별하기 위해 특별히 application/vp+cose
미디어 유형을 등록한다.
| 유형 이름: | application |
| 하위 유형 이름: | vp+cose |
| 필수 매개변수: | N/A |
| 선택적 매개변수: | N/A |
| 인코딩 고려사항: | binary (CBOR) |
| 보안 고려사항: | |
| 상호운용성 고려사항: |
이 명세에 정의된 대로이다. |
| 공개된 명세: | https://www.w3.org/TR/vc-jose-cose |
| 이 미디어를 사용할 애플리케이션: |
[VC-DATA-MODEL-2.0]을 준수하는 W3C 검증 가능한 자격 증명 발급자, 보유자 및 검증자 소프트웨어가 이 미디어 유형을 사용할 애플리케이션에 포함된다. 적합한 애플리케이션 유형은 여기와 여기에 설명되어 있다. |
| 사용 제한: | N/A |
| 추가 정보: |
|
| 작성자: | Ivan Herman ivan@w3.org |
| 의도된 사용: | COMMON |
| 변경 관리자: | W3C 검증 가능한 자격 증명 작업 그룹 public-vc-wg@w3.org |
이 절은 비규범이다.
검증 가능한 자격 증명은 조직과 개인의 개인정보와 보안을 보장하기 위해 보호해야 하는 민감한 정보를 포함하는 경우가 많다. 이 절은 구현자와 사용자에게 관련된 몇 가지 개인정보 보호 고려사항을 개괄한다.
구현자는 [VC-DATA-MODEL-2.0]에서 언급한 모든 개인정보 보호 고려사항을 유의하고 준수하는 것이 권고된다.
구현자는 또한 개인정보 보호 지침으로 JWT 명세의 개인정보 보호 고려사항 절과 NIST Special Publication 800-122 [[SP-800-122] "Guide to Protecting the Confidentiality of Personally Identifiable Information (PII)"를 참고하는 것이 권고된다.
[VC-DATA-MODEL-2.0]의 개인정보 보호 권고사항에 더해 다음 고려사항이 제시된다.
데이터 최소화: 검증 가능한 자격 증명은 의도한 목적을 달성하는 데 필요한 최소한의 데이터만 포함하는 것이 모범 사례로 간주된다. 이는 불필요하게 공유되거나 저장되는 민감한 정보의 양을 제한하는 데 도움이 된다.
충분한 설명에 기반한 동의: 개인에게 자신의 데이터가 어떻게 사용될지 충분히 알리고, 자신의 데이터 사용에 동의하거나 거부할 수 있는 능력을 제공하는 것이 모범 사례로 간주된다. 이는 개인이 자신의 개인정보에 대한 통제권을 유지하도록 보장하는 데 도움이 된다.
데이터 보호: 무단 접근, 수정 또는 공개를 방지하기 위해 강력한 암호화와 기타 보안 조치를 사용하여 검증 가능한 자격 증명을 보호하는 것이 모범 사례로 간주된다.
이러한 고려사항은 완전한 목록이 아니며, 구현자와 사용자는 이 명세를 사용하여 구현된 검증 가능한 자격 증명의 개인정보와 보안을 보장하기 위해 추가적인 개인정보 보호 자료와 모범 사례를 참조하는 것이 권고된다.
이 절은 이 명세의 구현자와 사용자를 위한 보안 고려사항을 개괄한다. JOSE 또는 COSE를 사용하여 구현할 때 검증 가능한 자격 증명의 보안과 무결성을 보장하려면 이러한 요소를 신중히 고려하는 것이 중요하다.
이 명세를 구현할 때에는 광범위한 암호화 애플리케이션과 관련된 모든 보안 문제를 다루는 것이 필수적이다. 여기에는 특히 사용자의 비대칭 개인 키와 대칭 비밀 키를 보호하는 것, 그리고 다양한 공격에 대한 대응책을 적용하는 것이 포함된다. 이러한 문제를 적절히 다루지 못하면 검증 가능한 자격 증명의 보안과 무결성이 손상되어, 민감한 정보에 대한 무단 접근, 수정 또는 공개로 이어질 수 있다.
구현자는 키와 기타 민감한 데이터를 안전하게 처리하기 위해 모범 사례와 확립된 암호화 표준을 따르는 것이 권고된다. 또한 취약점이나 위협을 식별하고 해결하기 위해 정기적인 보안 평가와 감사를 수행해야 한다.
[RFC7515] 및 [RFC7519]에 개괄된 모든 보안 고려사항을 따른다.
JSON-LD를 사용할 때에는 컨텍스트의 원격 검색에 특별히 주의하고, [JSON-LD11]에 명시된 추가 보안 고려사항을 따른다.
JSON [RFC7159]을 사용할 때 [RFC7515]에 명시된 바와 같이, 엄격한 유효성 검사는 보안 요구사항이다. 잘못된 형식의 JSON을 수신한 경우, 생성자의 의도를 신뢰성 있게 해석하는 것이 불가능할 수 있으며, 이는 모호하거나 악용 가능한 상황으로 이어질 수 있다. 이러한 위험을 방지하려면 모든 입력 데이터의 구문을 엄격하게 검증하는 JSON 파서를 사용하는 것이 필수적이다. [RFC7159]에 정의된 JSON-text 구문을 준수하지 않는 모든 JSON 입력은 JSON 파서에 의해 전체적으로 거부되어야 한다. 잘못된 입력을 거부하지 않으면 검증 가능한 자격 증명의 보안과 무결성이 손상될 수 있다.
이 명세를 구현할 때 기술 구현자는 다양한 접근성 요소를 고려하는 것이 매우 중요하다. 접근성 문제를 무시하면 인구의 상당 부분이 정보를 사용할 수 없게 된다. 능력과 관계없이 모든 개인에게 동등한 접근을 보장하려면 Web Content Accessibility Guidelines (WCAG 2.1) [WCAG21]와 같은 접근성 지침 및 표준을 준수하는 것이 필수적이다. 암호학을 포함하는 시스템을 구축할 때 이는 더욱 중요해지는데, 이러한 시스템은 역사적으로 보조 기술에 어려움을 초래해 왔기 때문이다.
구현자는 [VC-DATA-MODEL-2.0]에서 언급한 모든 접근성 고려사항을 유의하고 준수하는 것이 권고된다.
이 절은 비규범이다.
{
"id": "https://vendor.example",
}
{
"id": "https://university.example/issuers/565049",
"verificationMethod": [{
"id": "https://university.example/issuers/565049#key-123",
"type": "JsonWebKey",
"controller": "https://university.example/issuers/565049",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-384",
"alg": "ES384",
"x": "PxgAmVYOQvSNcMYL2tOzoLwSWn4Ta3tIMPEUKR8pxeb-gmR11-DyKHBoIiY-2LhM",
"y": "BZEBTkImVdpwvxR9THIRw16eblnj5-tZa7m-ww5uVd4kyPJNRoWUn2aT9ZuarAe-"
}
}]
}
{
"id": "https://university.example/issuers/565049",
"verificationMethod": [{
"id": "https://university.example/issuers/565049#key-123",
"type": "JsonWebKey",
"controller": "https://university.example/issuers/565049",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-384",
"alg": "ES384",
"x": "PxgAmVYOQvSNcMYL2tOzoLwSWn4Ta3tIMPEUKR8pxeb-gmR11-DyKHBoIiY-2LhM",
"y": "BZEBTkImVdpwvxR9THIRw16eblnj5-tZa7m-ww5uVd4kyPJNRoWUn2aT9ZuarAe-"
}
}],
"authentication": ["https://university.example/issuers/565049#key-123"],
"assertionMethod": ["https://university.example/issuers/565049#key-123"]
}
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/jwk/v1",
{
"@vocab": "https://vendor.example#"
}
],
"id": "did:web:vendor.example",
"alsoKnownAs": ["https://vendor.example",
"did:jwk:eyJraWQiOiJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6andrLXRodW1icHJpbnQ6c2hhLTI1NjpGZk1iek9qTW1RNGVmVDZrdndUSUpqZWxUcWpsMHhqRUlXUTJxb2JzUk1NIiwia3R5IjoiT0tQIiwiY3J2IjoiRWQyNTUxOSIsImFsZyI6IkVkRFNBIiwieCI6IkFOUmpIX3p4Y0tCeHNqUlBVdHpSYnA3RlNWTEtKWFE5QVBYOU1QMWo3azQifQ"
],
"verificationMethod": [{
"id": "#urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-521",
"alg": "ES512",
"x": "AFTyMw-fIYJNg6fBVJvOPOsLxmnNj8HgqMChyRL0swLaefVAc7wrWZ8okQJqMmvv03JRUp277meQZM3JcvXFkH1v",
"y": "ALn96CrD88b4TClmkl1sk0xk2FgAIda97ZF8TUOjbeWSzbKnN2KB6pqlpbuJ2xIRXvsn5BWQVlAT2JGpGwDNMyV1"
}
}, {
"id": "#z6MkhEdpG12jyQegrr62ACRmNY8gc531W2j9Xo39cHphuCEH",
"type": "JsonWebKey2020",
"controller": "https://vendor.example",
"publicKeyJwk": {
"kid": "urn:ietf:params:oauth:jwk-thumbprint:sha-256:FfMbzOjMmQ4efT6kvwTIJjelTqjl0xjEIWQ2qobsRMM",
"kty": "OKP",
"crv": "Ed25519",
"alg": "EdDSA",
"x": "ANRjH_zxcKBxsjRPUtzRbp7FSVLKJXQ9APX9MP1j7k4"
}
}, {
"id": "#subject-authentication",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-384",
"alg": "ES384",
"x": "PxgAmVYOQvSNcMYL2tOzoLwSWn4Ta3tIMPEUKR8pxeb-gmR11-DyKHBoIiY-2LhM",
"y": "BZEBTkImVdpwvxR9THIRw16eblnj5-tZa7m-ww5uVd4kyPJNRoWUn2aT9ZuarAe-"
}
}, {
"id": "#credential-issuance",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "EC",
"crv": "P-256",
"alg": "ES256",
"x": "MYvnaI87pfrn3FpTqW-yNiFcF1K7fedJiqapm20_q7c",
"y": "9YEbT6Tyuc7xp9yRvhOUVKK_NIHkn5HpK9ZMgvK5pVw"
}
}, {
"id": "#key-agreement",
"type": "JsonWebKey",
"controller": "did:web:vendor.example",
"publicKeyJwk": {
"kty": "OKP",
"crv": "X25519",
"alg": "ECDH-ES+A128KW",
"x": "qLZkSTbstvMWPTivmiQglEFWG2Ff7gNDVoVisdZTr1I"
}
}],
"authentication": ["#subject-authentication"],
"assertionMethod": ["#credential-issuance"]
}
{
"@context": ["https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "https://contoso.example/credentials/23894672394",
"type": ["VerifiableCredential", "K9UnitCredential"],
"issuer": {
"id": "https://contoso.example"
},
"validFrom": "2015-04-16T05:11:32.432Z",
"credentialStatus": {
"id": "https://contoso.example/credentials/status/4#273762",
"type": "StatusList2021Entry",
"statusPurpose": "revocation",
"statusListIndex": "273762",
"statusListCredential": "https://contoso.example/credentials/status/4"
},
"credentialSubject": [{
"id": "did:example:1312387641",
"type": "Person"
}, {
"id": "did:example:63888231",
"type": "Dog"
}]
}
{
"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": "https://contoso.example/credentials/23894672394",
"type": [
"VerifiableCredential",
"K9UnitCredential"
],
"issuer": {
"id": "https://contoso.example"
},
"validFrom": "2015-04-16T05:11:32.432Z",
"credentialStatus": {
"id": "https://contoso.example/credentials/status/4#273762",
"type": "StatusList2021Entry",
"statusPurpose": "revocation",
"statusListIndex": "273762",
"statusListCredential": "https://contoso.example/credentials/status/4"
},
"credentialSubject": [
{
"id": "did:example:1312387641",
"type": "Person"
},
{
"id": "did:example:63888231",
"type": "Dog"
}
]
}
application/vc+jwt
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "https://contoso.example/credentials/23894672394",
"type": [
"VerifiableCredential",
"K9UnitCredential"
],
"issuer": {
"id": "https://contoso.example"
},
"validFrom": "2015-04-16T05:11:32.432Z",
"credentialStatus": {
"id": "https://contoso.example/credentials/status/4#273762",
"type": "StatusList2021Entry",
"statusPurpose": "revocation",
"statusListIndex": "273762",
"statusListCredential": "https://contoso.example/credentials/status/4"
},
"credentialSubject": [
{
"id": "did:example:1312387641",
"type": "Person"
},
{
"id": "did:example:63888231",
"type": "Dog"
}
]
}
application/vc+cose
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"iat": 1745594772,
"exp": 1746804372,
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": {
"_sd": [
"mSg0kZC77X6jUVHq2IIYNygSlXKKVzTSdhFWoNYyxOA"
]
},
"validFrom": "2015-04-16T05:11:32.432Z",
"credentialStatus": {
"statusPurpose": "revocation",
"statusListIndex": "273762",
"statusListCredential": "https://contoso.example/credentials/status/4",
"_sd": [
"mv6Cexu-fwPdLVo5ZYH7ycS8mFGTQVMxThp2nwECBT4",
"tQantX-hhSpOANOV-1xKF_GRof5Lnm6JbPKqboLt7RA"
]
},
"credentialSubject": [
{
"_sd": [
"SMxFrlOcsuPyVN5LRBbVTLZ6xMQqaUBNBS67kL_Xd_w",
"VGN44u5sVQgncEIfgELJeZR9bpeTGc8ZAcMmV6MQttg"
]
},
{
"_sd": [
"MBe_7HKj0-P2Zfttw5vYdJ0xUe3xtpi2widbSnw_ZOg",
"ec1yUY0C75J7pgyMzO5Dw90pDUr3fX7Z8Gt8wUAIYzI"
]
}
],
"_sd": [
"FIWgy39UzzZ5_aOKV3po6EyjXmBN9c8oIQ2jKe_Ftb0",
"FmDcdemIspdmQMMeuS-4N4J5wCFobBBuiuUelGsWMvU"
]
}
SHA-256 해시: FIWgy39UzzZ5_aOKV3po6EyjXmBN9c8oIQ2jKe_Ftb0
공개: WyI0SWQ0aFVoUzMxQThXelBRTlhPUWJBIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlL2NyZWRlbnRpYWxzLzIzODk0NjcyMzk0Il0
내용: [
"4Id4hUhS31A8WzPQNXOQbA",
"id",
"https://contoso.example/credentials/23894672394"
]
SHA-256 해시: FmDcdemIspdmQMMeuS-4N4J5wCFobBBuiuUelGsWMvU
공개: WyJJSFNyZnVZR0YtcWk5OXcySWJkYUJBIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIks5VW5pdENyZWRlbnRpYWwiXV0
내용: [
"IHSrfuYGF-qi99w2IbdaBA",
"type",
[
"VerifiableCredential",
"K9UnitCredential"
]
]
SHA-256 해시: mSg0kZC77X6jUVHq2IIYNygSlXKKVzTSdhFWoNYyxOA
공개: WyJDeEpTQmlKeDVtdVgzZkhSRmZDYlBRIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlIl0
내용: [
"CxJSBiJx5muX3fHRFfCbPQ",
"id",
"https://contoso.example"
]
SHA-256 해시: mv6Cexu-fwPdLVo5ZYH7ycS8mFGTQVMxThp2nwECBT4
공개: WyJuQVhZQ29yTUNGaGRJMDhZNzh5ckNBIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlL2NyZWRlbnRpYWxzL3N0YXR1cy80IzI3Mzc2MiJd
내용: [
"nAXYCorMCFhdI08Y78yrCA",
"id",
"https://contoso.example/credentials/status/4#273762"
]
SHA-256 해시: tQantX-hhSpOANOV-1xKF_GRof5Lnm6JbPKqboLt7RA
공개: WyI1aUJCSmdual9pMkpQZHdRTTVzRlh3IiwgInR5cGUiLCAiU3RhdHVzTGlzdDIwMjFFbnRyeSJd
내용: [
"5iBBJgnj_i2JPdwQM5sFXw",
"type",
"StatusList2021Entry"
]
SHA-256 해시: SMxFrlOcsuPyVN5LRBbVTLZ6xMQqaUBNBS67kL_Xd_w
공개: WyJBNzFORTByODBmN3ZCVkNrcmU0N01BIiwgImlkIiwgImRpZDpleGFtcGxlOjEzMTIzODc2NDEiXQ
내용: [
"A71NE0r80f7vBVCkre47MA",
"id",
"did:example:1312387641"
]
SHA-256 해시: VGN44u5sVQgncEIfgELJeZR9bpeTGc8ZAcMmV6MQttg
공개: WyJHaFg4N1lJMzg0cjV5b0hXOENTOEJ3IiwgInR5cGUiLCAiUGVyc29uIl0
내용: [
"GhX87YI384r5yoHW8CS8Bw",
"type",
"Person"
]
SHA-256 해시: MBe_7HKj0-P2Zfttw5vYdJ0xUe3xtpi2widbSnw_ZOg
공개: WyJhQWxrLVhrQ0RCaFItN1Z5NnBXZmNnIiwgImlkIiwgImRpZDpleGFtcGxlOjYzODg4MjMxIl0
내용: [
"aAlk-XkCDBhR-7Vy6pWfcg",
"id",
"did:example:63888231"
]
SHA-256 해시: ec1yUY0C75J7pgyMzO5Dw90pDUr3fX7Z8Gt8wUAIYzI
공개: WyJzLTFSWGdUWVVQWGJNZ2JLMHVaX0NRIiwgInR5cGUiLCAiRG9nIl0
내용: [
"s-1RXgTYUPXbMgbK0uZ_CQ",
"type",
"Dog"
]
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "https://contoso.example/credentials/35327255",
"type": ["VerifiableCredential", "KYCExample"],
"issuer": "did:web:contoso.example",
"validFrom": "2019-05-25T03:10:16.992Z",
"validUntil": "2027-05-25T03:10:16.992Z",
"credentialSchema": {
"id": "https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi",
"type": "JsonSchema"
},
"credentialSubject": {
"id": "did:example:1231588",
"type": "Person"
}
}
{
"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": "https://contoso.example/credentials/35327255",
"type": [
"VerifiableCredential",
"KYCExample"
],
"issuer": "did:web:contoso.example",
"validFrom": "2019-05-25T03:10:16.992Z",
"validUntil": "2027-05-25T03:10:16.992Z",
"credentialSchema": {
"id": "https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi",
"type": "JsonSchema"
},
"credentialSubject": {
"id": "did:example:1231588",
"type": "Person"
}
}
application/vc+jwt
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"id": "https://contoso.example/credentials/35327255",
"type": [
"VerifiableCredential",
"KYCExample"
],
"issuer": "did:web:contoso.example",
"validFrom": "2019-05-25T03:10:16.992Z",
"validUntil": "2027-05-25T03:10:16.992Z",
"credentialSchema": {
"id": "https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi",
"type": "JsonSchema"
},
"credentialSubject": {
"id": "did:example:1231588",
"type": "Person"
}
}
application/vc+cose
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"iat": 1745594772,
"exp": 1746804372,
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"issuer": "did:web:contoso.example",
"validFrom": "2019-05-25T03:10:16.992Z",
"validUntil": "2027-05-25T03:10:16.992Z",
"credentialSchema": {
"_sd": [
"HiarZUG7NVHeTxMJfLFGQN-3vmfd7jUCzwmw4XbwaB4",
"KSy9JTiccPPppo7knU4ZSqqjZno35Rz-9RNN0Y5Epng"
]
},
"credentialSubject": {
"_sd": [
"Avjemz7SrlBIOpXTokISYN4iV6EHCmKL4GJM_9OjPrg",
"aeS0kUTFAjvoIPPITgB_Bp88voe3fnHqrCvx-CJrH18"
]
},
"_sd": [
"1ji_39ienphXEsrOKxpudg40AAB-iQ9GC8BDsPq2V1g",
"UE9R6ktpnWU0rkf7qpFhOVa14gc7H78we9wQ_lE1IWs"
]
}
SHA-256 해시: 1ji_39ienphXEsrOKxpudg40AAB-iQ9GC8BDsPq2V1g
공개: WyIxZ3Mxd3lXd002RC1tVWl3U1pnYjJBIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlL2NyZWRlbnRpYWxzLzM1MzI3MjU1Il0
내용: [
"1gs1wyWwM6D-mUiwSZgb2A",
"id",
"https://contoso.example/credentials/35327255"
]
SHA-256 해시: UE9R6ktpnWU0rkf7qpFhOVa14gc7H78we9wQ_lE1IWs
공개: WyJNLWlDZmZjZGdod1BFSXV2Wk9NODh3IiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIktZQ0V4YW1wbGUiXV0
내용: [
"M-iCffcdghwPEIuvZOM88w",
"type",
[
"VerifiableCredential",
"KYCExample"
]
]
SHA-256 해시: HiarZUG7NVHeTxMJfLFGQN-3vmfd7jUCzwmw4XbwaB4
공개: WyJ6TV9PQXNIMV9WMXBpZV9fU09QX3BBIiwgImlkIiwgImh0dHBzOi8vY29udG9zby5leGFtcGxlL2JhZnliZWlnZHlyLi4ubHFhYmYzb2NsZ3RxeTU1ZmJ6ZGkiXQ
내용: [
"zM_OAsH1_V1pie__SOP_pA",
"id",
"https://contoso.example/bafybeigdyr...lqabf3oclgtqy55fbzdi"
]
SHA-256 해시: KSy9JTiccPPppo7knU4ZSqqjZno35Rz-9RNN0Y5Epng
공개: WyJnNzFUcFFIbHNoQUZjX2FhNDlTaWZ3IiwgInR5cGUiLCAiSnNvblNjaGVtYSJd
내용: [
"g71TpQHlshAFc_aa49Sifw",
"type",
"JsonSchema"
]
SHA-256 해시: aeS0kUTFAjvoIPPITgB_Bp88voe3fnHqrCvx-CJrH18
공개: WyJ1cUZTLWZobTBkaWlTa1BjYVlFMXhRIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMzE1ODgiXQ
내용: [
"uqFS-fhm0diiSkPcaYE1xQ",
"id",
"did:example:1231588"
]
SHA-256 해시: Avjemz7SrlBIOpXTokISYN4iV6EHCmKL4GJM_9OjPrg
공개: WyJsRU5IX0ZBc253eVJkYnFSSHBkT2l3IiwgInR5cGUiLCAiUGVyc29uIl0
내용: [
"lENH_FAsnwyRdbqRHpdOiw",
"type",
"Person"
]
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+cose;base64,0oREo...+Q==",
"type": "EnvelopedVerifiableCredential"
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+jwt,eyVjV...RMjU",
"type": "EnvelopedVerifiableCredential"
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+sd-jwt,eyVjV...RMjU~",
"type": "EnvelopedVerifiableCredential"
}
]
}
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
application/vp
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+cose;base64url,YmFzZTY0LDBvUkVvLi4uK1E9PQ",
"type": "EnvelopedVerifiableCredential"
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+jwt,eyVjV...RMjU;data:application/vc+jwt,eyVjV...RMjU",
"type": "EnvelopedVerifiableCredential"
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+sd-jwt,eyVjV...RMjU~;data:application/vc+sd-jwt,eyVjV...RMjU~",
"type": "EnvelopedVerifiableCredential"
}
]
}
application/vp+jwt
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": "VerifiablePresentation",
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+cose;base64url,WW1GelpUWTBMREJ2VWtWdkxpNHVLMUU5UFE",
"type": "EnvelopedVerifiableCredential"
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+jwt,eyVjV...RMjU;data:application/vc+jwt,eyVjV...RMjU",
"type": "EnvelopedVerifiableCredential"
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"id": "data:application/vc+sd-jwt,eyVjV...RMjU~;data:application/vc+sd-jwt,eyVjV...RMjU~",
"type": "EnvelopedVerifiableCredential"
}
]
}
application/vp+cose
{
"kid": "ExHkBMW9fmbkvV266mRpuP2sUY_N_EWIN1lapUzO8ro",
"alg": "ES256"
}
{
"iat": 1745594772,
"exp": 1746804372,
"_sd_alg": "sha-256",
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"verifiableCredential": [
{
"@context": "https://www.w3.org/ns/credentials/v2",
"_sd": [
"CW2sXDKUu2YCe4lo7rSzZSFkXa4o1O_SCaeRpeLfPUg",
"fhZRx7eevF5oXWIu8xpQj5uCx7mUZv_mp-NKzZr73Fw"
]
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"_sd": [
"0h_3c2osegluPgLPPn0TyOg4NRVEaPvt234AAe5sn6k",
"OHlxR563LCa18rwLn5v9EbLLfAws7tF_ooZ3vefTpzw"
]
},
{
"@context": "https://www.w3.org/ns/credentials/v2",
"_sd": [
"bezi7IrI9D8g67Eikwm2Bh65iI-LeoB_S95tn6gDZyM",
"hZg6ZqBX8tUj34ieLgSC7J0b5JE7sXhnS2ox9zCMFLc"
]
}
],
"_sd": [
"x6Y6p1pZGnW1zhvzF9bWTlYyEJOrL7y5k2HeRJaXGIo"
]
}
SHA-256 해시: x6Y6p1pZGnW1zhvzF9bWTlYyEJOrL7y5k2HeRJaXGIo
공개: WyJVRExLMVB5MXRhbi1fT2NSV2VxWkFRIiwgInR5cGUiLCAiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJd
내용: [
"UDLK1Py1tan-_OcRWeqZAQ",
"type",
"VerifiablePresentation"
]
SHA-256 해시: fhZRx7eevF5oXWIu8xpQj5uCx7mUZv_mp-NKzZr73Fw
공개: WyJKazJ5OTZlcTB6QXlDbGttd0luQ3lBIiwgImlkIiwgImRhdGE6YXBwbGljYXRpb24vdmMrY29zZTtiYXNlNjR1cmwsIFdXMUdlbHBVV1RCTVJFSjJWV3RXZGt4cE5IVkxNVVU1VUZFIl0
내용: [
"Jk2y96eq0zAyClkmwInCyA",
"id",
"data:application/vc+cose;base64url, WW1GelpUWTBMREJ2VWtWdkxpNHVLMUU5UFE"
]
SHA-256 해시: CW2sXDKUu2YCe4lo7rSzZSFkXa4o1O_SCaeRpeLfPUg
공개: WyJCSDVfaGZ0SHFXR1pNd2puNFJWc0J3IiwgInR5cGUiLCAiRW52ZWxvcGVkVmVyaWZpYWJsZUNyZWRlbnRpYWwiXQ
내용: [
"BH5_hftHqWGZMwjn4RVsBw",
"type",
"EnvelopedVerifiableCredential"
]
SHA-256 해시: OHlxR563LCa18rwLn5v9EbLLfAws7tF_ooZ3vefTpzw
공개: WyJWVFVsV01mbWV3Wlg5NDVyc1J5Uk9BIiwgImlkIiwgImRhdGE6YXBwbGljYXRpb24vdmMrand0LCBleVZqVi4uLlJNalU7ZGF0YTphcHBsaWNhdGlvbi92Yytqd3QsIGV5VmpWLi4uUk1qVSJd
내용: [
"VTUlWMfmewZX945rsRyROA",
"id",
"data:application/vc+jwt, eyVjV...RMjU;data:application/vc+jwt, eyVjV...RMjU"
]
SHA-256 해시: 0h_3c2osegluPgLPPn0TyOg4NRVEaPvt234AAe5sn6k
공개: WyJ6QVA2UUJDdVN2ZVhuSWg3RUVQeml3IiwgInR5cGUiLCAiRW52ZWxvcGVkVmVyaWZpYWJsZUNyZWRlbnRpYWwiXQ
내용: [
"zAP6QBCuSveXnIh7EEPziw",
"type",
"EnvelopedVerifiableCredential"
]
SHA-256 해시: bezi7IrI9D8g67Eikwm2Bh65iI-LeoB_S95tn6gDZyM
공개: WyJ0eF85eXpwQzlrRE82dkZsLVFyT0lBIiwgImlkIiwgImRhdGE6YXBwbGljYXRpb24vdmMrc2Qtand0LCBleVZqVi4uLlJNalV-O2RhdGE6YXBwbGljYXRpb24vdmMrc2Qtand0LCBleVZqVi4uLlJNalV-Il0
내용: [
"tx_9yzpC9kDO6vFl-QrOIA",
"id",
"data:application/vc+sd-jwt, eyVjV...RMjU~;data:application/vc+sd-jwt, eyVjV...RMjU~"
]
SHA-256 해시: hZg6ZqBX8tUj34ieLgSC7J0b5JE7sXhnS2ox9zCMFLc
공개: WyJMWVdtZW5EVWQ2WDduSjNtMnY4d0R3IiwgInR5cGUiLCAiRW52ZWxvcGVkVmVyaWZpYWJsZUNyZWRlbnRpYWwiXQ
내용: [
"LYWmenDUd6X7nJ3m2v8wDw",
"type",
"EnvelopedVerifiableCredential"
]
data:application/vc+sd-jwt,eyJhbGciOiJFUzM4NCIsImtpZCI6IlNJM1JITm91aDhvODFOT09OUFFVQUw3RWdaLWtJNl94ajlvUkV2WDF4T3ciLCJ0eXAiOiJ2YytsZCtqc29uK3NkLWp3dCIsImN0eSI6InZjK2xkK2pzb24ifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiX3NkIjpbIkU3dU1sSWFyS29iYXJTdEZGRjctZm5qaV9sQVdnM3BGMkV5dVc4dWFYakUiLCJYelRaSVgyNGdDSWxSQVFHclFoNU5FRm1XWkQtZ3Z3dkIybzB5Y0FwNFZzIl19LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsiT3oxUEZIMG0tWk9TdEhwUVZyeGlmVlpKRzhvNmlQQmNnLVZ2SXQwd2plcyJdfSwiX3NkIjpbIkVZQ1daMTZZMHB5X1VNNzRHU3NVYU9zT19mdDExTlVSaFFUTS1TT1lFTVEiXX0sIl9zZCI6WyJqT055NnZUbGNvVlAzM25oSTdERGN3ekVka3d2R3VVRXlLUjdrWEVLd3VVIiwid21BdHpwc0dRbDJveS1PY2JrSEVZcE8xb3BoX3VYcWVWVTRKekF0aFFibyJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5IiwiaWF0IjoxNjk3Mjg5OTk2LCJleHAiOjE3Mjg5MTIzOTYsImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6InZFdV84WGxZT0ZFU2hTcVRpZ2JSYWduZ0ZGM1p5U0xrclNHekh3azFBT1loanhlazVhV21HY2UwZU05S0pWOEIiLCJ5IjoiRUpNY2czWXBzUTB3M2RLNHlVa25QczE1Z0lsY2Yyay03dzFKLTNlYlBiOERENmQtUkhBeGUwMDkzSWpfdTRCOSJ9fX0.rYzbxb6j1dwop8_s491iArVVJNm6A6C3b742gOm_qYO3zdkyQU4_VxxOSJ8ECcmWj2r5KyiCNC1ojfO4Yms-zBsjt7PoMYpYWBplsqXpiIvnehmM7D0eOLi40uHXki0X~WyJSWTg1YTZNMmEwX3VDWlFTVGZmTFdRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~WyJMeG5GYTBXVm8wRUluVy1QdS1fd1dRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJUQVdrakpCaVpxdC1rVU54X1EweUJBIiwgImlkIiwgImh0dHBzOi8vZXhhbXBsZS5vcmcvZXhhbXBsZXMvZGVncmVlLmpzb24iXQ~WyJTd2xuZFpPZzZEZ1ZERFp5X0RvYVFBIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyJuSnJlU3E1Nzg3RGZMSDJCbU03cXFRIiwgImlkIiwgImRpZDpleGFtcGxlOjEyMyJd~WyIxMjNNd3hNcHRiek02YUk2aW03ME1RIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~
data:application/vp+sd-jwt,eyJhbGciOiJFUzM4NCIsImtpZCI6IlNJM1JITm91aDhvODFOT09OUFFVQUw3RWdaLWtJNl94ajlvUkV2WDF4T3ciLCJ0eXAiOiJ2YytsZCtqc29uK3NkLWp3dCIsImN0eSI6InZjK2xkK2pzb24ifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvZXhhbXBsZXMvdjIiXSwiaXNzdWVyIjoiaHR0cHM6Ly91bml2ZXJzaXR5LmV4YW1wbGUvaXNzdWVycy81NjUwNDkiLCJ2YWxpZEZyb20iOiIyMDEwLTAxLTAxVDE5OjIzOjI0WiIsImNyZWRlbnRpYWxTY2hlbWEiOnsiX3NkIjpbIkU3dU1sSWFyS29iYXJTdEZGRjctZm5qaV9sQVdnM3BGMkV5dVc4dWFYakUiLCJYelRaSVgyNGdDSWxSQVFHclFoNU5FRm1XWkQtZ3Z3dkIybzB5Y0FwNFZzIl19LCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsibmFtZSI6IkJhY2hlbG9yIG9mIFNjaWVuY2UgYW5kIEFydHMiLCJfc2QiOlsiT3oxUEZIMG0tWk9TdEhwUVZyeGlmVlpKRzhvNmlQQmNnLVZ2SXQwd2plcyJdfSwiX3NkIjpbIkVZQ1daMTZZMHB5X1VNNzRHU3NVYU9zT19mdDExTlVSaFFUTS1TT1lFTVEiXX0sIl9zZCI6WyJqT055NnZUbGNvVlAzM25oSTdERGN3ekVka3d2R3VVRXlLUjdrWEVLd3VVIiwid21BdHpwc0dRbDJveS1PY2JrSEVZcE8xb3BoX3VYcWVWVTRKekF0aFFibyJdLCJfc2RfYWxnIjoic2hhLTI1NiIsImlzcyI6Imh0dHBzOi8vdW5pdmVyc2l0eS5leGFtcGxlL2lzc3VlcnMvNTY1MDQ5IiwiaWF0IjoxNjk3Mjg5OTk2LCJleHAiOjE3Mjg5MTIzOTYsImNuZiI6eyJqd2siOnsia3R5IjoiRUMiLCJjcnYiOiJQLTM4NCIsImFsZyI6IkVTMzg0IiwieCI6InZFdV84WGxZT0ZFU2hTcVRpZ2JSYWduZ0ZGM1p5U0xrclNHekh3azFBT1loanhlazVhV21HY2UwZU05S0pWOEIiLCJ5IjoiRUpNY2czWXBzUTB3M2RLNHlVa25QczE1Z0lsY2Yyay03dzFKLTNlYlBiOERENmQtUkhBeGUwMDkzSWpfdTRCOSJ9fX0.rYzbxb6j1dwop8_s491iArVVJNm6A6C3b742gOm_qYO3zdkyQU4_VxxOSJ8ECcmWj2r5KyiCNC1ojfO4Yms-zBsjt7PoMYpYWBplsqXpiIvnehmM7D0eOLi40uHXki0X~WyJTd2xuZFpPZzZEZ1ZERFp5X0RvYVFBIiwgInR5cGUiLCAiSnNvblNjaGVtYSJd~WyIxMjNNd3hNcHRiek02YUk2aW03ME1RIiwgInR5cGUiLCAiQmFjaGVsb3JEZWdyZWUiXQ~WyJMeG5GYTBXVm8wRUluVy1QdS1fd1dRIiwgInR5cGUiLCBbIlZlcmlmaWFibGVDcmVkZW50aWFsIiwgIkV4YW1wbGVBbHVtbmlDcmVkZW50aWFsIl1d~WyJSWTg1YTZNMmEwX3VDWlFTVGZmTFdRIiwgImlkIiwgImh0dHA6Ly91bml2ZXJzaXR5LmV4YW1wbGUvY3JlZGVudGlhbHMvMTg3MiJd~eyJhbGciOiJFUzM4NCIsInR5cCI6ImtiK2p3dCJ9.eyJub25jZSI6IkVmeTROTFJPX3ZvSkszdDIzcUNfQlEiLCJhdWQiOiJodHRwczovL3ZlcmlmaWVyLmV4YW1wbGUiLCJpYXQiOjE2OTcyODk5OTZ9.6G-1nVcrDKFzR6BdbcFHcbtassEb8NZ7ZavTYz3SJ-e4pXleXs0tNcCkUCwMI70gsuOY0AXzeDPbHjp5GKyLDVuNWgWCt3Wo2VSaCwUkyfLyvhkCsmkF9kvFhMIOhp1i~
data:application/vp+cose;base64,0oREoQE4IqBZDSJ7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy9leGFtcGxlcy92MiJdLCJ0eXBlIjoiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiIsInZlcmlmaWFibGVDcmVkZW50aWFsIjpbeyJAY29udGV4dCI6Imh0dHBzOi8vd3d3LnczLm9yZy9ucy9jcmVkZW50aWFscy92MiIsImlkIjoiZGF0YTphcHBsaWNhdGlvbi92Yy1sZCtzZC1qd3QsZXlKcmFXUWlPaUpGZUVoclFrMVhPV1p0WW10MlZqSTJObTFTY0hWUU1uTlZXVjlPWDBWWFNVNHhiR0Z3VlhwUE9ISnZJaXdpWVd4bklqb2lSVk15TlRZaWZRLmV5SmZjMlJmWVd4bklqb2ljMmhoTFRJMU5pSXNJa0JqYjI1MFpYaDBJanBiSW1oMGRIQnpPaTh2ZDNkM0xuY3pMbTl5Wnk5dWN5OWpjbVZrWlc1MGFXRnNjeTkyTWlJc0ltaDBkSEJ6T2k4dmQzZDNMbmN6TG05eVp5OXVjeTlqY21Wa1pXNTBhV0ZzY3k5bGVHRnRjR3hsY3k5Mk1pSmRMQ0pwYzNOMVpYSWlPaUpvZEhSd2N6b3ZMM1Z1YVhabGNuTnBkSGt1WlhoaGJYQnNaUzlwYzNOMVpYSnpMelUyTlRBME9TSXNJblpoYkdsa1JuSnZiU0k2SWpJd01UQXRNREV0TURGVU1UazZNak02TWpSYUlpd2lZM0psWkdWdWRHbGhiRk5qYUdWdFlTSTZleUpmYzJRaU9sc2lOV0pCZURNdGVIQm1RV3hWUzBaSk9YTnVNMmhXUTIxd1IydHJjVWx6V21NekxVeGlNek5tV21waWF5SXNJbHBqUVhaSU1EaHNkRUp5U1VwbVNXaDBPRjl0UzFCZll6TnNjRzVZTVdOSGNsbHRWRzh3WjFsQ2VUZ2lYWDBzSW1OeVpXUmxiblJwWVd4VGRXSnFaV04wSWpwN0ltUmxaM0psWlNJNmV5SnVZVzFsSWpvaVFtRmphR1ZzYjNJZ2IyWWdVMk5wWlc1alpTQmhibVFnUVhKMGN5SXNJbDl6WkNJNld5SlNUMVEzTVVsMGRUTk1ObFZYV0ZWcWJ5MW9XVmRKUWpZM2JIVlBUa1ZFVWxOQ2FHeEVWRU54VlU5UklsMTlMQ0pmYzJRaU9sc2lUVVZ1WlhObk1saFBVazVqWTNOQ1RXVmFYekUyTURKbmVUUXdVaTAwV1VKMlZsSXdlRkU0YjBZNFl5SmRmU3dpWDNOa0lqcGJJa1ZsYzJKaWF5MW1jR1p3ZDJaTU9YZE9jekZ4Y2paMGFVNDNabkV0U1hReldWTTJWM1pCYmw5aVdHOGlMQ0phYjFJMVpHUmhja2R0WmsxNU5FaHVWMHhWYWs1VVJuRlVSak5ZUmpacGRGQm5abmxHUWtoVlgzRlZJbDE5Lmd3M3BheGJrTGpwaThDVHN5UnBYS2JDN3RwVmEwcTJzV0tTRC1fZGNidVoxTHBaVjNvUThJZnpjbTJiRThSWTNmbUpnYnV5QTlnYlBMM3NRQmFUemtnIH5XeUpTZVVReFZsQjRWSEJ2Ym10UGVYWnBjemt0YTI5M0lpd2dJbWxrSWl3Z0ltaDBkSEE2THk5MWJtbDJaWEp6YVhSNUxtVjRZVzF3YkdVdlkzSmxaR1Z1ZEdsaGJITXZNVGczTWlKZH5XeUpmVmpkMWVUZDNheTFSTTNWWmQyWnBaME52V1VWQklpd2dJblI1Y0dVaUxDQmJJbFpsY21sbWFXRmliR1ZEY21Wa1pXNTBhV0ZzSWl3Z0lrVjRZVzF3YkdWQmJIVnRibWxEY21Wa1pXNTBhV0ZzSWwxZH5XeUpoYXpkcU1UbG5ZVk10UkRKTFgyaHpZM1JWWkdOUklpd2dJbWxrSWl3Z0ltaDBkSEJ6T2k4dlpYaGhiWEJzWlM1dmNtY3ZaWGhoYlhCc1pYTXZaR1ZuY21WbExtcHpiMjRpWFF+V3lKVVRqQlhhWFZaUmtoWFdrVjJaRFpJUVVKSFFTMW5JaXdnSW5SNWNHVWlMQ0FpU25OdmJsTmphR1Z0WVNKZH5XeUpWTW5Cek1reFlWRVJWYlZoM01EY3hSVkJtUlVwbklpd2dJbWxrSWl3Z0ltUnBaRHBsZUdGdGNHeGxPakV5TXlKZH5XeUpzUTA0MmVUTkVhVE5EVWs5VlgzSnVYelJFTldSbklpd2dJblI1Y0dVaUxDQWlRbUZqYUdWc2IzSkVaV2R5WldVaVhRfjtkYXRhOmFwcGxpY2F0aW9uL3ZjLWxkK3NkLWp3dCxleUpyYVdRaU9pSkZlRWhyUWsxWE9XWnRZbXQyVmpJMk5tMVNjSFZRTW5OVldWOU9YMFZYU1U0eGJHRndWWHBQT0hKdklpd2lZV3huSWpvaVJWTXlOVFlpZlEuZXlKZmMyUmZZV3huSWpvaWMyaGhMVEkxTmlJc0lrQmpiMjUwWlhoMElqcGJJbWgwZEhCek9pOHZkM2QzTG5jekxtOXlaeTl1Y3k5amNtVmtaVzUwYVdGc2N5OTJNaUlzSW1oMGRIQnpPaTh2ZDNkM0xuY3pMbTl5Wnk5dWN5OWpjbVZrWlc1MGFXRnNjeTlsZUdGdGNHeGxjeTkyTWlKZExDSnBjM04xWlhJaU9pSm9kSFJ3Y3pvdkwzVnVhWFpsY25OcGRIa3VaWGhoYlhCc1pTOXBjM04xWlhKekx6VTJOVEEwT1NJc0luWmhiR2xrUm5KdmJTSTZJakl3TVRBdE1ERXRNREZVTVRrNk1qTTZNalJhSWl3aVkzSmxaR1Z1ZEdsaGJGTmphR1Z0WVNJNmV5SmZjMlFpT2xzaU5XSkJlRE10ZUhCbVFXeFZTMFpKT1hOdU0yaFdRMjF3UjJ0cmNVbHpXbU16TFV4aU16Tm1XbXBpYXlJc0lscGpRWFpJTURoc2RFSnlTVXBtU1doME9GOXRTMUJmWXpOc2NHNVlNV05IY2xsdFZHOHdaMWxDZVRnaVhYMHNJbU55WldSbGJuUnBZV3hUZFdKcVpXTjBJanA3SW1SbFozSmxaU0k2ZXlKdVlXMWxJam9pUW1GamFHVnNiM0lnYjJZZ1UyTnBaVzVqWlNCaGJtUWdRWEowY3lJc0lsOXpaQ0k2V3lKU1QxUTNNVWwwZFROTU5sVlhXRlZxYnkxb1dWZEpRalkzYkhWUFRrVkVVbE5DYUd4RVZFTnhWVTlSSWwxOUxDSmZjMlFpT2xzaVRVVnVaWE5uTWxoUFVrNWpZM05DVFdWYVh6RTJNREpuZVRRd1VpMDBXVUoyVmxJd2VGRTRiMFk0WXlKZGZTd2lYM05rSWpwYklrVmxjMkppYXkxbWNHWndkMlpNT1hkT2N6RnhjalowYVU0M1puRXRTWFF6V1ZNMlYzWkNibDlpV0c4aUxDSmFiMUkxWkdSaGNrZHRaazE1TkVodVYweFZhazVVUm5GVVJqTllSalpwZEZCblpubEdRa2hWWDNGVklsMTkuZ3czcGF4YmtManBpOENUc3lScFhLYkM3dHBWYTBxMnNXS1NELV9kY2J1WjFMcFpWM29ROElmemNtMmJFOFJZM2ZtSmdidXlBOWdiUEwzc1FCYVR6a2cgfld5SlNlVVF4VmxCNFZIQnZibXRQZVhacGN6a3RhMjkzSWl3Z0ltbGtJaXdnSW1oMGRIQTZMeTkxYm1sMlpYSnphWFI1TG1WNFlXMXdiR1V2WTNKbFpHVnVkR2xoYkhNdk1UZzNNaUpkfld5SmZWamQxZVRkM2F5MVJNM1ZaZDJacFowTnZXVVZCSWl3Z0luUjVjR1VpTENCYklsWmxjbWxtYVdGaWJHVkRjbVZrWlc1MGFXRnNJaXdnSWtWNFlXMXdiR1ZCYkhWdGJtbERjbVZrWlc1MGFXRnNJbDFkfld5SmhhemRxTVRsbllWTXRSREpMWDJoelkzUlZaR05SSWl3Z0ltbGtJaXdnSW1oMGRIQnpPaTh2WlhoaGJYQnNaUzV2Y21jdlpYaGhiWEJzWlhNdlpHVm5jbVZsTG1wemIyNGlYUX5XeUpVVGpCWGFYVlpSa2hYV2tWMlpEWklRVUpIUVMxbklpd2dJblI1Y0dVaUxDQWlTbk52YmxOamFHVnRZU0pkfld5SlZNbkJ6TWt4WVZFUlZiVmgzTURjeFJWQm1SVXBuSWl3Z0ltbGtJaXdnSW1ScFpEcGxlR0Z0Y0d4bE9qRXlNeUpkfld5SnNRMDQyZVRORWFUTkRVazlWWDNKdVh6UkVOV1JuSWl3Z0luUjVjR1VpTENBaVFtRmphR1ZzYjNKRVpXZHlaV1VpWFF+IiwidHlwZSI6IkVudmVsb3BlZFZlcmlmaWFibGVDcmVkZW50aWFsIn1dfVhA4c9H+cu0VfS8NsItpzbB1mpvjP5y2DCxTCW+bY6/4SNPCaeP+uR+JRpJ+GzVNz7/W7ZlHoXguhgBBjWhlnhh+Q==
이러한 예제는 CBOR Diagnostic Notation에 의존한다. 실제 모든 교환은 항상 바이너리 형식으로 이루어진다는 점을 기억하라.
{ / Protected /
1: -35, / Algorithm /
3: application/vc, / Content type /
4: h'177f12cb...1933d554', / Key identifier /
15: { / CWT Claims /
1: urn:example:123, / Issuer /
2: urn:example:456, / Subject /
},
}
{ / Protected /
1: -35, / Algorithm /
3: application/vp, / Content type /
4: h'177f12cb...1933d554', / Key identifier /
15: { / CWT Claims /
1: urn:example:123, / Issuer /
2: urn:example:456, / Subject /
},
}
18( / COSE Sign 1 /
[
h'a4013822...3a343536', / Protected Header /
{} / Unprotected Header /
h'0fbe22a0...3a009118', / Attached payload /
h'09772c7f...5c4e736f' / Signature /
]
)
페이로드는 보호 메커니즘에 설명된 자격 증명 또는 프레젠테이션일 수 있다.
이 절은 비규범이다.
이 절은 이 명세에 이루어진 실질적인 변경 사항을 설명한다.
첫 번째 후보 권고안 이후의 변경 사항:
cty 헤더 매개변수를 사용하여 서로 다른 유형의 보호된 콘텐츠를
구별하는 방법을 설명했다.
nbf (Not Before) 클레임의 사용은 NOT RECOMMENDED라고
명시했다.
이 절은 비규범이다.
작업 그룹은 Orie Steele의 이 명세에 대한 실질적인 지적 기여와 콘텐츠 기여에 감사를 표한다. 그들의 기여가 없었다면 이 명세는 지금과 같지 않았을 것이다.
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in:
Referenced in: