0. この端末で使えるか
- パスキー(WebAuthn) 確認中…
- 端末の生体認証・PIN 確認中…
- PRF 拡張(暗号鍵の取り出し) 確認中…
1. 登録してみる
ユーザー名はサーバーに送られません。パスキーの保管場所(端末やパスワードマネージャー)と、 このブラウザの中で暗号化した形でだけ扱います。
2. ログインしてみる
ユーザー名もパスワードも入力しません。登録したパスキーを選ぶだけです。
ようこそ
この登録は に自動で消えます。
このブラウザだけが知っていること
サーバー(データベース)に保存されていること
もしこのデータが丸ごと漏れても、公開鍵ではログインできず、暗号文からユーザー名は分かりません。
いま起きていること
解説
パスキーは「鍵ペア」
登録すると、端末の中で秘密鍵と公開鍵の組が作られます。 サーバーに渡るのは公開鍵だけで、秘密鍵は端末(やパスワードマネージャー)から出ません。 ログインでは、サーバーが送る使い捨ての乱数(チャレンジ)に秘密鍵で署名し、サーバーは公開鍵で確かめます。
公開鍵は漏れても困らない
公開鍵は名前のとおり公開してよい値で、署名を確かめることしかできません。 パスワードと違い、サーバーのデータが漏れても、それを使ってなりすますことはできません。 また、パスキーは登録したサイトのドメインに結び付くため、偽サイトでは使われません(フィッシングに強い)。
PRF 拡張でユーザー名を暗号化
PRF 拡張を使うと、本人確認のたびにパスキーごと・サイトごとに決まった秘密を認証器から受け取れます。 このページはその秘密から AES 鍵を作り、ユーザー名をブラウザの中で暗号化して、暗号文だけをサーバーに預けます。 サーバーには鍵がないので、預かった本人であっても中身を読めません。
それでも守れないもの
- サイトそのもの(配信される JavaScript)が改ざんされると、暗号化する前の名前を盗まれます。 守れるのは「保存データの漏えい」で、「サーバーの乗っ取り」ではありません。
- 登録がいくつあるか、いつ登録・ログインしたかは、暗号化しても隠れません。
- パスキーを消すと、暗号文は誰にも復号できなくなります。大切なデータを預ける本番では、復旧手段の設計が必要です。
- PRF 拡張に対応していない端末・ブラウザもあります。このページではその場合、名前を保存しません。