e629a72c3a
apps.webauthn.boot() does not need an if-condition because it's only
called from session.py when the usb interface is enabled
This means that they do not need to be stored in RAM at all. The obvious
drawback is that we need to hand-edit the if/elif sequence, but we don't
register new handlers all that often so 🤷
|
||
---|---|---|
.. | ||
metadata | ||
res | ||
__init__.py | ||
add_resident_credential.py | ||
common.py | ||
confirm.py | ||
credential.py | ||
fido2.py | ||
knownapps.py | ||
knownapps.py.mako | ||
list_resident_credentials.py | ||
README.md | ||
remove_resident_credential.py | ||
resident_credentials.py |
WebAuthn
MAINTAINER = Andrew R. Kozlik andrew.kozlik@satoshilabs.com
AUTHOR = Andrew R. Kozlik andrew.kozlik@satoshilabs.com
REVIEWER = Jan Pochyla jan.pochyla@satoshilabs.com, Ondrej Vejpustek ondrej.vejpustek@satoshilabs.com
This app implements WebAuthn authenticator functionality in accordance with the following specifications:
- Web Authentication: An API for accessing Public Key Credentials Level 1, W3C Recommendation, 4 March 2019
- FIDO Client to Authenticator Protocol (CTAP) v2.0, Proposed Standard, January 30, 2019
- SLIP-0022: FIDO2 credential ID format for HD wallets
Supported features and algorithms
This implementation supports client-side credential storage on the device and user verification by PIN entry, making the Trezor T a first-factor roaming authenticator usable for passwordless login.
User verification
The device is capable of verifying the user within itself by direct PIN entry via the touchscreen. Client PIN is not supported, because it is less secure than direct PIN verification. The authenticatorClientPIN
command is therefore implemented only to the extent required by the hmac-secret extension. Namely, only the getKeyAgreement
subcommand is supported.
Credential selection
Credential selection is supported directly on the device. The authenticatorGetNextAssertion
command is therefore not implemented.
Public key credential algorithms
- COSE algorithm ES256 (-7): ECDSA using the NIST P-256 curve with SHA-256.
- COSE algorithm EdDSA (-8): Pure EdDSA using the Ed25519 curve.
Extenstions
- hmac-secret extension.
Attestation types
- Basic attestation for login.microsoft.com.
- Self attestation for all other sites.
AAGUID
The AAGUID is a 128-bit globally unique identifier indicating the type (e.g. make and model) of the authenticator. The AAGUID for Trezor T is d6d0bdc3-62ee-c4db-de8d-7a656e4a4487.
Certificates for basic attestation
- Trezor FIDO Root CA Serial 84151356
- Trezor FIDO EE Serial 54878404 used by Trezor T.