Slide 1

Slide 1 text

パスワードを捨て、Passkeyを使おう ちょっとだけわかるPasskey Yuki Watanabe (@ukwhatn)

Slide 2

Slide 2 text

SPEAKER ● 渡邉 雄貴 / Yuki Watanabe ○ 近畿大学 理工学部 B3 ■ KINDAI Info-Tech HUB 役員 ■ NPO法人NxTEND(KC3運営委員会) 理事 ○ Webバックエンド・インフラエンジニア ■ 長期インターンシップ・業務委託での開発 ■ 転職型プログラミングスクール メンター

Slide 3

Slide 3 text

SPEAKER ● 渡邉 雄貴 / Yuki Watanabe ○ この夏は...... ■ 仕事! ■ 仕事!!! ■ 仕事!!!!!(280時間 / 月) ● RecruitやDMMのサマーインターンに行ってました ○ 気になる人は懇親会で!

Slide 4

Slide 4 text

SPEAKER ● 渡邉 雄貴 / Yuki Watanabe ○ SKILLS ■ Webバックエンド ● Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ■ Webフロントエンド ● TS(React) / JS / HTML-CSS ■ インフラ・その他 ● Linux / AWS / Docker / DB / 認証・認可

Slide 5

Slide 5 text

SPEAKER ● 渡邉 雄貴 / Yuki Watanabe ○ SKILLS ■ Webバックエンド ● Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ■ Webフロントエンド ● TS(React) / JS / HTML-CSS ■ インフラ・その他 ● Linux / AWS / Docker / DB / 認証・認可

Slide 6

Slide 6 text

もくじ 認証・認可の違い おさらい 01 FIDO / FIDO2 / WebAuthn 人類のパスワードとの戦いの歴史 02 Passkeyとは Passkeyは何を解決したのか 03

Slide 7

Slide 7 text

資料完成 2023/10/15 09:16

Slide 8

Slide 8 text

認証・認可の違い

Slide 9

Slide 9 text

認証・認可 知ってる人?

Slide 10

Slide 10 text

認証ってなに? ● 認証/Authentication(Authn) ○ サービスの利用者が本人であることを確認する ■ What you are ● 生体認証 ■ What you have ● 所有物認証(カギやセキュリティキーなど) ■ What you know ● 知識認証(パスワード・秘密の質問) 認証・認可の違い

Slide 11

Slide 11 text

認証ってなに? ● 認証/Authentication(Authn) ○ サービスの利用者が本人であることを確認する ■ What you are ● 生体認証 ■ What you have ● 所有物認証(カギやセキュリティキーなど) ■ What you know ● 知識認証(パスワード・秘密の質問) 認証・認可の違い

Slide 12

Slide 12 text

認可ってなに? ● 認可/Authorization(Authz) ○ サービスの利用者に適切な権限を与える仕組み ■ リソースへのアクセス権限・操作権限など ■ 外部サービスに対して操作を許可することが多い ● Twitterへの代理投稿 ● メールのRead/Write 認証・認可の違い

Slide 13

Slide 13 text

認可ってなに? ● 認可/Authorization(Authz) ○ サービスの利用者に適切な権限を与える ■ リソースへのアクセス権限・操作権限など ■ 外部サービスに対して操作を許可することが多い ● Twitterへの代理投稿 ● メールのRead/Write 認証・認可の違い

Slide 14

Slide 14 text

パスワード認証 ● パスワード認証のメリデメ ○ メリット ■ 覚えていればどこでも使える ■ 壊れたりすることはない ○ デメリット ■ 失くさないけど忘れる ■ 盗難される可能性がわりとある(フィッシングなど) ■ 覚えるコストを避け、簡単なパスワードを使いまわしがち 前提

Slide 15

Slide 15 text

パスワード認証 ● パスワード認証のメリデメ ○ メリット ■ 覚えていればどこでも使える ■ 壊れたりすることはない ○ デメリット ■ 失くさないけど忘れる ■ 盗難される可能性がわりとある(フィッシングなど) ■ 覚えるコストを避け、簡単なパスワードを使いまわしがち 前提

Slide 16

Slide 16 text

パスワード認証の強化 ● どうしたら強くなるのか? ○ パスワードポリシー ■ パスワードに制約をかける ○ パスワードマネージャ ■ アプリでIDやパスワードを管理する ○ ID連携(Sign in with XXX) ■ パスワードの数を減らす 前提

Slide 17

Slide 17 text

パスワード認証の強化 ● どうしたら強くなるのか? ○ MFA ■ 多要素認証により安全性を高める ● SMS:SIM Swapにより盗難可能 ● Authenticator:フィッシング・ブルートフォース可能 ○ パスワードレス ■ そもそもパスワード使わなきゃ良くない? 前提

Slide 18

Slide 18 text

パスワード認証の強化 ● パスワードレス ○ 種類 ■ TOTP/指紋認証 ■ FIDO / FIDO2 ■ WebAuthn ■ Passkeys 前提

Slide 19

Slide 19 text

パスワード認証の強化 ● パスワードレス ○ 種類 ■ TOTP/指紋認証 ■ FIDO / FIDO2 ■ WebAuthn ■ Passkeys 前提

Slide 20

Slide 20 text

FIDO2 / WebAuthn

Slide 21

Slide 21 text

