纯随机的 nonce 遇到弱随机数生成器会造成灾难性后果;纯确定性的 nonce(RFC 6979、EdDSA)则有另一个问题:如果攻击者能在同一消息被签名两次时引发故障,就可以比较两次输出并恢复密钥;而且由于 nonce 完全重复,某些侧信道攻击也更容易实施。对冲(hedging)把 nonce 计算为密钥、消息和全新随机字节的 PRF,因此单凭其中任何一种输入,就足以使 nonce 保持秘密。
FIPS 204 将对冲签名设为 ML-DSA 的默认方式:来自经批准的 RBG 的 32 字节 rnd 与密钥和消息一起计算哈希,可选的确定性变体则把 rnd 设为全零;同一个验证器两种签名都接受(§3.4)。对于 ECDSA,RFC 6979 §3.6 允许在派生中加入附加数据,BIP-340 建议混入 32 字节的辅助随机数,@noble/curves 则以 extraEntropy 参数提供这一功能。
对冲签名与其他签名看起来没有区别,验证者既不知道也无需关心。改变的是签名者的故障特征,这也是面临物理攻击的硬件钱包和 HSM 更倾向于采用它的原因。