OpenID 4 Verifiable Credentials + HAIP (Update)

OpenID for Verifiable Credentials
The next generation of OpenID
Kristina Yasuda, Microsoft
Paul Bastian, Bundesdruckerei
Dr. Torsten Lodderstedt, Tuconic
What is Decentralized Identity?
Issuer
(Website)
Verifier
(Website)
Wallet
(user’s device,
cloud or hybrid)
Credential
Issuance
Credential
Presentation
User Interactions
● The User presenting the Identity data directly to the Verifier from the Wallet
○ <> In the federated model where Identity data is sent directly from the IdP to the Verifier
● Usually expressed with the flow below:
Verifiable Credentials: Benefits
● End-Users gain more privacy, and portability over their identity
information.
● Cheaper, faster, and more secure identity verification, when transforming
physical credentials into digital ones.
● Universal approach to handle identification, authentication, and
authorization in digital and physical space.
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Why Protocol Layer Interoperability is Crucial.
Credential
Issuance
Credential
Presentation
One entity needs to talk to the large the number of entities, to increase the value of “Decentralized
Identity”.
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
User Interactions
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Issuer
(Website)
Wallet
(user’s device,
cloud or
hybrid)
Verifier
(Website)
Issuer
(Website)
Problems we identified and how we solved them
Problem Solution
A lot of entirely new Protocols. (Hard to get
security right, steep learning curve)
⇒
Building upon currently widely used protocols:
OAuth 2.0 and OpenID Connect. (Secure, already
understood)
No clear winner among Credential Formats ⇒ Designing a protocol agnostic to the Credential
Formats.
No one way to do key management. ⇒ Designing a protocol agnostic to the key
management mechanism.
Participating entities cannot typically
establish trust upfront, using traditional
mechanisms.
⇒ Flexibility in Trust Management. Third Party Trust.
OpenID for Verifiable
Credential Issuance
...so here comes OpenID for Verifiable Credentials (OID4VC)!
Issuer
(Website)
Verifier
(Website)
Wallet
(user’s device,
cloud or hybrid)
Credential
Issuance
Credential
Presentation
User Interactions
OpenID for Verifiable
Presentations
Self-Issued OP v2
Adoption (selected use-cases)
The European Digital Identity
Wallet[1], ARF v.1.1: “the EUDI Wallet
Solution MUST support
OpenID4VCI as an Issuance protocol.
Member States are free to include
additional issuance protocol
alternatives in their national solutions.”
NIST National Cybersecurity
Center of Excellence[2] is
running a project implementing
and testing implementations for
OID4VP to present mdocs/mDL.
DIF JWT VC Issuance /
Presentation Profile [3] [4] uses
OID4VC protocols for the
enterprise identity use-cases:
fraud prevention in B2B, B2E
scenarios.
[1] https://cloudsignatureconsortium.org/new-eu-eidas-regulation-a-quantum-leap-for-electronic-identity/ [2] https://www.nccoe.nist.gov/projects/digital-identities-mdl
[3] https://identity.foundation/jwt-vc-issuance-profile/ [4] https://identity.foundation/jwt-vc-presentation-profile/
1. Walt.id
○ https://github.com/walt-id/waltid-ssikit (Kotlin)
2. Sphereon
○ https://github.com/Sphereon-Opensource/SIOP-OpenID4VP
(Typescript)
○ https://github.com/Sphereon-Opensource/OpenID4VCI-client
(Typescript)
○ https://github.com/Sphereon-Opensource/ssi-sdk (Typescript)
3. Microsoft
○ https://github.com/microsoft/VerifiableCredential-SDK-Android
(Kotlin)
○ https://github.com/microsoft/VerifiableCredential-SDK-iOS
(Swift)
4. Spruce
○ https://github.com/spruceid/oidc4vci-rs (Rust)
○ https://github.com/spruceid/oidc4vci-issuer (Rust)
5. EBSI
○ https://api-pilot.ebsi.eu/docs/libraries (Javascript)
Open Source libraries
6. Impierce Technologies
○ https://github.com/impierce/openid4vc (Rust)
7. Animo
○ https://github.com/animo/paradym-wallet
(Typescript)
8. Trustbloc
○ https://github.com/trustbloc/vcs (Go)
○ https://github.com/trustbloc/wallet-sdk (Go)
9. Italian Government
○ https://github.com/italia/eudi-wallet-it-python
(Python)
○ https://github.com/italia/eudi-wallet-it-pid-provi
der/tree/v.1.1.1 (Python)
● A light-weight, low-cost, self-certification program to serve members, drive
adoption and promote high-quality implementations (since 2015~)
● 2,400+ total certifications to date!
● Benefits (there are more!)
○ Testers get direct support from the OIDF certification team
○ Internationally recognized, award winning
○ Updated as the specification evolves
● Current progress
○ Started development for OpenID for Verifiable Presentations. initial focus is on testing wallets.
○ OpenID for Verifiable Credential Issuance planned
● Things to know
○ Strictly tests protocol specification conformance and does not test what happens inside the wallet
○ Can be integrated in continuous development and deployment processes
○ Tests are open source
OpenID Foundation Certification for OID4VC specs
● “Security and Trust in OpenID for Verifiable Credentials”
○ Describes the trust architecture in OpenID for Verifiable Credentials, outlines security
considerations and requirements for the components in an ecosystem.
● Results of the formal security analysis of OpenID for VC protocols were also
presented at the OAuth Security Workshop in August: “Protocols are secure
under the assumptions made”. Official publication shortly.
OID4VC Formal Security Analysis
Let us tell you more about the protocol
OpenID for Verifiable Credential Issuance (Highlights)
- It’s an OAuth-protected API (Credential Endpoint at the Resource Server)
○ Leverages existing OAuth features and implementations
○ Easy of use for developers
- Supports various Security levels (including high security with hardware bound
keys)
- Various business requirements supported (ex. remote and in-person
provisioning)
- Different user-experiences can be achieved (multiple ways to initiate the flow)
- Issuer can check Wallet’s capabilities & Wallet can discover Issuer metadata
Wallet
⓪ Wallet requests & User authorizes
credential issuance
③ Credential is issued
① access token(, refresh token)
② Wallet requests credential issuance
Protocol Flow
Alice
Credential
Issuer
Authorization Code Flow
Pre-Authorized Code Flow
Authorization Code Flow (Overview)
Pre-Authorized Code Flow (Overview)
Credential Offer
{
"credential_issuer": "https://credential-issuer.example.com",
"credentials": [
{
"format": "vc+sd-jwt",
"type": "Identity"
}],
"grants": {
"urn:ietf:params:oauth:grant-type:pre-authorized_code": {
"pre-authorized_code": "9JSsozW2G2cluWcyCqHK",
"user_pin_required": true
}
}
}
Example: Token Request
POST /token HTTP/1.1
Host: credential-issuer.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=urn:ietf:params:oauth:grant-type:pre-authorized_code
&pre-authorized_code=SplxlOBeZQQYbYS6WxSbIA
&user_pin=493536
Example: Credential Issuance
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"format": "vc+sd-jwt",
"credential" : "eyJhbGciOiAiRVMyNTYifQ.eyJfc2QiOiBbIl
...
gImVtYWlsIiwgInRlc3RAZXhhbXBsZS5jb20iXQ"
}
POST /credential HTTP/1.1
Host: credential-issuer.example.com
Content-Type: application/json
Authorization: BEARER czZCaGRSa3F0MzpnWDFmQmF0M2JW
{
"format":"vc+sd-jwt",
"type":"Identity",
"proof":{
"proof_type":"jwt",
"jwt":"eyJhbGciOiJFUzI1NiIsInR5cCI6Im9wZW5pZDR2Y2ktcHJvb2Yrand0Iiw
...
jhe0xQmfIBCQz20xVjaM91ODdIt5JX_ztrcq4nkglH907Ofbugg"
}
}
Request Response
Example: Issued Credential
{
"iss": "https://credential-issuer.example.com",
"iat": 1516239022,
"exp": 1516247022,
"type": "Identity",
"_sd": [
"UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM",
"tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ",
"vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk"
],
"_sd_alg": "sha-256",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
}
}
}
OpenID for Verifiable Presentations (Highlights)
- Designed for highest degree of privacy
- Easy of use for developers
- Supports various Security levels (e.g. mutual authentication among the parties)
- Different user-experiences can be achieved (same-device and cross-device)
- Presentation of multiple Credentials supported
- Various Wallet deployment models supported
- All local to a native app
- Native app with cloud backend
- Web wallet
Same Device Presentation
Cross Device Presentation
Same Device (Overview)
Cross-Device Flow (VP Token sent via HTTP POST)
Same Device (VP Token sent via HTTP POST + redirect)
Presentation Request
{
"id":"mDL-sample-req",
"input_descriptors":[
{
"id":"org.iso.18013.5.1.mDL",
"format":{
"mso_mdoc":{
"alg":[
"EdDSA",
"ES256"
]
},
},
"constraints":{
"limit_disclosure":"required",
"fields":[
{
"path":[
"$['org.iso.18013.5.1']['family_name']"
],
"intent_to_retain":false
}
{
"path":[
"$['org.iso.18013.5.1']['driving_privileges']"
],
"intent_to_retain":false
}
]
}
}
]
GET /authorize?
response_type=vp_token
&client_id=https%3A%2F%2Fclient.example.org%2Fcb
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&presentation_definition=...
&nonce=n-0S6_WzA2Mj HTTP/1.1
Host: wallet.example.com
presentation_definition
Presentation Response
{
"definition_id": "mDL-sample-req",
"id": "org.iso.18013.5.1.mDL",
"descriptor_map": [
{
"id": "mDL",
"format": "mso_mdoc",
"path": "$"
}
]
}
presentation_submission
vp_token
HTTP/1.1 302 Found
Location: https://client.example.org/cb#
presentation_submission=...
&vp_token=...
{
"status": 0,
"version": "1.0",
"documents": [
{
"docType": "org.iso.18013.5.1.mDL",
"deviceSigned": {
"deviceAuth": {
"deviceMac": [
<< {1: 5} >>,
{},
null, h'A574C64F18902BFE18B742F17C581218F88EA279AA
]
},
"nameSpaces": 24(h'A0')
},
"issuerSigned": {
"issuerAuth": [
<< {1: -7} >>,
{
33:
h'30820215308201BCA003020102021404AD06A30C1A6DC6E93BE0E2E8F78DCAFA7907C230
040613025A453059301306072A8648CE3D020106082A8648CE3D030107034200047C5545E9
000E9C46618C02202C1F778AD252285ED05D9B55469F1CB78D773671F30FE7AB8153719423
},
<<
24(<<
{
"docType": "org.iso.18013.5.1.mDL",
"version": "1.0",
OpenID for Verifiable Credential Issuance
New additions to the family coming!
Self-Issued OP v2
OpenID for Verifiable Presentations
OpenID for Verifiable Presentations over BLE
Security and Trust in OpenID for Verifiable Credentials
Core specs
additions
Certification Suite
OID4VC High Assurance Interoperability Profile with SD-JWT VC
Issuer
(Website)
Verifier
(Website)
Wallet
(user’s device,
cloud or hybrid)
Issue Credentials Present Credentials
User Interactions
Latest Updates
- Formal Security Analysis of Issuance and Presentation is about to be published.
- Automated Conformance Tests for Wallets (Presentation) are available (1st revision).
- Growing number of Open Source Implementations.
- OpenID4VC driving convergence at the protocol layer. Getting traction in the
- Aries community (.NET and JS Framework are being extended to support OID4VC)
- mdoc community (18013-7, 23220-4, 23220-3)
- etc.
OID4VC High Assurance Interoperability
Profile with SD-JWT VC
OpenID4VC as Framework vs Profiles
- Interoperability requires instantiation of OpenID 4 VC with concrete
- Definition of “Mandatory to Implement” elements of the protocols, e.g. grant
types & response types
- Custom scheme for wallet invocation
- Definition of authentication mechanisms for Verifiers and Wallets
- Credential Format(s) with
■ issuer identification and key resolution
■ holder key binding
- Crypto algorithms
- Instantiation designated as “Profile”
OID4VC High Assurance Interoperability Profile with SD-JWT VC
- Interoperability across parties while being
- Privacy preserving and
- able to fulfill security and regulatory requirements
- Intended audience
- Proposal for eIDAS ARF (through OIDF/EC liaison)
- CA DMV wallet
- Basis for OWF project(s)
- IDunion Tech Stack
- GAIN PoC
- Japanese government (Trusted Web project)
- Basis for Userinfo
- other jurisdictions
- private companies / infrastructure companies
OID4VC High Assurance Interoperability Profile with SD-JWT VC
SIOPv2 OID4VP OID4VCI
custom scheme
crypto suites
custom scheme
credential profile
client id scheme
custom scheme
credential profile
wallet attestation
scheme
Protocols
Attestation based Client
Authentication
crypto suites
issuer key resolution
Wallet Attestation Scheme
Credential profile: SD-JWT VC
SD-JWT VC
JWT/CWT
Statuslist
crypto suites
issuer key resolution
crypto suites
issuer key resolution
- Custom Scheme: haip://
- issuer key resolution:
web-based, x509
- Crypto Suites:
P-256(secp256r1), SHA256
Basic Choices
● Authenticated issuer identifiers as
basis for trust management
● Trust Management Mechanism
can be defined on top
Note: Similar profile for ISO mdoc is being worked on for 18013-7, 23220-4 and -3
IETF OAuth WG adopted draft IETF OAuth WG adopted draft
Credential Format
- SD-JWT VC with JSON payload (“typ”: “vc+sd-jwt”)
- both compact and JSON serialization
- Issuer identification and key resolution
1. Web PKI based:
■ issuer URL (“iss” claim) used to obtain jwks_uri
■ key id in the “kid” JWS header
2. x.509:
■ x.509 cert chain in the “x5c” JWS header
■ issuer URL (“iss” claim) MUST be Subject Alternative Name (dnsName)
in x.509 cert
- Key binding:
- raw public key (jwk) in “cnf” JWT claim
- Credential Revocation: Bitmap type style Status list using JWTs
SD-JWT VC
with web PKI based Issuer key resolution
{
"alg": "ES256",
"typ": "vc+sd-jwt",
"kid":"4"
}
{
"iss": "https://credential-issuer.example.com",
"iat": 1516239022,
"exp": 1516247022,
"type": "Identity",
"_sd": [
"UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM",
"tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ",
"vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk"
],
"_sd_alg": "sha-256",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
}
},
"status": {
"idx": "0,",
"uri": "https://example.com/statuslists/1"
}
}
SD-JWT VC
with x.509 Issuer key resolution
{
"alg": "ES256",
"typ": "vc+sd-jwt",
"x5c": [
"MIICOjCCAeG...djzH7lA==",
"MIICLTCCAdS...koAmhWVKe"
]
}
{
"iss": "https://credential-issuer.example.com",
"iat": 1516239022,
"exp": 1516247022,
"type": "Identity",
"_sd": [
"UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM",
"tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ",
"vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk"
],
"_sd_alg": "sha-256",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
}
},
"status": {
"idx": "0,",
"uri": "https://example.com/statuslists/1"
}
}
SD-JWT VC
with OpenID Connect Federation Trust Chain
{
"alg": "ES256",
"typ": "vc+sd-jwt",
"trust_chain" = [
$EntityConfiguration-as-SignedJWT-selfissued-byLeaf,
$EntityStatement-as-SignedJWT-issued-byTrustAnchor
]
}
{
"iss": "https://credential-issuer.example.com",
"iat": 1516239022,
"exp": 1516247022,
"type": "Identity",
"_sd": [
"UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM",
"tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ",
"vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk"
],
"_sd_alg": "sha-256",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
}
},
"status": {
"idx": "0,",
"uri": "https://example.com/statuslists/1"
}
}
SD-JWT VC (decoded)
{
"iss": "https://credential-issuer.example.com"
,
"iat": 1541493724,
"exp": 1541494724,
"type": "Identity",
"given_name": "Erika",
"family_name": "Mustermann",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc"
,
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
}
}
"status": {
"idx": "0,",
"uri": "https://example.com/statuslists/1"
}
}
OpenID for Verifiable Credential Issuance
- custom scheme “haip://” for wallet invocation
- Pre-authorized and authorization code flow are both required.
- Wallet Attestation & Authentication with sender-constrained JWTs
- Sender-constrained Tokens using DPoP required
Issuance with Authorization Code and Wallet Attestation
● Extends the established framework of
RFC7521 for a new form of client
authentication
● Client instance obtains an attestation from
client backend
● Client backend may perform any number of
security checks before issuing a key-bound
attestation JWT to the client instance
● Client instance authenticates towards
Authorization server during a Token or PAR
Request
● Note - how the client communicates with the
client backend in steps 2&4 are out of scope
● Draft adopted by IETF OAuth WG
OAuth2 Attestation-Based Client Authentication
Wallet Attestation JWT
{
"iss": "https://attester.example.com"
,
"sub": "https://client.example.com"
,
"iat": 1516247022,
"exp": 1541493724,
"aal" : "https://trust-list.eu/aal/high
",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc"
,
"y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
},
"key_type": "STRONGBOX", //optional
"user_authentication"
: "SYSTEM_PIN", //optional
}
}
{
"typ": "wallet-attestation+jwt"
,
"alg": "ES256",
"kid": "1"
}
OpenID for Verifiable Presentations
- custom scheme “haip://” for wallet invocation.
- Universal presentation flow based on “direct_post” response mode for same and
cross device flows.
- Subset of the Presentation Exchange Syntax in order to simplify implementation
and prevent security issues
- Verifier Authentication with
- x.509 Certificates or
- Sender-constrained JWTs
Same Device (VP Token sent via HTTP POST + redirect)
Links
OpenID 4 Verifiable Credential Issuance
OpenID 4 Verifiable Presentation
SIOP v2
OpenID4VC High Assurance Interoperability Profile with SD-JWT VC
Security and Trust in OpenID for Verifiable Credentials Ecosystems
https://datatracker.ietf.org/doc/draft-ietf-oauth-cross-device-security/
Please engage with us: Digital Credentials Protocols (DCP) Working Group
Q & A
OID4VC High Assurance Interoperability Profile with mdocs
(18013-7, 23220-4 and -3)
SIOPv2 OID4VP OID4VCI
custom scheme
crypto suites
custom scheme
credential profile
client id scheme
custom scheme
credential profile
wallet attestation
scheme
Protocols
Attestation based Client
Authentication
crypto suites
issuer key resolution
Wallet Attestation Scheme
Credential profile: mdoc
mdoc
JWT/CWT
Statuslist
crypto suites
issuer key resolution
crypto suites
issuer key resolution
- Custom Scheme: haip://
- issuer key resolution:
x509
- Crypto Suites:
P-256(secp256r1),
brainpool curves, etc.
Basic Choices
IETF OAuth WG adopted draft
1 de 49

