You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: openid4vc-high-assurance-interoperability-profile-1_0.md
+58-11Lines changed: 58 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,6 +81,11 @@ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "S
81
81
82
82
This specification uses the terms "Holder", "Issuer", "Verifier", "Wallet", "Wallet Attestation", "Credential Type" and "Verifiable Credential" as defined in [@!OIDF.OID4VCI] and [@!OIDF.OID4VP].
83
83
84
+
This specification also defines the following term. In the case where a term has a definition that differs, the definition below is authoritative.
85
+
86
+
Ecosystem:
87
+
: A group of Issuers, Wallets and Verifiers that have a common set of rules by which they operate. The rules may be determined, for example, by a regulation, law or domain/sector.
88
+
84
89
# Scope {#scope}
85
90
86
91
This specification enables interoperable implementations of the following flows:
@@ -165,7 +170,9 @@ The following aspects of [@!FAPI2_Security_Profile] do not apply to this specifi
165
170
166
171
Note that some optional parts of [@!FAPI2_Security_Profile] are not applicable when using only OpenID for Verifiable Credential Issuance, e.g., MTLS or OpenID Connect.
167
172
168
-
Both Wallet initiated and Issuer initiated issuance are supported.
173
+
Ecosystems SHOULD clearly indicate whether the Wallets and the Issuers need to support Issuer-initiated, Wallet-initiated Issuance or both, including how to send Credential Offer. If Issuer-initiated flows are supported, they MUST use the Credential Offer as defined in Section 4.1 of [@!OIDF.OID4VCI].
174
+
175
+
Note that ecosystems that aim for a stronger separation between the different Issuers and Wallets are expected to prefer the Issuer-initiated issuance flows and those with stronger integration into wallets (more wallet-centric ecosystems) will likely prefer the Wallet-initiated Issuance.
169
176
170
177
If batch issuance is supported, the Wallet SHOULD use it rather than making consecutive requests for a single Credential of the same Credential Dataset. The Issuer MUST indicate whether batch issuance is supported by including or omitting the `batch_credential_issuance` metadata parameter. The Issuer’s decision may be influenced by various factors, including, but not limited to, trust framework requirements, regulatory constraints, applicable laws or internal policies.
171
178
@@ -247,7 +254,7 @@ The following requirements apply to OpenID for Verifiable Presentations, irrespe
247
254
* The Wallet and Verifier MUST support at least one of the following Credential Format Profiles defined in (#vc-profiles): IETF SD-JWT VC or ISO mdoc. Ecosystems SHOULD clearly indicate which of these formats, IETF SD-JWT VC, ISO mdoc, or both, are required to be supported.
248
255
* The Response type MUST be `vp_token`.
249
256
* For signed requests, the Verifier MUST use, and the Wallet MUST accept the Client Identifier Prefix `x509_hash` as defined in Section 5.9.3 of [@!OIDF.OID4VP]. The X.509 certificate of the trust anchor MUST NOT be included in the `x5c` JOSE header of the signed request. The X.509 certificate signing the request MUST NOT be self-signed. X.509 certificate profiles to be used with `x509_hash` are out of scope of this specification.
250
-
* The DCQL query and response as defined in Section 6 of [@!OIDF.OID4VP] MUST be used.
257
+
* The DCQL query and response MUST be used as defined in Section 6 of [@!OIDF.OID4VP].
251
258
* Response encryption MUST be performed as specified in [@!OIDF.OID4VP, section 8.3]. The JWE `alg` (algorithm) header parameter (see [@!RFC7516, section 4.1.1])
252
259
value `ECDH-ES` (as defined in [@!RFC7518, section 4.6]), with key agreement utilizing keys on the `P-256` curve (see [@!RFC7518, section 6.2.1.1]) MUST be supported.
253
260
The JWE `enc` (encryption algorithm) header parameter (see [@!RFC7516, section 4.1.2]) values `A128GCM` and `A256GCM` (as defined in [@!RFC7518, section 5.3]) MUST be supported by Verifiers. Wallets MUST support `A128GCM` or `A256GCM`, or both. If both are supported, the Wallet SHOULD use `A256GCM` for the JWE `enc`. Verifiers MUST list both `A128GCM` and `A256GCM` in `encrypted_response_enc_values_supported` in their client metadata.
@@ -275,10 +282,10 @@ The following requirements apply to OpenID for Verifiable Presentations via redi
275
282
276
283
The following requirements apply to OpenID for Verifiable Presentations via the W3C Digital Credentials API:
277
284
278
-
* Wallet Invocation is done via the W3C Digital Credentials API or an equivalent platform API. Any other mechanism, including Custom URL schemes, MUST NOT be used.
279
-
* The Response Mode MUST be`dc_api.jwt`.
285
+
*The Wallet MUST support Wallet Invocation via the W3C Digital Credentials API or an equivalent platform API. The Verifier MUST use Wallet Invocation via the W3C Digital Credentials API or an equivalent platform API.
286
+
* The Wallet MUST support the Response Mode `dc_api.jwt`. The Verifier MUST use the Response Mode`dc_api.jwt`.
280
287
* The Verifier and Wallet MUST use Annex A in [@!OIDF.OID4VP] that defines how to use OpenID4VP over the W3C Digital Credentials API.
281
-
* The Wallet MUST support both signed and unsigned requests as defined in Annex A.3.1 and A.3.2 of [@!OIDF.OID4VP]. The Verifier MAY support signed requests, unsigned requests, or both.
288
+
* The Wallet MUST support unsigned, signed, and multi-signed requests as defined in Appendices A.3.1 and A.3.2 of [@!OIDF.OID4VP]. The Verifier MUST support at least one of these options.
282
289
283
290
Note that unsigned requests depend on the origin information provided by the platform and the web PKI for request integrity protection and to authenticate the Verifier. Signed requests introduce a separate layer for request integrity protection and Verifier authentication that can be validated by the Wallet.
284
291
@@ -340,11 +347,12 @@ This specification mandates the support for X.509 certificate-based key resoluti
340
347
# Requirements for Digital Signatures {#crypto-suites}
341
348
342
349
343
-
Issuers, Verifiers, and Wallets MUST, at a minimum, support ECDSA with P-256 and SHA-256 (JOSE algorithm identifier `ES256`; COSE algorithm identifier `-7`, as applicable) for the purpose of validating the following:
350
+
Issuers, Verifiers, and Wallets MUST, at a minimum, support ECDSA with P-256 and SHA-256 (JOSE algorithm identifier `ES256`; COSE algorithm identifier `-7` or `-9`, as applicable) for the purpose of validating the following:
344
351
345
352
- Issuers
346
-
- Wallet Attestations (including PoP) when Annex E of [@!OIDF.OID4VCI] is used;
353
+
- Wallet Attestations (including PoP) when Annex E of [@!OIDF.OID4VCI] is used.
347
354
- Key Attestations when Annex D of [@!OIDF.OID4VCI] is used.
355
+
-`jwt` proof type as specified in Appendix E of [@!OIDF.OID4VCI].
348
356
- Verifiers
349
357
- the signature of the Verifiable Presentation, e.g., KB-JWT of an SD-JWT VC, or `deviceSignature` CBOR structure in case of ISO mdocs. Verifiers are assumed to determine in advance the cryptographic suites supported by the ecosystem, e.g. mDL Issuers/Verifiers implementing ISO mdocs.
350
358
- the status information of the Verifiable Credential or Wallet Attestation.
@@ -379,15 +387,50 @@ Wallet implementations using the key attestation format specified in Annex D of
379
387
This specification intentionally leaves certain extensions for ecosystems to define, in order to enable broad compatibility across differing or even conflicting requirements. Below are the extension points listed in this specification:
380
388
381
389
- Which flow(s) to adopt: presentation, issuance, or both (see (#scope))
382
-
-Whether to use the W3C Digital Credentials API, Redirects with custom URL schemes and/or Redirects with claimed `https` scheme URIs for presentation (see (#scope))
383
-
- Which Credential format to support across issuance and presentation (see (#scope))
390
+
-For presentation, whether to use the W3C Digital Credentials API, Redirects with custom URL schemes, and/or Redirects with claimed `https` scheme URIs (see (#scope))
391
+
- Which Credential Format to support across issuance and presentation (see (#scope))
384
392
- Whether to use Signed Issuer Metadata or not (see (#issuer-metadata))
385
393
- How to make a Credential Offer available to the Wallet (see (#credential-offer))
386
-
- Which key attestation format to use (see (#key-attestation))
394
+
- Which Key Attestation format to use (see (#key-attestation))
387
395
- Which Wallet Attestation format to use (see (#wallet-attestation))
388
396
- Which X.509 certificate profile to use (see (#openid-for-verifiable-presentations), (#wallet-attestation) and (#key-attestation))
389
397
- Support or restriction of additional cryptographic suites and hash algorithms (see (#crypto-suites))
390
398
399
+
### Non-normative Examples of Ecosystem-specific Extensions of this Specification
400
+
401
+
Below are two non-normative examples illustrating how an ecosystem may define the above elements to achieve its specific goals and preferences.
402
+
403
+
#### Example 1: Baseline Interoperability without pre-existing relationships
404
+
405
+
An Ecosystem that prioritizes interoperability among all Wallets, Issuers and Verifiers, without requiring any pre-existing relationships, could define the following ecosystem-specific extensions of this specification:
406
+
407
+
- Use this specification for both presentation and issuance with the following requirements:
408
+
- No additional cryptographic suites and hash algorithms are defined.
409
+
- For each Credential, Wallets support both mdoc and sd-jwt-vc Credential Formats, Issuers have a choice to issue in either format, and Verifiers accept the Credential Format that the Issuer of a requested Credential supports.
410
+
- For issuance, the following requirements apply:
411
+
- Issuers use and Wallets support unsigned Issuer Metadata.
412
+
- Wallets register for the `haip-vci://` custom scheme, where possible. This custom scheme is also used to communicate Credential Offer.
413
+
- Wallets and Issuers both support Key Attestations in the format specified in Annex D of [@!OIDF.OID4VCI]. Both `jwt` proof type using `key_attestation` and `attestation` proof type are supported.
414
+
- Wallets and Issuers both support Wallet Attestations in the format specified in Annex E of [@!OIDF.OID4VCI] and (#wallet-attestation) of this specification.
415
+
- for presentation, the following requirements apply:
416
+
- Wallets use DC API where possible and when they have credentials available. As a fallback mechanism when DC API is not available, Wallets register for the `haip-vp://` custom scheme, where possible.
417
+
- No additional X.509 certificate profile is defined.
418
+
419
+
Making these choices maximizes interoperability between the parties in the ecosystem while minimizing the burden on Issuers and Verifiers. This comes at the expense of an increased burden on Wallets as well as the potential privacy and security issues in (#interop-key-attestations).
420
+
421
+
#### Example 2: Achieving Compatibility with Existing Deployments of ISO/IEC 18013-5
422
+
423
+
An Ecosystem that prioritizes achieving compatibility with existing deployments could define the following ecosystem-specific extensions of this specification:
424
+
425
+
- Use this specification only for presentation with the following requirements:
426
+
- Wallets and Verifiers support only the mdoc Credential Format.
427
+
- Wallets register and use the `haip-vp://` custom scheme, where possible.
428
+
- As X.509 certificate profile, Wallets and Verifiers use the Reader Authentication Certificate profile defined in Annex B of [@!ISO.18013-5].
429
+
- Verifiers support all curves from Cipher Suite 1 listed in table 22 of [@!ISO.18013-5].
430
+
- Verifiers support all hash algorithms listed in table 21 of [@!ISO.18013-5].
431
+
432
+
Making these choices ensures interoperability at the increased cost on the Verifier.
Note that security considerations for OpenID for Verifiable Credential Issuance are defined in Section 13 of [@!OIDF.OID4VCI] and for OpenID for Verifiable Presentations in Section 14 (for redirect based flows) or Section A.5 (for DC API) of [@!OIDF.OID4VP].
@@ -659,7 +702,7 @@ This specification registers the following URI schemes in the IANA "Uniform Reso
659
702
660
703
# Acknowledgements {#Acknowledgements}
661
704
662
-
We would like to thank Patrick Amrein, Paul Bastian, Brian Campbell, Lee Campbell, Tim Cappalli, Stefan Charsley, Gabe Cohen, Andrii Deinega, Rajvardhan Deshmukh, Daniel Fett, Pedro Felix, Ryan Galluzzo, Timo Glastra, Martijn Haring, Bjorn Hjelm, Alen Horvat, Łukasz Jaromin, Mike Jones, Markus Kreusch, Philipp Lehwalder, Tobias Looker, Hicham Lozi, Mirko Mollik, Andres Olave, Gareth Oliver, Oliver Terbu, Giuseppe De Marco, Mikel Pintor, Joel Posti, Dima Postnikov, Andreea Prian, Bob Reynders, Samuel Rinnetmäki, Peter Sorotokin, Jan Vereecken, Jin Wen and David Zeuthen for their valuable feedback and contributions to this specification.
705
+
We would like to thank Patrick Amrein, Paul Bastian, Brian Campbell, Lee Campbell, Tim Cappalli, Stefan Charsley, Gabe Cohen, Andrii Deinega, Rajvardhan Deshmukh, Daniel Fett, Pedro Felix, Ryan Galluzzo, Timo Glastra, Martijn Haring, Bjorn Hjelm, Alen Horvat, Łukasz Jaromin, Mike Jones, Markus Kreusch, Philipp Lehwalder, Tobias Looker, Hicham Lozi, Mirko Mollik, Andres Olave, Gareth Oliver, Oliver Terbu, Giuseppe De Marco, Mikel Pintor, Joel Posti, Dima Postnikov, Andreea Prian, Bob Reynders, Samuel Rinnetmäki, Peter Sorotokin, Jan Vereecken, Jin Wen, Hakan Yildiz and David Zeuthen for their valuable feedback and contributions to this specification.
663
706
664
707
# Notices
665
708
@@ -675,9 +718,13 @@ The technology described in this specification was made available from contribut
675
718
676
719
-06
677
720
721
+
* add the multi-signed option to the DC API variants
722
+
* add cose alg identifer -9 (fully specified)
723
+
* clarify that DCQL applies in HAIP as defined in OpenID4VP and all REQUIRED and OPTIONAL requirements remain the same
678
724
* add reference to ECCG Agreed Cryptographic Mechanisms 2.0
679
725
* require x5c header in the OID4VCI Appendix D key attestation
680
726
* require A256GCM and A128GCM for verifiers
727
+
* add "Non-normative Examples of Ecosystem-specific Extensions of this Specification" section
0 commit comments