7.3.1. 暗号と署名の衝突 (Cryptography and Signature Collision)
7.3.1. 暗号と署名の衝突 (Cryptography and Signature Collision)
本ドキュメントは独自の暗号プリミティブを定義せず, そのような要素は他の仕様に委ねる. 署名ベースを処理する署名アルゴリズムまたは鍵がいかなる攻撃にも脆弱であれば, 得られる署名も同様の攻撃の影響を受けうる.
署名システムに対する一般的な攻撃は, 同一の署名値が複数の異なる入力に対して成功裏に検証される署名の衝突を強制することである. 本仕様は HTTP メッセージと署名ベースの再構成に依存し, 署名されるコンポーネントの一覧は署名内で固定されるため, 攻撃者がそのような衝突を起こすことは難しいが不可能ではない. 攻撃者は, 衝突を有効にするために HTTP メッセージとカバーされるメッセージコンポーネントを操作する必要がある.
これに対抗するには, 審査済みの鍵と署名アルゴリズムのみを用いて HTTP メッセージに署名すべきである. 「HTTP Signature Algorithms」レジストリは, アプリケーションがメッセージに適用する信頼できる署名アルゴリズムの一つの情報源である.
攻撃者が署名パラメータの値または署名の値を別々に差し替えることは可能だが, 署名ベース生成アルゴリズム (2.5 節) は, 決定的な直列化方式を用いて, 署名ベースの最終値として常に署名パラメータをカバーする. この手順は, 署名ベースと署名の値を強く結び付け, 攻撃者が署名ベースに部分的な差し替えを行うことをはるかに困難にする.