Recomendados

How to Build Interoperable Decentralized Identity Systems with OpenID for Ver... por
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...Torsten Lodderstedt
1.2K vistas31 diapositivas
OpenID for Verifiable Credentials por
OpenID for Verifiable CredentialsOpenID for Verifiable Credentials
OpenID for Verifiable CredentialsTorsten Lodderstedt
934 vistas38 diapositivas
OpenID Connect 4 SSI por
OpenID Connect 4 SSIOpenID Connect 4 SSI
OpenID Connect 4 SSITorsten Lodderstedt
399 vistas31 diapositivas
OpenID for Verifiable Credentials @ IIW 36 por
OpenID for Verifiable Credentials @ IIW 36OpenID for Verifiable Credentials @ IIW 36
OpenID for Verifiable Credentials @ IIW 36Torsten Lodderstedt
231 vistas39 diapositivas
Verifiable Credentials_Kristina_Identiverse2022_vFIN.pdf por
Verifiable Credentials_Kristina_Identiverse2022_vFIN.pdfVerifiable Credentials_Kristina_Identiverse2022_vFIN.pdf
Verifiable Credentials_Kristina_Identiverse2022_vFIN.pdfKristina Yasuda
237 vistas49 diapositivas
OpenID Connect 4 SSI (at EIC 2021) por
OpenID Connect 4 SSI (at EIC 2021)OpenID Connect 4 SSI (at EIC 2021)
OpenID Connect 4 SSI (at EIC 2021)Torsten Lodderstedt
302 vistas28 diapositivas

