The web beyond "usernames & passwords"

91
François Marier – @fmarier the web beyond usernames & passwords

description

Persona is a new cross-browser login and identity system for the web that is pragmatic, federated, and serves the user. Unlike other popular solutions, it puts a strong emphasis on privacy protection and makes your browser the trusted intermediary. Developed by Mozilla, it is based on the simple idea of users demonstrating ownership of their email address (with a generous serving of crypto magic under the hood). Video: https://www.youtube.com/watch?v=T6Iu7KgiC0A or https://www.youtube.com/watch?v=iZBTc7iEkQY

Transcript of The web beyond "usernames & passwords"

Page 1: The web beyond "usernames & passwords"

François Marier – @fmarier

the web beyondusernames & passwords

Page 2: The web beyond "usernames & passwords"

Username:guido

Password:****************

Page 3: The web beyond "usernames & passwords"

security

Page 4: The web beyond "usernames & passwords"
Page 5: The web beyond "usernames & passwords"
Page 6: The web beyond "usernames & passwords"
Page 7: The web beyond "usernames & passwords"
Page 8: The web beyond "usernames & passwords"
Page 9: The web beyond "usernames & passwords"
Page 10: The web beyond "usernames & passwords"

bcrypt

Page 11: The web beyond "usernames & passwords"

bcrypt

per-user salt

Page 12: The web beyond "usernames & passwords"

bcrypt

per-user salt

site secret

Page 13: The web beyond "usernames & passwords"
Page 14: The web beyond "usernames & passwords"

conversionrate

Page 15: The web beyond "usernames & passwords"

# hits

signup

Page 16: The web beyond "usernames & passwords"

# hits

signup signup_complete

Page 17: The web beyond "usernames & passwords"

# hits

signup signup_complete

l o s t cust-omers

Page 18: The web beyond "usernames & passwords"

existing solutions

Page 19: The web beyond "usernames & passwords"

client certificates

Page 20: The web beyond "usernames & passwords"

centralized authorities

Page 21: The web beyond "usernames & passwords"
Page 22: The web beyond "usernames & passwords"
Page 23: The web beyond "usernames & passwords"

distributed

Page 24: The web beyond "usernames & passwords"

distributedprivacy-sensitive

Page 25: The web beyond "usernames & passwords"

distributedprivacy-sensitive

simple

Page 26: The web beyond "usernames & passwords"

distributedprivacy-sensitive

simpleopen source

Page 27: The web beyond "usernames & passwords"

how does Persona work?

Page 29: The web beyond "usernames & passwords"

getting a proof of email ownership

Page 30: The web beyond "usernames & passwords"

getting a proof of email ownership

authenticate?

Page 31: The web beyond "usernames & passwords"

getting a proof of email ownership

authenticate?

public key

Page 32: The web beyond "usernames & passwords"

getting a proof of email ownership

authenticate?

public key

signed public key

Page 33: The web beyond "usernames & passwords"

you have a signed statement from yourprovider that you own your email address

Page 34: The web beyond "usernames & passwords"
Page 35: The web beyond "usernames & passwords"
Page 36: The web beyond "usernames & passwords"
Page 37: The web beyond "usernames & passwords"
Page 38: The web beyond "usernames & passwords"

logging into a 3rd party site

Page 39: The web beyond "usernames & passwords"

logging into a 3rd party site

Valid for: 2 minutes

wikipedia.org

assertion

Page 40: The web beyond "usernames & passwords"

logging into a 3rd party site

Valid for: 2 minutes

wikipedia.org

check audience

assertion

Page 41: The web beyond "usernames & passwords"

logging into a 3rd party site

Valid for: 2 minutes

wikipedia.org

check audiencecheck expiry

assertion

Page 42: The web beyond "usernames & passwords"

logging into a 3rd party site

Valid for: 2 minutes

wikipedia.org

check audiencecheck expirycheck signature

assertion

Page 43: The web beyond "usernames & passwords"

logging into a 3rd party site

assertion

Valid for: 2 minutes

wikipedia.org

public key

Page 44: The web beyond "usernames & passwords"

logging into a 3rd party site

assertion

Valid for: 2 minutes

wikipedia.org

Page 45: The web beyond "usernames & passwords"

logging into a 3rd party site

assertion

session cookie

Page 46: The web beyond "usernames & passwords"

how much work does it take?

Page 47: The web beyond "usernames & passwords"

only 75 lines

Page 48: The web beyond "usernames & passwords"

