セキュリティとプライバシーに関するホワイトペーパー (概要)第5章
第 5 章 暗号化と鍵管理
この章では、FileBolt のエンドツーエンド暗号化 (E2EE) とゼロ知識境界について説明し、次のことを指定します。 cryptoVersion=v1 パラメータ、エンコード規則、障害モード、およびクライアントの制約。 キーはクライアントで生成され、使用されます。サーバーとオブジェクト ストレージは、暗号文のチャンクと必要なメタデータのみを処理します。
5.0 概要
- システムは、復号キー (CEK) を受信、保存、またはログに記録してはなりません。 CEK マテリアルは URL フラグメント (
#パート)、HTTP リクエストではサーバーに送信されません。 - 暗号化の用途 AES-128-GCM (AEAD)。各ファイルは独立した CEK (16 バイト) を使用します。チャンク サイズは固定です (例: 16MB)。
- v1 IV 構築: IV = noncePrefix(8B) || uint32_be(チャンクインデックス)(4B). AAD binds
transferId,fileId、そしてchunkIndexコンテキストの交換と再生を防止します。 - サーバー トークンは暗号文へのアクセスのみを制御し、有効期限が切れます。復号化機能は付与されません。
5.1 トランスポート暗号化 (TLS)
5.1.1 セキュリティ目標
- アップロード/ダウンロード/API リンクの盗聴や改ざんを防止します。
- 転送中のトークンと暗号文を保護します。
5.1.2 セキュリティポリシー
- システム MUST すべてのページと API を HTTPS のみで提供します。
- システム SHOULD TLS 1.3 を優先し、必要に応じて TLS 1.2 をサポートします。弱いプロトコル/暗号は無効にしなければなりません。
- システム MUST 合理的な条件で HSTS を有効にします
max-age.
5.2 チャンク暗号化 (AES-128-GCM)
5.2.1 設計上の注意事項
- ファイルは固定サイズのチャンクに分割されます。並列転送と再開可能性をサポートするために、各チャンクは個別に暗号化されます。
- AEAD 認証は整合性を保護します。認証に失敗した場合は、フェイルクローズしなければなりません (MUST)。
5.2.2 セキュリティポリシー
- 各ファイルは個別の CEK (16 バイト) を使用しなければなりません (MUST)。
- IV は (ファイル、chunkIndex) ごとに一意でなければなりません。 v1 は使用します
noncePrefix+chunkIndexencoding. - AAD には、暗号テキストをコンテキストにバインドするために (transferId、fileId、chunkIndex) を含める必要があります。
5.3 ゼロ知識リンクモデル
5.3.1 主要な制約
- CEK (または派生マテリアル) は URL フラグメント内でのみ伝送されなければならず、クエリ パラメータやヘッダーに含めてはなりません。
- サーバーはフラグメントをログに記録してはなりません。偶発的なキャプチャを避けるために、ログをサニタイズする必要があります。
- リファラーポリシーは、アウトバウンドナビゲーションを介したフラグメント漏洩を防止すべきです (第 9 章を参照)。
5.4 鍵の生成と処理
- 鍵は、暗号的に安全な RNG (WebCrypto) を使用して生成されなければなりません (MUST)。
- キーはメモリ内にのみ保持され、不要になった場合はクリアされるべきです。
- クライアントは、サーバーから見える場所 (Cookie、クエリ パラメータなど) に CEK を永続化してはなりません (MUST NOT)。
5.5 エンコーディングとパラメータ
- cryptoVersion=v1 アルゴリズム スイートと IV/AAD ルールを識別します。
- マニフェストには必須のパブリックパラメータ (チャンクサイズ/カウント、noncePrefix、fileId マッピング) を含めなければなりません (MUST) が、CEK を含めてはなりません (MUST NOT)。
5.6 障害モード (フェールクローズ)
- 復号化が失敗した場合、または AEAD 認証が失敗した場合、クライアントは中止しなければならず (MUST)、部分的な平文を出力してはなりません (MUST NOT)。
- パラメータの不一致(transferId/fileId/chunkIndex)の場合、クライアントはフェイルクローズしなければならず(MUST)、対処可能なエラーを報告すべきです(SHOULD)。
5.7 関連するクレーム ID
- See 付録: クレーム ID 権限のあるマッピングの場合。