本文へ移動

オリジン・iframe・リクエストの境界

厳密なメッセージオリジン、CSP、WebAuthnのRP範囲、リクエスト認証、鍵管理ロールの分離で、ウォレットオリジンを保護します。

オリジン・iframe・リクエストの境界 ​

アプリオリジン、ウォレットオリジン、Gateway、鍵管理ロールを、それぞれ独立したセキュリティ主体として扱います。 各主体は、自身の外部入力を境界で一度だけ検証・正規化します。

ブラウザーの境界 ​

  • ローカル開発以外ではHTTPSを使う。
  • アプリオリジンを厳密に許可する。認証情報付きCORSでワイルドカードを使わない。
  • すべてのiframeメッセージのオリジン、送信元ウィンドウ、プロトコルバージョン、セッション識別情報を検証する。
  • ウォレットオリジンで、そのオリジンに有効なRP IDを使ってWebAuthnを実行する。
  • 鍵、OTP、復元素材、アプリセッショントークン、しきい値署名の状態を、アプリオリジン宛てのメッセージに含めない。

CSPとフレームの制限 ​

制限の厳しいContent Security Policyから始めてください。 アプリのframe-srcに、正確なウォレットオリジンを追加します。 ウォレットオリジンでは、スクリプト、接続、Worker、画像、スタイル、埋め込み元を、デプロイしたリリースが必要とするアセットとオリジンに制限します。 安全でないスクリプトの例外を避けてください。

SDKのiframeは、publickey-credentials-createとpublickey-credentials-getをウォレットオリジンへ委譲します。 アプリのPermissions Policyが、この委譲を許可することを確認してください。 対応ブラウザーで登録とアンロックを確認してください。SDKはアプリオリジンの入力要求へ切り替えません。

サービスへのリクエスト ​

アプリからGateway、Gatewayからロールへのリクエストは、各境界が管理する方式で認証します。 配送前に、対象、発行者、有効期限、ノンスまたはリプレイキー、メソッド、宛先を検証してください。 公開チャレンジと署名の受付に、レート制限を適用します。 ブラウザー設定に、鍵管理ロールの秘密情報を含めないでください。

Router A/Bの厳密な分離には、AとBそれぞれで、管理、認証情報、ストレージ、ログ、デプロイ権限を独立させる必要があります。

2者間プロトコルを維持しながら、アテステーションを使う実行環境をクラウド間で分離する構成案は、将来のTEEによる保護強化を参照してください。