FeIDo: Recoverable FIDO2 Web Credentials using eIDs and TEEs
Published:
Password-based web authentication is vulnerable to several types of attacks, including phishing, shoulder surfing, brute-forcing, client malware, and database breaches. Two-factor authentication mitigates the risk of a compromise by augmenting passwords with a second authentication factor, such that the theft of a password is no longer sufficient to hijack a user's account. FIDO2 is a common standard for secure two-factor web authentication (2FA). FIDO2 uses public-private key pairs as web credentials where the public keys are shared with the web services while the private keys are protected within virtual or physical user devices. However, user adoption of FIDO2 is lacking due to the need for specific user hardware, and open challenges regarding the secure account recovery on a user device loss (or theft).

Electronic IDs, e.g., passports, would be an interesting candidate for a cost-efficient, recoverable second factor. eIDs following the ICAO standard (for travel documents) contain personal information that is sufficiently unique to identify their owners, and provide mechanisms to securely read the data and verify their authenticity. However, eIDs are not compatible with FIDO2 and introduce privacy issues by leaking personal information to third parties, e.g., web service providers. Therefore, the idea of the FeIDo project has been to design a new virtual FIDO2 authenticator that combines the benefits of eIDs and trusted execution environments (TEEs) to solve the open cost and recovery challenges of FIDO2-based 2FA.

FeIDo forms a virtual FIDO2 second factor that internally interacts with a user's eID and a TEE-protected credential service. FeIDo extracts personal attributes from a user's eID and lets the credential service act as a pseudonimizing proxy which turns them into FIDO2 web credentials. The resulting credentials are unlinkable to the user's personal information, and can be used for secure web authentication.
The TEE-based credential service uses a keyed HMAC to derive the public-private key pair (credentials) based on the user attributes, and performs the required FIDO2 operations. The authenticity of the credential service is remotely attested by FeIDo's user agent during the TLS connection setup before sharing the eID attributes. That way, the user agent can guarantee that the service is authentic and never leaks any private information to third parties, including the service host (e.g., cloud provider) and web service.
FeIDo directly addresses the open cost and recovery challenges of existing FIDO2 authenticators. Users can directly adopt FeIDo using their pre-owned eIDs (e.g., passports) with no extra costs. If an eID gets lost, users can blocklist the stolen eID and use their newly-requested replacement eIDs to recover their web accounts. As the replacement eIDs carry the same personal user attributes, they form the same credentials and allow users to directly access their web accounts without any extra steps. In contrast, existing FIDO2 authenticators require insecure recovery mechanisms (e.g., recovery codes), or rely on a back-up authenticator that must be pre-registered in advance---further increasing the user's costs and setup complexity.

FeIDo enables an additional feature not present in existing FIDO2 authenticators: anonymous credentials. FeIDo's TEE-protected credential service can derive anonymous but attestable meta-attributes that can augment the FIDO2 login data and be used for additional checks. For example, FeIDo can enable secure but anonymous age verification by deriving a meta-attribute "of-full-age" that can be used by the web service to enforce additional access restrictions.
We have implemented and evaluated a prototype of FeIDo for Firefox based on a browser extension and Android app. The current prototype uses a cloud-hosted Intel SGX user space enclave to protect the credential service and has been tested with German ePassports. For more information on FeIDo, please check out the corresponding research paper that has been published at the ACM CCS conference 2022, as well as our extended technical report.