有时我读到一个随机数必须是一个随机数,但我不同意。随机数无法重复。如果您确定不会重复,则每次可以增加1。

评论

en.wikipedia.org/wiki/Cryptographic_nonce-“在安全工程中,随机数是在密码通信中仅使用一次的任意数字”

那么将其定义为随机数是错误的吗?维基百科不是来源。

在这种情况下,维基百科是正确的。随机数=一次使用的数字。它不一定是随机生成的,实际上,随机生成可能会导致重复,其概率是随机数的位长的函数。

是否有真正的来源?我们的教授根据自己的喜好给了它一个随机数。

Wikipedia页面上的链接很好:cs.ucdavis.edu/~rogaway/papers/nonce.pdf该论文简介中的示例是将计数器用作随机数。

#1 楼

是的,随机数是一个不被使用多次的数字。从最纯粹的意义上讲,应该没有其他要求,即,随机性或不可预测性是不必要的。

但是,在某些情况下,对随机数提出了更严格的要求;例如在块密码的CBC操作模式下,IV(即刻)需要是不可预测的(一项要求,如果不遵循,实际上会导致SSL / TLS协议中出现实际问题:为什么CBC与可预测的IV被认为对选择的纯文本攻击是不安全的?)。

另请参见:密钥,IV和随机数之间的主要区别是什么?对于现时和IV的属性进行更全面的讨论。

评论


$ \ begingroup $
我很困惑:这是否意味着“现在实际上不一定必须是随机的,但有时是肯定的”?
$ \ endgroup $
–史密斯·约翰斯(Sm​​it Johnth)
13年5月30日在19:11

$ \ begingroup $
为CBC生成不可预测的IV的常见方法是在将计数器值用作IV之前简单地对其加密。静脉注射不必一定是随机的。伪随机是可以的。
$ \ endgroup $
–亨里克·赫尔斯特伦
13年5月30日在19:15

$ \ begingroup $
您要求定义一个随机数,我提供了我认为是“正确”的概念;也就是一个仅使用了一次的值(就是这样!)。不幸的是,在实践中如何使用术语“现时”和“ IV”有很多歧义。因此,您可能会看到多个来源将第一个输入称为CBC模式的随机数,而我更愿意将其称为IV。
$ \ endgroup $
– hakoja
13年5月30日在19:16



$ \ begingroup $
...我要说的是,我认为现时的定义不应该施加任何其他要求,除了它不应被多次使用。这并不禁止您对其施加其他约束。
$ \ endgroup $
– hakoja
13年5月30日在19:21

$ \ begingroup $
@hakoja一个快速跟进的问题,现时的寿命是多少?只是那段交流吗?直到生命,宇宙和一切都结束了吗?直到人们停止使用SSL / TLS(或使用随机数的任何使用随机数的协议)之前?
$ \ endgroup $
–z.karl
18/09/14在19:35



#2 楼

《应用密码学手册》第10章中的定义10.9。


随机数是用于同一目的的一次使用的值。通常,它
用于防止(无法检测到)重放。


继续,还有一些其他信息可能会让您感兴趣。


术语随机数最常用于指代挑战响应协议中的“随机”数,但所需的随机性却有所不同。


#3 楼

在某些特殊情况下,不可预测的随机数比唯一的随机数要好。

例如,假设您有权访问一个oracle,它可以对涉及随机数的身份验证请求生成正确的响应,但是您没有实时访问权限;尤其是当您从oracle得到响应时,挑战就已经到期了。

如果您可以预测现时的随机数(例如prev nonce + 1),则可以使用oracle事先建立正确的响应,然后针对受害者运行协议并准备好响应。被强行使用,但是执行强行需要花费很长时间(例如,攻击者的资源需要数天)。不可预测的随机数将阻止该漏洞的利用。

#4 楼

如果您有许多客户端正在访问服务器,则客户端实际上不能仅增加一个,因为它们不知道已发送了哪些号码。您可以尝试协调并强制其数字不相交,但这是额外的工作。

在这种情况下,我认为长而随机的随机数非常有益。客户只需生成随机数,而不必担心重叠。服务器只需要记录并确保相同的随机数不会出现两次。

GUID或UUID在这些情况下都能很好地工作,因为冲突的统计概率非常低。另外,GUID的某些实现将基于MAC地址,时间和一些随机位。这样可以确保


两台计算机永远不会生成相同的随机数(不同的MAC地址)
同一台计算机永远不会生成相同的随机数(时间戳和随机数)

它们也很容易生成,因为大多数语言已经具有您可以使用的实现。

所以我同意您的观点,即随机数不需要RANDOM,但是它们确实需要独一无二。而且,如果只有一个客户端与单个服务器通信,则自动递增可能很好,但是在许多情况下这是不现实的。

评论


$ \ begingroup $
如果客户端具有不同的密钥,则每个客户端可以使用相同的随机数(一次)。
$ \ endgroup $
–otus
2014年6月10日下午6:46