The FIDO2 standard is a widely-used class of challenge-response type protocols that allows to authenticate to an online service using a hardware token. Barbosa et al. (CRYPTO ‘21) provided the first formal security model and analysis for the FIDO2 standard. However, their model has two shortcomings: (1) It does not include privacy, one of the key features claimed by FIDO2. (2) It only covers tokens that store all secret keys locally. In contrast, due to limited memory, most existing FIDO2 tokens either derive all secret keys from a common seed or store keys on the server (the latter approach is also known as key wrapping).
In this paper, we revisit the security of the WebAuthn component of FIDO2 as implemented in practice. Our contributions are as follows. (1) We adapt the model of Barbosa et al. so as to capture authentication tokens using key derivation or key wrapping. (2) We provide the first formal definition of privacy for the WebAuthn component of FIDO2. We then prove the privacy of this component in common FIDO2 token implementations if the underlying building blocks are chosen appropriately. (3) We address the unsolved problem of global key revocation in FIDO2. To this end, we introduce and analyze a simple revocation procedure that builds on the popular BIP32 standard used in cryptocurrency wallets and can efficiently be implemented with existing FIDO2 servers.
History
Preferred Citation
Lucjan Hanzlik, Julian Loss, Benedikt Wagner. Token meets Wallet: Formalizing Privacy and Revocation for FIDO2. In: Proceedings of the 44rd IEEE Symposium on Security and Privacy. 2023.
Primary Research Area
Algorithmic Foundations and Cryptography
Name of Conference
IEEE Symposium on Security and Privacy (S&P)
Legacy Posted Date
2023-08-04
Open Access Type
Repository
BibTeX
@inproceedings{cispa_all_4000,
author = {Lucjan Hanzlik AND Julian Loss AND Benedikt Wagner},
title = {Token meets Wallet: Formalizing Privacy and Revocation for FIDO2},
booktitle = {Proceedings of the 44rd IEEE Symposium on Security and Privacy},
year = {2023}
}