Slide 1

Slide 1 text

Passkey 概論 ~ はてな 秋の京都オフ会 ~ 葬送のフリーレンがみたい id:fujishan2212 1

Slide 2

Slide 2 text

id:fujishan2212 エンジニア 自己紹介 名前: 藤原 出帆 (ふじわら いずほ) 生年月日: 2002年12月22日 (20歳) 生まれと育ち: 岡山県 倉敷市 所属: 東京電機大学 学部3年 2

Slide 3

Slide 3 text

趣味 ● Twitter の TL を下に引っ張ること ● Webサービスの設計を考えること ● Webセキュリティの文献を読むこと ● 麻雀 🥰 ● VTuber 🥰 ○ 星川サラ / 笹木咲 / 夢月ロア / はっか ● アニメ 🥰 ○ 宇宙よりも遠い場所 / 日常 / メイドインアビス / の んのんびより / 女子高生の無駄遣い / あそびあそばせ / ひぐらし id:fujishan2212 エンジニア 3

Slide 4

Slide 4 text

🔑 Passkey ご存知ですか 4

Slide 5

Slide 5 text

Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 5

Slide 6

Slide 6 text

Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential ❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑪ 署名の検証 ⑫ 認証成功 ⑬ 認証成功 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

💡 実装事例の紹介 14

Slide 15

Slide 15 text

実装事例① - Google, Amazon ❏ ユーザー識別子の入力が必要な UX 15

Slide 16

Slide 16 text

実装事例① - Google, Amazon 16

Slide 17

Slide 17 text

実装事例① - Google, Amazon 17

Slide 18

Slide 18 text

実装事例① - Google, Amazon 18

Slide 19

Slide 19 text

実装事例① - Google, Amazon 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

実装事例② - GitHub ❏ ユーザー識別子の入力が不必要な UX 21

Slide 22

Slide 22 text

実装事例② - GitHub 22

Slide 23

Slide 23 text

実装事例② - GitHub 23

Slide 24

Slide 24 text

実装事例② - GitHub ❏ ユーザー識別子の入力が不必要な UX ❏ 2段階認証の要求がない ❏ Passkey を登録しているかどうかを確実に判定する方法がない ❏ “Sign in with passkey” の出し分けが難しい ❏ ユーザーにクレデンシャルを選択させる必要がある ❏ あまり選ぶ必要がある状況はなさそう? ❏ 複数アカウントの場合などは必要 24

Slide 25

Slide 25 text

🤔 実装にあたって 25

Slide 26

Slide 26 text

ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ 今までは ResidentKey って呼ばれてました 26

Slide 27

Slide 27 text

ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ 今までは Resident Credential って呼ばれてました 27

Slide 28

Slide 28 text

ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ ユーザー識別子すら用いない認証を可能にする ❏ クレデンシャルを指定せずユーザーに選ばせる 28

Slide 29

Slide 29 text

ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ ユーザー識別子すら用いない認証を可能にする ❏ クレデンシャルを指定せずユーザーに選ばせる ❏ 2023年11月現在ほぼの環境で利用することが出来る ❏ 2022年11月辺りだと Android の Chrome が対応してなかった ❏ 1Password, LastPass, iCloud が Passkey に対応 29

Slide 30

Slide 30 text

Server-side Credential に関わる余談 ❏ 秘密鍵を必ずしも認証器の中で保管する必要がない ❏ 物理キーに秘密鍵を保管するストレージは必ずしも必要ない ❏ Credential ID に暗号化した秘密鍵を含めてしまう ❏ 暗号化は物理キーのマスターキーで行う ❏ W3C の標準規格にもステートレスな実装方法として例示 30

Slide 31

Slide 31 text

“Sign in with passkey” の出し分けをどうやるか ❏ サイトに紐づくクレデンシャルがあるかどうかを確認できない ❏ 2023年11月現在そんな API は存在しない ❏ とにかく “Sign in with passkey” という選択肢を表示するしかない ❏ Passkey を利用していないユーザーからすると困惑 ❏ なんらかの方法で Passkey を使用した端末を記憶する必要がある ❏ deviceId, fingerprint, etc… 31

Slide 32

Slide 32 text

ブラウザで配信画面をデザインできるサービス「スコラボ」 32

Slide 33

Slide 33 text

配信素材を売買できるプラットフォーム「スコマド」 33

Slide 34

Slide 34 text

おしまい! 34 Special Thanks: tomo