A World Without Passwords Molly Dalton mollyadalton People

  • Slides: 52
Download presentation
A World Without Passwords Molly Dalton @mollyadalton

A World Without Passwords Molly Dalton @mollyadalton

“People are prone to taking mental shortcuts. “ - Kevin Mitnick stealer Infamous information

“People are prone to taking mental shortcuts. “ - Kevin Mitnick stealer Infamous information Top-notch Information Stealer

Overview of passwordless authentication contoso. co m Client Server User requests to use passwordless

Overview of passwordless authentication contoso. co m Client Server User requests to use passwordless login Challenge Sign Challenge with Private Key Signed Challenge Check signature Return Information

Let’s make a few things clear Client Relying Party contoso. co m Browser Server

Let’s make a few things clear Client Relying Party contoso. co m Browser Server Platform Website

Gestures ***** Client Authenticator Windows Hello TPM

Gestures ***** Client Authenticator Windows Hello TPM

work@outlook. com One User One Device One credential One Account

work@outlook. com One User One Device One credential One Account

Molly’s Device molly work account outlook. com molly personal account Credentials for Molly Outlook

Molly’s Device molly work account outlook. com molly personal account Credentials for Molly Outlook personal Outlook work

Overview of traditional password authentication contoso. co m Client Server Input password to site

Overview of traditional password authentication contoso. co m Client Server Input password to site Username Password + Salt Hash (Password + Salt) Password Sign-in user Compare with stored hashed password

Overview of passwordless authentication contoso. co m Client Request information from Server Challenge Sign

Overview of passwordless authentication contoso. co m Client Request information from Server Challenge Sign Challenge with Private Key Signed Challenge Check signature Return Information

DEMO

DEMO

