如何在 OpenSSL 中正确播种 PRNG?

信息安全 密码学 随机的 C
2021-09-08 03:51:11

我正在使用 Ubuntu 创建一个在移动节点上运行的应用程序,它不会为 /dev/random 生成足够的熵字节,并且并不总是在 Internet 上保持连接以使用典型的套接字熵收集解决方案,例如 EGD。

有没有什么好的工具可以在我的情况下收集所需的熵?

澄清一下,尝试通过 /dev/random获取 1024 字节(这似乎是OpenSSL 书籍的推荐值)花了将近两个小时......

1个回答

正确的方法是使用/dev/urandom,而不是/dev/random很少有密码算法在/dev/random理论上比它更好/dev/urandom(这将是信息论安全算法,而不是像 AES 或 RSA 这样的普通算法)。/dev/urandom产生加密质量的随机性,前提是它可以在某些时候获得至少 20 个字节左右的“真正随机性”,这是操作系统在安装过程中处理的。/dev/urandom很高兴地将初始种子扩展到兆字节的伪 alea 中,这在计算上与真正的随机性(这就是你所需要的)没有区别,并且它永远不会阻塞。