跳到主要内容

7.2.2. Signature Replay (签名重放)

7.2.2. Signature Replay (签名重放)

由于 HTTP 消息签名允许签名 HTTP 消息的子部分, 两个不同 HTTP 消息可能相对同一签名有效. 最极端形式是对无消息组成部分的签名. 若此类签名被截获, 攻击者可随意重放, 附加到任意 HTTP 消息. 即使有充分的组成部分覆盖, 给定签名也可应用于两个相似 HTTP 消息, 允许攻击者在签名完整的情况下重放消息.

为对抗此类攻击, 首先重要的是签名者覆盖消息的足够部分以将其与其他消息区分. 此外, 签名可使用 nonce 签名参数提供每条消息唯一值, 使验证者在 nonce 重复时检测签名本身的重放. 此外, 签名者可提供签名创建时间戳与签名者认为签名过期的时间, 限制截获签名值的效用.

若验证者希望从签名者触发新签名, 可发送带新 nonce 参数值的 Accept-Signature 头字段. 简单重放签名的攻击者无法生成带所选 nonce 值的新签名.