You're still using passwords on your site?

150
François Marier – @fmarier You’re still using passwords on your site?

description

A few people like to say that passwords are dead, but the reality is far from it. First of all, we can't get rid of passwords entirely, because the alternatives all suck: physical tokens are easy to lose and retina scans are pretty creepy. What we should focus on is eliminating site-specific passwords. Mozilla Persona was introduced at OSDC last year, but a number of new things have been added to it since. But more importantly, it's still the best shot we have at a decentralized web-wide identity system that works for average users and doesn't violate their privacy. So I'm back to show you what's new and to talk about what organizations can gain from adding native support on their domain. It's time to solve the password problem on the web.

Transcript of You're still using passwords on your site?

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: