Go Passwordless with FIDO2
(turn on, tap out, log on)
Special thanks to ALLNET & bluegras
Rob Dudley
CTO/CISO for a crypto currency hedge fund

Web application developer

Podcaster

Loves YubiKeys
Didn’t you do this
talk last year?
What do you have
against passwords?
What’s wrong with passwords?
• Complicated to create secure passwords

• Changing standards

• Users are terrible at them

• Very simple to “copy”
What’s wrong with passwords?
But worst of all…
What’s wrong with passwords?
They’re phishable!
Over 80% of all hacking-related breaches
are caused by stolen or weak passwords.
FIDO2 … WTF?
March of the Standards
• FIDO

• U2F 

• WebAuthN

• FIDO2
• CTAP

• WebUSB

• NFC

• CBOR
March of the Standards
the WebAuthn API enables servers to register and authenticate users using
public key cryptography instead of a passwords

CTAP is an application layer protocol used for communication between a client
(browser or OS) and an external authenticator (YubiKey 5)
FIDO2 in action
FIDO2 in Action
• Not just a YubiKey:

• NFC

• Windows Hello

• Android
FIDO2 in Action
2 steps:

•Initial Registration

•Authentication
FIDO2 in Action - Registration
• Registration is an initial process for registering a new FIDO2 device with a
service

• User’s device creates a new public/private key pair unique for the local
device, online service and user’s account.

• Public key is sent to the online service and associated with the user’s
account. 

• The private key and any information about the local authentication method
(such as biometric measurements or templates) never leave the local
device.
FIDO2 in Action - Registration
• Registration is an initial process for registering a new FIDO2 device with a
service

• User’s device creates a new public/private key pair unique for the local
device, online service and user’s account.

• Public key is sent to the online service and associated with the user’s
account. 

• The private key and any information about the local authentication method
(such as biometric measurements or templates) never leave the local
device.
Quick Demo
Let’s look at some code…
Using the sample Java server
from YubiCo
https://github.com/Yubico/java-webauthn-server
Registration
Initiate a registration ceremony:
Serialize request to JSON and send it to the client:
Get the response from the client:
Validate the response:
Authentication
Initiate an authentication ceremony:
Validate the response:
The password is dead
LONG LIVE THE … PIN?
Attestation vs Assertion
Attestation vs Assertion
• Attestation is the verification of the device root certificate

• This is per device family NOT unique to the device

• Used during registration
Attestation vs Assertion
• Assertion is the verification of the unique key pair for the service

• Unique to device and your app

• Used during authentication
New processes needed
New processes
• Forgotten password is out

• Replacement FIDO2 is in
MOBILE!!!
More resources
https://github.com/StrongKey/fido2/

https://fidoalliance.org/ 

https://www.yubico.com/services-with-yubikey/fido2/ 

https://developers.yubico.com/
Questions?
@robdudley
@robdudley@mastodon.social
https://slideshare.com/something
www.rcwd.dev

Go passwordless with fido2