Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Passkey 概論 ~ はてな 秋の京都オフ会 ~
Search
Izuho Fujiwara
November 24, 2023
0
260
Passkey 概論 ~ はてな 秋の京都オフ会 ~
Izuho Fujiwara
November 24, 2023
Tweet
Share
More Decks by Izuho Fujiwara
See All by Izuho Fujiwara
はじめての、シビックテック
fujiwaraizuho
1
99
SecHack365 '19 最終発表
fujiwaraizuho
0
810
SecHack365 '19 愛媛回発表
fujiwaraizuho
0
620
SecHack365 '19 中間発表
fujiwaraizuho
0
690
Featured
See All Featured
Code Review Best Practice
trishagee
64
17k
Music & Morning Musume
bryan
46
6.2k
Designing for humans not robots
tammielis
250
25k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
YesSQL, Process and Tooling at Scale
rocio
168
14k
We Have a Design System, Now What?
morganepeng
50
7.2k
Gamification - CAS2011
davidbonilla
80
5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Designing for Performance
lara
604
68k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.8k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Transcript
Passkey 概論 ~ はてな 秋の京都オフ会 ~ 葬送のフリーレンがみたい id:fujishan2212 1
id:fujishan2212 エンジニア 自己紹介 名前: 藤原 出帆 (ふじわら いずほ) 生年月日: 2002年12月22日
(20歳) 生まれと育ち: 岡山県 倉敷市 所属: 東京電機大学 学部3年 2
趣味 • Twitter の TL を下に引っ張ること • Webサービスの設計を考えること • Webセキュリティの文献を読むこと
• 麻雀 🥰 • VTuber 🥰 ◦ 星川サラ / 笹木咲 / 夢月ロア / はっか • アニメ 🥰 ◦ 宇宙よりも遠い場所 / 日常 / メイドインアビス / の んのんびより / 女子高生の無駄遣い / あそびあそばせ / ひぐらし id:fujishan2212 エンジニア 3
🔑 Passkey ご存知ですか 4
Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 5
Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential
❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である 6
FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ① 認証要求 ② 認証要求
④ チャレンジレスポンス (乱数を返却) ③ 乱数生成 ⑤ 乱数, サイトの情報 7
FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑦ 署名要求 ⑥ 確認
(指紋, 顔認証, etc) ⑧ 乱数に署名 ⑨ 署名返却 ⑨ 署名返却 ➉ 署名返却 8
FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑪ 署名の検証 ⑫ 認証成功
⑬ 認証成功 9
FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑦ 署名要求 ⑥ 確認
(指紋, 顔認証, etc) ⑧ 乱数に署名 ⑨ 署名返却 ⑨ 署名返却 ➉ 署名返却 TPM と呼ばれるセキュリティチップの内部に 秘密鍵は暗号化して保存 10
FIDO 認証の一般的なフロー ユーザー ブラウザ 認証器 サーバー ⑦ 署名要求 ⑥ 確認
(指紋, 顔認証, etc) ⑧ 乱数に署名 ⑨ 署名返却 ⑨ 署名返却 ➉ 署名返却 TPM と呼ばれるセキュリティチップの内部に 秘密鍵は暗号化して保存 端末外に持ち出せない 11
Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential
❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である ❏ 従来の FIDO 認証では端末ごとに秘密鍵を所持していた ❏ 不便すぎて普及しなかった 12
Passkey とは ❏ パスワードなしでセキュアかつ簡単に認証を行う新しい方法 ❏ Passkey = multi-device FIDO credential
❏ FIDO 認証は公開鍵暗号方式を用いた認証の仕組み ❏ これに用いるクレデンシャルの1つが Passkey である ❏ 従来の FIDO 認証では端末ごとに秘密鍵を所持していた ❏ 不便すぎて普及しなかった ❏ パスワードマネージャー × FIDO 認証 ❏ 端末間での秘密鍵共有を可能に (= multi-device) 13
💡 実装事例の紹介 14
実装事例① - Google, Amazon ❏ ユーザー識別子の入力が必要な UX 15
実装事例① - Google, Amazon 16
実装事例① - Google, Amazon 17
実装事例① - Google, Amazon 18
実装事例① - Google, Amazon 19
実装事例① - Google, Amazon ❏ ユーザー識別子の入力が必要な UX ❏ 2段階認証の要求がある (Amazon)
❏ Passkey を登録している人のみに選択肢を表示できる ❏ 混乱を防ぐことが出来る ❏ ユーザー識別子から紐づいているクレデンシャルを指定 ❏ ユーザーに選択させることがない 20
実装事例② - GitHub ❏ ユーザー識別子の入力が不必要な UX 21
実装事例② - GitHub 22
実装事例② - GitHub 23
実装事例② - GitHub ❏ ユーザー識別子の入力が不必要な UX ❏ 2段階認証の要求がない ❏ Passkey
を登録しているかどうかを確実に判定する方法がない ❏ “Sign in with passkey” の出し分けが難しい ❏ ユーザーにクレデンシャルを選択させる必要がある ❏ あまり選ぶ必要がある状況はなさそう? ❏ 複数アカウントの場合などは必要 24
🤔 実装にあたって 25
ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ 今までは ResidentKey
って呼ばれてました 26
ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ 今までは Resident
Credential って呼ばれてました 27
ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ ユーザー識別子すら用いない認証を可能にする ❏
クレデンシャルを指定せずユーザーに選ばせる 28
ユーザー識別子を用いない Passkey による認証認可 ❏ Client-side discoverable Credential ❏ ユーザー識別子すら用いない認証を可能にする ❏
クレデンシャルを指定せずユーザーに選ばせる ❏ 2023年11月現在ほぼの環境で利用することが出来る ❏ 2022年11月辺りだと Android の Chrome が対応してなかった ❏ 1Password, LastPass, iCloud が Passkey に対応 29
Server-side Credential に関わる余談 ❏ 秘密鍵を必ずしも認証器の中で保管する必要がない ❏ 物理キーに秘密鍵を保管するストレージは必ずしも必要ない ❏ Credential ID
に暗号化した秘密鍵を含めてしまう ❏ 暗号化は物理キーのマスターキーで行う ❏ W3C の標準規格にもステートレスな実装方法として例示 30
“Sign in with passkey” の出し分けをどうやるか ❏ サイトに紐づくクレデンシャルがあるかどうかを確認できない ❏ 2023年11月現在そんな API
は存在しない ❏ とにかく “Sign in with passkey” という選択肢を表示するしかない ❏ Passkey を利用していないユーザーからすると困惑 ❏ なんらかの方法で Passkey を使用した端末を記憶する必要がある ❏ deviceId, fingerprint, etc… 31
ブラウザで配信画面をデザインできるサービス「スコラボ」 32
配信素材を売買できるプラットフォーム「スコマド」 33
おしまい! 34 Special Thanks: tomo