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
PRO
October 15, 2023
Technology
0
210
[KC3 Meet! vol.1]ちょっとだけわかるPasskey
https://kc3.connpass.com/event/295871/
Yuki Watanabe
PRO
October 15, 2023
Tweet
Share
More Decks by Yuki Watanabe
See All by Yuki Watanabe
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
PRO
1
430
10分間でエンジニア就活について話す #ニックトレイン
ukwhatn
PRO
1
840
基礎からわかろうOAuth2/OpenID Connect
ukwhatn
PRO
0
210
データベース入門(数珠つなぎオンライン勉強会 #03)
ukwhatn
PRO
1
120
バックエンドロードマップ(数珠つなぎオンライン勉強会 #02)
ukwhatn
PRO
0
300
サーバ入門(概論〜Webサーバ構築)
ukwhatn
PRO
0
170
Other Decks in Technology
See All in Technology
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
1
120
Introduction to SwiftUI V2
pohjus
0
100
GrafanaMeetup_AmazonManagedGrafanaのアクセス制御機能とマルチテナント環境下でのアクセス制御について
daitak
0
450
エンジニア候補者向け資料2024.04.24.pdf
macloud
0
3.4k
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
1.1k
同じ様なUIをiOS/Android間で合わせるヒントNo.2
fumiyasac0921
1
110
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
2
150
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
5
780
Babylon.js JAPAN活動紹介 (2024/4)
limes2018
1
120
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
490
類似ロジック実装をiOS/Android間で合わせる道標No.1
fumiyasac0921
0
110
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
35k
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
The Illustrated Children's Guide to Kubernetes
chrisshort
32
47k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
What's in a price? How to price your products and services
michaelherold
238
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
8
3.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
188
16k
The Brand Is Dead. Long Live the Brand.
mthomps
49
29k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Building Your Own Lightsaber
phodgson
100
5.7k
jQuery: Nuts, Bolts and Bling
dougneiner
60
7.2k
KATA
mclloyd
16
12k
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 おかげでだいぶ便利になった