gpt4 book ai didi

linux - 什么是随机: crng init done

转载 作者:行者123 更新时间:2023-12-03 09:53:33 31 4
gpt4 key购买 nike

有人可以向我解释上述消息的含义吗?我正在开发一个 Linux block 驱动程序,我正在尝试使用 ext4 进行格式化。几分钟后,我收到了这条消息。我曾尝试搜索其他线程,但找不到它的解释。谢谢

最佳答案

tl;dr:内核的随机数生成器已准备好生成随机数,这些随机数对于严重的加密使用而言是不可预测的。

在某些系统中,启动时的某些东西(例如启动 sshd)会等待这一点,这在将嵌入式系统切换到 OpenSSL 1.1 时经常发生。您可以使用 egd 或 rng-tools 之类的工具或硬件随机性支持或调整一些东西来解决这个问题,这样启动的其余部分就不会等待该东西完成。

背景故事:

伪随机数生成器是确定性算法,因此只要有足够的输出(和/或对内部状态的一些了解,或对它的良好猜测),攻击者就可以预测 future 的输出。如果其中一些输出将是例如,这真的很糟糕。一个 secret 的加密 key 。

很长一段时间以来,Linux 内核都有代码从不可预测的事件(网络数据包的到达时间、用户输入等)中提取一些真正的随机性(“熵”),使用我们不希望理解的数学,并且产生的随机性通过/dev/random 提供。如果你从/dev/random 读取它会给你不可预知的随机数,直到这个随机性耗尽,那么你必须等待内核提取更多。/dev/urandom 将为您提供相同的随机数,但如果真正的随机性用完,它将从那里开始使用(可能可预测的)算法。所以它总会给你一些东西。 (某些系统还具有对真正随机性的硬件支持,例如热噪声)。

但事实证明,出于加密目的,您不需要无休止地提供真正的随机性。如果您以足够的真实随机性开始以获得强大的加密 key ,那么您可以加密(例如)一个无休止的零字符串。攻击者在不知道 key 的情况下无法预测该输出(如果可以,则您使用的加密已被破坏,并且您已经丢失,无论您的随机性有多好)。

所以内核会在启动时从系统的其余部分收集一些随机性,直到它有足够的能力生成一个好的加密 key ,然后它可以永远生成不可预测的随机数。

现在有一个系统调用 getrandom(),OpenSSL 1.1 默认使用它来播种它的随机数生成器,并且该系统调用在系统收集到足够的随机性之前不会返回。

关于linux - 什么是随机: crng init done,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59249941/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com