Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FIDO for User Sole Contol in the EUDI Wallet #302

Open
Anti-Myon opened this issue Aug 19, 2024 · 8 comments
Open

FIDO for User Sole Contol in the EUDI Wallet #302

Anti-Myon opened this issue Aug 19, 2024 · 8 comments
Labels
user story User story description

Comments

@Anti-Myon
Copy link

Anti-Myon commented Aug 19, 2024

Issue

The current ARF specification prescribes a framework of requirements and mechanisms for implementing Wallet Trust Evidence (WTE), essentially indicating the need for client device attestation, which is yet to be fully concretized. Additionally, Article 5a of the eIDAS 2.0 regulation clearly mandates that the EUDIW must offer a high Level of Assurance(LoA) for identification and authentication, and must enable the user to interact with the wallet under their sole control.

We propose leveraging a FIDO authenticator kernel and the FIDO attestation framework to cover for those requirements. The attached discussion paper demonstrates how a FIDO kernel can be integrated into the high-level EUDIW architecture and how the FIDO attestation framework can transparently address the level of user sole control provided by an EUDIW instantiation on a specific client device. While a certified hardware key store effectively protects against the theft of user keys, user sole control additionally requires that trusted user interfaces enable users to reliably control the purpose for which their hardware-protected keys are used.
Given that RPs' sensitive services heavily rely on protected confirmations, such as Strong Customer Authentication (SCA) with dynamic linking for payments (as required by PSD2), it is crucial that an EUDIW instantiation can evidence its WTE regardless of whether the specific client device is infected with malware. FIDO provides this type of attestation, making it a crucial component of the EUDIW toolbox.

Dependencies

We recommend integrating FIDO in a revised ARF as well as in the Implementing Acts.

Cf. submitted opinion paper https://apc.ti.bfh.ch/img/FIDO_EUDIW_wiley.pdf
doi: https://doi.org/10.22541/au.172456735.58663962/v1

@Anti-Myon Anti-Myon added the user story User story description label Aug 19, 2024
@digeorgi
Copy link
Contributor

Thank your for your comments on opinion paper. We will certainly take the use of FIDO Passkeys into consideration for the EUDI Wallet ecosystem in ARF v1.5.0 and will refer to your paper during this process.

@Alpha-Hexa
Copy link

Alpha-Hexa commented Oct 23, 2024 via email

@cyberphone
Copy link

