5. We would like to design a new authentication system
• Easy to use
• Strong against various attacks
• Pluggable and interoperable design
• Privacy preserving
9. High level architecture
RP ServerUser Device
Native/Web App
Authenticator
RP Web Server
FIDO Server
FIDO Client
(Platform or browser)
Local
Verifier
Crypto
Module
Attest.
Validator
Assertion
Validator
Metadata Service
FIDO Client API
(JS or Native API)
• RP (Relying Party)
• Service leveraging FIDO authentication
• Metadata Service (MDS)
• Access to latest metadata statements
• Authenticator types (attachment)
• Platform (bound) authenticator
• External (roaming) authenticator
10. Registration flow
RP ServerUser Device
Native/Web App
ASM/Authenticator
RP Web Server
FIDO Server
Local
Verifier
Crypto
Module
Attest.
Validator
Assertion
Validator
Metadata Service
5. requestOperation
1.getRegRequest
2.getRegRequest
4. returnRegRequest
6. verifyUser & getAttestation
FIDO Client
(Platform or browser)
7. callbackOperation
8. sendRegResponse
12. serverResponse
3. returnRegRequest
9.sendRegResponse
11. serverResponse
10. verifyAttestation & store pub key
• Public key pair generation
• Attestation (signature) generation
• Store public key and related info
11. Authentication flow
RP ServerUser Device
Native/Web App
ASM/Authenticator
RP Web Server
FIDO Server
Local
Verifier
Crypto
Module
Attest.
Validator
Assertion
Validator
Metadata Service
5. requestOperation
1.getAuthRequest
2.getAuthRequest
4. returnAuthRequest
6. verifyUser & getAssertion
FIDO Client
(Platform or browser)
7. callbackOperation
8. sendAuthResponse
12. serverResponse
3. returnAuthRequest
9.sendAuthResponse
11. serverResponse
10. verifyAssertion /w pub key
• Signature generation (/w priv key)
• Signature verification
12. FIDO credentials
• Scoped (isolated) to the specific domains (web sites)
• No correlation between services (privacy preserving)
• Public key pairs
• Private keys are stored in client as much as secure way
• Public keys are stored in the server and mapped to the user identifiers
• Generated per service, user id and authenticator
• Private keys never leave the device (client)
• Private keys may be protected with user verification methods