Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Passkey 概論 ~ はてな 秋の京都オフ会 ~

Izuho Fujiwara
November 24, 2023
260

Passkey 概論 ~ はてな 秋の京都オフ会 ~

Izuho Fujiwara

November 24, 2023
Tweet

Transcript

  1. id:fujishan2212 エンジニア 自己紹介 名前: 藤原 出帆 (ふじわら いずほ) 生年月日: 2002年12月22日

    (20歳) 生まれと育ち: 岡山県 倉敷市 所属: 東京電機大学 学部3年 2
  2. 趣味 • Twitter の TL を下に引っ張ること • Webサービスの設計を考えること • Webセキュリティの文献を読むこと

    • 麻雀 🥰 • VTuber 🥰 ◦ 星川サラ / 笹木咲 / 夢月ロア / はっか • アニメ 🥰 ◦ 宇宙よりも遠い場所 / 日常 / メイドインアビス / の んのんびより / 女子高生の無駄遣い / あそびあそばせ / ひぐらし id:fujishan2212 エンジニア 3
  3. Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential

    ❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である 6
  4. FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ① 認証要求 ② 認証要求

    ④ チャレンジレスポンス   (乱数を返却) ③ 乱数生成 ⑤ 乱数, サイトの情報 7
  5. FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑦ 署名要求 ⑥ 確認

      (指紋, 顔認証, etc) ⑧ 乱数に署名 ⑨ 署名返却 ⑨ 署名返却 ➉ 署名返却 8
  6. FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑦ 署名要求 ⑥ 確認

      (指紋, 顔認証, etc) ⑧ 乱数に署名 ⑨ 署名返却 ⑨ 署名返却 ➉ 署名返却 TPM と呼ばれるセキュリティチップの内部に 秘密鍵は暗号化して保存 10
  7. FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑦ 署名要求 ⑥ 確認

      (指紋, 顔認証, etc) ⑧ 乱数に署名 ⑨ 署名返却 ⑨ 署名返却 ➉ 署名返却 TPM と呼ばれるセキュリティチップの内部に 秘密鍵は暗号化して保存 端末外に持ち出せない 11
  8. Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential

    ❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である ❏ 従来の FIDO 認証では端末ごとに秘密鍵を所持していた ❏ 不便すぎて普及しなかった 12
  9. Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential

    ❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である ❏ 従来の FIDO 認証では端末ごとに秘密鍵を所持していた ❏ 不便すぎて普及しなかった ❏ パスワードマネージャー × FIDO 認証 ❏ 端末間での秘密鍵共有を可能に (= multi-device) 13
  10. 実装事例① - Google, Amazon ❏ ユーザー識別子の入力が必要な UX ❏ 2段階認証の要求がある (Amazon)

    ❏ Passkey を登録している人のみに選択肢を表示できる ❏ 混乱を防ぐことが出来る ❏ ユーザー識別子から紐づいているクレデンシャルを指定 ❏ ユーザーに選択させることがない 20
  11. 実装事例② - GitHub ❏ ユーザー識別子の入力が不必要な UX ❏ 2段階認証の要求がない ❏ Passkey

    を登録しているかどうかを確実に判定する方法がない ❏ “Sign in with passkey” の出し分けが難しい ❏ ユーザーにクレデンシャルを選択させる必要がある ❏ あまり選ぶ必要がある状況はなさそう? ❏ 複数アカウントの場合などは必要 24
  12. ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ ユーザー識別子すら用いない認証を可能にする ❏

    クレデンシャルを指定せずユーザーに選ばせる ❏ 2023年11月現在ほぼの環境で利用することが出来る ❏ 2022年11月辺りだと Android の Chrome が対応してなかった ❏ 1Password, LastPass, iCloud が Passkey に対応 29
  13. Server-side Credential に関わる余談 ❏ 秘密鍵を必ずしも認証器の中で保管する必要がない ❏ 物理キーに秘密鍵を保管するストレージは必ずしも必要ない ❏ Credential ID

    に暗号化した秘密鍵を含めてしまう ❏ 暗号化は物理キーのマスターキーで行う ❏ W3C の標準規格にもステートレスな実装方法として例示 30
  14. “Sign in with passkey” の出し分けをどうやるか ❏ サイトに紐づくクレデンシャルがあるかどうかを確認できない ❏ 2023年11月現在そんな API

    は存在しない ❏ とにかく “Sign in with passkey” という選択肢を表示するしかない ❏ Passkey を利用していないユーザーからすると困惑 ❏ なんらかの方法で Passkey を使用した端末を記憶する必要がある ❏ deviceId, fingerprint, etc… 31