我正在阅读与/dev/随机相关的安全问题,但事实证明很难找到好的信息来源。有人能帮忙吗?我问过谷歌,并得到了一堆2006年前的文章,所以我假设很多问题都已经解决了。我也已经查看过源代码,但我不是加密或安全专家,所以我的个人分析很有可能是不够的。任何帮助或指导都将不胜感激。
编辑:为了让我的问题更具体,我想知道的是熵池是如何混合的,池的级别是如何估计的,以及/dev/随机如何根据池中的值计算它的值。我想知道为什么要这样做,怎么做,以及所用方法的缺点是什么。我知道游泳池是怎么建起来的。
我的最终目标是实现一个TRNG,它将填充/dev/随机。现在,我可以将它的输出(好的和白色的)输入到池中,我只想知道是否值得完全绕过池并编写一个模块直接填充/dev/随机。我在这里假设攻击者可以毒害池来破坏随机设备的输出。
目前我正在使用Ubuntu,内核版本是2.6.32
发布于 2011-11-22 20:21:51
对于许多密码应用程序,/dev/随机是收集(伪)随机数据的一种安全方法。然而,有几个关键问题似乎与你的要求是一致的。
问题之一是有可能写入/dev/随机。根据维基百科,
还可以向/dev/随机写入。这允许任何用户将随机数据混合到池中。非随机数据是无害的,因为只有特权用户才能发出增加熵估计所需的ioctl。当前的熵量和Linux内核熵池的大小可在/proc/sys/内核/随机/中获得。
这对于一台未被破坏的机器来说是有意义的,但是如果有人已经将一个盒子扎根,理论上他们可以将非随机数据(看起来是随机的)写入/dev/随机,并导致从该点开始生成的密码密钥的问题。很难确定这种攻击的严重程度,因为如果根已经被破坏了,那么肯定会存在更重要的攻击向量(到那时,所有的软件都可以备份)。
第二组问题,详见论文Linux随机数发生器的分析 (2006年3月),重点讨论保存状态机的问题。这主要出现在Linux的live中,它们在引导时具有相同的内置(只读)熵,但在当今世界中也可以应用于状态恢复的虚拟化机器,或者使用软件的机器在关机时恢复到“已知的良好”状态。如果熵可以在引导时确定,那么/dev/随机就会被破坏(因为它是一个已知的起始值)。
有几种改进标准/dev/随机的方法,其中最著名的可能是熵聚集守护进程(http://egd.sourceforge.net/)。EGD可以作为/dev/随机的“用户空间替代品”工作,这可以使应用程序拥有一个更加安全的PRNG。
最后,如果您对“真正的随机”熵感兴趣,请考虑使用像Random.org这样的服务,它使用大气噪声来创建真随机数,而不是伪随机数。
希望这能有所帮助!
发布于 2011-11-22 20:52:41
资源:
你可以从上面挑出你感兴趣的版本。软件RNG的源代码有很好的注释,所以我将由您来解释。
https://security.stackexchange.com/questions/7061
复制相似问题