Más contenido relacionado

La actualidad más candente

How to Build Interoperable Decentralized Identity Systems with OpenID for Ver... por
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...Torsten Lodderstedt
135 vistas19 diapositivas
OpenID for SSI por
OpenID for SSIOpenID for SSI
OpenID for SSITorsten Lodderstedt
320 vistas34 diapositivas
Overview of Decentralized Identity por
Overview of Decentralized IdentityOverview of Decentralized Identity
Overview of Decentralized IdentityJim Flynn
1.2K vistas37 diapositivas
The European Union goes Decentralized por
The European Union goes DecentralizedThe European Union goes Decentralized
The European Union goes DecentralizedTorsten Lodderstedt
503 vistas13 diapositivas
OAuth 2.0 por
OAuth 2.0OAuth 2.0
OAuth 2.0Uwe Friedrichsen
4.8K vistas44 diapositivas
OpenID for Verifiable Credentials (IIW 35) por
OpenID for Verifiable Credentials (IIW 35)OpenID for Verifiable Credentials (IIW 35)
OpenID for Verifiable Credentials (IIW 35)Torsten Lodderstedt
1.1K vistas13 diapositivas

La actualidad más candente(20)

How to Build Interoperable Decentralized Identity Systems with OpenID for Ver... por Torsten Lodderstedt
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
Torsten Lodderstedt135 vistas
Overview of Decentralized Identity por Jim Flynn
Overview of Decentralized IdentityOverview of Decentralized Identity
Overview of Decentralized Identity
Jim Flynn1.2K vistas
Decentralized Identifier (DIDs) fundamentals deep dive por SSIMeetup
Decentralized Identifier (DIDs) fundamentals deep diveDecentralized Identifier (DIDs) fundamentals deep dive
Decentralized Identifier (DIDs) fundamentals deep dive
SSIMeetup2.6K vistas
IBM: Hey FIDO, Meet Passkey!.pptx por FIDO Alliance
IBM: Hey FIDO, Meet Passkey!.pptxIBM: Hey FIDO, Meet Passkey!.pptx
IBM: Hey FIDO, Meet Passkey!.pptx
FIDO Alliance895 vistas
What is self-sovereign identity (SSI)? por Evernym
What is self-sovereign identity (SSI)?What is self-sovereign identity (SSI)?
What is self-sovereign identity (SSI)?
Evernym1.2K vistas
Self-Sovereign Identity: Ideology and Architecture with Christopher Allen por SSIMeetup
Self-Sovereign Identity: Ideology and Architecture with Christopher AllenSelf-Sovereign Identity: Ideology and Architecture with Christopher Allen
Self-Sovereign Identity: Ideology and Architecture with Christopher Allen
SSIMeetup2.8K vistas
Decentralized Identifiers (DIDs): The Fundamental Building Block of Self-Sove... por SSIMeetup
Decentralized Identifiers (DIDs): The Fundamental Building Block of Self-Sove...Decentralized Identifiers (DIDs): The Fundamental Building Block of Self-Sove...
Decentralized Identifiers (DIDs): The Fundamental Building Block of Self-Sove...
SSIMeetup11.8K vistas
FIDO2 Specifications Overview por FIDO Alliance
FIDO2 Specifications OverviewFIDO2 Specifications Overview
FIDO2 Specifications Overview
FIDO Alliance1.4K vistas
Hyperledger Aries: Open Source Interoperable Identity Solution – Nathan George por SSIMeetup
Hyperledger Aries: Open Source Interoperable Identity Solution – Nathan GeorgeHyperledger Aries: Open Source Interoperable Identity Solution – Nathan George
Hyperledger Aries: Open Source Interoperable Identity Solution – Nathan George
SSIMeetup6.1K vistas
Hyperledger fabric 20180528 por Arnaud Le Hors
Hyperledger fabric 20180528Hyperledger fabric 20180528
Hyperledger fabric 20180528
Arnaud Le Hors2.4K vistas
OAuth2 - Introduction por Knoldus Inc.
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
Knoldus Inc.6.3K vistas
Verifiable Credentials for Travel & Hospitality por Evernym
Verifiable Credentials for Travel & HospitalityVerifiable Credentials for Travel & Hospitality
Verifiable Credentials for Travel & Hospitality
Evernym365 vistas
Introduction to OpenID Connect por Nat Sakimura
Introduction to OpenID Connect Introduction to OpenID Connect
Introduction to OpenID Connect
Nat Sakimura18.3K vistas
MicrosoftのDID/VC実装概要 por Naohiro Fujie
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
Naohiro Fujie3.9K vistas

