📖 推定読了時間:約6分
パスワードレス社会の標準となった「Passkey(パスキー)」や「WebAuthn」。これまでパスキーは「サーバーに対する身元証明(ログイン認証)」のツールとして普及してきましたが、今その可能性を根本から拡張する仕様として標準化が進んでいるのが「PRF(Pseudo-Random Function:擬似ランダム関数)拡張」です。この拡張機能を使うことで、パスキーは単なる認証器を超え、「クラウドに一切平文を渡さず、ブラウザ内でゼロ知識暗号化・復号を行うマスター暗号鍵ジェネレーター」へと進化します。
この記事のポイント
- 認証器の内部秘密情報とソルトから同一の対称暗号鍵を再現できるPRF拡張の数学的メカニズム
- パスワード管理ツールやクラウドノートにおける「真のエンドツーエンド暗号化(E2EE)」の実現
- パスキー同期(iCloudキーチェーン / Googleパスワードマネージャー)とハードウェアトークンでの対応状況
1. 従来のWebAuthnの限界:なぜ暗号化キーとしては使えなかったのか?
従来の標準的なWebAuthn/FIDO2フローでは、認証器内部で生成された公開鍵と秘密鍵のうち、秘密鍵はハードウェア内に厳重に封印され、外部に取り出すことは絶対にできませんでした。ログイン時にはサーバーから送られてきたチャレンジ文字列に秘密鍵で署名して返すだけであるため、Webアプリケーション側が「ユーザーの個人データをブラウザ側で暗号化して保存したい」と思っても、そのための共通鍵を取り出す手段がありませんでした。
そのため、これまでのE2EEWebサービス(Bitwardenや暗号化メモなど)では、パスキー認証でログインできたとしても、データの暗号化・復号のために結局別途「マスターパスワード」の入力を要求せざるを得ませんでした。この最後の壁を壊したのがPRF拡張です。
PRF拡張にいち早く対応し、最高レベルの物理セキュリティと生体認証を提供するハードウェアとして、FIDO2対応ハードウェアセキュリティキー(YubiKey等)はセキュリティ研究者や開発者の間でもはや必須のインフラとなっています。
通常WebAuthn認証とPRF拡張の決定的な機能差
| 項目 | 従来のWebAuthn認証 | WebAuthn + PRF拡張 |
|---|---|---|
| 認証器が行う処理 | チャレンジへの非対称暗号電子署名 | 署名 + HMAC-SHA256による決定論的出力の導出 |
| ブラウザが得られる情報 | 署名データのみ(暗号鍵は得られない) | 32バイトのセキュアなシード値(共通鍵の元) |
| E2EEアプリケーションの実現 | マスターパスワード等の併用が不可欠 | 指紋タッチひとつで認証と復号が完全自動化 |
2. 内部メカニズム:HMAC-SHA256による決定論的シード出力
PRF拡張の仕組みは驚くほどエレガントです。Webアプリケーションは、認証要求時に任意の「ソルト(Salt)」をブラウザ経由で認証器に渡します。
認証器は、内部の秘密シードと渡されたソルトを組み合わせ、「HMAC-SHA256」を計算して32バイトの決定論的出力(PRF出力)をブラウザへ返します。ブラウザ側ではWeb Crypto APIのHKDF(HMAC-based Extract-and-Expand Key Derivation Function)を用いてこの出力からAES-GCM-256ビット暗号鍵を導出し、ユーザーのデータを復号します。同じ認証器と同じソルトの組み合わせである限り、常に同一の暗号鍵が再現されます。
公開鍵暗号やWeb Crypto APIを用いた実践的な防御策を体系的に学びたい方は、セキュリティ実践入門を併読すると、現代のWebアプリケーションが直面する攻撃ベクトルへの対策が網羅的に理解できます。
3. 今後の耐量子暗号とクラウド同期の展望
PRF拡張はすでにChromeやSafari、そして1PasswordやBitwardenなどの先端プロダクトで実装が進められています。
- ✅同期パスキーでのE2EE復号:AppleやGoogleのパスワードマネージャーで同期されたパスキーでもPRF出力が正しく同期されるため、端末を乗り換えてもパスワード入力なしで即座にデータ復号が可能です。
- ⚠️ソルトの管理とサーバー側の設計:ソルト自体は公開されても安全(認証器の物理シードがないと鍵は生成できない)ですが、ソルトを紛失すると復号鍵を再生成できなくなるため、アカウントテーブル等に確実に保管しておく必要があります。
- 👍次世代暗号規格への備え:将来的な耐量子暗号への移行を見据え、対称暗号の鍵長選定やハイブリッド方式の動向を把握するには、ポスト量子暗号・セキュリティ技術解説書を押さえておくと長期的なアーキテクチャ設計に迷いがなくなります。
まとめ
WebAuthnのPRF拡張は、「パスワードをなくす」という第一歩の先にある、「あらゆるクラウドデータをユーザー自身のハードウェアによってゼロ知識で暗号化する」という真のプライバシー保護を実現する技術的跳躍です。
開発者の方は、navigator.credentials.get()の拡張オプションとして提供されているPRFフラグをぜひ手元の開発環境で検証してみてください。生体認証のワンタッチで安全にデータが復号される体験は、WebサービスのUI/UXを根本から刷新するインパクトを秘めています。



0 件のコメント:
コメントを投稿