Transcript
Page 1: You're still using passwords on your site?

François Marier – @fmarier

You’re still using passwords on your site?

Page 2: You're still using passwords on your site?
Page 3: You're still using passwords on your site?
Page 4: You're still using passwords on your site?
Page 5: You're still using passwords on your site?
Page 6: You're still using passwords on your site?
Page 7: You're still using passwords on your site?
Page 8: You're still using passwords on your site?
Page 9: You're still using passwords on your site?
Page 10: You're still using passwords on your site?
Page 11: You're still using passwords on your site?
Page 12: You're still using passwords on your site?

problem #1:

passwords are hard to secure

Page 13: You're still using passwords on your site?

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 14: You're still using passwords on your site?

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 15: You're still using passwords on your site?

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 16: You're still using passwords on your site?

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 17: You're still using passwords on your site?

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

Page 18: You're still using passwords on your site?

bcrypt / scrypt / pbkdf2

per-user salt

site secret

password & lockout policies

secure recovery

20132013

passwordpassword

guidelines

guidelines

Page 19: You're still using passwords on your site?

passwords are hard to secure

they are a liability

Page 20: You're still using passwords on your site?

ALTER TABLE userDROP COLUMN password;

Page 21: You're still using passwords on your site?

problem #2:

passwords are hard to remember

Page 22: You're still using passwords on your site?
Page 23: You're still using passwords on your site?
Page 24: You're still using passwords on your site?

pick an easy password

Page 25: You're still using passwords on your site?

pick an easy password

use it everywhere

Page 26: You're still using passwords on your site?

passwords are hard to remember

they need to be reset

Page 27: You're still using passwords on your site?
Page 28: You're still using passwords on your site?

controlemail

account

controlall

accounts=

Page 29: You're still using passwords on your site?
Page 30: You're still using passwords on your site?

“People wanta little dating

before marriage.”Eric Vishria – Rockmelt

Page 31: You're still using passwords on your site?
Page 32: You're still using passwords on your site?

decentralised

Page 33: You're still using passwords on your site?

myid.com/u/francois

Page 34: You're still using passwords on your site?
Page 35: You're still using passwords on your site?
Page 36: You're still using passwords on your site?

privacy®

Page 37: You're still using passwords on your site?

existing login systemsare not good enough

Page 38: You're still using passwords on your site?

ideal web-wide identity system

Page 39: You're still using passwords on your site?

ideal web-wide identity system

Page 40: You're still using passwords on your site?

ideal web-wide identity system

Page 41: You're still using passwords on your site?

ideal web-wide identity system

Page 42: You're still using passwords on your site?

what if it were a standardpart of the web browser?

Page 43: You're still using passwords on your site?
Page 44: You're still using passwords on your site?

how does it work?

Page 46: You're still using passwords on your site?

why email addresses?

Page 47: You're still using passwords on your site?

why email addresses?

already federated

people know their email

natural association between person & email

easy to have separate identities

most sites need a way to contact users

no lock-in

Page 48: You're still using passwords on your site?

why email addresses?

already federated

people know their email

natural association between person & email

easy to have separate identities

most sites need a way to contact users

no lock-in

Page 49: You're still using passwords on your site?

why email addresses?

already federated

people know their email

natural association between person & email

easy to have separate identities

most sites need a way to contact users

no lock-in

Page 50: You're still using passwords on your site?

why email addresses?

already federated

people know their email

natural association between person & email

easy to have separate identities

most sites need a way to contact users

no lock-in

Page 51: You're still using passwords on your site?

why email addresses?

already federated

people know their email

natural association between person & email

easy to have separate identities

most sites need a way to contact users

no lock-in

Page 52: You're still using passwords on your site?

why email addresses?

already federated

people know their email

natural association between person & email

easy to have separate identities

most sites need a way to contact users

no lock-in

Page 54: You're still using passwords on your site?

demo #1:

http://www.voo.st/http://bornthiswayfoundation.org

[email protected]

Page 55: You're still using passwords on your site?

Persona is already adecentralised system

Page 56: You're still using passwords on your site?

SMS with PIN codes

Page 57: You're still using passwords on your site?

SMS with PIN codes

Jabber / XMPP

Page 58: You're still using passwords on your site?