Similar a OpenID 4 Verifiable Credentials + HAIP (Update)

How to Build Interoperable Decentralized Identity Systems with OpenID for Ver... por
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...Torsten Lodderstedt
56 vistas19 diapositivas
Microservices security - jpmc tech fest 2018 por
Microservices security - jpmc tech fest 2018Microservices security - jpmc tech fest 2018
Microservices security - jpmc tech fest 2018MOnCloud
195 vistas41 diapositivas
Cartes Asia Dem 2010 V2 por
Cartes Asia Dem 2010 V2Cartes Asia Dem 2010 V2
Cartes Asia Dem 2010 V2Donald Malloy
1.8K vistas35 diapositivas
Authentication Models por
Authentication ModelsAuthentication Models
Authentication ModelsRaj Chanchal
2.5K vistas7 diapositivas
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect" por
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"Andreas Falk
341 vistas35 diapositivas
Microservice Protection With WSO2 Identity Server por
Microservice Protection With WSO2 Identity ServerMicroservice Protection With WSO2 Identity Server
Microservice Protection With WSO2 Identity ServerAnupam Gogoi
1.1K vistas29 diapositivas

Similar a OpenID 4 Verifiable Credentials + HAIP (Update)(20)

How to Build Interoperable Decentralized Identity Systems with OpenID for Ver... por Torsten Lodderstedt
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
How to Build Interoperable Decentralized Identity Systems with OpenID for Ver...
Microservices security - jpmc tech fest 2018 por MOnCloud
Microservices security - jpmc tech fest 2018Microservices security - jpmc tech fest 2018
Microservices security - jpmc tech fest 2018
MOnCloud195 vistas
Cartes Asia Dem 2010 V2 por Donald Malloy
Cartes Asia Dem 2010 V2Cartes Asia Dem 2010 V2
Cartes Asia Dem 2010 V2
Donald Malloy1.8K vistas
Authentication Models por Raj Chanchal
Authentication ModelsAuthentication Models
Authentication Models
Raj Chanchal2.5K vistas
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect" por Andreas Falk
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
Andreas Falk341 vistas
Microservice Protection With WSO2 Identity Server por Anupam Gogoi
Microservice Protection With WSO2 Identity ServerMicroservice Protection With WSO2 Identity Server
Microservice Protection With WSO2 Identity Server
Anupam Gogoi1.1K vistas
Cloud Identity Webinar por WSO2
Cloud Identity WebinarCloud Identity Webinar
Cloud Identity Webinar
WSO21.1K vistas
Kerberos-PKI-Federated identity por WAFAA AL SALMAN
Kerberos-PKI-Federated identityKerberos-PKI-Federated identity
Kerberos-PKI-Federated identity
WAFAA AL SALMAN468 vistas
Value proposition of SSI tech providers - Self-Sovereign Identity por SSIMeetup
Value proposition of SSI tech providers - Self-Sovereign IdentityValue proposition of SSI tech providers - Self-Sovereign Identity
Value proposition of SSI tech providers - Self-Sovereign Identity
SSIMeetup191 vistas
SmartCard Forum 2009 - OpenTrust SCM por OKsystem
SmartCard Forum 2009 - OpenTrust SCMSmartCard Forum 2009 - OpenTrust SCM
SmartCard Forum 2009 - OpenTrust SCM
OKsystem1.8K vistas
EUDI wallets with OpenID for verifiable credentials (OID4VCI/OID4VP) por Lal Chandran
EUDI wallets with OpenID for verifiable credentials (OID4VCI/OID4VP)EUDI wallets with OpenID for verifiable credentials (OID4VCI/OID4VP)
EUDI wallets with OpenID for verifiable credentials (OID4VCI/OID4VP)
Lal Chandran46 vistas
Auth proxy pattern on Kubernetes por Michał Wcisło
Auth proxy pattern on KubernetesAuth proxy pattern on Kubernetes
Auth proxy pattern on Kubernetes
Michał Wcisło479 vistas
Blockcerts: The Open Standard for Blockchain Credentials por SSIMeetup
Blockcerts: The Open Standard for Blockchain CredentialsBlockcerts: The Open Standard for Blockchain Credentials
Blockcerts: The Open Standard for Blockchain Credentials
SSIMeetup3.9K vistas
Introduction to Public Key Infrastructure por Theo Gravity
Introduction to Public Key InfrastructureIntroduction to Public Key Infrastructure
Introduction to Public Key Infrastructure
Theo Gravity3.2K vistas
Early Adopting Java WSIT-Experiences with Windows CardSpace por Oliver Pfaff
Early Adopting Java WSIT-Experiences with Windows CardSpaceEarly Adopting Java WSIT-Experiences with Windows CardSpace
Early Adopting Java WSIT-Experiences with Windows CardSpace
Oliver Pfaff717 vistas

