Openssl 使用RAND_load_文件和RAND_write_文件的最佳实践是什么

Openssl 使用RAND_load_文件和RAND_write_文件的最佳实践是什么,openssl,Openssl,在使用openssl时,我被教导使用RAND\u load\u file和RAND\u write\u file,以确保库始终使用良好的熵。但是,如果由于文件不存在,随机加载文件失败,我需要从其他地方获取熵。让我们假设我使用/dev/random或/dev/urandom来实现这一点。在考虑到我从“不太好的来源”获得初始熵之前,即使文件不存在,也使用RAND_write_file是否是一种良好的做法例如/dev/uradom?我做了一些研究,并使用了在中找到的片段和通用资源,如我的结论是,一个好

在使用openssl时,我被教导使用
RAND\u load\u file
RAND\u write\u file
,以确保库始终使用良好的熵。但是,如果由于文件不存在,随机加载文件失败,我需要从其他地方获取熵。让我们假设我使用/dev/random或/dev/urandom来实现这一点。在考虑到我从“不太好的来源”获得初始熵之前,即使文件不存在,也使用
RAND_write_file
是否是一种良好的做法例如/dev/uradom?

我做了一些研究,并使用了在中找到的片段和通用资源,如我的结论是,一个好的做法是始终使用
随机写入文件。从这本书中,我发现应该始终使用/dev/random,其次是使用
RAND\u load\u file
。这就得出结论,即使我的应用程序这次无法读取文件,我也应该编写它以供我的应用程序或其他应用程序将来使用

这导致了一种特殊情况,即文件不存在,/dev/random不可用。如果我只使用/dev/uradom,我的种子可能会很弱,如果我使用
RAND\u write\u file
的话,理论上种子会很弱。我猜在这一点上,这意味着如果你真的有妄想症,你永远不想写这个文件,因为这将是错误的种子设定的结果。但是,如果您第一次知道攻击者不在场,您应该可以,因为攻击者不知道发生了什么(即,文件是否具有良好或可预测的熵)。此外,攻击者无法知道不同应用程序使用了多少次
RAND\u write\u文件


所以我想这取决于你周围的偏执狂;使用
RAND\u write\u文件
绝对是一种良好的公民身份,但如果文件不包含良好的熵,你也不想愚弄其他应用程序。

我做了一些研究,并使用了在中找到的片段和一般来源,比如我的结论是,一个好的做法是始终使用
RAND\u write\u文件
。从这本书中,我发现应该始终使用/dev/random,其次是使用
RAND\u load\u file
。这就得出结论,即使我的应用程序这次无法读取文件,我也应该编写它以供我的应用程序或其他应用程序将来使用

这导致了一种特殊情况,即文件不存在,/dev/random不可用。如果我只使用/dev/uradom,我的种子可能会很弱,如果我使用
RAND\u write\u file
的话,理论上种子会很弱。我猜在这一点上,这意味着如果你真的有妄想症,你永远不想写这个文件,因为这将是错误的种子设定的结果。但是,如果您第一次知道攻击者不在场,您应该可以,因为攻击者不知道发生了什么(即,文件是否具有良好或可预测的熵)。此外,攻击者无法知道不同应用程序使用了多少次
RAND\u write\u文件

所以我想这取决于你周围的偏执狂;使用
RAND\u write\u file
绝对是一种良好的公民身份,但如果文件不包含良好的熵,您也不想欺骗其他应用程序