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
[KC3 Meet! vol.1]ちょっとだけわかるPasskey
Search
Yuki Watanabe
October 15, 2023
Technology
1
390
[KC3 Meet! vol.1]ちょっとだけわかるPasskey
https://kc3.connpass.com/event/295871/
Yuki Watanabe
October 15, 2023
Tweet
Share
More Decks by Yuki Watanabe
See All by Yuki Watanabe
【つよナレ#1】初心者こそバニラなPHPでWebアプリを作るべき
ukwhatn
0
210
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
1
540
10分間でエンジニア就活について話す #ニックトレイン
ukwhatn
3
1.2k
基礎からわかろうOAuth2/OpenID Connect
ukwhatn
0
400
データベース入門(数珠つなぎオンライン勉強会 #03)
ukwhatn
1
230
バックエンドロードマップ(数珠つなぎオンライン勉強会 #02)
ukwhatn
0
500
サーバ入門(概論〜Webサーバ構築)
ukwhatn
0
310
Other Decks in Technology
See All in Technology
それでもぼくらは貢献をつづけるのだ(たぶん) @FOSS4GLT会#002
furukawayasuto
1
280
Redmineの意外と知らない便利機能 (Redmine 6.0対応版)
vividtone
0
1.1k
[zh-TW] DevOpsDays Taipei 2025 -- Creating Awesome Change in SmartNews!(machine translation)
martin_lover
1
640
AIオンボーディングとAIプロセスマイニング
nrryuya
5
1.3k
GitHub Coding Agent 概要
kkamegawa
1
1.6k
Devin&Cursor、それぞれの「本質」から導く最適ユースケース戦略
empitsu
8
2.4k
AIエージェントデザインパターンの選び方
almondo_event
0
140
やさしいClaude Code入門
minorun365
PRO
31
23k
データプレーンプログラミングとは? DPU&スイッチASICの開発経験から語る
ebiken
PRO
1
260
大事なのは、AIの精度だけじゃない!〜1円のズレも許されない経理領域とAI〜
jun_nemoto
11
5.1k
Machine Intelligence for Vision, Language, and Actions
keio_smilab
PRO
0
490
MCP Clientを活用するための設計と実装上の工夫
yudai00
1
790
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
35
2.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Making Projects Easy
brettharned
116
6.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
840
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
GitHub's CSS Performance
jonrohan
1031
460k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
1
79
Transcript
パスワードを捨て、Passkeyを使おう ちょっとだけわかるPasskey Yuki Watanabe (@ukwhatn)
SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ 近畿大学 理工学部
B3 ▪ KINDAI Info-Tech HUB 役員 ▪ NPO法人NxTEND(KC3運営委員会) 理事 ◦ Webバックエンド・インフラエンジニア ▪ 長期インターンシップ・業務委託での開発 ▪ 転職型プログラミングスクール メンター
SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ この夏は...... ▪
仕事! ▪ 仕事!!! ▪ 仕事!!!!!(280時間 / 月) • RecruitやDMMのサマーインターンに行ってました ◦ 気になる人は懇親会で!
SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ SKILLS ▪
Webバックエンド • Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ▪ Webフロントエンド • TS(React) / JS / HTML-CSS ▪ インフラ・その他 • Linux / AWS / Docker / DB / 認証・認可
SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ SKILLS ▪
Webバックエンド • Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ▪ Webフロントエンド • TS(React) / JS / HTML-CSS ▪ インフラ・その他 • Linux / AWS / Docker / DB / 認証・認可
もくじ 認証・認可の違い おさらい 01 FIDO / FIDO2 / WebAuthn 人類のパスワードとの戦いの歴史
02 Passkeyとは Passkeyは何を解決したのか 03
資料完成 2023/10/15 09:16
認証・認可の違い
認証・認可 知ってる人?
認証ってなに? • 認証/Authentication(Authn) ◦ サービスの利用者が本人であることを確認する ▪ What you are •
生体認証 ▪ What you have • 所有物認証(カギやセキュリティキーなど) ▪ What you know • 知識認証(パスワード・秘密の質問) 認証・認可の違い
認証ってなに? • 認証/Authentication(Authn) ◦ サービスの利用者が本人であることを確認する ▪ What you are •
生体認証 ▪ What you have • 所有物認証(カギやセキュリティキーなど) ▪ What you know • 知識認証(パスワード・秘密の質問) 認証・認可の違い
認可ってなに? • 認可/Authorization(Authz) ◦ サービスの利用者に適切な権限を与える仕組み ▪ リソースへのアクセス権限・操作権限など ▪ 外部サービスに対して操作を許可することが多い •
Twitterへの代理投稿 • メールのRead/Write 認証・認可の違い
認可ってなに? • 認可/Authorization(Authz) ◦ サービスの利用者に適切な権限を与える ▪ リソースへのアクセス権限・操作権限など ▪ 外部サービスに対して操作を許可することが多い •
Twitterへの代理投稿 • メールのRead/Write 認証・認可の違い
パスワード認証 • パスワード認証のメリデメ ◦ メリット ▪ 覚えていればどこでも使える ▪ 壊れたりすることはない ◦
デメリット ▪ 失くさないけど忘れる ▪ 盗難される可能性がわりとある(フィッシングなど) ▪ 覚えるコストを避け、簡単なパスワードを使いまわしがち 前提
パスワード認証 • パスワード認証のメリデメ ◦ メリット ▪ 覚えていればどこでも使える ▪ 壊れたりすることはない ◦
デメリット ▪ 失くさないけど忘れる ▪ 盗難される可能性がわりとある(フィッシングなど) ▪ 覚えるコストを避け、簡単なパスワードを使いまわしがち 前提
パスワード認証の強化 • どうしたら強くなるのか? ◦ パスワードポリシー ▪ パスワードに制約をかける ◦ パスワードマネージャ ▪
アプリでIDやパスワードを管理する ◦ ID連携(Sign in with XXX) ▪ パスワードの数を減らす 前提
パスワード認証の強化 • どうしたら強くなるのか? ◦ MFA ▪ 多要素認証により安全性を高める • SMS:SIM Swapにより盗難可能
• Authenticator:フィッシング・ブルートフォース可能 ◦ パスワードレス ▪ そもそもパスワード使わなきゃ良くない? 前提
パスワード認証の強化 • パスワードレス ◦ 種類 ▪ TOTP/指紋認証 ▪ FIDO /
FIDO2 ▪ WebAuthn ▪ Passkeys 前提
パスワード認証の強化 • パスワードレス ◦ 種類 ▪ TOTP/指紋認証 ▪ FIDO /
FIDO2 ▪ WebAuthn ▪ Passkeys 前提
FIDO2 / WebAuthn
FIDO / FIDO2 / WebAuthn • FIDO ◦ Fast IDentity
Online ▪ パスワードレス認証技術の開発・標準化団体 ▪ 認証技術自体の名称 • FIDO UAF (Universal Authentication Framework) ◦ 生体を用いたパスワードレス認証フレームワーク • FIDO U2F (Universal 2nd Factor) ◦ U2F対応HWをFIDOクライアントとする認証技術
FIDO / FIDO2 / WebAuthn • FIDO認証モデルの特徴 ◦ サーバに秘密情報が送信・保存されない ▪
登録の流れ 1. サーバがチャレンジを発行し、ブラウザに送信 2. クライアント側のFIDO認証器が鍵ペアを作成 3. 公開鍵・署名されたチャレンジがサーバに送信される 4. サーバ側でチャレンジを検証、問題なければ公開鍵を保存 ◦ 秘密情報が一度も送られていない!
FIDO / FIDO2 / WebAuthn • FIDO認証モデルの特徴 ◦ サーバに秘密情報が送信・保存されない ▪
認証の流れ 1. サーバがチャレンジを発行し、ブラウザに送信 2. FIDO認証器が生体認証を用いてユーザを本人確認 3. 保存されている暗号鍵でチャレンジを署名して送信 4. サーバ側でチャレンジを検証、問題なければ成功
FIDO / FIDO2 / WebAuthn • FIDO ◦ 不便なところ ▪
実装が共通化されていなかった • UAFはPayPal、U2FはGoogleがFIDO Allianceと共に策定 ◦ 実装によってUXが異なる
FIDO / FIDO2 / WebAuthn • FIDO2 ◦ より使いやすくしたFIDO ▪
2つの規格の組み合わせで実現 • WebAuthn ◦ W3Cの規格 • CTAP2(Client To Authenticator Protocol) ◦ FIDO Allianceの規格
FIDO / FIDO2 / WebAuthn • FIDO2 ◦ WebAuthn ▪
W3Cが策定 ▪ RPへのCredentialの登録・認証のプロトコル • さっきのFIDO認証モデルを Webブラウザ上で完結させられるようにしたもの
FIDO / FIDO2 / WebAuthn • FIDO2 ◦ WebAuthn ▪
いいところ • フィッシング耐性が高い ◦ ブラウザが認証を要求しているサイトのドメインと 要求された鍵に紐づいたドメインをチェック ▪ 問題なければ通ってよし!
FIDO / FIDO2 / WebAuthn • FIDO2 ◦ CTAP2 ▪
FIDO Allianceが策定 ▪ 外部認証器とClientとの通信プロトコル • PC等の認証器をもたないクライアントと 外部のセキュリティキーやモバイル端末との通信を可能に ◦ どんなデバイスでもWebAuthnが可能に
FIDO / FIDO2 / WebAuthn • FIDO2 ◦ CTAP2 ▪
FIDO Allianceが策定 ▪ 外部認証器とClientとの通信プロトコル • PC等の認証器をもたないクライアントと 外部のセキュリティキーやモバイル端末との通信を可能に ◦ どんなデバイスでもWebAuthnが可能に
FIDO / FIDO2 / WebAuthn • FIDO2 ◦ 不便なところ ▪
認証情報(秘密鍵)がデバイスに保存される • 安全ではある • でもめんどくさい ◦ 知っていればいいパスワードと違い、 登録したデバイスを持っていなければならない ◦ スマホ落としたら詰む/よりセキュアでない認証に戻る
Passkey
Passkey • Passkey ◦ FIDO2の秘密鍵、同期したら全部解決じゃね? ▪ 秘密鍵をプラットフォームに預け、端末間同期 • UXのためにセキュリティをちょっと犠牲にした ◦
それでもパスワードよりはセキュア ▪ パスワードリスト/スプレー攻撃への耐性 ▪ フィッシングへの耐性(ブラウザによるドメインチェック)
Passkey • Passkey ◦ 残る課題 ▪ クロスプラットフォームでの同期はできない • iPhone/Android間での同期は不可能 ◦
最近1Passwordなどのパスワードマネージャが プラットフォームとして振る舞っている ▪ OSSやIDaaS・SaaSの選択肢が少ない • keycloakがFIDO2対応してるくらい
Passkey • Passkey ◦ 残る課題 ▪ OIDC等の外部ID連携とのセットでの普及 • サービスが直接FIDO2を導入すると、 その数だけ鍵ペアを管理しなければならない
• OpenIDはそもそもID・Passの管理コストを下げる目的 ◦ FIDO2に対応したIdPと連携することでFIDOの恩恵を享受
まとめ • 今回のまとめ ◦ FIDO / FIDO2は、パスワードの脆弱性をクリアしようとするもの ◦ バラバラに規格化されたFIDOを統一したのがFIDO2 ◦
FIDO2では、WebAuthnによるブラウザ上での認証と CTAPによる外部認証器のサポートが主な機能となっている ◦ FIDO2では同期できなかった秘密鍵を 同期できるようにしたのがPasskey おかげでだいぶ便利になった