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

Passwords suck, but centralized proprietary services are not the answer

May 08, 2015

Download

Technology

Francois Marier

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.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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: