openssl RAND_add()文档引用了RFC1750.RFC1750对此事保持沉默

openssl RAND_add() documentation refers to RFC1750. RFC1750 is silent on the matter

本文关键字:RFC1750 沉默 引用 RAND add 文档 openssl      更新时间:2023-10-16

openssl库的RAND_add函数的文档中有关于熵参数的说明:

熵自变量是对buf中包含多少随机性的估计(的下界),以字节为单位。关于随机性来源以及如何估计其熵的详细信息可以在文献中找到,例如RFC 1750。

来源:http://linux.die.net/man/3/rand_add

RFC 1750可以在这里找到:https://www.rfc-editor.org/rfc/rfc1750.html

但它当然对";熵";(文本搜索显示该单词在文档中没有出现)。

以下是我的问题:

  1. 熵的论点具体应该是对什么的衡量
  2. 有效的值范围是多少(参数的类型为double)

非常感谢。

熵的论点具体应该是对什么的衡量?

输入对攻击者来说是多么的不可预测。

的有效值范围是多少(参数类型为double)

该值应该是攻击者需要猜测输入内容的猜测次数除以8的自然对数。这基本上与输入包含的熵的字节数相同。

它可能不使用这个词,但整个RFC都是关于熵的。它使用了"不可预测性"这个词。

根据;人;您引用的页面:

http://linux.die.net/man/3/rand_add

当num==熵时,RAND_Sed()等效于RAND_add()。

以下是关于";熵";自变量:

https://www.mail-archive.com/openssl-dev@openssl.org/msg09806.html

Lutz Jaenicke写道:

熵参数应该说明;不确定性";位于提供的数据。

如果我们选择一个值0,我们的意思是其中可能有熵,但是也许攻击者可以预测该值,所以我们使用它,但不计算它是一个非常不可预测的输入。

那么,如果我们知道每个字符(字节)的熵,正确的是什么推导熵参数正确值的公式?

如果熵是10%(压缩比1:10);数字字节的*10%";。

请再次注意,压缩比只是压缩消息中的信息量。如果我们不知道消息,它或多或少等于其中的熵(不可预测性)。如果消息是已知的,熵(从视图)为零!因此,这是一个艰难的决定用压缩大小估计来自源的熵有点像上限。

换句话说,如果你的缓冲区是";"完全随机";,则熵==bufsize。

最后,rand_add()手册页中引用的RFC 1750已被RFC 4086:所取代

https://www.rfc-editor.org/rfc/rfc4086