パスキーのフィッシング耐性とドメインバインディング
パスキーがフィッシング詐欺に対して圧倒的な耐性を持つ理由は、ドメイン結合(Domain Binding)と公開鍵暗号方式によって、ユーザーが騙されても物理的に情報を渡せない構造になっているから。
1. ドメイン結合(Domain Binding)の仕組み
パスキーは作成時に特定の正規ドメイン(例:netflix.com)と数学的に紐付けられる。
パスキー登録時:
デバイス → 鍵ペアを生成(秘密鍵 + 公開鍵)
→ 公開鍵に "登録ドメイン: netflix.com" を紐付け → サーバーへ
ログイン時:
ブラウザ/OS が現在のURLを確認
→ 「netflix.com」に一致するパスキーのみを提示
→ 「netfl1x.com」(偽サイト)→ 一致するパスキーが存在しないため認証不可
- 自動照合:ブラウザ・OSがドメインを検証するため、URLが1文字だけ違う巧妙な偽サイトでも認証プロセスが開始されない
- 人為的ミスの排除:ユーザーが偽サイトと気づかずアクセスしても、システム側で自動的にブロックする
2. 秘密の情報をネットワークに流さない
パスキーは公開鍵暗号方式を採用しており、サーバーと「秘密」を共有しない。
- 秘密鍵はデバイス内のみ:認証に不可欠な秘密鍵はデバイス内の安全な領域に保管され、外部に送信されることは決してない
- 署名による認証:サーバーから送られる使い捨ての乱数(チャレンジ)に対し、デバイス内で秘密鍵を使ってデジタル署名を施し、その結果だけをサーバーに返す
- リプレイ攻撃への耐性:攻撃者が通信を盗聴しても、署名は一度きりのもので再利用してログインすることは不可能
3. サーバーが攻撃されても安全
- サーバー側には「公開鍵」しか保存されていない
- 公開鍵は誰に見られても問題ない情報であり、これだけではログインできない
- 万が一サーバーがハッキングされても、攻撃者はアカウントを乗っ取るための武器を得られない
4. 多要素認証(MFA)が標準で組み込まれている
パスキーによる認証は以下の2要素を1操作で同時に検証する:
- 所有要素:パスキーが保存された「デバイスそのもの」を所有していること
- 生体・知識要素:指紋・顔認証やPINコードによって「本人であること」を確認すること
これにより、リモートの攻撃者がパスワードを知るだけでログインできるような隙がない。
パスワードとの比較
| パスワード | パスキー | |
|---|---|---|
| 偽サイトへの入力 | 即座に盗まれる | ドメイン不一致で認証が開始されない |
| サーバー漏洩時 | パスワード(ハッシュ)が流出 | 公開鍵のみ流出(悪用不可) |
| 中間者攻撃 | 通信の傍受でパスワードが盗まれる | チャレンジ署名は使い捨てで再利用不可 |
関連
引用元: NotebookLM