Your SlideShare is downloading. ×
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

CIS14: An Overview of FIDO’s Universal 2nd Factor (U2F) Specification

2,279

Published on

Dirk Balfanz, Goooogle …

Dirk Balfanz, Goooogle
Motivation for U2F, demo of its use, explanation of the user privacy and security properties of the protocols involved, explanation of the state of browser support for U2F, and delving into some of the details of the APIs.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,279
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
102
Comments
0
Likes
4
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. U2F - Universal 2nd Factor Dirk Balfanz (Google)
  • 2. password == bearer token
  • 3. REUSED PHISHED KEYLOGGED
  • 4. Today's solution: One time codes: SMS or Device SMS USABILITY Coverage Issues - Delay - User Cost DEVICE USABILITY One Per Site - Expensive - Fragile USER EXPERIENCE Users find it hard PHISHABLE German Police re: iTan: ".. we still lose money"
  • 5. The U2F solution: How it works ● One device, many services ● Easy: Insert and press button ● Safe: Un-phishable Security
  • 6. U2F Protocol Core idea: Standard public key cryptography: ● User's device mints new key pair, gives public key to server ● Server asks user's device to sign data to verify the user. ● One device, many services, "bring your own device" enabled Lots of refinement for this to be consumer facing: ● Privacy: Site Specific Keys, No unique ID per device ● Security: No phishing, man-in-the-middles ● Trust: Verify who made the device ● Pragmatics: Affordable today, ride hardware cost curve down ● Speed for user: Fast crypto in device (Elliptic Curve) Think "Smartcard re-designed for modern consumer web"
  • 7. DEMO
  • 8. proofThatUserIsThere Phisher server
  • 9. proofThatUserIsThere server server
  • 10. proofThatUserIsThere “I promise a user is here”, “the server challenge was: 337423”, “the origin was: accounts.google.com”, “the TLS connection state was: 342384” Signed
  • 11. proofThatUserIsThere “I promise a user is here”, “the server challenge was: 337423”, “the origin was: accounts.google.com”, “the TLS connection state was: 342384” Signed this is where the key is this guy knows the key
  • 12. Relying Party FIDO Client 1. Setup 2. Processing 3. Verification
  • 13. U2F Token FIDO Client/ Browser Relying Party app id, challenge a; challenge, origin, channel id, etc. c a check app id generate: key kpub key kpriv handle h kpub , h, attestation cert, signature(a,c,kpub ,h) c, kpub , h, attestation cert, s store: key kpub handle h s Registration cookie
  • 14. U2F Token FIDO Client/ Browser Relying Party handle, app id, challenge h, a; challenge, origin, channel id, etc. c a check app id retrieve: key kpriv from handle h; counter++ counter, signature(a,c,counter) counter, c, s check: signature using key kpub s h retrieve: key kpub from handle h Authentication set cookie
  • 15. User Presence API u2f.register({ ‘challenge’: ‘KSDJsdASAS-AIS_AsS’, ‘app_id’: ‘https://www.google.com/facets.json’ }, callback); callback = function(response) { sendToServer( response[‘clientData’], response[‘tokenData’]); };
  • 16. u2f..handleRegistrationRequest({ ‘challenge’: ‘KSDJsdASAS-AIS_AsS’, ‘app_id’: ‘https://www.google.com/facets.json’ }, callback); callback = function(response) { sendToServer( response[‘clientData’], response[‘tokenData’]); }; User Presence API{ "typ":"register", "challenge":"KSDJsdASAS-AIS_AsS", "cid_pubkey": { "kty":"EC", "crv":"P-256", "x":"HzQwlfXX7Q4S5MtCRMzPO9tOyWjBqRl4tJ8", "y":"XVguGFLIZx1fXg375hi4-7-BxhMljw42Ht4" }, "origin":"https://accounts.google.com" }
  • 17. User Presence API u2f.sign({ ‘challenge’: ‘KSDJsdASAS-AIS_AsS’, ‘app_id’: ‘https://www.google.com/facets.json’, ‘key_handle’: ‘JkjhdsfkjSDFKJ_ld-sadsAJDKLSAD’ }, callback); callback = function(response) { sendToServer( response[‘clientData’], response[‘tokenData’]); };
  • 18. User Presence API u2f.sign({ ‘challenge’: ‘KSDJsdASAS-AIS_AsS’, ‘app_id’: ‘https://www.google.com/facets.json’, ‘key_handle’: ‘JkjhdsfkjSDFKJ_ld-sadsAJDKLSAD’ }, callback); callback = function(response) { sendToServer( response[‘clientData’], response[‘tokenData’]); }; { "typ":"authenticate", "challenge":"KSDJsdASAS-AIS_AsS", "cid_pubkey": { "kty":"EC", "crv":"P-256", "x":"HzQwlfXX7Q4S5MtCRMzPO9tOyWjBqRl4tJ8", "y":"XVguGFLIZx1fXg375hi4-7-BxhMljw42Ht4" }, "origin":"https://accounts.google.com" }
  • 19. What if… ...I want to accept U2F logins? ● Browser: Call JS APIs ○ (simulated today with browser extension) ● Server: Implement registration flow ○ decide how to handle attestation certificates ○ verify registration response ○ store public key, key handle with user account ● Server: Implement login flow ○ check username/password, look up key handle ○ verify authentication response (origin, signature, counter, …) ● Check your account recovery flow
  • 20. What if… ...I want to offer a USB U2F token? ● Implement ECDSA P-256 ● Implement counter ● Decide on key handle strategy ○ must recover private key, app id ● Implement USB framing spec ● No responses without user presence! ○ (with one exception) ○ check that app id matches
  • 21. What if… ...I want to offer a NFC/BLE/... token? ● Come join FIDO!
  • 22. What if… ...I have a different token form factor? ● Come join FIDO!
  • 23. Next Steps ● Other platforms: browsers on Android, etc. ● Other platforms: native apps on Android, etc. ● Other message framing: BLE, NFC, etc. ● Other plugin mechanisms: ASM
  • 24. Thanks!

×