为什么要避免基于时间的nonce?

时间:2017-03-07 08:23:33

标签: cryptography nonce challenge-response

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

为什么要避免?

2 个答案:

答案 0 :(得分:1)

基于时间或计数器的nonce可能导致攻击者可以提前准备的情况......单凭通常不会破坏系统,靠近它是向错误方向迈出的一步......不可预测的nonce通常不会伤害了......

答案 1 :(得分:0)

(免责声明:我没有加密学位,我写的所有内容都只是外行人的意见。)

不鼓励使用基于时间的随机数,因为它们可能偶然发生冲突并且容易以错误的方式实现。

Nonce(“仅使用一次的数字”)与密钥或初始化向量不同。使用它们的密码通常设计为:

    只要密钥没有泄露,
  • 向攻击者暴露nonce不会损害安全性;
  • nonces根本不必是随机的,对于给定的密钥,它们必须是唯一的。

因此,选择零作为起始随机数并在发送每个连续消息之前递增它是完全可以的。 Nonce可预测性根本不是问题。

不鼓励基于时间的随机数的唯一原因是可能的后向时钟调整。如果您的系统NTP服务向后倒退您的时钟两秒钟,那么您可能会在短时间内发送两条具有相同nonce的加密消息。如果你可以保证不会发生任何时钟倒带,那么请继续。

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

<强> UPD:

在加密强度方面,使用基于计数器或基于时间的nonce是安全的。但是,它们可能会通过向攻击者提供其他信息来削弱您的安全系统,即:系统已经发送了多少消息,即平均消息速率,即它同时服务的客户端数量,等等。攻击者可能能够利用这些信息来获取优势。这就是所谓的a side-channel attack

另见: