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模块时会发生这种情况. 您可以使用以下命令查看哪些算法已成功并通过了测试: grep -EC5 'selftest.*passed' /proc/crypto 您还可以使用“优先级”字段查看选择优先级.根据模块作者,值越高,PRNG越强. 所以,我很高兴在这里错了,因为我不认为自己是一个内核程序员,但最后 – 当stdrng加载时,它似乎从可接受的算法列表中选择其他算法,这些算法被认为比失败算法强,加上失败的算法无论如何都不太可能被选中. 因此,我相信在使用luks时这对您没有任何额外的风险. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |