141
François Marier – @fmarier Passwords suck but centralized proprietary services are not the answer

Passwords suck, but centralized proprietary services are not the answer

Embed Size (px)

DESCRIPTION

Passwords are a big problem online and a lot of websites have turned to centralized services to handle logins for them. It's a disturbing trend from a privacy/surveillance point of view, but from a software freedom point of view, it's also turning these proprietary services into core dependencies. That's why Mozilla is building Persona, a new federated and cross-browser system which makes identity a standard part of the browser. It's simple, privacy-sensitive and entirely free software.

Citation preview

Page 1: Passwords suck, but centralized proprietary services are not the answer

François Marier – @fmarier

P a s s w o r d s s u c kbut centralized proprietary services are not the answer

Page 2: Passwords suck, but centralized proprietary services are not the answer

member number

4061

Page 3: Passwords suck, but centralized proprietary services are not the answer
Page 4: Passwords suck, but centralized proprietary services are not the answer

501c3

Page 5: Passwords suck, but centralized proprietary services are not the answer

keeping the webopen & innovative

mission

Page 6: Passwords suck, but centralized proprietary services are not the answer

free softwareprivacy

users in control

principles

Page 7: Passwords suck, but centralized proprietary services are not the answer

threat: passwords

Page 8: Passwords suck, but centralized proprietary services are not the answer

threat: passwordspassword alternatives

Page 9: Passwords suck, but centralized proprietary services are not the answer

why?

Page 10: Passwords suck, but centralized proprietary services are not the answer

passwordsare hard toremember

Page 11: Passwords suck, but centralized proprietary services are not the answer
Page 12: Passwords suck, but centralized proprietary services are not the answer

re-use

Page 13: Passwords suck, but centralized proprietary services are not the answer
Page 14: Passwords suck, but centralized proprietary services are not the answer
Page 15: Passwords suck, but centralized proprietary services are not the answer
Page 16: Passwords suck, but centralized proprietary services are not the answer
Page 17: Passwords suck, but centralized proprietary services are not the answer
Page 18: Passwords suck, but centralized proprietary services are not the answer
Page 19: Passwords suck, but centralized proprietary services are not the answer
Page 20: Passwords suck, but centralized proprietary services are not the answer
Page 21: Passwords suck, but centralized proprietary services are not the answer

not just anothertechnical problem

Page 22: Passwords suck, but centralized proprietary services are not the answer
Page 23: Passwords suck, but centralized proprietary services are not the answer
Page 24: Passwords suck, but centralized proprietary services are not the answer
Page 25: Passwords suck, but centralized proprietary services are not the answer

wanted:better login solution forfree software developers

Page 26: Passwords suck, but centralized proprietary services are not the answer
Page 27: Passwords suck, but centralized proprietary services are not the answer

decentralized

Page 28: Passwords suck, but centralized proprietary services are not the answer

myid.com/u/francois

Page 29: Passwords suck, but centralized proprietary services are not the answer
Page 30: Passwords suck, but centralized proprietary services are not the answer
Page 31: Passwords suck, but centralized proprietary services are not the answer
Page 32: Passwords suck, but centralized proprietary services are not the answer
Page 33: Passwords suck, but centralized proprietary services are not the answer

privacy®

Page 34: Passwords suck, but centralized proprietary services are not the answer

using the web should notrequire a Facebook account

Page 35: Passwords suck, but centralized proprietary services are not the answer
Page 36: Passwords suck, but centralized proprietary services are not the answer

decentralized

Page 37: Passwords suck, but centralized proprietary services are not the answer

privacy-sensitivedecentralized

Page 38: Passwords suck, but centralized proprietary services are not the answer

privacy-sensitive

simple

decentralized

Page 39: Passwords suck, but centralized proprietary services are not the answer

privacy-sensitive

simplefree software

decentralized

Page 40: Passwords suck, but centralized proprietary services are not the answer

in your browser

Page 41: Passwords suck, but centralized proprietary services are not the answer

how does it work?

Page 43: Passwords suck, but centralized proprietary services are not the answer

<digital signatures 101>

Page 44: Passwords suck, but centralized proprietary services are not the answer

private public

Page 45: Passwords suck, but centralized proprietary services are not the answer

public

Page 46: Passwords suck, but centralized proprietary services are not the answer

My name isFrançois Marierand my email istoo long to fiton one line.