SMS with PIN codes

Jabber / XMPP

Yubikeys

Page 59: You're still using passwords on your site?

SMS with PIN codes

Jabber / XMPP

Yubikeys

LDAP accounts

Page 60: You're still using passwords on your site?

SMS with PIN codes

Jabber / XMPP

Yubikeys

LDAP accounts

Client certificates

Page 61: You're still using passwords on your site?

SMS with PIN codes

Jabber / XMPP

Yubikeys

LDAP accounts

Client certificates

Password-wrapped secret key

{ "public-key": { "algorithm": "RS", "n":"685484565272...", "e":"65537" }, "encrypted-private-key": { "iv": "tmg7gztUQT...", "salt": "JMtGwlF5UWY", "ct": "8DdOjD1IA1..." }, "authentication": "...", "provisioning": "..."}

Page 62: You're still using passwords on your site?

decentralisation is the answer, but it's not

a product adoption strategy

Page 63: You're still using passwords on your site?

we can't wait for all browsersto adopt Persona

Page 64: You're still using passwords on your site?

navigator.id.*

Page 65: You're still using passwords on your site?
Page 66: You're still using passwords on your site?
Page 67: You're still using passwords on your site?
Page 68: You're still using passwords on your site?

we can't wait for all browsersto adopt Persona

solution: a temporaryjavascript shim

Page 69: You're still using passwords on your site?

goal: trusted coderunning in the browser

Page 70: You're still using passwords on your site?

login.persona.org

Page 71: You're still using passwords on your site?

localStorage

localStorage.setItem("key", serializedKey);

var serializedKey = localStorage.getItem("key");

Page 72: You're still using passwords on your site?

storage tied tologin.persona.org

Page 73: You're still using passwords on your site?

window.postMessage()

Page 74: You're still using passwords on your site?

https://login.persona.org

localStorage

postMessage

Page 75: You're still using passwords on your site?

Persona supportsall modern browsers

>= 8

Page 76: You're still using passwords on your site?

we can't wait for all domainsto adopt Persona

Page 77: You're still using passwords on your site?

we can't wait for all domainsto adopt Persona

solution: a temporarycentralised fallback

Page 78: You're still using passwords on your site?

demo #2:

http://sloblog.io/

[email protected]

Page 79: You're still using passwords on your site?

Persona already workswith all email domains

Page 80: You're still using passwords on your site?

identity bridging

Page 81: You're still using passwords on your site?

demo #3:

http://www.reasonwell.com/

[email protected]

Page 82: You're still using passwords on your site?
Page 83: You're still using passwords on your site?
Page 84: You're still using passwords on your site?

Persona works everywhere

Page 85: You're still using passwords on your site?

lessons learned

Page 86: You're still using passwords on your site?

#1 user testingis critical

Page 87: You're still using passwords on your site?
Page 88: You're still using passwords on your site?
Page 89: You're still using passwords on your site?
Page 90: You're still using passwords on your site?

#2 nobody wantsto be first

Page 91: You're still using passwords on your site?

“how many usersdoes Persona have?”

Page 92: You're still using passwords on your site?
Page 93: You're still using passwords on your site?

700,000,000

Page 94: You're still using passwords on your site?

#3 if a problem hasbeen around for awhile, it's probablya hard one

Page 95: You're still using passwords on your site?

see if you can solvepart of the problem

Page 96: You're still using passwords on your site?

$ ssh [email protected]@myserver.com's password:

Page 97: You're still using passwords on your site?
Page 98: You're still using passwords on your site?

Persona is a simplesign-in solution

for the web

Page 99: You're still using passwords on your site?

how simple is it

for developers?

Page 100: You're still using passwords on your site?
Page 101: You're still using passwords on your site?

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

Page 102: You're still using passwords on your site?

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

Page 103: You're still using passwords on your site?

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

Page 104: You're still using passwords on your site?

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

Page 105: You're still using passwords on your site?

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

Page 106: You're still using passwords on your site?

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

Page 107: You're still using passwords on your site?
Page 108: You're still using passwords on your site?

navigator.id.request()

Page 109: You're still using passwords on your site?
Page 110: You're still using passwords on your site?
Page 111: You're still using passwords on your site?
Page 112: You're still using passwords on your site?

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