FIDO / FIDO2 / WebAuthn ● FIDO ○ Fast IDentity Online ■ パスワードレス認証技術の開発・標準化団体 ■ 認証技術自体の名称 ● FIDO UAF (Universal Authentication Framework) ○ 生体を用いたパスワードレス認証フレームワーク ● FIDO U2F (Universal 2nd Factor) ○ U2F対応HWをFIDOクライアントとする認証技術

Slide 22

Slide 22 text

FIDO / FIDO2 / WebAuthn ● FIDO認証モデルの特徴 ○ サーバに秘密情報が送信・保存されない ■ 登録の流れ 1. サーバがチャレンジを発行し、ブラウザに送信 2. クライアント側のFIDO認証器が鍵ペアを作成 3. 公開鍵・署名されたチャレンジがサーバに送信される 4. サーバ側でチャレンジを検証、問題なければ公開鍵を保存 ○ 秘密情報が一度も送られていない!

Slide 23

Slide 23 text

FIDO / FIDO2 / WebAuthn ● FIDO認証モデルの特徴 ○ サーバに秘密情報が送信・保存されない ■ 認証の流れ 1. サーバがチャレンジを発行し、ブラウザに送信 2. FIDO認証器が生体認証を用いてユーザを本人確認 3. 保存されている暗号鍵でチャレンジを署名して送信 4. サーバ側でチャレンジを検証、問題なければ成功

Slide 24

Slide 24 text

FIDO / FIDO2 / WebAuthn ● FIDO ○ 不便なところ ■ 実装が共通化されていなかった ● UAFはPayPal、U2FはGoogleがFIDO Allianceと共に策定 ○ 実装によってUXが異なる

Slide 25

Slide 25 text

FIDO / FIDO2 / WebAuthn ● FIDO2 ○ より使いやすくしたFIDO ■ 2つの規格の組み合わせで実現 ● WebAuthn ○ W3Cの規格 ● CTAP2(Client To Authenticator Protocol) ○ FIDO Allianceの規格

Slide 26

Slide 26 text

FIDO / FIDO2 / WebAuthn ● FIDO2 ○ WebAuthn ■ W3Cが策定 ■ RPへのCredentialの登録・認証のプロトコル ● さっきのFIDO認証モデルを Webブラウザ上で完結させられるようにしたもの

Slide 27

Slide 27 text

FIDO / FIDO2 / WebAuthn ● FIDO2 ○ WebAuthn ■ いいところ ● フィッシング耐性が高い ○ ブラウザが認証を要求しているサイトのドメインと 要求された鍵に紐づいたドメインをチェック ■ 問題なければ通ってよし!

Slide 28

Slide 28 text

FIDO / FIDO2 / WebAuthn ● FIDO2 ○ CTAP2 ■ FIDO Allianceが策定 ■ 外部認証器とClientとの通信プロトコル ● PC等の認証器をもたないクライアントと 外部のセキュリティキーやモバイル端末との通信を可能に ○ どんなデバイスでもWebAuthnが可能に

Slide 29

Slide 29 text

FIDO / FIDO2 / WebAuthn ● FIDO2 ○ CTAP2 ■ FIDO Allianceが策定 ■ 外部認証器とClientとの通信プロトコル ● PC等の認証器をもたないクライアントと 外部のセキュリティキーやモバイル端末との通信を可能に ○ どんなデバイスでもWebAuthnが可能に

Slide 30

Slide 30 text

FIDO / FIDO2 / WebAuthn ● FIDO2 ○ 不便なところ ■ 認証情報(秘密鍵)がデバイスに保存される ● 安全ではある ● でもめんどくさい ○ 知っていればいいパスワードと違い、 登録したデバイスを持っていなければならない ○ スマホ落としたら詰む/よりセキュアでない認証に戻る

Slide 31

Slide 31 text

Passkey

Slide 32

Slide 32 text

Passkey ● Passkey ○ FIDO2の秘密鍵、同期したら全部解決じゃね? ■ 秘密鍵をプラットフォームに預け、端末間同期 ● UXのためにセキュリティをちょっと犠牲にした ○ それでもパスワードよりはセキュア ■ パスワードリスト/スプレー攻撃への耐性 ■ フィッシングへの耐性(ブラウザによるドメインチェック)

Slide 33

Slide 33 text

Passkey ● Passkey ○ 残る課題 ■ クロスプラットフォームでの同期はできない ● iPhone/Android間での同期は不可能 ○ 最近1Passwordなどのパスワードマネージャが プラットフォームとして振る舞っている ■ OSSやIDaaS・SaaSの選択肢が少ない ● keycloakがFIDO2対応してるくらい

Slide 34

Slide 34 text

Passkey ● Passkey ○ 残る課題 ■ OIDC等の外部ID連携とのセットでの普及 ● サービスが直接FIDO2を導入すると、 その数だけ鍵ペアを管理しなければならない ● OpenIDはそもそもID・Passの管理コストを下げる目的 ○ FIDO2に対応したIdPと連携することでFIDOの恩恵を享受

Slide 35

Slide 35 text

まとめ ● 今回のまとめ ○ FIDO / FIDO2は、パスワードの脆弱性をクリアしようとするもの ○ バラバラに規格化されたFIDOを統一したのがFIDO2 ○ FIDO2では、WebAuthnによるブラウザ上での認証と CTAPによる外部認証器のサポートが主な機能となっている ○ FIDO2では同期できなかった秘密鍵を 同期できるようにしたのがPasskey おかげでだいぶ便利になった