OpenSSL RAND_poll '足够好'

信息安全 随机的 C
2021-08-22 08:57:06

我们使用 OpenSSL 来生成 IV 和其他随机数据。我们使用RAND_polland 来初始化它,在 Windows 上,RAND_screen.

问题是,如果这些方法生成的种子足够好(RAND_screen至少在我看来是这样)。另外,我想知道究竟是如何RAND_poll工作的,因为如果它的行为因平台而异,我找不到太多关于它的文档,就像RAND_screen仅在 Windows 上可用的那样。

1个回答

RAND_bytes()RAND_poll()如果尚未至少完成一次,则自动调用。因此,您不必自己调用它。RAND_poll()以操作系统提供的内容为食:在 Linux、Solaris、FreeBSD 和类似的类 Unix 系统上,它将使用/dev/urandom(或者/dev/random如果没有/dev/urandom)获取加密安全的初始种子;在 Windows 上,它会调用CryptGenRandom()相同的效果。

RAND_screen()由 OpenSSL 提供,只是为了向后兼容(很多)可能调用它的旧代码(那是OpenSSL 使用正确的基于操作系统的种子初始化之前)。

因此,处理RAND_poll()and的“正常”方式RAND_screen()是两者都不调用。只需使用RAND_bytes()并快乐。