only 75 lineshtml – js – python

Page 49: The web beyond "usernames & passwords"
Page 50: The web beyond "usernames & passwords"

<head><script src=”https://login.persona.org/include.js”></script></head>

Page 51: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});

Page 52: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: “[email protected]”, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});

Page 53: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});

Page 54: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { // do something } ); }, onlogout: function () { window.location = '/logout'; }});

Page 55: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 56: The web beyond "usernames & passwords"
Page 57: The web beyond "usernames & passwords"

navigator.id.request()

Page 58: The web beyond "usernames & passwords"
Page 59: The web beyond "usernames & passwords"
Page 60: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 61: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 62: The web beyond "usernames & passwords"

def verify_assertion(assertion):

page = requests.post( 'https://verifier.login.persona.org/verify', Data={ "assertion": assertion, "audience": 'http://123done.org'})

data = page.json return data.status == 'okay'

Page 63: The web beyond "usernames & passwords"

{ status: “okay”,

audience: “http://123done.org”,

expires: 1344849682560,

email: “[email protected]”,

issuer: “login.persona.org”}

Page 64: The web beyond "usernames & passwords"
Page 65: The web beyond "usernames & passwords"

navigator.id.logout()

Page 66: The web beyond "usernames & passwords"
Page 67: The web beyond "usernames & passwords"

navigator.id.watch({ loggedInEmail: null, onlogin: function (assertion) { $.post('/login', {assertion: assertion}, function (data) { window.location = '/home'; } ); }, onlogout: function () { window.location = '/logout'; }});

Page 68: The web beyond "usernames & passwords"

1. load javascript library

Page 69: The web beyond "usernames & passwords"

1. load javascript library

2. setup login & logout callbacks

Page 70: The web beyond "usernames & passwords"

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

Page 71: The web beyond "usernames & passwords"

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 72: The web beyond "usernames & passwords"

decentralization status

Page 73: The web beyond "usernames & passwords"

1. identity providers

Page 74: The web beyond "usernames & passwords"

{ status: “okay”,

audience: “http://123done.org”,

expires: 1344849682560,

email: “[email protected]”,

issuer: “eyedee.me”}

Page 75: The web beyond "usernames & passwords"

fallback IdP:

login.persona.org

Page 76: The web beyond "usernames & passwords"

{ status: “okay”,

audience: “http://123done.org”,

expires: 1344849682560,

email: “[email protected]”,

issuer: “mozilla.com”}

Page 77: The web beyond "usernames & passwords"

{ status: “okay”,

audience: “http://123done.org”,

expires: 1344849682560,

email: “[email protected]”,

issuer: “login.persona.org”}

Page 78: The web beyond "usernames & passwords"
Page 79: The web beyond "usernames & passwords"
Page 80: The web beyond "usernames & passwords"

support for all email providers

Page 81: The web beyond "usernames & passwords"

2. browser support

Page 82: The web beyond "usernames & passwords"

navigator.id.*

Page 83: The web beyond "usernames & passwords"

<head><script src=”https://login.persona.org/include.js”></script></head>

Page 84: The web beyond "usernames & passwords"

support for allmodern browsers

>= 8

Page 85: The web beyond "usernames & passwords"
Page 86: The web beyond "usernames & passwords"

3. assertion verification

Page 87: The web beyond "usernames & passwords"

https://verifier.login.persona.org

Page 88: The web beyond "usernames & passwords"

=

Page 89: The web beyond "usernames & passwords"

Persona is open for business!

Page 90: The web beyond "usernames & passwords"

To learn more about Persona:

https://login.persona.org/http://identity.mozilla.com/

https://developer.mozilla.org/en-US/docs/BrowserID/Why_BrowserIDhttps://developer.mozilla.org/en-US/docs/BrowserID/Quick_Setup

https://github.com/mozilla/browserid-cookbook/tree/master/pythonhttps://github.com/mozilla/browserid/wiki/BrowserID-Librarieshttps://github.com/mozilla/django-browserid

http://123done.org/

@fmarier http://fmarier.org

Page 91: The web beyond "usernames & passwords"

© 2012 François Marier <[email protected]>This work is licensed under aCreative Commons Attribution-ShareAlike 3.0 New Zealand License.

Laptop password: https://secure.flickr.com/photos/reidrac/4696900602/

Top 500 passwords: http://xato.net/passwords/more-top-worst-passwords/

Parchment: https://secure.flickr.com/photos/27613359@N03/6750396225/

Photo credits: