RANDFILE
OpenSSL 配置文件(特别是该ca
部分)中的目的是什么?手册页条目config
仅将其描述为:
启动时指定的文件被加载到随机数生成器中,并在退出时将写入 256 个字节。
但我不知道 OpenSSL 是如何使用它的。OpenSSL 是否使用它并且仅使用它来实现随机性,或者它只是从其他地方获取的随机性盐?我是否需要每次都包含它,如果需要,其中应该包含多少数据?
附录
openssl rand
将输出保存到该文件是否会带来任何安全优势?
RANDFILE
OpenSSL 配置文件(特别是该ca
部分)中的目的是什么?手册页条目config
仅将其描述为:
启动时指定的文件被加载到随机数生成器中,并在退出时将写入 256 个字节。
但我不知道 OpenSSL 是如何使用它的。OpenSSL 是否使用它并且仅使用它来实现随机性,或者它只是从其他地方获取的随机性盐?我是否需要每次都包含它,如果需要,其中应该包含多少数据?
附录
openssl rand
将输出保存到该文件是否会带来任何安全优势?
RANDFILE
OpenSSL 使用它来存储来自内部跨调用使用的 CSPRNG 的一些种子数据(256 字节)。这在进行频繁 SSL 调用的低熵系统(即嵌入式设备)上特别有用。
该文件是通过函数加载的RAND_load_file
。查看源代码,我们看到文件的内容通过 被添加到 RNG 中RAND_add
,因此它们是 RNG 中任何现有熵的补充。
由于 RNG 在初始化时从系统特定的熵源加载了一些熵,因此这似乎RANDFILE
绝对不是用于 RNG 状态的唯一熵源。
将 openssl rand 的输出保存到该文件是否会带来任何安全优势?
这基本上就是 OpenSSL 在说“在退出时将写入 256 个字节”时所做的事情。如果您想从最初的某些东西中播种,我建议您/dev/urandom
,如下所示:
dd if=/dev/urandom of=randfile bs=256 count=1