Page 47: Passwords suck, but centralized proprietary services are not the answer

My name isFrançois Marierand my email istoo long to fiton one line.private

Page 48: Passwords suck, but centralized proprietary services are not the answer

My name isFrançois Marierand my email istoo long to fiton one line. public

Page 49: Passwords suck, but centralized proprietary services are not the answer

sign verify

Page 50: Passwords suck, but centralized proprietary services are not the answer

</digital signatures 101>

Page 52: Passwords suck, but centralized proprietary services are not the answer

getting a proof of email ownership

Page 53: Passwords suck, but centralized proprietary services are not the answer

authenticate?

Page 54: Passwords suck, but centralized proprietary services are not the answer

authenticate?

public key

Page 55: Passwords suck, but centralized proprietary services are not the answer

authenticate?

public key

signed public key

Page 56: Passwords suck, but centralized proprietary services are not the answer

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

Page 57: Passwords suck, but centralized proprietary services are not the answer
Page 58: Passwords suck, but centralized proprietary services are not the answer
Page 59: Passwords suck, but centralized proprietary services are not the answer
Page 60: Passwords suck, but centralized proprietary services are not the answer
Page 61: Passwords suck, but centralized proprietary services are not the answer
Page 62: Passwords suck, but centralized proprietary services are not the answer
Page 63: Passwords suck, but centralized proprietary services are not the answer
Page 64: Passwords suck, but centralized proprietary services are not the answer

logging into a 3rd party site

Page 65: Passwords suck, but centralized proprietary services are not the answer

assertion

Valid for: 2 minutes

mediagoblin.org

Page 66: Passwords suck, but centralized proprietary services are not the answer

check audience

assertion

Valid for: 2 minutes

mediagoblin.org

Page 67: Passwords suck, but centralized proprietary services are not the answer

check audiencecheck expiry

assertion

Valid for: 2 minutes

mediagoblin.org

Page 68: Passwords suck, but centralized proprietary services are not the answer

check audiencecheck expirycheck signature

assertion

Valid for: 2 minutes

mediagoblin.org

Page 69: Passwords suck, but centralized proprietary services are not the answer

assertion

public key

Valid for: 2 minutes

mediagoblin.org

Page 70: Passwords suck, but centralized proprietary services are not the answer

assertion

Valid for: 2 minutes

mediagoblin.org

Page 71: Passwords suck, but centralized proprietary services are not the answer

assertion

session cookie

Page 72: Passwords suck, but centralized proprietary services are not the answer

Persona is federated &protects your privacy

Page 73: Passwords suck, but centralized proprietary services are not the answer

achievingthe vision

Page 74: Passwords suck, but centralized proprietary services are not the answer
Page 75: Passwords suck, but centralized proprietary services are not the answer

email providers

browser vendors

Page 76: Passwords suck, but centralized proprietary services are not the answer

email providers

Page 79: Passwords suck, but centralized proprietary services are not the answer

fallback identity provider

Page 80: Passwords suck, but centralized proprietary services are not the answer
Page 81: Passwords suck, but centralized proprietary services are not the answer
Page 82: Passwords suck, but centralized proprietary services are not the answer
Page 83: Passwords suck, but centralized proprietary services are not the answer

persona.org account

Page 84: Passwords suck, but centralized proprietary services are not the answer

support for all email providers

Page 85: Passwords suck, but centralized proprietary services are not the answer

browser vendors

Page 86: Passwords suck, but centralized proprietary services are not the answer

navigator.id.*

Page 87: Passwords suck, but centralized proprietary services are not the answer
Page 88: Passwords suck, but centralized proprietary services are not the answer
Page 89: Passwords suck, but centralized proprietary services are not the answer
Page 90: Passwords suck, but centralized proprietary services are not the answer

js

Page 91: Passwords suck, but centralized proprietary services are not the answer

support for allmodern browsers

>= 8

Page 92: Passwords suck, but centralized proprietary services are not the answer

support for allmodern browsers

>= 8

Page 93: Passwords suck, but centralized proprietary services are not the answer

support for freebrowsers too

Page 94: Passwords suck, but centralized proprietary services are not the answer

email providers

browser vendors

Page 95: Passwords suck, but centralized proprietary services are not the answer

using it on your site

Page 96: Passwords suck, but centralized proprietary services are not the answer
Page 97: Passwords suck, but centralized proprietary services are not the answer

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

