返回

迷雾重重的随机数产生之谜

见解分享

在过去的几年中,关于/dev/urandom和/dev/random的安全性的争论不休。一些人认为/dev/urandom不安全,而另一些人则认为它对于大多数目的来说是足够安全的。在本文中,我们将探讨/dev/urandom和/dev/random之间的差异,并确定哪种设备对于加密用途更安全。

/dev/urandom与/dev/random

/dev/urandom和/dev/random都是类Unix操作系统中的特殊文件,用于生成随机数。这两个设备之间最大的区别在于,/dev/urandom总是可以生成随机数,而/dev/random则在熵池耗尽时会阻塞。熵池是操作系统收集随机数据的存储库,用于生成随机数。当熵池耗尽时,/dev/random会阻塞,直到有更多随机数据可用为止。

熵池

熵池是一个存储随机数据的存储库,用于生成随机数。熵池中的数据来自各种来源,包括键盘输入、鼠标移动和网络流量。熵池越大,生成随机数的质量就越好。

/dev/urandom的安全性的流言终结

/dev/urandom的设计方式使其在没有熵池的情况下也可以生成随机数。它使用一种称为伪随机数生成器的算法来生成随机数。伪随机数生成器使用一个种子值来生成随机数序列。种子值是一个数字,用于启动伪随机数生成器。种子值越随机,生成的随机数序列就越好。

/dev/urandom使用来自熵池的种子值。当熵池耗尽时,/dev/urandom会使用当前时间作为种子值。当前时间不是一个非常随机的种子值,因此使用/dev/urandom生成的随机数序列可能会被预测。

/dev/random的安全性的流言终结

/dev/random的设计方式使其在熵池耗尽时会阻塞。这使得它比/dev/urandom更安全,因为/dev/urandom可以使用当前时间作为种子值来生成随机数。然而,/dev/random的缺点是它在熵池耗尽时会阻塞。这可能会导致应用程序性能下降。

哪种设备更安全?

对于加密用途,/dev/random更安全。/dev/random在熵池耗尽时会阻塞,这使得它比/dev/urandom更安全。然而,/dev/random的缺点是它在熵池耗尽时会阻塞。这可能会导致应用程序性能下降。

对于大多数其他目的,/dev/urandom足够安全。/dev/urandom总是可以生成随机数,并且生成随机数的速度比/dev/random快。

结论

/dev/urandom和/dev/random都是类Unix操作系统中的特殊文件,用于生成随机数。/dev/urandom总是可以生成随机数,而/dev/random则在熵池耗尽时会阻塞。对于加密用途,/dev/random更安全。然而,/dev/random的缺点是它在熵池耗尽时会阻塞。这可能会导致应用程序性能下降。对于大多数其他目的,/dev/urandom足够安全。