Multiple Personae,                          One “Persona”                              #idcon 14                          ...
ぺるそな?
PERSONA          http://www.hitachi.co.jp/New/cnews/9904/0405.html より引用
Personas
Persona?           着せ替え           ログイン
Mozilla Persona
Mozilla Persona• 「ログインのためのより良い方法」
より良い?• たくさんのパスワードを必要としない• 複数のメールアドレスを使い分けられる• decentralized• “Real Privacy”  – Personaは非営利  – Personaはトラッキングを行わない
BrowserID? Persona?• BrowserID はプロトコルの名前 – 昔は Verified Email とも呼ばれていました• Mozilla Persona はシステム・ブランドの名前
簡単な解説• Beta1の簡単な解説を少し – https://github.com/mozilla/   id-specs/blob/beta1/browserid/index.md• ID厨の皆様には不要かもしれませんが…
サインインするには
RPのスクリプト• navigator.id.watch({     onlogin: function(assertion) {           // send assertion     }     :  }  function onC...
サインインを始めると
BrowserID の API が呼ばれて• navigator.id.watch({     onlogin: function(assertion) {           // send assertion     }     :  } ...
BrowserID の UI があらわれ
コールバックに assertion が渡り• navigator.id.watch({     onlogin: function(assertion) {           // send assertion     }     :  } ...
RP に assertion が渡り       Assertion
RP が assertion を検証し     Assertion
Cookie とかを返したりして    Cookie, etc.
GOURANGA!!   Cookie, etc.
うん?• Assertion?• 検証?
Identity Assertion• assertion=  eyJhbGciOiJSUzI1NiJ9  .eyJwdWJsa…  .IhnfWz…  ~  eyJhbGciOiJEUzEyOCJ9  .eyJleHAiOj...  .FL_...
eyJ…?
eyJ…!
eyJ… ~ eyJ…• 複数のJWT をチルダ ‘~’ でつないでいる
eyJ (1){“alg”:”RS256”}.{“public-key”: {“algorithm”:”DS”, ”y”:”...”},  “principal”: {“email”:”bkihara.l@gmail.com”},  “iat”...
eyJ (1) {“alg”:”RS256”} . {“public-key”: {“algorithm”:”DS”, ”y”:”...”},   “principal”: {“email”:”bkihara.l@gmail.com”},Bro...
eyJ (1)             IdP key pair                                               pubkey {“alg”:”RS256”} . {“public-key”: {“a...
eyJ (2){“alg”:”DS128”}.{“exp”:…, “aud”:”http://current.openphoto.me”}.<JWSの署名(ブラウザが生成する)>
eyJ (2) {“alg”:”DS128”} . {“exp”:…, “aud”:”http://current.openphoto.me”} . <JWSの署名(ブラウザが生成する)>Browser key pair        pubkey
Send assertion    Assertion
検証                       IdP                     pubkey            /.well-known/browseridAssertion
検証              IdP            pubkeyAssertion
全体像RP                                IdP                 IdP               pubkeyAssertion                         Sig.   ...
従来のログイン SP                                                Email                        Onetime URL                    exam...
未対応という問題
未対応メールプロバイダ    /.well-known/browserid …?           Not Found.
未対応ブラウザ  navigator.id.request() …?        Undefined.
persona.org!!
Fallback IdP• persona.org が代わりに  ユーザの公開鍵を署名                            IdP key pair                                       ...
Fallback IdP    RP                                                        Email              IdP            pubkey        ...
Fallback API• JavaScript が代わりに  navigator.id.* を提供                                     Persona key pair                   ...
Fallback APIRP                                       IdP                     IdP                   pubkey               pe...
Fallback * Fallback• 合わせると…?
Fallback * Fallback                           persona.orgRP                                                               ...
あれっ?RP                                IdP                 IdP               pubkeyAssertion                         Sig.  ...
BrowserID – Browser – Email = ?                           persona.orgRP                                                   ...
これじゃだめ?                       OpenID Connect OPRP          IdP        pubkey     ID Token                Sig.             ...
*Browser*ID• ブラウザが鍵ペアを生成する• 多段階の署名を付ける – これらがキモ! (のはず)• 少なくともブラウザ側実装はほしいですね• Web Cryptography API もできることですし
ネイティブ実装• Firefox 向け実装は作業中 – https://wiki.mozilla.org/Identity• B2G (Firefox OS) にも実装される予定 – https://wiki.mozilla.org/Ident...
ネイティブ実装• スマホでアプリ間認証とか                          IdPRP APP                 ID APP                                 Sig.    Id...
まとめ• ブラウザの鍵ペアと多段階の署名がキモ• 現状では fallback 中心で理想から遠い• 今後に期待?
ところで
メールと言えば
メールでのログイン SP                                                Email                        Onetime URL                    ex...
メールでのログイン• メールプロバイダはIdPなのか? – ユーザのメールアドレス所持を(一応)保証 – パスワード再発行 (refresh token?) の依代 – Assertionは? Tokenは? – Identifier Prov...
乗っ取られると     今はOpenIDなどセキュリティを     外付けにすることが多いが、これは     危ない。特にツイッターやFacebookは     外部アプリが多いので、変なのが     まぎれこんでもわからない。     セキュ...
内部でやった結果name@example.com  Same_Password
内部でやった結果    Same_Password
内部でやった結果    Same_Password 大惨事!!!
結論•   パスワードはサービスごとに変えましょう•   パスワードは減らしましょう•   ID連携がパスワードを減らします•   メールだいじ!おおごと!
Upcoming SlideShare
Loading in …5
×

#idcon 14 Multiple Personae, One "Persona"

900 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
900
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

#idcon 14 Multiple Personae, One "Persona"

  1. 1. Multiple Personae, One “Persona” #idcon 14 @bkiharahttps://lepidum.co.jp/ 2012 Lepidum Co. Ltd.
  2. 2. ぺるそな?
  3. 3. PERSONA http://www.hitachi.co.jp/New/cnews/9904/0405.html より引用
  4. 4. Personas
  5. 5. Persona? 着せ替え ログイン
  6. 6. Mozilla Persona
  7. 7. Mozilla Persona• 「ログインのためのより良い方法」
  8. 8. より良い?• たくさんのパスワードを必要としない• 複数のメールアドレスを使い分けられる• decentralized• “Real Privacy” – Personaは非営利 – Personaはトラッキングを行わない
  9. 9. BrowserID? Persona?• BrowserID はプロトコルの名前 – 昔は Verified Email とも呼ばれていました• Mozilla Persona はシステム・ブランドの名前
  10. 10. 簡単な解説• Beta1の簡単な解説を少し – https://github.com/mozilla/ id-specs/blob/beta1/browserid/index.md• ID厨の皆様には不要かもしれませんが…
  11. 11. サインインするには
  12. 12. RPのスクリプト• navigator.id.watch({ onlogin: function(assertion) { // send assertion } : } function onClickSignin(function() { navigator.id.request(); }
  13. 13. サインインを始めると
  14. 14. BrowserID の API が呼ばれて• navigator.id.watch({ onlogin: function(assertion) { // send assertion } : } function onClickSignin(function() { navigator.id.request(); }
  15. 15. BrowserID の UI があらわれ
  16. 16. コールバックに assertion が渡り• navigator.id.watch({ onlogin: function(assertion) { // send assertion } : } function onClickSignin(function() { navigator.id.request(); }
  17. 17. RP に assertion が渡り Assertion
  18. 18. RP が assertion を検証し Assertion
  19. 19. Cookie とかを返したりして Cookie, etc.
  20. 20. GOURANGA!! Cookie, etc.
  21. 21. うん?• Assertion?• 検証?
  22. 22. Identity Assertion• assertion= eyJhbGciOiJSUzI1NiJ9 .eyJwdWJsa… .IhnfWz… ~ eyJhbGciOiJEUzEyOCJ9 .eyJleHAiOj... .FL_----…
  23. 23. eyJ…?
  24. 24. eyJ…!
  25. 25. eyJ… ~ eyJ…• 複数のJWT をチルダ ‘~’ でつないでいる
  26. 26. eyJ (1){“alg”:”RS256”}.{“public-key”: {“algorithm”:”DS”, ”y”:”...”}, “principal”: {“email”:”bkihara.l@gmail.com”}, “iat”:…, “exp”:…, “iss”:”mail.example.com”}.<JWSの署名(メールプロバイダからもらう)>
  27. 27. eyJ (1) {“alg”:”RS256”} . {“public-key”: {“algorithm”:”DS”, ”y”:”...”}, “principal”: {“email”:”bkihara.l@gmail.com”},Browser key pair “iat”:…, “exp”:…, “iss”:”mail.example.com”} pubkey . <JWSの署名(メールプロバイダからもらう)>
  28. 28. eyJ (1) IdP key pair pubkey {“alg”:”RS256”} . {“public-key”: {“algorithm”:”DS”, ”y”:”...”}, “principal”: {“email”:”bkihara.l@gmail.com”},Browser key pair “iat”:…, “exp”:…, “iss”:”mail.example.com”} pubkey . <JWSの署名(メールプロバイダからもらう)>
  29. 29. eyJ (2){“alg”:”DS128”}.{“exp”:…, “aud”:”http://current.openphoto.me”}.<JWSの署名(ブラウザが生成する)>
  30. 30. eyJ (2) {“alg”:”DS128”} . {“exp”:…, “aud”:”http://current.openphoto.me”} . <JWSの署名(ブラウザが生成する)>Browser key pair pubkey
  31. 31. Send assertion Assertion
  32. 32. 検証 IdP pubkey /.well-known/browseridAssertion
  33. 33. 検証 IdP pubkeyAssertion
  34. 34. 全体像RP IdP IdP pubkeyAssertion Sig. Browser Sig. pubkey Browser
  35. 35. 従来のログイン SP Email Onetime URL example.com/?a=eyJ... HTTP GET Onetime URL example.com/?a=eyJ...GET /?a=eyJlbWF…Host: example.com… Mailer
  36. 36. 未対応という問題
  37. 37. 未対応メールプロバイダ /.well-known/browserid …? Not Found.
  38. 38. 未対応ブラウザ navigator.id.request() …? Undefined.
  39. 39. persona.org!!
  40. 40. Fallback IdP• persona.org が代わりに ユーザの公開鍵を署名 IdP key pair pubkey Signed{“public-key”: {“algorithm”:”DS”, ”y”:”...”}, “principal”: {“email”:”bkihara.l@gmail.com”}, “iat”:…, “exp”:…, “iss”:”login.persona.org”}.
  41. 41. Fallback IdP RP Email IdP pubkey Onetime URL example.com/?a=eyJ...Assertion persona.org Sig. Browser pubkey Mailer Browser
  42. 42. Fallback API• JavaScript が代わりに navigator.id.* を提供 Persona key pair pubkey Signed{“exp”:…, “aud”:”http://current.openphoto.me”}.
  43. 43. Fallback APIRP IdP IdP pubkey persona.orgAssertion Sig. Persona Sig. pubkey Browser
  44. 44. Fallback * Fallback• 合わせると…?
  45. 45. Fallback * Fallback persona.orgRP Email IdP pubkey Onetime URL example.com/?a=eyJ... Sig. Assertion Persona pubkey Browser Mailer
  46. 46. あれっ?RP IdP IdP pubkeyAssertion Sig. Browser Sig. pubkey Browser
  47. 47. BrowserID – Browser – Email = ? persona.orgRP Email IdP pubkey Onetime URL example.com/?a=eyJ... Sig. Assertion Persona pubkey Browser MailerDecentralized?
  48. 48. これじゃだめ? OpenID Connect OPRP IdP pubkey ID Token Sig. Browser
  49. 49. *Browser*ID• ブラウザが鍵ペアを生成する• 多段階の署名を付ける – これらがキモ! (のはず)• 少なくともブラウザ側実装はほしいですね• Web Cryptography API もできることですし
  50. 50. ネイティブ実装• Firefox 向け実装は作業中 – https://wiki.mozilla.org/Identity• B2G (Firefox OS) にも実装される予定 – https://wiki.mozilla.org/Identity/WeeklyMeeting/ 2012-09-24 – 課金とか?
  51. 51. ネイティブ実装• スマホでアプリ間認証とか IdPRP APP ID APP Sig. IdP Assertion ID pubkey pubkey
  52. 52. まとめ• ブラウザの鍵ペアと多段階の署名がキモ• 現状では fallback 中心で理想から遠い• 今後に期待?
  53. 53. ところで
  54. 54. メールと言えば
  55. 55. メールでのログイン SP Email Onetime URL example.com/?a=eyJ... HTTP GET Onetime URL example.com/?a=eyJ...GET /?a=eyJlbWF…Host: example.com… Mailer
  56. 56. メールでのログイン• メールプロバイダはIdPなのか? – ユーザのメールアドレス所持を(一応)保証 – パスワード再発行 (refresh token?) の依代 – Assertionは? Tokenは? – Identifier Provider か? ぼくID厨じゃないんでわかんないです• 何にせよ乗っ取られると多大な被害
  57. 57. 乗っ取られると 今はOpenIDなどセキュリティを 外付けにすることが多いが、これは 危ない。特にツイッターやFacebookは 外部アプリが多いので、変なのが まぎれこんでもわからない。 セキュリティだけは内部でやってほしい。• ID連携は悪らしい
  58. 58. 内部でやった結果name@example.com Same_Password
  59. 59. 内部でやった結果 Same_Password
  60. 60. 内部でやった結果 Same_Password 大惨事!!!
  61. 61. 結論• パスワードはサービスごとに変えましょう• パスワードは減らしましょう• ID連携がパスワードを減らします• メールだいじ!おおごと!

×