Más de Torsten Lodderstedt

GAIN Presentation.pptx por
GAIN Presentation.pptxGAIN Presentation.pptx
GAIN Presentation.pptxTorsten Lodderstedt
135 vistas16 diapositivas
Comprehensive overview FAPI 1 and FAPI 2 por
Comprehensive overview FAPI 1 and FAPI 2Comprehensive overview FAPI 1 and FAPI 2
Comprehensive overview FAPI 1 and FAPI 2Torsten Lodderstedt
181 vistas25 diapositivas
Comprehensive overview FAPI 1 and 2 por
Comprehensive overview FAPI 1 and 2Comprehensive overview FAPI 1 and 2
Comprehensive overview FAPI 1 and 2Torsten Lodderstedt
379 vistas24 diapositivas
OIDC4VP for AB/C WG por
OIDC4VP for AB/C WGOIDC4VP for AB/C WG
OIDC4VP for AB/C WGTorsten Lodderstedt
396 vistas18 diapositivas
OpenID Connect 4 Identity Assurance at IIW #32 por
OpenID Connect 4 Identity Assurance at IIW #32OpenID Connect 4 Identity Assurance at IIW #32
OpenID Connect 4 Identity Assurance at IIW #32Torsten Lodderstedt
89 vistas24 diapositivas
OpenID Connect for W3C Verifiable Credential Objects por
OpenID Connect for W3C Verifiable Credential ObjectsOpenID Connect for W3C Verifiable Credential Objects
OpenID Connect for W3C Verifiable Credential ObjectsTorsten Lodderstedt
414 vistas18 diapositivas

Más de Torsten Lodderstedt(16)

OpenID Connect for W3C Verifiable Credential Objects por Torsten Lodderstedt
OpenID Connect for W3C Verifiable Credential ObjectsOpenID Connect for W3C Verifiable Credential Objects
OpenID Connect for W3C Verifiable Credential Objects
Torsten Lodderstedt414 vistas
NextGenPSD2 OAuth SCA Mode Security Recommendations por Torsten Lodderstedt
NextGenPSD2 OAuth SCA Mode Security RecommendationsNextGenPSD2 OAuth SCA Mode Security Recommendations
NextGenPSD2 OAuth SCA Mode Security Recommendations
Torsten Lodderstedt391 vistas
NextGenPSD2 OAuth SCA Mode Security Recommendations por Torsten Lodderstedt
NextGenPSD2 OAuth SCA Mode Security Recommendations NextGenPSD2 OAuth SCA Mode Security Recommendations
NextGenPSD2 OAuth SCA Mode Security Recommendations
Torsten Lodderstedt857 vistas
Identiverse: PSD2, Open Banking, and Technical Interoperability por Torsten Lodderstedt
Identiverse: PSD2, Open Banking, and Technical InteroperabilityIdentiverse: PSD2, Open Banking, and Technical Interoperability
Identiverse: PSD2, Open Banking, and Technical Interoperability
Torsten Lodderstedt694 vistas

Último

