CyberGlossary

密码学

随机数(Nonce)

别称: 一次性数值, 密码学随机数

定义

提供给密码学算法的 "一次性数值",用于保证新鲜性,防止重放或密钥/IV 重用。

Nonce 是一个在某个密钥的有效期内绝不重复的输入,被对称加密、AEAD 模式、签名方案及认证协议用来保证每次操作的唯一性。在 AES-GCM、ChaCha20-Poly1305 等 AEAD 模式中,nonce 通常为 96 位,可由随机数生成或确定性计数器构造;同一个密钥下重用 AES-GCM 的 nonce 会同时摧毁机密性与认证性。Nonce 也出现在 TLS 握手、OAuth/OIDC 挑战、Bitcoin 区块头以及 ECDSA 等签名方案中——在 ECDSA 里重用 nonce 会泄露私钥。最佳实践是采用足够长的随机 nonce 或严格单调递增的计数器,在无法排除碰撞时改用抗误用模式(AES-GCM-SIV、XChaCha20-Poly1305 等)。

示例

  • TLS 1.3 通过将序列号与方向相关的 IV 进行 XOR 来派生每条记录的 AEAD nonce。
  • 2010 年 PlayStation 3 的 ECDSA 私钥被恢复,原因是 Sony 重用了签名时的 nonce。

相关术语