FCP Public-Key Cryptography in FIDO 2 — Questions and Answers
Question 1: In FIDO2, which cryptographic operation is performed by the authenticator during the authentication ceremony?
- Encrypting the challenge with the server's public key
- Signing the authenticatorData and clientDataHash with the credential private key (Correct answer)
- Hashing the user's PIN with SHA-256 and sending it to the server
- Verifying the server's certificate chain before proceeding
Correct answer: Signing the authenticatorData and clientDataHash with the credential private key
The authenticator signs the concatenation of authenticatorData and clientDataHash using the credential's private key to produce an assertion.
Question 2: What is the purpose of the 'aaguid' field in FIDO2 attestation statements?
- To uniquely identify each individual authenticator device
- To identify the model and manufacturer class of the authenticator (Correct answer)
- To store the user's public key for later verification
- To encode the cryptographic algorithm used for the credential
Correct answer: To identify the model and manufacturer class of the authenticator
The AAGUID (Authenticator Attestation GUID) identifies the authenticator model/type, not a specific device instance.
Question 3: Which elliptic curve is most commonly used in FIDO2 credentials and identified by COSE key type -7?
- Curve25519 (X25519)
- P-384 (secp384r1)
- P-256 (prime256v1 / secp256r1) (Correct answer)
- P-521 (secp521r1)
Correct answer: P-256 (prime256v1 / secp256r1)
COSE algorithm ES256 (-7) uses ECDSA with the P-256 curve, the most widely supported curve in FIDO2 authenticators.
Question 4: What does 'forward secrecy' mean in the context of FIDO authentication key pairs?
- Each authentication generates a fresh ephemeral key pair that is discarded afterward
- The credential key pair is rotated on every successful login
- Compromise of one credential's private key does not expose other credentials' keys (Correct answer)
- The server never stores any key material, ensuring future sessions are secret
Correct answer: Compromise of one credential's private key does not expose other credentials' keys
FIDO's per-credential, per-relying-party key pairs ensure that compromise of one credential does not affect any other credential.
Question 5: In CTAP2, how is the credential private key protected against extraction when using a hardware authenticator?
- The private key is encrypted with the user's PIN and stored on the server
- The private key is generated and stored entirely within the authenticator's secure element and never exported (Correct answer)
- The private key is split between the authenticator and the relying party using threshold cryptography
- The private key is wrapped with the relying party's public key and stored in the browser
Correct answer: The private key is generated and stored entirely within the authenticator's secure element and never exported
Hardware authenticators store the private key inside a tamper-resistant secure element, making extraction computationally infeasible.
Question 6: What is the role of the 'rpIdHash' in the authenticatorData structure during FIDO2 authentication?
- It proves the server's identity by including its TLS certificate hash
- It binds the assertion to the specific relying party, preventing cross-origin replay (Correct answer)
- It identifies the user account associated with this credential
- It contains the hash of the user's password for legacy compatibility
Correct answer: It binds the assertion to the specific relying party, preventing cross-origin replay
The rpIdHash (SHA-256 of the RP ID) ensures the authenticator only produces assertions for the intended relying party.
Question 7: Which COSE algorithm identifier represents EdDSA using the Ed25519 curve in FIDO2?
- -7
- -35
- -36
- -8 (Correct answer)
Correct answer: -8
COSE algorithm value -8 represents EdDSA, which in practice uses the Ed25519 curve for FIDO2 credentials.
In FIDO2, which cryptographic operation is performed by the authenticator during the authentication ceremony?