Web Authentication API - make. Credential (registering a user) - get. Assertion (authenticating a

Web Authentication API - make. Credential (registering a user) - get. Assertion (authenticating a use

Overview of registering a user User requests to use passwordless login Client contoso. co

Overview of registering a user User requests to use passwordless login Client contoso. co m Relying Party

var webauthn. API = navigator. authentication; if(!webauthn. API){ /*Handle Error*/ }

var webauthn. API = navigator. authentication; if(!webauthn. API){ /*Handle Error*/ }

Overview of registering a user User requests to use passwordless login contoso. co m

Overview of registering a user User requests to use passwordless login contoso. co m Client make. Credential call Relying Party

webauthn. API. make. Credential(user. Account. Information, crypto. Params, challenge, options) . then(function (new. Credential.

webauthn. API. make. Credential(user. Account. Information, crypto. Params, challenge, options) . then(function (new. Credential. Info) { /* Send new credential info to server */ }). catch(function (err) { /* No hardware or permission*/ });

make. Credential(user. Account. Information, crypto. Params, challenge, options) var user. Account. Information = {

make. Credential(user. Account. Information, crypto. Params, challenge, options) var user. Account. Information = { rp. Display. Name: “Contoso Email”, display. Name: “Molly Dalton”, name: “mollypersonal@outlook. com”, id: “ 123345436344234242”, image. URL: https: ///pics. contoso. com/mad };

make. Credential(user. Account. Information, crypto. Params, challenge, options) var crypto. Params = [ {

make. Credential(user. Account. Information, crypto. Params, challenge, options) var crypto. Params = [ { type: "Scoped. Cred", algorithm: "ES 256" }, { type: "Scoped. Cred", algorithm: "RS 256" } ];

make. Credential(user. Account. Information, crypto. Params, challenge, options) var challenge = "Y 2 xpb.

make. Credential(user. Account. Information, crypto. Params, challenge, options) var challenge = "Y 2 xpb. WIg. YSBtb 3 Vud. GFpbg";

make. Credential(user. Account. Information, crypto. Params, challenge, var options = { timeout. Seconds: 300,

make. Credential(user. Account. Information, crypto. Params, challenge, var options = { timeout. Seconds: 300, exclude. List: [] // No exclude. List }; options)

Overview of registering a user User requests to use passwordless login Client User account

Overview of registering a user User requests to use passwordless login Client User account information, crypto params, and attestation challenge make. Credential call contoso. co m Relying Party

Overview of generating a credential Unlock with Fingerprint Authenticator Client Generate key pair Public

Overview of generating a credential Unlock with Fingerprint Authenticator Client Generate key pair Public Key+ Credential ID Windows Hello Private Key TPM Attestation Statement

Overview of registering a user User requests to use passwordless login User account information,

Overview of registering a user User requests to use passwordless login User account information, crypto params, and attestation challenge make. Credential call Client Public key, attestation statement, and credential id make. Credential promise resolved User is now registered contoso. co m Relying Party

Molly’s Computer bank. com Public Key for bank. com Authenticato r social. com Public

Molly’s Computer bank. com Public Key for bank. com Authenticato r social. com Public Key for social. com Private Key for social. com bank. com Private Key for medical. com medical. co m Public Key for medical. com

Overview of authenticating a user User requests to be authenticated Client contoso. co m

Overview of authenticating a user User requests to be authenticated Client contoso. co m Relying Party

webauthn. API. get. Assertion(challenge, options) . then(function (assertion) { /* Send assertion to server

webauthn. API. get. Assertion(challenge, options) . then(function (assertion) { /* Send assertion to server for verification*/ }). catch(function (err) { /*No hardware or rejected*/ });

get. Assertion(challenge, options) var challenge = "Y 2 xpb. WIg. YSBtb 3 Vud. GFpbg";

get. Assertion(challenge, options) var challenge = "Y 2 xpb. WIg. YSBtb 3 Vud. GFpbg";

get. Assertion(challenge, options) var options = { timeout. Seconds = 300, // 5 minutes

get. Assertion(challenge, options) var options = { timeout. Seconds = 300, // 5 minutes allow. List: [] };

get. Assertion(challenge, options) var cred 1 = { type: "Scoped. Cred", id: "ISEh. IWhp.

get. Assertion(challenge, options) var cred 1 = { type: "Scoped. Cred", id: "ISEh. IWhp. IHRo. ZXJl. ISEh. IQo=" }; var cred 2 = { type: "Scoped. Cred", id: "cm 9 z. ZXMg. YXJl. IHJl. ZCwgdmlvb. GV 0 cy. Bhcm. Ug. Ymx 1 ZQo=" }; var options = { timeout. Seconds: 300, allow. List: [cred 1, cred 2]; };

Login using no credentials Outlook. com allow. List: [] Login Here All credentials from

Login using no credentials Outlook. com allow. List: [] Login Here All credentials from Outlook. com

Microsoft. com needs your identity mollywork@outlook. com Molly Dalton Microsoft mollypersonal@outlook. com Molly Dalton

Microsoft. com needs your identity mollywork@outlook. com Molly Dalton Microsoft mollypersonal@outlook. com Molly Dalton Microsoft Ok Cancel

var user. Account. Information = { rp. Display. Name: “Outlook Email”, display. Name: “Molly

var user. Account. Information = { rp. Display. Name: “Outlook Email”, display. Name: “Molly Dalton”, name: “mollypersonal@outlook. com”, id: “ 123345436344234242”, image. URL: https: ///pics. outlook. com/mad };

Login using username User. Info Login with username mad. Molly - Username “ 1232312”

Login using username User. Info Login with username mad. Molly - Username “ 1232312” - Credential ID - Public Key Outlook. com Additional Information

Overview of authenticating a user Requests to be authenticated Client sends Challenge down to

Overview of authenticating a user Requests to be authenticated Client sends Challenge down to the authenticator get. Assertion call contoso. co m Relying Party

Overview of signing a challenge authenticator. Data Private Key Client client. Data. Hash Signature

Overview of signing a challenge authenticator. Data Private Key Client client. Data. Hash Signature client. Data. Hash

Overview of authenticating a user Requests to be authenticated sends Challenge down to the

Overview of authenticating a user Requests to be authenticated sends Challenge down to the authenticator get. Assertion call Client signs challenge with private key get. Assertion promise resolved contoso. co m Relying Party

User. Info Relying Party mad. Molly - Username Signature “ 1232312” - Credential ID

User. Info Relying Party mad. Molly - Username Signature “ 1232312” - Credential ID - Public Key Additional Information

Overview of authenticating a user Requests to be authenticated sends Challenge down to the

Overview of authenticating a user Requests to be authenticated sends Challenge down to the authenticator get. Assertion call Client signs challenge with private key get. Assertion promise resolved User is authenticated contoso. co m Relying Party

What’s next

What’s next

1. Experimental version now

1. Experimental version now

2. Polyfill available

2. Polyfill available

3. Build experience with new update

3. Build experience with new update

4. Read the spec

4. Read the spec

blog. microsoftedge. com

blog. microsoftedge. com

status. microsoftedge. com

status. microsoftedge. com

issues. microsoftedge. com

issues. microsoftedge. com