如何禁用Linux熵池源

时间:2011-09-09 12:20:02

标签: linux entropy

如何禁用熵源?

以下是我正在尝试做的一些背景知识。我正在构建一个小型RNG设备,通过USB与我的PC通信。我希望它是唯一使用的熵源。我将使用rngd添加我的设备作为熵源。

4 个答案:

答案 0 :(得分:4)

快速回答是“你没有”。

不要删除熵源。随机数发生器的设计者操纵它,因此任何新的随机位都会与当前状态混合在一起。

拥有多个熵源永远不会削弱随机数生成器的输出,只能强化它。

我能想到去除熵源的唯一原因是它会淹没您无法负担的CPU或挂钟时间。我发现这种情况极不可能,但如果是这种情况,那么你唯一的选择就是内核黑客攻击。就内核的黑客而言,这应该是相当简单的。只需在整个内核源代码中注释掉对add _ * _ randomness()函数的所有调用(函数本身可以在drivers / char / random.c中找到)。你可以只注释函数的内容,但是你试图在这种情况下节省时间,额外的函数调用所花费的时间太少。

答案 1 :(得分:0)

我怀疑你可能想要一个快速随机发生器。

修改 我应该更好地阅读问题

无论如何,frandom comes with a complete tarball用于内核模块,这样您就可以学习如何在USB设备周围构建自己的模块。也许,您甚至可以替换/替换/ dev / urandom,因此任意应用程序可以使用它而不是/ dev / urandom(当然,如果有足够的权限,您可以重命名设备节点并“愚弄”大多数应用程序)。


<子>

您可以查看http://billauer.co.il/frandom.html,它实现了这一点。

  
      
  • / dev / urandom不够吗?   
        
    • 讨论自1996年以来更快的内核随机数发生器兴衰的必要性(据我所知)。我的观点是/ dev / frandom与/ dev / zero一样必要,它只创建一个零流。常见的反对意见通常是:在用户空间中进行。
    •   
  •   
  • / dev / frandom和/ dev / erandom有什么区别?   
        
    • 一开始我写了/ dev / frandom。然后事实证明,这个套件的一个优点是它可以节省内核熵。但是/ dev / frandom每次打开设备文件时都会消耗256字节的内核随机数据(这可能会占用一些熵),以便为随机生成器播种。所以我创建了/ dev / erandom,它使用内部随机生成器进行种子设定。 frandom中的“F”代表“fast”,而“E”代表“经济”:/ dev / erandom根本不使用内核熵。
    •   
  •   
  • 它有多快?   
        
    • 取决于您的计算机和内核版本。测试始终显示比/ dev / urandom快10-50倍。
    •   
  •   
  • 它会在我的内核上运行吗?   
        
    • 如果是&gt;它很可能会。 2.6
    •   
  •   
  • 稳定吗?   
        
    • 自从2003年秋季发布初始版本以来,至少有100人在i686和x86_64系统上尝试过它(可能还有更多)。成功的测试报告已经到来,零投诉。所以是的,它非常稳定。至于随机性,也没有任何投诉。
    •   
  •   
  • 如何生成随机数据?   
        
    • frandom基于RC4加密算法,该算法被认为是安全的,并被包括SSL在内的多个应用程序使用。让我们从RC4如何工作开始:它接受一个密钥,并生成一个伪随机字节流。实际加密是这个字节流和明文数据流之间的XOR操作。
    •   
    • 现在为frandom:每次打开/ dev / frandom时,都会使用一个2048位的密钥初始化一个不同的伪随机流,该密钥是通过执行与从/ dev / urandom读取密钥相同的操作来选择的。伪随机流是您从/ dev / frandom中读取的内容。
    •   
    • frandom只是带有随机密钥的RC4,最后没有XOR。
    •   
  •   
  • frandom会产生好的随机数吗?   
        
    • 由于它的起源,随机数不能太差。如果他们是,RC4将不值得。   至于测试:从/ dev / frandom直接“复制”的数据是用George Marsaglia开发的“Diehard”测试电池测试的。所有测试都通过了,这被认为是一个很好的指示。
    •   
  •   
  • 可以使用frandom来创建一次性密码(密码学)吗?   
        
    • frandom从未打算用于加密目的,也没有任何特殊的想法用于攻击。但是攻击模块的空间很小,而且由于模块基于RC4,我们有以下事实:使用来自/ dev / frandom的数据作为一次性填充相当于使用RC4算法和2048-位密钥,从/ dev / urandom读取。
    •   
  •   
     

结论:使用frandom进行加密可能是可以的。但不要。这不是意图。

答案 2 :(得分:0)

一种解决方案是在虚拟机中运行单独的Linux实例。

答案 3 :(得分:0)

补充说明,对于评论来说太大了:

  

根据其设置,rngd可以控制内核的熵池,          通过提供如此多的数据,通常,其他熵源          大部分被忽视或丢失。除非你信任rngd的来源,否则不要这样做          随机数据最终。