Device Bound Session Credentials(DBSC)は、Cookie の盗難やセッションの不正使用からユーザー セッションを保護するために設計された新しいウェブ機能です。この機能は、Chrome 135 でオリジン トライアルとしてテストできるようになりました。
背景
Cookie は、最新のウェブ認証において重要な役割を果たしており、ユーザーがブラウジング セッション間でログインしたままにしておくことが可能です。しかし、攻撃者は盗まれた認証 Cookie を悪用してセッションを乗っ取り、多要素認証やその他のログイン セキュリティ メカニズムを回避するケースが増えています。
マルウェアの運営者は、侵害されたデバイスからセッション Cookie を抜き出し、ユーザー アカウントへの不正アクセスを可能にします。Cookie は署名なしトークンであるため、所有権の証明を必要とせずにアクセス権を付与します。そのため、攻撃者の標的になりやすくなります。
デバイスにバインドされたセッション認証情報(DBSC)は、デバイスにバインドされた認証済みセッションを作成することで、Cookie の盗難を阻止することを目的としています。このアプローチにより、漏洩した Cookie が別のデバイスからアカウントにアクセスする可能性を軽減できます。
仕組み
DBSC には、サーバーがデバイスにバインドされた認証済みセッションを作成できる新しい API が導入されています。セッションが開始されると、ブラウザは公開鍵と秘密鍵のペアを生成し、トラステッド プラットフォーム モジュール(TPM)などのハードウェア バックドードのストレージを使用して秘密鍵を安全に保存します(利用可能な場合)。
ブラウザは通常のセッション Cookie を発行します。セッションの存続期間中、ブラウザは定期的に秘密鍵の所有者証明を行い、セッション クッキーを更新します。Cookie の有効期間を短く設定することで、Cookie を盗んでも攻撃者に利益をもたらさないようにできます。
主要コンポーネント
セッション登録:
- ユーザーがログインすると、サーバーは
Sec-Session-Registration
HTTP ヘッダーを使用してデバイスにバインドされたセッションをリクエストします。 - ブラウザは新しい鍵ペアを生成し、秘密鍵を安全に保存します。
- 有効期間の短い認証 Cookie も確立され、この鍵ペアにバインドされます。
- サーバーは、セッションを対応する公開鍵に関連付け、セッションを元のデバイスでのみ使用できるようにします。
- ユーザーがログインすると、サーバーは
セッションの更新と所有権の証明:
- 有効期間の短い Cookie の有効期限が切れると、Chrome はセッションの更新をトリガーします。
- ブラウザは、サーバー定義の更新エンドポイント(セッション登録時に提供)にリクエストを送信します。サーバーが提供する場合、
Sec-Session-Challenge
ヘッダーを使用して署名付きチャレンジを送信します。 - サーバーは、セッションの秘密鍵で署名されたレスポンスを検証することで、所有権の証明を検証します。
- 有効な場合は、サーバーは新しい有効期間の短い Cookie を発行し、セッションを続行できるようにします。
このアプローチの利点の 1 つは、更新された有効期間の短い Cookie がない場合、Chrome がリクエストを延期することです。この動作により、セッションにバインドされた Cookie はセッション全体で常に使用可能になり、自動更新が行われないまま Cookie が期限切れになったり消失したりする可能性のあるアプローチよりも、デベロッパーは Cookie をより確実に使用できるようになります。
実装例
サーバーは、次のようにデバイスにバインドされたセッションをリクエストできます。
HTTP/1.1 200 OK
Sec-Session-Registration: (ES256);path="/refresh";challenge="12345"
セッションがアクティブな場合、サーバーはチャレンジ レスポンス交換でセッションを確認できます。
HTTP/1.1 401 Unauthorized
Sec-Session-Challenge: "verify-session"
ブラウザは次のように応答します。
POST /refresh
Sec-Session-Response: "signed-proof"
利点
- Cookie の盗難を軽減: セッション Cookie が盗まれた場合でも、別のデバイスから使用することはできません。
- UX を大幅に変更することなくセキュリティを強化: ユーザーの追加操作を必要とせずに、バックグラウンドで透過的に動作します。
- 長期間有効なセッション Cookie への依存を軽減: 元のデバイスでセッションが有効である限り、有効期間の短い Cookie は自動的に更新されます。
- 標準の暗号メカニズムをサポート: TPM を基盤とする安全なストレージを利用できる場合、これを活用して情報漏洩に対する強力な保護を提供します。
プライバシーとセキュリティに関する考慮事項
DBSC は、ユーザーのプライバシーを保護しながらセキュリティを強化するように設計されています。
- 追加のトラッキング ベクトルなし: 各セッションは固有の鍵ペアに関連付けられているため、クロスセッション トラッキングを防ぐことができます。
- デバイスの長期的なフィンガープリントなし: ユーザーが明示的に許可しない限り、サーバーは同じデバイス上の異なるセッションを関連付けることができません。
- ユーザーが消去可能: ユーザーがサイトデータを消去すると、セッションとキーが削除されます。
- Cookie ポリシーに準拠: DBSC は Cookie と同じサイトベースのスコーピングに従い、クロスオリジン データ漏洩が発生しないようにします。
試してみる
Device Bound Session Credentials のオリジン トライアルは Chrome 135 以降で利用できます。
ローカルテストの場合
DBSC をローカルでテストするには:
chrome://flags#device-bound-session-credentials
に移動して、この機能を有効にします。
公開テストの場合
一般公開環境でオリジン トライアルを使用して DBSC をテストするには:
- Chrome オリジン トライアル ページにアクセスして登録します。
提供されたトークンをサイトの HTTP ヘッダーに追加します。
Origin-Trial: <your-trial-token>
リソース
ウェブ セキュリティの未来を形作る
ウェブ認証の安全性を高めましょう。ウェブ デベロッパーの皆様には、DBSC をテストし、アプリケーションに統合してフィードバックを共有することをおすすめします。 GitHub で Google と交流したり、ウェブ アプリケーション セキュリティ ワーキング グループのディスカッションに参加したりできます。
DBSC を実装することで、セッション乗っ取りのリスクをまとめて軽減し、ユーザーの認証セキュリティを強化できます。今すぐ使って、ウェブ セキュリティの未来を形作ってください。