Marketing and Community Building in Web3 por
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3Federico Ast
12 vistas64 diapositivas
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 por
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲Infosec train
9 vistas6 diapositivas
Building trust in our information ecosystem: who do we trust in an emergency por
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergencyTina Purnat
98 vistas18 diapositivas
DU Series - Day 4.pptx por
DU Series - Day 4.pptxDU Series - Day 4.pptx
DU Series - Day 4.pptxUiPathCommunity
100 vistas28 diapositivas
Is Entireweb better than Google por
Is Entireweb better than GoogleIs Entireweb better than Google
Is Entireweb better than Googlesebastianthomasbejan
12 vistas1 diapositiva
IETF 118: Starlink Protocol Performance por
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol PerformanceAPNIC
244 vistas22 diapositivas

Último(12)

Marketing and Community Building in Web3 por Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast12 vistas
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲 por Infosec train
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
𝐒𝐨𝐥𝐚𝐫𝐖𝐢𝐧𝐝𝐬 𝐂𝐚𝐬𝐞 𝐒𝐭𝐮𝐝𝐲
Infosec train9 vistas
Building trust in our information ecosystem: who do we trust in an emergency por Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat98 vistas
IETF 118: Starlink Protocol Performance por APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC244 vistas
PORTFOLIO 1 (Bret Michael Pepito).pdf por brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04108 vistas
UiPath Document Understanding_Day 3.pptx por UiPathCommunity
UiPath Document Understanding_Day 3.pptxUiPath Document Understanding_Day 3.pptx
UiPath Document Understanding_Day 3.pptx
UiPathCommunity103 vistas
We see everywhere that many people are talking about technology.docx por ssuserc5935b
We see everywhere that many people are talking about technology.docxWe see everywhere that many people are talking about technology.docx
We see everywhere that many people are talking about technology.docx
ssuserc5935b6 vistas
How to think like a threat actor for Kubernetes.pptx por LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 vistas