Page 98: Passwords suck, but centralized proprietary services are not the answer

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

Page 99: Passwords suck, but centralized proprietary services are not the answer

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

Page 100: Passwords suck, but centralized proprietary services are not the answer

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

Page 101: Passwords suck, but centralized proprietary services are not the answer

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

Page 102: Passwords suck, but centralized proprietary services are not the answer

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

Page 103: Passwords suck, but centralized proprietary services are not the answer
Page 104: Passwords suck, but centralized proprietary services are not the answer

navigator.id.request()

Page 105: Passwords suck, but centralized proprietary services are not the answer
Page 106: Passwords suck, but centralized proprietary services are not the answer
Page 107: Passwords suck, but centralized proprietary services are not the answer
Page 108: Passwords suck, but centralized proprietary services are not the answer

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

Page 109: Passwords suck, but centralized proprietary services are not the answer

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

Page 110: Passwords suck, but centralized proprietary services are not the answer

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 111: Passwords suck, but centralized proprietary services are not the answer

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 112: Passwords suck, but centralized proprietary services are not the answer

{ status: “okay”,

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

expires: 1344849682560,

email: “[email protected]”,

issuer: “login.persona.org”}

Page 113: Passwords suck, but centralized proprietary services are not the answer

{ status: “failed”,

reason: “assertion has expired”}

Page 114: Passwords suck, but centralized proprietary services are not the answer
Page 115: Passwords suck, but centralized proprietary services are not the answer
Page 116: Passwords suck, but centralized proprietary services are not the answer
Page 117: Passwords suck, but centralized proprietary services are not the answer

navigator.id.logout()

Page 118: Passwords suck, but centralized proprietary services are not the answer

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

Page 119: Passwords suck, but centralized proprietary services are not the answer
Page 120: Passwords suck, but centralized proprietary services are not the answer

1. load javascript library

Page 121: Passwords suck, but centralized proprietary services are not the answer

1. load javascript library

2. setup login & logout callbacks

Page 122: Passwords suck, but centralized proprietary services are not the answer

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

Page 123: Passwords suck, but centralized proprietary services are not the answer

1. load javascript library

2. setup login & logout callbacks

3. add login and logout buttons

4. verify proof of ownership

Page 124: Passwords suck, but centralized proprietary services are not the answer

you can add Persona toyour site in one afternoon

Page 125: Passwords suck, but centralized proprietary services are not the answer

wanna help ussolve the

password problem?

Page 126: Passwords suck, but centralized proprietary services are not the answer

add Persona toyour project/site

tell us about yourexperience

email one siteasking for it

Page 127: Passwords suck, but centralized proprietary services are not the answer

add Persona toyour project/site

tell us about yourexperience

email one siteasking for it

Page 128: Passwords suck, but centralized proprietary services are not the answer

add Persona toyour project/site

tell us about yourexperience

email one siteasking for it

Page 129: Passwords suck, but centralized proprietary services are not the answer
Page 130: Passwords suck, but centralized proprietary services are not the answer

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

http://123done.org/https://wiki.mozilla.org/Identity#Get_Involved

@fmarier http://fmarier.org

Page 132: Passwords suck, but centralized proprietary services are not the answer

identity provider API

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: Passwords suck, but centralized proprietary services are not the answer

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

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

identity provider API

Page 134: Passwords suck, but centralized proprietary services are not the answer

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

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

identity provider API

Page 135: Passwords suck, but centralized proprietary services are not the answer

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

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

identity provider API

Page 136: Passwords suck, but centralized proprietary services are not the answer

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

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

identity provider API

Page 137: Passwords suck, but centralized proprietary services are not the answer

identity provider API

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: Passwords suck, but centralized proprietary services are not the answer

identity provider API

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: Passwords suck, but centralized proprietary services are not the answer

identity provider API

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: Passwords suck, but centralized proprietary services are not the answer

identity provider API

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

2. try the provisioning endpoint

3. show the authentication page

4. call the provisioning endpoint again

Page 141: Passwords suck, but centralized proprietary services are not the answer

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

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

Elephant in room: https://secure.flickr.com/photos/bitboy/246805948/

Cookie on tray: https://secure.flickr.com/photos/jamisonjudd/4810986199/

Uncle Sam: https://secure.flickr.com/photos/donkeyhotey/5666065982/

US passport: https://secure.flickr.com/photos/damian613/5077609023/

Photo credits: