当我登录时,它挂起,直到完成crng init


22

当我在运行Debian Unstable的笔记本电脑上使用LightDM登录时,它最近开始挂起约2分钟,直到journalctl显示消息kernel: random: crng init done。当我挂起键盘时按随机键时,它的登录速度更快(约10秒)。在没有这个问题之前,有什么办法可以解决?

编辑:使用linux-image-4.15.0-3-amd64代替linux-image-4.16.0-1-amd64工程,但我不想使用旧的内核。


1
听起来有些东西吞噬了整个熵池。
库萨兰达

1
systemd-journald最近在各种讨论论坛中都提出了CSPRNG 的主题及其(声称的)需求。例如,请参阅lists.freedesktop.org/archives/systemd-devel/2018-May/…
JdeBP '18年

1
sudo apt install haveged sudo systemctl enable haveged
virusmxa

Answers:


15

由于可用的熵(随机性)不足,试图从内核中获取随机数据(即从中读取/dev/urandom或调用getrandom())时,它看起来像是系统块的某些组件。

对于该问题为何取决于特定的内核版本,或者您的系统上实际上阻止了哪个组件,我没有现成的解释,但是无论根本原因是什么,

实际上,正如Bigon在回答中指出的那样,它似乎是4.16中引入的内核错误:

此错误是通过在此提交中将“ crng_init> 0”更改为“ crng_init> 1”而引入的:https ://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ ?id = 43838a23a05fbd13e47d750d3dfd77001536dd33

此更改无意中影响了urandom_read,导致crng_init == 1状态被视为未初始化,并导致urandom阻塞,尽管该状态在启动时专门用于支持非加密需求:https : //git.kernel.org/pub /scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c#n1863

还原43838a23a05f(“随机:修复crng_ready()测试”)可修复该错误(使用4.16.5-1测试),但这可能会引起安全问题(在43838a23a05f中提到了CVE-2018-1108)。我正在测试一个更本地化的修补程序,该修补程序应该对上游更具吸引力。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=897572#82

...不过,您可以尝试使用havegedrng-tools更快地收集熵。


4
看起来在Linux 4.16.4中,由于CVE-2018-1108,与CRNG相关的某些事情已更改。rng-tools无法在我的笔记本电脑上运行,因为英特尔赛扬N2840不支持AES-NI,因此没有内置的TRNG。
wb9688

3
rng-tools从2011年开始在debian中的最新上传。您rng-tools5最近才引入了软件包
Bigon

@Bigon TBH我对Debian中的软件包一无所知。我不用这个。这是一般性建议,而不是特定于Debian。
intelfx

1
已在Ubuntu 18.04(bionic)上得到确认。使用dropbear-initramfs远程安装和解锁磁盘后出现此问题cryptroot-unlock。只是apt install rng-tools使事情神奇地起作用。谢谢!
带薪的书呆子'18

安装haveged对我有用。我有一个旧的Intel Core 2 Duo,没有真正的随机数生成器。
Balau

7

这是内核中的一个更改(错误?),请参见:https ://bugs.debian.org/cgi-bin/bugreport.cgi?bug =897572

减轻安装rng-tools5似乎有所帮助。请注意,我不知道安装此软件包是否会对强大的加密密钥生成产生影响

编辑:显然更新util-linux 2.32应该解决此问题


不,util-linux 2.32无法为我解决此问题。
vinc17

5

这是一个内核错误,可能会在不同的内核中发生。

运行apt-get install rng-tools作为su终端应该工作。


在终端中以su身份运行apt-get install rng-tools修复了我的Linux机器的问题。
Giovanni Cannizzaro

2

rng-tools仅当您的系统具有对随机数的硬件支持时才有用,例如intel的“ Secure Key ”。这种方式是由常春藤桥发明的。我的具有1037u处理器(基于ivy bridge)的系统没有此硬件支持。因此rng-tools无济于事。

在另一个使用沙桥i3处理器的系统上rng-tools可以提供帮助。该rngd服务必须在启动过程中很早就启动,以填满熵队列。在Ubuntu的启动序列中就是这种情况,我不知道其他发行版是否如此,但是您可以找到,因为rngdsyslog 的开始已登录。


1
这并非完全正确。你可以运行rngd -f -r /dev/urandom/dev/urandom/dev/random,虽然建议不要以这种方式运行它,它是一个选项..
SLM

2

删除交换分区后也可能发生

kernel: random: crng init done删除交换分区后,也可能发生之前的挂起。

如果删除了交换分区,则配置文件/etc/initramfs-tools/conf.d/resume 应完全为空或为RESUME=。删除任何UUID号。RESUME=NONE无效。

$ sudo vim /etc/initramfs-tools/conf.d/resume

初始RAM文件系统需要更新才能使这些更改生效:

$ sudo update-initramfs -u

1

就我而言,我4.19.0-4-amd64在Proxmox VE上运行Debian Buster(内核)VM。

解决方案是向虚拟机添加VirtIO RNG设备。在Proxmox上,这是通过编辑VM配置文件来完成的。

就我而言,我编辑/etc/pve/qemu-server/110.conf并添加了以下行:

args: -device virtio-rng-pci

不需要用户空间工具(例如rng-toolshaveged)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.