メインコンテンツまでスキップ

7.2.2. 署名のリプレイ (Signature Replay)

7.2.2. 署名のリプレイ (Signature Replay)

HTTP メッセージ署名は HTTP メッセージの部分のみを署名し得るため, 異なる 2 つの HTTP メッセージが同一の署名に対して検証を通過し得る. 最も極端な形は, メッセージコンポーネントを一切カバーしない署名である. そのような署名が傍受されれば, 攻撃者は任意の HTTP メッセージに添付して任意にリプレイし得る. 十分なコンポーネントカバレッジがあっても, 与えられた署名は 2 つの類似した HTTP メッセージに適用され得るため, 攻撃者が署名を保ったままメッセージをリプレイすることができる.

この種の攻撃に対抗するには, まず署名者が他のメッセージと区別するのに十分な部分をメッセージ上でカバーすることが重要である. 加えて, 署名は nonce 署名パラメータを用いてメッセージごとに一意の値を与え, ノンス値が繰り返された場合に検証者が署名自体のリプレイを検出できるようにすることができる. さらに, 署名者は署名が作成された時刻と, 署名者が署名の失効とみなす時刻のタイムスタンプを提供し, 捕捉された署名値の有用性を制限できる.

検証者が署名者に新しい署名を促したい場合, 新しい nonce パラメータを伴う Accept-Signature ヘッダフィールドを送ればよい. 署名を単にリプレイするだけの攻撃者は, 選ばれたノンス値で新しい署名を生成することはできない.