@Alpha-Hexa Although FIDO is great, the FIDO security/privacy model presumes that the Issuer=RP which does not match one-to-many identity wallets. For payments FIDO could work as proven by SPC (https://www.w3.org/TR/secure-payment-confirmation/).

However, the lack of metadata support requires users to (continue to) give their card number (with PII and all!) to Merchants which is one of the reasons SPC never seems to get traction. Compared to Apple Pay, SPC totally sucks. In addition, Apple never bothered supporting SPC.

You may be interested in looking into a wallet spec. using FIDO for payment authorizations:
https://fido-web-pay.github.io/
Since it requires "buyin" by Google and Apple, it of course goes absolutely nowhere :(

A related issue which nobody seems concerned with, is how to integrate payment wallet support in banks.
https://github.com/digitallabor-berlin/eudiw-sca/blob/main/openbanking-r2s.md
depends on the Berlin Group's "Signed Payment Request" framework. Personally, I don't think this will work because it is costly, slow, and inflexible. FWIW, I'm currently in the early phases of creating another integration solution, intended to be usable for any wallet solution, including proprietary wallet schemes like https://epicompany.eu.

URL: https://github.com/cyberphone/open-banking-2.0/tree/main?tab=readme-ov-file#open-banking-20

It is not clear what the EWC (https://github.com/EWC-consortium) folks are planning with respect to the interface to banks, since their payment-related specifications still are kept under wrappers...

What is clear though is that FIDO/WebAuthn represents an alternative to identity wallets. Getting away from phishing and passwords is "good enough" for many private sector applications including social media and ecommerce.

@digeorgi @paolo-de-rosa

@Anti-Myon
Copy link
Author

@Alpha-Hexa Although FIDO is great, the FIDO security/privacy model presumes that the Issuer=RP which does not match one-to-many identity wallets. For payments FIDO could work as proven by SPC (https://www.w3.org/TR/secure-payment-confirmation/).

Please note that we are not referring to SPC, which is implemented in the browser but to the FIDO Protected Confirmation extension for SCA on an authenticator w3c/webauthn#2020. FIDO’s 1to1 authentication keys are essential towards implementing unlinkability for SCA as mandated by eIDAS.

However, the lack of metadata support requires users to (continue to) give their card number (with PII and all!) to Merchants which is one of the reasons SPC never seems to get traction. Compared to Apple Pay, SPC totally sucks. In addition, Apple never bothered supporting SPC.

Note, that we do not want to replace any EUDI Wallet selective disclosure solution. However, a Wallet could easily leverage a FIDO authenticator for storing critical keys such as authentication keys required to access sensitive banking or health data. Moreover, the FIDO meta server could easily serve covering for the Wallet Trust Evidence need towards relying parties.

You may be interested in looking into a wallet spec. using FIDO for payment authorizations: https://fido-web-pay.github.io/ Since it requires "buyin" by Google and Apple, it of course goes absolutely nowhere :(

We are not referring to SPC. FIDO extensions - if implemented - are totally independent and agnostic of the OS.

A related issue which nobody seems concerned with, is how to integrate payment wallet support in banks. https://github.com/digitallabor-berlin/eudiw-sca/blob/main/openbanking-r2s.md depends on the Berlin Group's "Signed Payment Request" framework. Personally, I don't think this will work because it is costly, slow, and inflexible. FWIW, I'm currently in the early phases of creating another integration solution, intended to be usable for any wallet solution, including proprietary wallet schemes like https://epicompany.eu.

URL: https://github.com/cyberphone/open-banking-2.0/tree/main?tab=readme-ov-file#open-banking-20

FIDO Protected Confirmation is perfectly suited to address the PSD2 SCA, i.e., authentication and authentication with linking requirements. Many banks are looking into FIDO for SCA.

It is not clear what the EWC (https://github.com/EWC-consortium) folks are planning with respect to the interface to banks, since their payment-related specifications still are kept under wrappers...

We try to convince also the LSPs to consider leveraging FIDO authenticators for the following key security and trust reasons:

  • Trusted User Interfaces for SCA
  • HW bound segregate Key Store in TEE
  • eIDAS certification for LoA substantial and higher
  • Flexible Attestation / Wallet Trust Evidence towards RPs
  • Cross Device Access via CTAP

What is clear though is that FIDO/WebAuthn represents an alternative to identity wallets. Getting away from phishing and passwords is "good enough" for many private sector applications including social media and ecommerce.

@digeorgi @paolo-de-rosa

@cyberphone
Copy link

Without going too deep into this, what's the point of a wallet that requires a specific key for each RP/domain?

Existing, very popular wallets (like Sweden's BankId), permit logging in to hundreds (sometimes thousands) of services with a single credential and key.

@Anti-Myon
Copy link
Author

Without going too deep into this, what's the point of a wallet that requires a specific key for each RP/domain?

Existing, very popular wallets (like Sweden's BankId), permit logging in to hundreds (sometimes thousands) of services with a single credential and key.

You achieve unlinkability, reducing the privacy risk posed by linkability, which increases the likelihood that anonymous or pseudonymous data could be traced back to specific individuals.

@cyberphone
Copy link

You achieve unlinkability, reducing the privacy risk posed by linkability, which increases the likelihood that anonymous or pseudonymous data could be traced back to specific individuals.

Yes, but to achieve this you don't need a wallet, FIDO/WebAuthn as it stands suffice. No additional software needed.

Regarding unlinkability, it is good keeping in mind that practically all services (of any importance), require the user's email address and/or mobile phone number. Since these represent GUIDs, it does (in reality) not matter what measures the EUIDW take to achieve unlinkability since they are effectively undermined by how things work today.

If unlinkability indeed is a major requirement, we need to come up with a way of performing secure, anonymous, bi-directional, per party, communication that works similar to email and SMS. I'm not aware of any serious activity trying to accomplish something along these lines. Depending on specific anonymization services is a possibility, but it seems to just move the problem rather than solving it. Even IP addresses have been used for tracking down criminals.

@cyberphone
Copy link

@Anti-Myon The more I think of unlinkability, FIDO/WebAuthn would be an excellent solution; not for a wallet, but for a messaging client!

Spurred by this discussion I posted the following rant on LinkedIn: https://www.linkedin.com/posts/andersrundgren_note-this-posting-is-not-specifically-about-activity-7255842581991882752-6EH7/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
user story User story description
Projects
None yet
Development

No branches or pull requests

4 participants