Page 113: You're still using passwords on your site?

eyJhbGciOiJEUzEyOCJ9.eyJwdWJsaWMta2V5Ijp7ImFsZ29yaXRobSI6IkRTIiwieSI6ImNhZDg2ZDgyNWU0MjBkMGI4Njk5MjM4ZDM5ZTFjYjIyOGMyMTk1NWFiMzcwOTQ1YzExNzBhMzM4NjcyNDM0ZDJmNGYxZDg5ZjFkZjMzNmU1ZjZjZjk2YjhiOTlmMjgyNmFjNTYxZmI1YWMyYTc4ZjNhMzBkNGYxNTVhYjc3ZGExYmY3MWU4ZGMzNjQ0MmU2NjQ3MmE5Mjg0N2I2YjFlNDRkMTJlM2IwMjVjOWZmNTFmNDdhMWE5ZWYyMGZhOTVjMTcxZjBkMTYzNGE4ZTY4YTk5NWU3ZjFjY2FiYTJlOTRjYTI3ODE1ZWVkMTcxYjY1YTJmZGQzNTE1NjY3OTI0ZjUiLCJwIjoiZmY2MDA0ODNkYjZhYmZjNWI0NWVhYjc4NTk0YjM1MzNkNTUwZDlmMWJmMmE5OTJhN2E4ZGFhNmRjMzRmODA0NWFkNGU2ZTBjNDI5ZDMzNGVlZWFhZWZkN2UyM2Q0ODEwYmUwMGU0Y2MxNDkyY2JhMzI1YmE4MWZmMmQ1YTViMzA1YThkMTdlYjNiZjRhMDZhMzQ5ZDM5MmUwMGQzMjk3NDRhNTE3OTM4MDM0NGU4MmExOGM0NzkzMzQzOGY4OTFlMjJhZWVmODEyZDY5YzhmNzVlMzI2Y2I3MGVhMDAwYzNmNzc2ZGZkYmQ2MDQ2MzhjMmVmNzE3ZmMyNmQwMmUxNyIsInEiOiJlMjFlMDRmOTExZDFlZDc5OTEwMDhlY2FhYjNiZjc3NTk4NDMwOWMzIiwiZyI6ImM1MmE0YTBmZjNiN2U2MWZkZjE4NjdjZTg0MTM4MzY5YTYxNTRmNGFmYTkyOTY2ZTNjODI3ZTI1Y2ZhNmNmNTA4YjkwZTVkZTQxOWUxMzM3ZTA3YTJlOWUyYTNjZDVkZWE3MDRkMTc1ZjhlYmY2YWYzOTdkNjllMTEwYjk2YWZiMTdjN2EwMzI1OTMyOWU0ODI5YjBkMDNiYmM3ODk2YjE1YjRhZGU1M2UxMzA4NThjYzM0ZDk2MjY5YWE4OTA0MWY0MDkxMzZjNzI0MmEzODg5NWM5ZDViY2NhZDRmMzg5YWYxZDdhNGJkMTM5OGJkMDcyZGZmYTg5NjIzMzM5N2EifSwicHJpbmNpcGFsIjp7ImVtYWlsIjoiZm9vQG1vY2tteWlkLmNvbSJ9LCJpYXQiOjEzNzY1MzY0NjM1MTgsImV4cCI6MTM3NjU0MDA2MzUxOCwiaXNzIjoibW9ja215aWQuY29tIn0.IeUR0_3ayAZkdNSXjF4aaCwSHnHa4X1lzrjX-qkNcPIbXx1hmQQPwg~eyJhbGciOiJEUzEyOCJ9.eyJleHAiOjEzNzY1MzY3MDc2MzUsImF1ZCI6Imh0dHA6Ly9sb2NhbGhvc3QifQ.NJ8H1qZcWXbXfPJSdgB_mORHQ442ZkY0XYfdQsZZsIjooG7k7qWyVw

Page 114: You're still using passwords on your site?

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

Page 115: You're still using passwords on your site?

require_once('Auth/BrowserID.php');

$verifier = new Auth_BrowserID('http://123done.org');$result = $verifier->verifyAssertion($_POST['assertion']);

