你所说的是现在,理论上可以将熵投入/ dev / random,但是您需要控制很多内核“噪声”来源才是重要的。您可以查看
random.c的源码,看看/ dev / random从哪里拾取噪声。基本上,如果你控制大量的噪音源,那么你可以猜测其他人对熵池有什么贡献。
因为/ dev / urandom是从/ dev / random播种的Hash chain,所以你可以预测下一个数字,如果你知道种子。如果您对熵池有足够的控制权,那么从/ dev / urandom的输出可能可以猜到这个种子,这样可以预测/ dev / urandom中的所有下一个数字,但是只有保留/ dev / random耗尽,否则/ dev / urandom将被重新设置。
话虽如此,我还没有看到任何人真的做到这一点,甚至没有在受控的环境中。当然这不是一个保证,但我不用担心。
所以我宁愿使用/ dev / urandom,并保证我的程序不会阻止等待熵,而不是使用/ dev / random,并要求用户做一些愚蠢的事情,如移动鼠标或键盘敲击。
我想你应该从LWN读取On entropy and randomness,希望它会平静你的后顾之忧:-)。
如果你还在担心,那么自己就要HRNG了。
编辑
这是一个关于熵的小笔记:
我认为熵的概念一般很难掌握,可以看看Wikipedia.但是基本上,在这种情况下,你可以将熵视为随机性。
那么我怎么看,就是你有一大块彩色的球,这个袋子里的熵越高,预测从包里抽出的下一个颜色就越难。
在这种情况下,您的熵池只是一堆随机字节,其中不能从之前的或其他任何字节派生。这意味着你有很高的熵。