Mutual Identification and Consent Hand-Shake ... - #205
Conversation
Draft 0.1
|
|
||
| Perspective of the EBW owner in the Holder role: | ||
|
|
||
| An EBW Owner in the Holder role stores highly confidential data in his EBW (e.g. UBO, Control Structure,...) that need to trated confidential and securely. Therefore a EBW Relying Party request for confidential data will be answered by the holder EBW only after the requesters identity and authorization and also the requesting software authenticity and validity (e.g. based on the WUA, if the request is made by an EBW) was validated by the Holders EBW. |
There was a problem hiding this comment.
An EBW Owner in the Holder role stores highly confidential data in his EBW (e.g. UBO, Control Structure,...) that need to treated confidential and securely. Therefore a EBW Relying Party request for confidential data will be answered by the holder EBW only after the requesters identity and authorization and also the requesting software authenticity and validity (e.g. based on the EBW Wallet Instance Attestation abbreviated as BWIA, if the request is made by an EBW) was validated by the Holders EBW.
|
|
||
| Perspective of the EBW owner in the Holder role: | ||
|
|
||
| An EBW Owner in the Holder role stores highly confidential data in his EBW (e.g. UBO, Control Structure,...) that need to trated confidential and securely. Therefore a EBW Relying Party request for confidential data will be answered by the holder EBW only after the requesters identity and authorization and also the requesting software authenticity and validity (e.g. based on the WUA, if the request is made by an EBW) was validated by the Holders EBW. |
There was a problem hiding this comment.
Wouldn't the validity check be on BWUA, not WUA?
|
|
||
| The wallet unit attestations therefore increases trust in the integrity of the requesting software and significantly reduces the risk of impersonation of the requesting Relying Party. The wallet unit attestation revocation status also shows that the wallet is not revoked (e.g. due to compromise, ...) | ||
|
|
||
| From an holder security, confidentiality and legal perspective the requesters identification should be based on the EBWOID and the requesting software authenticity and components validity should be based on the WUA. Currently an EBWOID and a WUA are issued only to EBWs. Therefore a request made by a software component that is not part of the EBW like for example an "EUDI Wallet Relying Party Component" or an “EBW Relying Party Component" requesting confidential attestations will be ignored by EBW owners due to confidentiality, security and legal concerns. A Relying Party software component is less secure than an EBW. |
There was a problem hiding this comment.
Same comment about BWUA over WUA.
|
|
||
| According to EU Business Wallet regulation Article 14/2/b"...Wallet units shall enable authentication and validation of the wallet unit components by presenting the wallet unit attestations…". | ||
|
|
||
| The wallet unit attestations therefore increases trust in the integrity of the requesting software and significantly reduces the risk of impersonation of the requesting Relying Party. The wallet unit attestation revocation status also shows that the wallet is not revoked (e.g. due to compromise, ...) |
There was a problem hiding this comment.
The wallet instance attestations therefore increases trust in the integrity of the requesting software and significantly reduces the risk of impersonation of the requesting Relying Party. The wallet instance attestation revocation status also shows that the wallet is not revoked (e.g. due to compromise, ...)
|
|
||
| The wallet unit attestations therefore increases trust in the integrity of the requesting software and significantly reduces the risk of impersonation of the requesting Relying Party. The wallet unit attestation revocation status also shows that the wallet is not revoked (e.g. due to compromise, ...) | ||
|
|
||
| From an holder security, confidentiality and legal perspective the requesters identification should be based on the EBWOID and the requesting software authenticity and components validity should be based on the WUA. Currently an EBWOID and a WUA are issued only to EBWs. Therefore a request made by a software component that is not part of the EBW like for example an "EUDI Wallet Relying Party Component" or an “EBW Relying Party Component" requesting confidential attestations will be ignored by EBW owners due to confidentiality, security and legal concerns. A Relying Party software component is less secure than an EBW. |
There was a problem hiding this comment.
From an holder security, confidentiality and legal perspective the requesters identification should be based on the EBWOID and the requesting software authenticity and components validity should be based on the BWIA. Currently an EBWOID and a BWIA are issued only to EBWs. Therefore a request made by a software component that is not part of the EBW like for example an "EUDI Wallet Relying Party Component" or an “EBW Relying Party Component" requesting confidential attestations will be ignored by EBW owners due to confidentiality, security and legal concerns. A Relying Party software component is less secure than an EBW.
There was a problem hiding this comment.
But just like WUA, the BWUA will be made up of BWIA and SKA.
There was a problem hiding this comment.
I have replaced the term WUA with BWIA.
|
|
||
| Perspective of the Wallet Providers: | ||
|
|
||
| Wallet providers may be interested to offer verification services based o a software component that has no Holder funtionality and does not contain attestations like the EBWOID and the WUA. Therefore they may be interested that identification of the verification component can be done also based on x.509 certificates comparable to the Access Certificate. However such a certificate is not a wallet bound issued certificate and therefore less secure from holder perspective and does not has the same legal value as the EBWOID. |
There was a problem hiding this comment.
Wallet providers may be interested to offer verification services based o a software component that has no Holder functionality and does not contain attestations like the EBWOID and the BWIA. Therefore they may be interested that identification of the verification component can be done also based on x.509 certificates comparable to the Access Certificate. However such a certificate is not a wallet bound issued certificate and therefore less secure from holder perspective and does not has the same legal value as the EBWOID. It also requires a EBW Relying Party registration that creates additional administrative burden for EBW holders.
| 2. Currently it is not defined how mutual identification between EBWs without human interaction is performed and the "OpenID for Verifiable Presentations (OID4VP) Specification" specifies: | ||
|
|
||
| - "The verifierInfo parameter allows the verifier to provide additional context or metadata as part of the authorization request. The verifierInfo parameter is optional. Wallets MAY use them to make authorization decisions or to enhance the user experience, but they SHOULD ignore any unrecognized or unsupported Verifier Info types." | ||
| We need a new verifierInfo type that includes at least the EBWOID and the WUA. This verifierInfo object SHOULD be used to request confidential attestations. |
There was a problem hiding this comment.
We need a new verifierInfo type that includes at least the EBWOID and the BWIA. This verifierInfo object SHOULD be used to request attestations that contain non-public data that are treated as confidential data by the holder. The Relying Party needs to be aware that requests for non-public data will not be answered by the holder without verifying the EBWOID of the relying party and comparing the EUID included in the EBWOID with the legal entity internal whitelist for accepted requesters.
| - "The verifierInfo parameter allows the verifier to provide additional context or metadata as part of the authorization request. The verifierInfo parameter is optional. Wallets MAY use them to make authorization decisions or to enhance the user experience, but they SHOULD ignore any unrecognized or unsupported Verifier Info types." | ||
| We need a new verifierInfo type that includes at least the EBWOID and the WUA. This verifierInfo object SHOULD be used to request confidential attestations. | ||
|
|
||
| We may need additional verifierInfo types based on x.509 certificates that can be used |
|
|
||
| We may need additional verifierInfo types based on x.509 certificates that can be used | ||
|
|
||
| The verifierInfo parameter MUST be made mandatory to avoid unnecessary denies from holder EBWs due to missing verifierInfo objects. |
| The verifierInfo parameter MUST be made mandatory to avoid unnecessary denies from holder EBWs due to missing verifierInfo objects. | ||
| - We need an interaction specification between relying party and holder EBW backends during a presentation request that does not require human interaction and that includes mutual authentication based on the above new verifierInfo object | ||
|
|
||
| The rulebook for mutual identification and consent handshake referencing also the rulebook for basic attestation verification describes the proposed solution: [https://github.com/flo0x/webuild-attestations/blob/main/rulebooks/rb-base/holder-authorization-handshake.md] |
There was a problem hiding this comment.
The rulebook for mutual identification and consent handshake referencing also the rulebook for basic attestation verification describes the proposed solution: [https://github.com/webuild-consortium/webuild-attestation-rulebooks-catalog/blob/main/rulebooks/rb-base/holder-authorization-handshake.md]
|
|
||
| What change did we agree to? | ||
|
|
||
| 1. A new verifierInfo type will be defined [Where?]. The new verifierInfo type MUST contain an EBWOID and a WUA attestations. The verifierInfo parameter in an authorization request MUST become a mandatory parameter. |
There was a problem hiding this comment.
- A new verifierInfo type will be defined [Where?]. The new verifierInfo type MUST contain an EBWOID and a BWIA attestations. The verifierInfo parameter in an authorization request MUST be provided by the relying party for each request for non-public data.
| What change did we agree to? | ||
|
|
||
| 1. A new verifierInfo type will be defined [Where?]. The new verifierInfo type MUST contain an EBWOID and a WUA attestations. The verifierInfo parameter in an authorization request MUST become a mandatory parameter. | ||
| An attestation request for confidential attestations from a Relying Party software MAY be answered or denied by the EBW owner based on his internal policies. |
There was a problem hiding this comment.
An attestation request for non-public attestations from a Relying Party software MAY be answered or denied by the EBW owner based on his internal policies and a relying party unique identifier included in the EBWOID.
|
|
||
| 2. The Wallet Provider group will update the corresponding conformance specification [https://github.com/webuild-consortium/wp4-architecture/blob/main/conformance-specs/cs-02-credential-presentation.md] if the requirements resulting from the above rulebooks and this ADR are not fully included. Key requirements and goals are that a presentation can be performed without human interaction and that a presentation request includes mutual identification based on the above new verifierInfo object and the above rulebooks. | ||
|
|
||
| 3. The above rulebooks should be included also in other attestation rulebooks |
|
|
||
| What becomes easier? | ||
|
|
||
| 1. EBW owner will accept to present requested confidential attestations if the request is received from an EBW wallet with the new verfierInfo object according to their internal policies. They will not deny a request simply because the request is made via a Relying Party software. |
There was a problem hiding this comment.
- EBW owner will accept to present requested attestations with non-public data if the request is received from an EBW wallet with the new verfierInfo object. Requesting Relying Parties can avoid unexpected denied requests made via a Relying Party software.
|
|
||
| What becomes more difficult? | ||
|
|
||
| 1. Legal entities that use a Relying Party component will not be able to create the new verifierInfo object because they do not have the EBWOID, the WUA and also no wallet bound attestations. As a consequence several Holder EBW will deny requests for confidential data made through the Relying Party software due to confidentiality, security and legal concerns (e.g. impersonation risk). The same EBW owner probably will answer a request made through an EBW by the same legal entity. |
There was a problem hiding this comment.
- Legal entities that use a Relying Party component will not be able to create the new verifierInfo object because they do not have the EBWOID, the BWIA and also no wallet bound attestations. As a consequence several Holder EBW will deny requests for confidential data made through the Relying Party software due to confidentiality, security and legal concerns (e.g. impersonation risk). The same EBW owner probably will answer a request made through an EBW by the same legal entity.
|
|
||
| 1. Legal entities that use a Relying Party component will not be able to create the new verifierInfo object because they do not have the EBWOID, the WUA and also no wallet bound attestations. As a consequence several Holder EBW will deny requests for confidential data made through the Relying Party software due to confidentiality, security and legal concerns (e.g. impersonation risk). The same EBW owner probably will answer a request made through an EBW by the same legal entity. | ||
|
|
||
| 2. Without a common understanding between use case participants in different role (for example banks that want to use the EUDI Relying party component and their customers) the KyC and also PA3 use case can not be scaled. |
There was a problem hiding this comment.
- Without a common understanding between use case participants in different roles at least the BU1 and PA3 use cases can not be scaled. Also other use cases that require exchange of non public data will not scale.
|
|
||
| How do we address the risks introduced by this change? | ||
|
|
||
| - The “EBW Relying Party component” is enabled by their providers to receive and store “EBW Relying Party component “ bound attestations like EBWOID and WUA and therefore able to create the verifierInfo object during a request for confidential data. That can be implemented by providing also the holder component to a verifier service, even if the customer of the Wallet Provider uses only the RP component. |
There was a problem hiding this comment.
- The “EBW Relying Party component” is enabled by their providers to receive and store “EBW Relying Party component “ bound attestations like EBWOID and WIA and therefore able to create the verifierInfo object during a request for confidential data. That can be implemented by providing also the holder component to a verifier service, even if the customer of the Wallet Provider uses only the RP component.
| How do we address the risks introduced by this change? | ||
|
|
||
| - The “EBW Relying Party component” is enabled by their providers to receive and store “EBW Relying Party component “ bound attestations like EBWOID and WUA and therefore able to create the verifierInfo object during a request for confidential data. That can be implemented by providing also the holder component to a verifier service, even if the customer of the Wallet Provider uses only the RP component. | ||
| - Additional verifierInfo object are defined based on other attestations and certificates that may be accepted by EBW holders for requests that do not require the presentation of confidential data. |
| - We need an interaction specification between relying party and holder EBW backends during a presentation request that does not require human interaction and that includes mutual authentication based on the above new verifierInfo object | ||
|
|
||
| The rulebook for mutual identification and consent handshake referencing also the rulebook for basic attestation verification describes the proposed solution: [https://github.com/flo0x/webuild-attestations/blob/main/rulebooks/rb-base/holder-authorization-handshake.md] | ||
| Note: The version available under the above link contains BU1 feedback and will replace the released version currently available under [https://github.com/webuild-consortium/webuild-attestation-rulebooks-catalog/blob/main/rulebooks/rb-base/holder-authorization-handshake.md]. |
take over the comments
|
|
||
| What change did we agree to? | ||
|
|
||
| 1. A new verifierInfo type will be defined [Where?]. The new verifierInfo type MUST contain an EBWOID and a BWIA attestations. The verifierInfo parameter in an authorization request MUST be provided by the relying party for each request for non-public data. |
There was a problem hiding this comment.
I have a problem with the choice of extension mechanism. OpenID4VP explicitly calls verifierInfo a MAY which means that cmpliant wallets can (and will) just ignore it. Turning a MAY into a SHOULD or even MUST in a profile is problematic imo.
We have a better option and that is to introduce a client_id prefix for "mutually authenticated EBWOID-identified RP" and define the semantics of that client_id prefix. In fact you could implement this by crafting a "ebw-instance" openid federation trust mark and using the (less deployed but valid) opendid_federation: client id prefix. That gets you everything you want plus other useful properties "for free" imo.
There was a problem hiding this comment.
There are other ways to approach this too but that is by far the easiest.
There was a problem hiding this comment.
@leifj
I agree that we will have a problem if wallets will ignore the verifierInfo object!
However an EBW owner will never use a wallet that does not identifies an unknown requester based on his EBWOID who requests highly confidential data. How does the Wallet Provider want to sale such a wallet?
I assume that EUDI wallet also must verify the optional verifierInfo objects containing the Access and Registration certificate to protect privacy of natural persons.
I don't know what is required to introduce "a client_id prefix for "mutually authenticated EBWOID-identified RP" and define the semantics of that client_id prefix."
Therefore, I formulate mandatory solution constraints:
- The holder EBW needs to verify the requesting relying party EBWOID and BWIA to a) implement his verification obligations (=> reduced liability) and b) to protect confidential data
- The holder (e.g. a small enterprise) should not be forced to procure an additional X509 certificate. The Holder EBW uses an EBW SaaS and has procured an identity attestation the EBWOID. (Assumption: This seems to be required if "client_id=x509_san_dns:...." is used instead of "client_id=openid_federation:...")
- The use of an OpenID Federation based trust infrastructure should not be mandatory. It should also work with the identity chaining trust mechanism. (Remark: I hope that both infrastructures will be usable in parallel)
The OpenID4VP specification defines another standard Client Identifier Prefix that may be suited for wallets: did (Decentralized Identifier) or verifier_attestation. Do you plan to use these clientID prefixes?
Does your solution considers the above constraints?
Can you explain more about your solution?
There was a problem hiding this comment.
I've been working on this during the day and I am going to create a PR with a (partial) solution proposal to this based on a mechanism for using the EBWOID in multiple different trust frameworks. This would allow exactly the type of policy control that you're looking for - and which btw I agree is absolutely necessary
|
Lal has proposed the following text for the ADR: Mutual identification for European Business Wallet presentation requestsAuthors/Contributors:
Obsoletes: N/A ContextAn EBW in the Holder role stores attestations that its owner treats as confidential, such as ultimate beneficial ownership and control structure. In the BU use cases, requests arrive backend to backend with no person present. The Holder EBW must decide alone, so it needs three answers a machine can check:
The proposed Regulation on the establishment of European Business Wallets, COM(2025) 838 final of 19 November 2025, addresses this in its Annex. Point 14(2)(b) states that "where Business Wallet owners use their Business Wallets unit to interact with competent national authorities and providers of electronic attestations of attributes, Wallet units shall enable authentication and validation of the Wallet unit components by presenting the Wallet unit attestations to those competent national authorities and providers upon their request". Point 14 covers the issuance direction, and CS-01 already implements it. The proposal places no equivalent obligation on a party that requests attestations from a Wallet unit. That gap is what this decision fills. We already solve this for issuance. In CS-01, a Wallet Unit proves what it is before an Issuer releases anything:
In presentation, this rule applies in one direction only. CS-02 section 7.2, item 6 requires the Verifier to validate the Holder's Wallet Unit Attestation. Nothing requires the Verifier to prove the same about itself. Today it is identified only as the party that signed the request (CS-02 sections 5 and 8.2). The request carries no EBWOID and no BWUA. The requester already holds both. An EBW is a single wallet unit that plays the Holder, Issuer, and Verifier roles (BWUA based on TS3, CS-02 chapter 4). Nothing new has to be issued to it. What is missing is an agreed way to present what it already holds. Two places can carry this material.
Legal entities that run an EUDI Relying Party component hold neither an EBWOID nor a BWUA. Making a parameter mandatory for all requests would exclude them from all traffic, including data that the KYC and PA3 use cases depend on and that is not confidential. Decision1. Apply the same rule in both directions, using the issuance method. WE BUILD defines the EBW Verifier Attestation, a profile of the OpenID4VP Verifier Attestation JWT (section 12), presented with the
Upon receiving a Presentation Request, the Holder EBW MUST verify the presented verifier_attestation (including the embedded EBWOID and BWUA) in strict accordance with the steps defined in the** We Build Base Verification Rulebook. The following paragraphs were added by @wfolkendt : When present, the Holder EBW's automation policy engine SHOULD use these dynamic, verified attributes as inputs to automatically approve the release of confidential data. This removes the administrative burden of maintaining static, company-specific approval whitelists." "By presenting these as sibling assertions, the Wallet Provider remains completely neutral (only issuing one generic verifier_attestation with the EBWOID and BWUA), while the requesting EBW can dynamically attach its sector-specific licenses directly to the transaction.iving a Presentation Request, the Holder EBW MUST verify the presented verifier_attestation (including the embedded EBWOID and BWUA) in strict accordance with the steps defined in the We Build Base Verification Rulebook._ The Presentation Request MAY include, alongside the standard verifier_attestation, one or more Authorization Attestations (e.g., a regulatory license like a banking license or a role-based credential) presented as sibling assertions in the request object (e.g., using client_assertion).**_ When present, the Holder EBW's automation policy engine SHOULD use these dynamic, verified attributes as inputs to automatically approve the release of confidential data. This removes the administrative burden of maintaining static, company-specific approval whitelists." By presenting these as sibling assertions, the Wallet Provider remains completely neutral (only issuing one generic verifier_attestation with the EBWOID and BWUA), while the requesting EBW can dynamically attach its sector-specific licenses directly to the transaction." 2. An EBW acting as Verifier MUST include its EBW Verifier Attestation in every Presentation Request it sends. An EBW always holds an EBWOID and a BWUA, so it can always comply. An attestation rulebook MAY declare that a given attestation type MUST NOT be released unless the request carries a valid EBW Verifier Attestation, and an owner MAY apply stricter rules for its own wallet. A valid attestation does not by itself give a right to a response. Verifiers that are not EBWs are not excluded. Their requests carry no EBW Verifier Attestation, and the Holder decides what to release under Decision 3, using the Client Identifier Schemes CS-02 section 5 already allows. 3. One place where policy is decided. The validated attestation is an input to the automatic approval list from EBW EAA exchange automation, not a second gate in front of it. Where the owner approved a requester and attestation combination in advance, that approval is the Holder's consent for CS-02 section 7.1, and the wallet unit MUST record the release and show it to the owner. Otherwise it MUST ask the owner or reject. What this decision does not change
ConsequencesWhat becomes easier?A Holder EBW can identify the requesting entity and check that its wallet unit is sound and not revoked, using material the requester already holds and a verification path its implementation already runs for issuance. Owners can accept requests they refuse today. Requests can be answered without a person present, which is a precondition for using the EBW inside internal systems. Consent is given once, by the owner, in a list the owner controls. There is one identity carrier, one binding rule, one trust path and one revocation path, in both directions. Testing extends what exists instead of adding a second surface. The following paragraphs were added by @wfolkendt : What becomes more difficult?Wallet Providers must issue an EBW Verifier Attestation for each wallet unit and keep its revocation status up to date. Where a customer runs only a Relying Party component, the provider must decide whether to give it EBW-bound material. Owners must decide which attestations are confidential. Classification will vary until common practice develops. Requesters without EBW-bound material will not receive confidential attestations. For KYC and PA3 this must be explained before participants design their integration. How do we address the risks introduced by this change?Wallet Providers can enable a Relying Party component to hold and present an EBW Verifier Attestation, for example by supplying the holder component with the verifier service. The pre-flight specification should publish a default classification for the BU1 attestation types, so owners start from a common baseline. If the Architecture Group decides that the Client Identifier layer cannot carry this material, the same requirements can be written in the AdviceOnce merged, this is our consortium's decision. This does not mean all participants agree it is the best possible decision. In the decision-making process, we have heard the following advice.
|
|
Questions raised by Eelco: Hi Werner, Lal, and others, Thanks for updating the ADR. Although I do like the idea of using the verifier_attestation client id prefix, since it’s purpose is identification and authentication, I foresee a few issues with the ADR: Lal's answer: • The main purpose of the verifier_attestation client prefix is to authenticate the relying party, e.g. when there is not trust chain that can be used. Who will sign the verifier_attestation in this case? Is it the EBWOID provider that needs to be trusted in this case? Lal's answer: • If the EBW is requesting data from an EUDI wallet, should it also use the verifier_attestation client id prefix, or should it than just use the x509_san_dns client id prefix? In the ADR it is stated that this should always be used when the RP is an EBW. This means all EUDI wallets need to support this verifier_attestation and trust the attestation provider. Lal's answer: These issues don’t apply when the verifierInfo is used. In that case it is not used for authentication and may be ignored by Holder wallets. This makes it less intrusive and really up to the Holder to decide. |
Mutual Identification and Consent Hand-Shake
Draft 0.1