Page 116: You're still using passwords on your site?

{ status: “okay”,

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

expires: 1344849682560,

email: “[email protected]”,

issuer: “login.persona.org”}

Page 117: You're still using passwords on your site?

require_once('Auth/BrowserID.php');

$verifier = new Auth_BrowserID('http://123done.org');$result = $verifier->verifyAssertion($_POST['assertion']);

if ($result->status === 'okay') { echo "Hi " . $result->email;} else { echo "Error: " . $result->reason;}

Page 118: You're still using passwords on your site?

{ status: “failed”,

reason: “assertion has expired”}

Page 119: You're still using passwords on your site?

require_once('Auth/BrowserID.php');

$verifier = new Auth_BrowserID('http://123done.org');$result = $verifier->verifyAssertion($_POST['assertion']);

if ($result->status === 'okay') { echo "Hi " . $result->email;} else { echo "Error: " . $result->reason;}

Page 120: You're still using passwords on your site?
Page 121: You're still using passwords on your site?
Page 122: You're still using passwords on your site?

navigator.id.logout()

Page 123: You're still using passwords on your site?

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

Page 124: You're still using passwords on your site?
Page 125: You're still using passwords on your site?

1. load javascript library

Page 126: You're still using passwords on your site?

1. load javascript library

2. setup login & logout callbacks

Page 127: You're still using passwords on your site?

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

Page 128: You're still using passwords on your site?

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 129: You're still using passwords on your site?

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

no API keyneeded

Page 130: You're still using passwords on your site?

how simple is it

for domain owners?

Page 131: You're still using passwords on your site?

https://eyedee.me/.well-known/browserid:

{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}

Page 132: You're still using passwords on your site?

https://eyedee.me/.well-known/browserid:

{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}

Page 133: You're still using passwords on your site?

https://eyedee.me/.well-known/browserid:

{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}

Page 134: You're still using passwords on your site?

https://eyedee.me/.well-known/browserid:

{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}

Page 135: You're still using passwords on your site?

https://eyedee.me/.well-known/browserid:

{ "public-key": { "algorithm":"RS", "n":"8606...", "e":"65537" }, "authentication": "/browserid/sign_in.html", "provisioning": "/browserid/provision.html"}

Page 136: You're still using passwords on your site?

1. check for your /.well-known/browserid

2. try the provisioning endpoint

3. show the authentication page

4. call the provisioning endpoint again

Page 137: You're still using passwords on your site?

1. check for your /.well-known/browserid

2. try the provisioning endpoint

3. show the authentication page

4. call the provisioning endpoint again

Page 138: You're still using passwords on your site?

1. check for your /.well-known/browserid

2. try the provisioning endpoint

3. show the authentication page

4. call the provisioning endpoint again

Page 139: You're still using passwords on your site?

1. check for your /.well-known/browserid

2. try the provisioning endpoint

3. show the authentication page

4. call the provisioning endpoint again

Page 140: You're still using passwords on your site?

one small request

Page 141: You're still using passwords on your site?
Page 142: You're still using passwords on your site?

building a new site:default to Persona

Page 143: You're still using passwords on your site?

working on an existing site/app:add support for Persona

Page 144: You're still using passwords on your site?

before

Page 145: You're still using passwords on your site?

after

Page 146: You're still using passwords on your site?

after

navigator.id.request()

Page 147: You're still using passwords on your site?
Page 148: You're still using passwords on your site?

ALTER TABLE userDROP COLUMN password;

Page 149: You're still using passwords on your site?

To learn more about Persona:

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

https://developer.mozilla.org/docs/Persona/Why_Personahttps://developer.mozilla.org/docs/Persona/Quick_Setup

https://github.com/mozilla/browserid-cookbookhttps://developer.mozilla.org/docs/Persona/Libraries_and_plugins

https://wiki.mozilla.org/Identity#Get_Involved

@fmarier http://fmarier.org

Page 150: You're still using passwords on your site?

© 2013 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/

Restaurant dinner: https://secure.flickr.com/photos/yourdon/3977084094/

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

Yubikey: https://secure.flickr.com/photos/knk/3379897261/

Stop sign: https://secure.flickr.com/photos/artbystevejohnson/6673406227/

Photo credits:


Recommended