Passkey
パスキー
パスワードの代わりに端末の中にある秘密鍵で署名する仕組みのこと
秘密鍵は端末から出ず、ユーザ自身も知らないので、漏れない、盗めない、騙せない
https://www.passkeys.io/
仕組みの全体像
1. 登録時
端末(Authenticator)が鍵ペアを生成する
公開鍵だけをサーバに送って保存してもらう
秘密鍵は端末のセキュアな領域に閉じ込められ、外に出ない
iPhoneならSecure Enclave、AndroidならStrongBox/TEE、PCならTPM
2. ログイン時(チャレンジ・レスポンス)
サーバ → 端末
ランダムなチャレンジ文字列を送る
端末 → ユーザ
「秘密鍵を使うのでロック解除して」と生体認証を要求
端末 → サーバ
チャレンジを秘密鍵で署名したものを返す
サーバ
保存してある公開鍵で署名を検証 → OKならログイン成功
つまり送られるのは「署名」だけで、秘密鍵そのものもパスワードも一切ネットワークに出ない
生体認証の位置づけ
生体認証はパスキーには直接は関係ない
端末ローカルで秘密鍵をアンロックするために使っているだけ
指紋や顔データはサーバに送られないどころか、端末の生体認証モジュールから外に出ない
生体認証は「鍵を使う人が本人か」を端末が確認する手段の一つにすぎない
従来手法と比べてすごいところ
table:_
パスワード パスワード+TOTP パスキー
サーバに秘密が渡る ✅ 毎回渡る ✅ 渡る ❌ 公開鍵のみ
サーバ侵害で漏れる ✅ ハッシュが漏れる ✅ シード漏洩リスク ❌ 公開鍵が漏れても無害
フィッシング耐性 ❌ 騙されて入力 ❌ コードも入力させられる ✅ ドメインに紐づく
ユーザが秘密を知る ✅ 知ってる(漏らせる) ✅ ❌ 知りようがない
特に強調すべき点:
パスワードが「サーバに渡らない」のではなく、そもそも存在しない
サーバ漏洩しても公開鍵しか出ないので、攻撃者は何もできない
フィシング耐性が仕組みで担保されている
パスキーは「どのドメイン用に作った鍵か」を覚えていて、偽サイトには署名しない
ユーザの注意力に依存しない
ユーザが秘密を知らない=渡しようがない
ソーシャルエンジニアリングで「パスワード教えて」が成立しない
https://www.youtube.com/watch?v=Ao2tY0J-xyE
ゆるコンピュータ科学ラジオ
https://youtu.be/joHJJSklFic?t=1413
https://falsandtru.hatenablog.com/entry/essence-of-passkey
https://blog.agektmr.com/2022/12/passkey.html
パスキーは Apple、Google、Microsoft が協調して使う FIDO クレデンシャルの名前です。エンドユーザーのみなさんがパスワードの代わりとして認識し、直感的にログインできるよう「パスキー」というブランドとアイコンが決まりました。
https://flatt.tech/magazine/entry/introduction_to_passkey
https://zenn.dev/thdy/articles/passkey-for-it-admin
https://qiita.com/Kodak_tmo/items/9fb6f1d65621cb5e1f90
rebuild.fm 372で話してた
passkeyがあれば自動的に2FAみたいな話をしてた気がする
mrsekut.iconがあまりその辺を理解していない
https://www.itmedia.co.jp/mobile/articles/2312/09/news060.html
ドコモが導入して、フィッシングが0件に
https://sizu.me/kkoiwai/posts/vrbdbodcbsub
2要素認証なのかどうか
https://blog.agektmr.com/2023/12/passkey-mythbusting