linux – 引导期间LUKS错误

前端之家收集整理的这篇文章主要介绍了linux – 引导期间LUKS错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
alg: drbg: could not allocate DRNG handle for ...

我只在我们创建的虚拟机启动过程中在控制台上看到此错误.编辑:2/5/16 – 我也在一些裸机安装上看到它. (它确实完全启动.)我认为它与虚拟化硬件和缺少(兼容)随机生成器有关.问题是我无法评估严重程度.加密强度是否受到损害? (我应该关心这个错误吗?)我该如何解决

我们在CentOS 6.7下使用QEMU / KVM.如果你真的认为它会有所帮助,我可以做一个示例系统的virsh dumpxml.我们使用的是Anaconda default cipher/key size.(aes-xts-plain64 / 512)

这是我在linux-crypto mailing list发现的earliest reference.不幸的是,这有点过头了.

http://www.mail-archive.com/linux-crypto%40vger.kernel.org/msg10398.html

解决方法

简明扼要,我认为它不会影响加密的强度.

我已经检查了源代码,只要我正在解释我正确阅读的内容,你就不必担心这一点.

代码属于模块“stdrng”.至少在Fedora 23上,它内置于内核中,而不是作为内核模块导出.

首次初始化stdrng时,会发生以下调用.

在crypto / drbg.c初始化从这里开始.

1997 module_init(drbg_init);

这会记录系统已知的所有drbgs.

1985         for (j = 0; ARRAY_SIZE(drbg_cores) > j; j++,i++)
1986                 drbg_fill_array(&drbg_algs[i],&drbg_cores[j],1);
1987         for (j = 0; ARRAY_SIZE(drbg_cores) > j; j++,i++)
1988                 drbg_fill_array(&drbg_algs[i],0);

然后它将它传递给执行初始化的辅助函数

1989         return crypto_register_rngs(drbg_algs,(ARRAY_SIZE(drbg_cores) * 2));

在crypto / rng.c中,这只是遍历每个rng来注册它.

210         for (i = 0; i < count; i++) {
211                 ret = crypto_register_rng(algs + i);
212                 if (ret)
213                         goto err;
214         }

函数执行一系列初始化步骤,然后调用另一个函数进行分配.

196         return crypto_register_alg(base);

注册期间发生的事情并不那么明显.

内置于内核中的另一个名为tcrypt的模块接收插入新算法的通知.一旦它看到一个新的注册算法,它就会安排对它的测试.这是产生您在屏幕上看到的输出的原因.

测试完成后,算法进入TESTED状态.如果测试失败,我想(我找不到产生这种行为的位)如果传递正确的标志,则无法选择搜索.

测试通过是否绝对是内部存储的.

除此之外,调用psudeo随机生成器会导致算法列表按强度顺序迭代prng,如crypto / drbg.c中的此注释所示.

107 /*
108  * The order of the DRBG definitions here matter: every DRBG is registered
109  * as stdrng. Each DRBG receives an increasing cra_priority values the later
110  * they are defined in this array (see drbg_fill_array).
111  *

由于最强的一个没有失败(hmac sha256),即使它们可以被选中,你也不太可能使用失败的那些.

总结一下 –

>当某些东西需要stdrng模块时会发生这种情况.
>它加载所有已知的算法.
>加载所有算法进行测试.有些可能会失败(为什么在这个答案中没有考虑).
>测试失败的算法不应该在以后选择.
> PRNGS按强度排序,首先尝试通过的强PRNGS.
>希望依赖stdrng的东西不应该使用这些算法作为其PRNG源的基础.

您可以使用以下命令查看哪些算法已成功并通过了测试:

grep -EC5 'selftest.*passed' /proc/crypto

您还可以使用“优先级”字段查看选择优先级.根据模块作者,值越高,PRNG越强.

所以,我很高兴在这里错了,因为我不认为自己是一个内核程序员,但最后 –

当stdrng加载时,它似乎从可接受的算法列表中选择其他算法,这些算法被认为比失败算法强,加上失败的算法无论如何都不太可能被选中.

因此,我相信在使用luks时这对您没有任何额外的风险.

猜你在找的Linux相关文章