use*_*967 1 linux dev random-number-generator
我不太明白 Linux 系统之间/dev/random
和/dev/urandom
Linux 系统上的区别。
用完 \xe2\x80\x9centropy\xe2\x80\x9d 意味着什么?系统如何获得更多?
\n\n/dev/random
当人们说\xe2\x80\x9cblocks\xe2\x80\x9d 如果没有 \xe2\x80\x99t 足够的熵时,这意味着什么?
我应该在什么场景下使用哪一种?
\n随机性意味着您获得的下一个值不依赖于前一个值,并且您无法预测它。
\n\n这对于计算机来说实际上很难做到,因为计算机几乎只是一个非常快的计算器 - 所以它可以做数学,但每次都会得到准确的答案。你可以用数学做一些接近随机性的事情,称为“伪随机性” - 但它的质量不够高,不足以用于密码学。
\n\n因此,Linux 从各种来源(例如输入事件之间的时间)收集池中的“随机性”。这个池中的随机性“量”就是熵。更少的熵=更少的规则、重复、可预测的模式——你想要尽可能多的熵。当熵变低时,Linux 内核将用熵“填充”其池,但这取决于系统上发生的情况,因为它使用不可预测的硬件事件之间的时间来生成熵。
\n\n如果池为空,/dev/random
将阻塞,或停止提供数据,直到内核获得足够的熵。
/dev/urandom
将继续使用伪随机技术来生成随机数。
现在您已经掌握了基础知识,您可以随时使用 urandom,这就是原因。
\n\n以下是该文章的摘录,解释了为什么它并不重要:
\n\n\n\n但假设您已经获得了这些 \xe2\x80\x9ctrue\xe2\x80\x9d 随机数。你打算用它们做什么?
\n\n您将它们打印出来,装框并挂在客厅的墙上,\n 陶醉在量子宇宙的美丽之中?太好了,我当然明白。
\n\n等等,什么?你正在使用它们吗?出于加密目的?好吧,这会破坏一切,因为现在事情变得有点难看。
\n\n你看,你的真正随机的、受量子效应祝福的随机数被放入一些不太受人尊敬的、现实世界玷污的算法中。
\n\n因为我们使用的几乎所有加密算法都不符合信息论安全性。它们只能提供计算安全性。我想到的两个例外是沙米尔的秘密共享和一次性便笺本。虽然第一个可能是有效的对位(如果您确实打算使用它),但后者完全不切实际。
\n\n但是您知道的所有这些算法,aes、rsa、Diffie-Hellman、椭圆曲线以及您正在使用的所有加密软件包、OpenSSL、GnuTLS、Keyczar、操作系统的加密 API,这些仅在计算上是安全的。
\n\n有什么不同?虽然信息理论上安全的算法是安全的,但那些其他算法不能保证针对具有无限计算能力、尝试所有密钥可能性的对手的安全性。我们仍然使用它们,因为这需要世界上所有计算机加在一起的时间比迄今为止宇宙存在的时间还要长。这就是我们在这里讨论的 \xe2\x80\x9cinsecurity\xe2\x80\x9d 的级别。
\n\n除非某个聪明的人打破了算法本身,使用更少的计算能力。甚至今天也可以实现计算能力。这是每个密码分析师都梦想的大奖:破解 aes 本身、破解 rsa 本身等等。
\n\n所以现在我们已经到了你不信任随机数生成器的内部构建块的地步,坚持使用 \xe2\x80\x9c 真正的随机性 \xe2\x80\x9d\n 而不是 \xe2\ x80\x9cp伪随机性\xe2\x80\x9d。但是,您在算法中使用了那些您非常鄙视的\n \n \xe2\x80\x9ctrue\xe2\x80\x9d 随机数,以至于您一开始就不希望它们靠近您的随机数生成器!
\n\n事实是,当最先进的哈希算法被破坏,或者\n最先进的分组密码被破坏时,\n\n获得\xe2\x80\x9c哲学上的不安全并不重要\xe2\x80\x9d 因为它们而产生随机数。无论如何,你已经没有什么可以安全地使用它们了。
\n\n因此,只需将这些计算安全的随机数用于您的计算安全算法即可。换句话说:使用/dev/urandom。
\n
归档时间: |
|
查看次数: |
954 次 |
最近记录: |