【发布时间】:2018-03-22 07:25:21
【问题描述】:
我有一种情况,我需要在两台机器之间发送的消息的 HMAC 计算中添加随机数。我正在考虑使用无符号 64 位计数器作为随机数。
// key pre-shared between sender and receiver
HMAC(key, message || nonce)
我会在每条消息后递增计数器。接收机器将验证 HMAC 并增加其计数器。我在网上搜索了一下,发现 nonce 不能重复,但我也读到 counter 可以作为 nonce 工作。
由于 64 位值最终会回绕为零,这样的计数器是否可以被视为随机数?
【问题讨论】:
-
估计它何时会达到 0。我怀疑是否会存储 2^64 个“随机顺序”随机数以供检查(与只需要检查最高计数器的计数器相反)。用 2^16 试试。否则有 128 位 UUID。
-
我打算只存储最新的柜台。您如何看待 @Arthom 在 cmets 中的建议:stackoverflow.com/a/34968641/682869
-
似乎有办法做到这一点,我认为Arthom在这个话题上比我好。
-
一个随机数不应重复使用相同的键。给定预期的使用水平,粗略计算随机数计数器循环回 0 所需的时间。在这段时间内定期更换您的密钥,并将计数器重置为 0。您必须确保随机数/密钥组合永远不会重复。
-
Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Cryptography Stack Exchange 或Information Security Stack Exchange 会是一个更好的提问地点。
标签: cryptography hmac nonce