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
270
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
630
SecHack365 '19 中間発表
fujiwaraizuho
0
690
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Adopting Sorbet at Scale
ufuk
73
9.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Designing for Performance
lara
604
68k
Building Your Own Lightsaber
phodgson
103
6.1k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Become a Pro
speakerdeck
PRO
26
5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
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