use*_*206 22 proc random sysctl linux-kernel
更新到内核 5.10.119 后,/proc/sys/kernel/random/entropy_avail
卡在 256 并且移动鼠标时不会改变。以前是3000多。
# cat /proc/sys/kernel/random/entropy_avail
256
Run Code Online (Sandbox Code Playgroud)
另外,/proc/sys/kernel/random/poolsize
下降到 256。以前是 4096。
这是一个错误吗?你能相信这个内核的新随机数生成器只有 256 个可用熵吗?
MC6*_*020 22
无意与马库斯的完整答案竞争。只是为了解释发生的事情并证明您注意到的不是错误。
\n默认池大小是硬编码的drivers/char/random.c
,但在 5.10.119 中实际上发生了一些变化:
截至 2011 年 10 月 5 日:
\n#define INPUT_POOL_SHIFT 12\n#define INPUT_POOL_WORDS (1 << (INPUT_POOL_SHIFT-5))\n...\nstatic int sysctl_poolsize = INPUT_POOL_WORDS * 32;\n
Run Code Online (Sandbox Code Playgroud)\n(2^(12-5))x32=4096
\n在 5.10.119 下,池大小的计算方式不同:
\nPOOL_BITS = BLAKE2S_HASH_SIZE * 8\n...\nstatic int sysctl_poolsize = POOL_BITS;\n
Run Code Online (Sandbox Code Playgroud)\nBLAKE2S_HASH_SIZE = 32,如中定义include/crypto/blake2s.h
8x32=256你注意到的不是一个 bug\xe2\x80\xa6 它:一个功能!
\n顺便说一句,这只是一个默认值,如果您知道它不符合您的需求,请随意更改它。
\n注意:此更改涉及主线,因为 5.17-rc1 从 119 向后移植到 5.10,但也从 44 向后移植到更新的 LTS:5.15。5.4 似乎并不关心(还?),当然,5.16 永远不会。
\n正如@TooTea 在评论中恰巧建议的那样,移动的原因可以理解为初始提交的一部分,简而言之:
\n这是通过直接调用 BLAKE2 替换 4096 LFSR 来实现的。
\n\n\nBLAKE2s 输出 256 位,这应该为我们提供适当的最小熵累积量,以及足够宽的碰撞裕度以抵抗主动攻击。
\n
Mar*_*ler 11
我们可以。
\n您之前也可以,当显示相同的值 \xe2\x80\x93 时,“熵”只是一个疯狂的猜测,有多少随机源可用于修改伪随机数生成器的状态。即使没有新的熵,该生成器仍然是值得信赖的\xe2\x80\x93 ,除非有人弄清楚了状态(这应该是不可能的)。
\n因此,即使对于私钥生成之类的事情,使用 /dev/urandom (它使用 PRNG,即使它无法从外部熵源修改其状态)和使用 /dev/random (它会阻止 if没有什么可以修改状态),除非你假设攻击者可能已经通过某种奇妙的措施知道了内核内部 PRNG 的状态(或者因为你在一个非常有限的设备上提前启动了 Linux,没有熵源) ,并且状态是确定性的,但是你的熵只是 0。一旦你有几百位的熵,任何加密安全的 PRNG 都会说,从随机生成器获取数据的任何人都无法成功猜测其内部状态)。
\n唯一的区别实际上是,如果熵为零,则已经加密安全的 PRNG 不会被重新播种。“存储”有 3000 或 256 个熵根本不重要。唯一有影响的是你是否可以重新播种。(正如前面所说,即使这并不重要,除非你做了一些我不会将其称为“密码学上常见的”的事情:你真正需要多久创建一个一次性的密码本,没有攻击者完全了解你的密码?计算机在生成之前某个时间点的状态无法破解?因为“攻击者无所不知,足以推断出您在某个时间的加密 PRNG 状态”,而不是“NSA 试图破解 RSA”或其他什么。)
\n老实说,
\n\n\n这是一个错误吗?你能相信这个内核的新随机数生成器只有 256 个可用熵吗?
\n
您需要假设您的内核不会引入安全措施的削弱。否则,随机性来源中的理论熵不是您的问题,而是内核故意以某种方式使其具有确定性,而没有告诉您:)
\n如果您不相信您的内核没有安全回归,那么您就已经失败了,因为您无法相信您的计算机能够提供您认为应该提供的数字。Sooooo...是的,您可以,或者您很久以前就需要开始构建自己的操作系统,而不仅仅是通过此更新改变了显示的熵。
\nTL;DR:只要您的计算机不遭受熵不足的困扰,您就可以生成安全数字。即使在开始获取随机数之前只使用一次 256 熵,然后在系统的剩余生命周期中使用 0 就可以了!任何时候都拥有 256 个比以往任何时候都更加必要。
\n 归档时间: |
|
查看次数: |
7739 次 |
最近记录: |