Chr*_*s_F 11 random windows-subsystem-for-linux
我在 Haswell 笔记本电脑上使用适用于 Windows 10 (WSL2) 的 Ubuntu 20.04,每秒获得大约 0.6 个字节。等待 10 秒后总共 6 个字节。这是无法接受的。问题是什么?
编辑:这似乎只是在 WSL2 模式下运行时的问题。WSL1 = 40MiB/s WSL2 = 0.6 字节/s
bk2*_*204 30
无论/dev/random
和/dev/urandom
在Linux中的密码安全伪随机数生成器。在旧版本的 Linux 内核中,/dev/random
一旦初始化就会阻塞,直到积累了足够的额外熵,而/dev/urandom
不会。由于 WSL2 是具有真实 Linux 内核的虚拟机,因此它具有一组有限的熵源,可以从中提取熵,并且其大部分熵必须依赖于主机系统。但是,只要它在启动时接收到足够的熵,就可以安全地使用 CSPRNG。
听起来在您的环境中,CSPRNG 已在从 Windows 启动时播种,但未以高速率重新播种。这很好,但它会导致/dev/random
比您想要的更频繁地阻塞。归根结底,这是WSL2的配置问题。
WSL1 可能没有这个问题,因为在这种情况下,它/dev/random
可能不会阻塞并且只使用系统 CSPRNG,例如/dev/urandom
. 在更新的 Linux 版本中,唯一的/dev/random
阻塞时间是启动时没有积累足够的熵来为 CSPRNG 播种一次;否则,它完全等价于/dev/urandom
。做出此决定是因为如果池已适当初始化,则两个接口中没有合理的安全差异。
由于在这些情况下没有可测量的差异,如果/dev/random
阻塞并且对您来说太慢,正确的做法是使用/dev/urandom
,因为它们是相同 CSPRNG(基于 ChaCha20)的输出。无论如何,上游 Linux 行为很可能是 WSL2 未来版本中的默认行为,因为 Microsoft 最终将合并更新版本的 Linux。
小智 5
我自己还没有在 WSL2 Ubuntu 中对此进行过测试,但不久前我在 CentOS 6 虚拟机上遇到了类似的问题。安装和运行该haveged
服务解决了我的 /dev/random 缓慢问题。也许值得尝试一下。
Linux 通过 /dev/random 和 /dev/urandom 设备接口汇集随机性以进行分发。填充 /dev/random 池的标准机制可能不足以满足对具有高需求或有限用户交互的系统的需求。在这些情况下,只要 /dev/random 中的随机位供应低于设备的低水位线,haged 就可以作为特权守护进程运行以填充 /dev/random 池。
https://manpages.ubuntu.com/manpages/focal/man8/haveged.8.html
否则,就像@bk2204 所说的, /dev/urandom 可能是你最好的选择。
归档时间: |
|
查看次数: |
2552 次 |
最近记录: |