OpenID 4 Verifiable Credentials + HAIP (Update)

  • 1. OpenID for Verifiable Credentials The next generation of OpenID Kristina Yasuda, Microsoft Paul Bastian, Bundesdruckerei Dr. Torsten Lodderstedt, Tuconic
  • 2. What is Decentralized Identity? Issuer (Website) Verifier (Website) Wallet (user’s device, cloud or hybrid) Credential Issuance Credential Presentation User Interactions ● The User presenting the Identity data directly to the Verifier from the Wallet ○ <> In the federated model where Identity data is sent directly from the IdP to the Verifier ● Usually expressed with the flow below:
  • 3. Verifiable Credentials: Benefits ● End-Users gain more privacy, and portability over their identity information. ● Cheaper, faster, and more secure identity verification, when transforming physical credentials into digital ones. ● Universal approach to handle identification, authentication, and authorization in digital and physical space.
  • 4. Issuer (Website) Issuer (Website) Issuer (Website) Why Protocol Layer Interoperability is Crucial. Credential Issuance Credential Presentation One entity needs to talk to the large the number of entities, to increase the value of “Decentralized Identity”. Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) User Interactions Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Issuer (Website) Wallet (user’s device, cloud or hybrid) Verifier (Website) Issuer (Website)
  • 5. Problems we identified and how we solved them Problem Solution A lot of entirely new Protocols. (Hard to get security right, steep learning curve) ⇒ Building upon currently widely used protocols: OAuth 2.0 and OpenID Connect. (Secure, already understood) No clear winner among Credential Formats ⇒ Designing a protocol agnostic to the Credential Formats. No one way to do key management. ⇒ Designing a protocol agnostic to the key management mechanism. Participating entities cannot typically establish trust upfront, using traditional mechanisms. ⇒ Flexibility in Trust Management. Third Party Trust.
  • 6. OpenID for Verifiable Credential Issuance ...so here comes OpenID for Verifiable Credentials (OID4VC)! Issuer (Website) Verifier (Website) Wallet (user’s device, cloud or hybrid) Credential Issuance Credential Presentation User Interactions OpenID for Verifiable Presentations Self-Issued OP v2
  • 7. Adoption (selected use-cases) The European Digital Identity Wallet[1], ARF v.1.1: “the EUDI Wallet Solution MUST support OpenID4VCI as an Issuance protocol. Member States are free to include additional issuance protocol alternatives in their national solutions.” NIST National Cybersecurity Center of Excellence[2] is running a project implementing and testing implementations for OID4VP to present mdocs/mDL. DIF JWT VC Issuance / Presentation Profile [3] [4] uses OID4VC protocols for the enterprise identity use-cases: fraud prevention in B2B, B2E scenarios. [1] https://cloudsignatureconsortium.org/new-eu-eidas-regulation-a-quantum-leap-for-electronic-identity/ [2] https://www.nccoe.nist.gov/projects/digital-identities-mdl [3] https://identity.foundation/jwt-vc-issuance-profile/ [4] https://identity.foundation/jwt-vc-presentation-profile/
  • 8. 1. Walt.id ○ https://github.com/walt-id/waltid-ssikit (Kotlin) 2. Sphereon ○ https://github.com/Sphereon-Opensource/SIOP-OpenID4VP (Typescript) ○ https://github.com/Sphereon-Opensource/OpenID4VCI-client (Typescript) ○ https://github.com/Sphereon-Opensource/ssi-sdk (Typescript) 3. Microsoft ○ https://github.com/microsoft/VerifiableCredential-SDK-Android (Kotlin) ○ https://github.com/microsoft/VerifiableCredential-SDK-iOS (Swift) 4. Spruce ○ https://github.com/spruceid/oidc4vci-rs (Rust) ○ https://github.com/spruceid/oidc4vci-issuer (Rust) 5. EBSI ○ https://api-pilot.ebsi.eu/docs/libraries (Javascript) Open Source libraries 6. Impierce Technologies ○ https://github.com/impierce/openid4vc (Rust) 7. Animo ○ https://github.com/animo/paradym-wallet (Typescript) 8. Trustbloc ○ https://github.com/trustbloc/vcs (Go) ○ https://github.com/trustbloc/wallet-sdk (Go) 9. Italian Government ○ https://github.com/italia/eudi-wallet-it-python (Python) ○ https://github.com/italia/eudi-wallet-it-pid-provi der/tree/v.1.1.1 (Python)
  • 9. ● A light-weight, low-cost, self-certification program to serve members, drive adoption and promote high-quality implementations (since 2015~) ● 2,400+ total certifications to date! ● Benefits (there are more!) ○ Testers get direct support from the OIDF certification team ○ Internationally recognized, award winning ○ Updated as the specification evolves ● Current progress ○ Started development for OpenID for Verifiable Presentations. initial focus is on testing wallets. ○ OpenID for Verifiable Credential Issuance planned ● Things to know ○ Strictly tests protocol specification conformance and does not test what happens inside the wallet ○ Can be integrated in continuous development and deployment processes ○ Tests are open source OpenID Foundation Certification for OID4VC specs
  • 10. ● “Security and Trust in OpenID for Verifiable Credentials” ○ Describes the trust architecture in OpenID for Verifiable Credentials, outlines security considerations and requirements for the components in an ecosystem. ● Results of the formal security analysis of OpenID for VC protocols were also presented at the OAuth Security Workshop in August: “Protocols are secure under the assumptions made”. Official publication shortly. OID4VC Formal Security Analysis
  • 11. Let us tell you more about the protocol
  • 12. OpenID for Verifiable Credential Issuance (Highlights) - It’s an OAuth-protected API (Credential Endpoint at the Resource Server) ○ Leverages existing OAuth features and implementations ○ Easy of use for developers - Supports various Security levels (including high security with hardware bound keys) - Various business requirements supported (ex. remote and in-person provisioning) - Different user-experiences can be achieved (multiple ways to initiate the flow) - Issuer can check Wallet’s capabilities & Wallet can discover Issuer metadata
  • 13. Wallet ⓪ Wallet requests & User authorizes credential issuance ③ Credential is issued ① access token(, refresh token) ② Wallet requests credential issuance Protocol Flow Alice Credential Issuer
  • 18. Credential Offer { "credential_issuer": "https://credential-issuer.example.com", "credentials": [ { "format": "vc+sd-jwt", "type": "Identity" }], "grants": { "urn:ietf:params:oauth:grant-type:pre-authorized_code": { "pre-authorized_code": "9JSsozW2G2cluWcyCqHK", "user_pin_required": true } } }
  • 19. Example: Token Request POST /token HTTP/1.1 Host: credential-issuer.example.com Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:pre-authorized_code &pre-authorized_code=SplxlOBeZQQYbYS6WxSbIA &user_pin=493536
  • 20. Example: Credential Issuance HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store Pragma: no-cache { "format": "vc+sd-jwt", "credential" : "eyJhbGciOiAiRVMyNTYifQ.eyJfc2QiOiBbIl ... gImVtYWlsIiwgInRlc3RAZXhhbXBsZS5jb20iXQ" } POST /credential HTTP/1.1 Host: credential-issuer.example.com Content-Type: application/json Authorization: BEARER czZCaGRSa3F0MzpnWDFmQmF0M2JW { "format":"vc+sd-jwt", "type":"Identity", "proof":{ "proof_type":"jwt", "jwt":"eyJhbGciOiJFUzI1NiIsInR5cCI6Im9wZW5pZDR2Y2ktcHJvb2Yrand0Iiw ... jhe0xQmfIBCQz20xVjaM91ODdIt5JX_ztrcq4nkglH907Ofbugg" } } Request Response
  • 21. Example: Issued Credential { "iss": "https://credential-issuer.example.com", "iat": 1516239022, "exp": 1516247022, "type": "Identity", "_sd": [ "UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM", "tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ", "vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk" ], "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc", "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" } } }
  • 22. OpenID for Verifiable Presentations (Highlights) - Designed for highest degree of privacy - Easy of use for developers - Supports various Security levels (e.g. mutual authentication among the parties) - Different user-experiences can be achieved (same-device and cross-device) - Presentation of multiple Credentials supported - Various Wallet deployment models supported - All local to a native app - Native app with cloud backend - Web wallet
  • 26. Cross-Device Flow (VP Token sent via HTTP POST)
  • 27. Same Device (VP Token sent via HTTP POST + redirect)
  • 29. Presentation Response { "definition_id": "mDL-sample-req", "id": "org.iso.18013.5.1.mDL", "descriptor_map": [ { "id": "mDL", "format": "mso_mdoc", "path": "$" } ] } presentation_submission vp_token HTTP/1.1 302 Found Location: https://client.example.org/cb# presentation_submission=... &vp_token=... { "status": 0, "version": "1.0", "documents": [ { "docType": "org.iso.18013.5.1.mDL", "deviceSigned": { "deviceAuth": { "deviceMac": [ << {1: 5} >>, {}, null, h'A574C64F18902BFE18B742F17C581218F88EA279AA ] }, "nameSpaces": 24(h'A0') }, "issuerSigned": { "issuerAuth": [ << {1: -7} >>, { 33: h'30820215308201BCA003020102021404AD06A30C1A6DC6E93BE0E2E8F78DCAFA7907C230 040613025A453059301306072A8648CE3D020106082A8648CE3D030107034200047C5545E9 000E9C46618C02202C1F778AD252285ED05D9B55469F1CB78D773671F30FE7AB8153719423 }, << 24(<< { "docType": "org.iso.18013.5.1.mDL", "version": "1.0",
  • 30. OpenID for Verifiable Credential Issuance New additions to the family coming! Self-Issued OP v2 OpenID for Verifiable Presentations OpenID for Verifiable Presentations over BLE Security and Trust in OpenID for Verifiable Credentials Core specs additions Certification Suite OID4VC High Assurance Interoperability Profile with SD-JWT VC Issuer (Website) Verifier (Website) Wallet (user’s device, cloud or hybrid) Issue Credentials Present Credentials User Interactions
  • 31. Latest Updates - Formal Security Analysis of Issuance and Presentation is about to be published. - Automated Conformance Tests for Wallets (Presentation) are available (1st revision). - Growing number of Open Source Implementations. - OpenID4VC driving convergence at the protocol layer. Getting traction in the - Aries community (.NET and JS Framework are being extended to support OID4VC) - mdoc community (18013-7, 23220-4, 23220-3) - etc.
  • 32. OID4VC High Assurance Interoperability Profile with SD-JWT VC
  • 33. OpenID4VC as Framework vs Profiles - Interoperability requires instantiation of OpenID 4 VC with concrete - Definition of “Mandatory to Implement” elements of the protocols, e.g. grant types & response types - Custom scheme for wallet invocation - Definition of authentication mechanisms for Verifiers and Wallets - Credential Format(s) with ■ issuer identification and key resolution ■ holder key binding - Crypto algorithms - Instantiation designated as “Profile”
  • 34. OID4VC High Assurance Interoperability Profile with SD-JWT VC - Interoperability across parties while being - Privacy preserving and - able to fulfill security and regulatory requirements - Intended audience - Proposal for eIDAS ARF (through OIDF/EC liaison) - CA DMV wallet - Basis for OWF project(s) - IDunion Tech Stack - GAIN PoC - Japanese government (Trusted Web project) - Basis for Userinfo - other jurisdictions - private companies / infrastructure companies
  • 35. OID4VC High Assurance Interoperability Profile with SD-JWT VC SIOPv2 OID4VP OID4VCI custom scheme crypto suites custom scheme credential profile client id scheme custom scheme credential profile wallet attestation scheme Protocols Attestation based Client Authentication crypto suites issuer key resolution Wallet Attestation Scheme Credential profile: SD-JWT VC SD-JWT VC JWT/CWT Statuslist crypto suites issuer key resolution crypto suites issuer key resolution - Custom Scheme: haip:// - issuer key resolution: web-based, x509 - Crypto Suites: P-256(secp256r1), SHA256 Basic Choices ● Authenticated issuer identifiers as basis for trust management ● Trust Management Mechanism can be defined on top Note: Similar profile for ISO mdoc is being worked on for 18013-7, 23220-4 and -3 IETF OAuth WG adopted draft IETF OAuth WG adopted draft
  • 36. Credential Format - SD-JWT VC with JSON payload (“typ”: “vc+sd-jwt”) - both compact and JSON serialization - Issuer identification and key resolution 1. Web PKI based: ■ issuer URL (“iss” claim) used to obtain jwks_uri ■ key id in the “kid” JWS header 2. x.509: ■ x.509 cert chain in the “x5c” JWS header ■ issuer URL (“iss” claim) MUST be Subject Alternative Name (dnsName) in x.509 cert - Key binding: - raw public key (jwk) in “cnf” JWT claim - Credential Revocation: Bitmap type style Status list using JWTs
  • 37. SD-JWT VC with web PKI based Issuer key resolution { "alg": "ES256", "typ": "vc+sd-jwt", "kid":"4" } { "iss": "https://credential-issuer.example.com", "iat": 1516239022, "exp": 1516247022, "type": "Identity", "_sd": [ "UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM", "tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ", "vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk" ], "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc", "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" } }, "status": { "idx": "0,", "uri": "https://example.com/statuslists/1" } }
  • 38. SD-JWT VC with x.509 Issuer key resolution { "alg": "ES256", "typ": "vc+sd-jwt", "x5c": [ "MIICOjCCAeG...djzH7lA==", "MIICLTCCAdS...koAmhWVKe" ] } { "iss": "https://credential-issuer.example.com", "iat": 1516239022, "exp": 1516247022, "type": "Identity", "_sd": [ "UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM", "tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ", "vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk" ], "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc", "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" } }, "status": { "idx": "0,", "uri": "https://example.com/statuslists/1" } }
  • 39. SD-JWT VC with OpenID Connect Federation Trust Chain { "alg": "ES256", "typ": "vc+sd-jwt", "trust_chain" = [ $EntityConfiguration-as-SignedJWT-selfissued-byLeaf, $EntityStatement-as-SignedJWT-issued-byTrustAnchor ] } { "iss": "https://credential-issuer.example.com", "iat": 1516239022, "exp": 1516247022, "type": "Identity", "_sd": [ "UiuRGkTW7e_5UQauGeQRQdF8u3WYevS4Fs0IuB_DgYM", "tmPlXq0MID-oRXbUNHyoVZrc9Qkm8cwJTohVyOVlUgQ", "vTz0JI103v4k4pKIloT83Yzi33L1SdZlWBPmsfJBefk" ], "_sd_alg": "sha-256", "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc", "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" } }, "status": { "idx": "0,", "uri": "https://example.com/statuslists/1" } }
  • 40. SD-JWT VC (decoded) { "iss": "https://credential-issuer.example.com" , "iat": 1541493724, "exp": 1541494724, "type": "Identity", "given_name": "Erika", "family_name": "Mustermann", "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc" , "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" } } "status": { "idx": "0,", "uri": "https://example.com/statuslists/1" } }
  • 41. OpenID for Verifiable Credential Issuance - custom scheme “haip://” for wallet invocation - Pre-authorized and authorization code flow are both required. - Wallet Attestation & Authentication with sender-constrained JWTs - Sender-constrained Tokens using DPoP required
  • 42. Issuance with Authorization Code and Wallet Attestation
  • 43. ● Extends the established framework of RFC7521 for a new form of client authentication ● Client instance obtains an attestation from client backend ● Client backend may perform any number of security checks before issuing a key-bound attestation JWT to the client instance ● Client instance authenticates towards Authorization server during a Token or PAR Request ● Note - how the client communicates with the client backend in steps 2&4 are out of scope ● Draft adopted by IETF OAuth WG OAuth2 Attestation-Based Client Authentication
  • 44. Wallet Attestation JWT { "iss": "https://attester.example.com" , "sub": "https://client.example.com" , "iat": 1516247022, "exp": 1541493724, "aal" : "https://trust-list.eu/aal/high ", "cnf": { "jwk": { "kty": "EC", "crv": "P-256", "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc" , "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ" }, "key_type": "STRONGBOX", //optional "user_authentication" : "SYSTEM_PIN", //optional } } { "typ": "wallet-attestation+jwt" , "alg": "ES256", "kid": "1" }
  • 45. OpenID for Verifiable Presentations - custom scheme “haip://” for wallet invocation. - Universal presentation flow based on “direct_post” response mode for same and cross device flows. - Subset of the Presentation Exchange Syntax in order to simplify implementation and prevent security issues - Verifier Authentication with - x.509 Certificates or - Sender-constrained JWTs
  • 46. Same Device (VP Token sent via HTTP POST + redirect)
  • 47. Links OpenID 4 Verifiable Credential Issuance OpenID 4 Verifiable Presentation SIOP v2 OpenID4VC High Assurance Interoperability Profile with SD-JWT VC Security and Trust in OpenID for Verifiable Credentials Ecosystems https://datatracker.ietf.org/doc/draft-ietf-oauth-cross-device-security/ Please engage with us: Digital Credentials Protocols (DCP) Working Group
  • 48. Q & A
  • 49. OID4VC High Assurance Interoperability Profile with mdocs (18013-7, 23220-4 and -3) SIOPv2 OID4VP OID4VCI custom scheme crypto suites custom scheme credential profile client id scheme custom scheme credential profile wallet attestation scheme Protocols Attestation based Client Authentication crypto suites issuer key resolution Wallet Attestation Scheme Credential profile: mdoc mdoc JWT/CWT Statuslist crypto suites issuer key resolution crypto suites issuer key resolution - Custom Scheme: haip:// - issuer key resolution: x509 - Crypto Suites: P-256(secp256r1), brainpool curves, etc. Basic Choices IETF OAuth WG adopted draft