Cryptography 为什么应该避免基于时间的nonce?

Cryptography 为什么应该避免基于时间的nonce?,cryptography,nonce,challenge-response,Cryptography,Nonce,Challenge Response,在质询-响应机制(和其他系统)中,建议不要使用基于时间的nonce 为什么应该避免这种情况?基于时间或计数器的暂时状态可能会导致攻击者提前准备的情况。。。单靠这一点通常不会破坏一个系统,但这是朝着错误方向迈出的一步。。。不可预测的暂时情况通常不会造成伤害…(免责声明:我没有密码学位,我写的所有东西都只是外行的意见。) 不鼓励使用基于时间的nonce,因为它们可能会意外碰撞,并且很容易以错误的方式实现 nonce(“仅使用一次的数字”)与密钥或初始化向量不同。使用它们的密码在设计时通常会考虑到:

在质询-响应机制(和其他系统)中,建议不要使用基于时间的nonce


为什么应该避免这种情况?

基于时间或计数器的暂时状态可能会导致攻击者提前准备的情况。。。单靠这一点通常不会破坏一个系统,但这是朝着错误方向迈出的一步。。。不可预测的暂时情况通常不会造成伤害…

(免责声明:我没有密码学位,我写的所有东西都只是外行的意见。)

不鼓励使用基于时间的nonce,因为它们可能会意外碰撞,并且很容易以错误的方式实现

nonce(“仅使用一次的数字”)与密钥或初始化向量不同。使用它们的密码在设计时通常会考虑到:

  • 只要秘密密钥没有泄露,向攻击者公开nonce不会损害安全性
  • nonce根本不必是随机的,对于给定的密钥,它们必须是唯一的
因此,选择零作为起始时刻并在发送每个连续消息之前递增它是完全可以的。暂时的可预测性根本不是问题

不鼓励基于时间的nonce的唯一原因是可能的向后时钟调整。如果您的系统NTP服务将时钟向后倒转两秒,则您可能会在短时间内发送两条具有相同nonce的加密消息。如果你能保证时钟不会倒转,那就继续吧

反对基于时间的nonce的另一点是,时钟分辨率可能不足以为每条消息提供唯一的数字

UPD:

就加密强度而言,使用基于计数器或基于时间的nonce是安全的。但是,它们可能会通过向攻击者提供附加信息来削弱您的安全系统,即:您的系统已经发送了多少消息,即平均消息速率,以及它同时服务的客户端数量,等等。攻击者可能会利用这些信息为自己谋利。这称为

另请参见:

  • ,第“临时防误用”一节

最好在或上发布此内容。谢谢。维基百科:“重要的是不要使用基于时间的nonce,因为它们会削弱不同时区的服务器和时钟不准确的服务器”这意味着什么?这在很大程度上取决于底层协议。。。但是,如果攻击者能够了解将在未来通信中使用的nonce,这通常不是一件好事“时区”呢?为什么时区会削弱协议?如果您的nonce只是本地时间,例如unix时间戳1488979879,并且您的时区中有另一台服务器,与您的本地时间相比偏移量为+0100,那么从时间开始的一小时内,当第一台服务器使用该nonce时,可能会使用相同的nonce。。。当然,这是非常确定的。。。例如,如果您有ECDSA签名。。。当签名是这样一个临时值时,您可以从这两个签名中计算出私钥