代码之家  ›  专栏  ›  技术社区  ›  Cellfish

关于使用RAND U LOAD U文件和RAND U WRITE U文件的良好实践是什么?

  •  1
  • Cellfish  · 技术社区  · 15 年前

    在使用OpenSSL时,我已经学会了使用 RAND_load_file RAND_write_file 以确保库始终使用良好的熵。但是,如果 兰德加载文件 失败,因为文件不存在,我需要从其他地方获得熵。假设我使用/dev/random或/dev/urandom来完成此操作。使用是个好习惯吗 兰德尔写文件 同样,即使在考虑到我从一个“不太好的源”(如/dev/urandom)获得初始熵之前文件不存在?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Cellfish    15 年前

    我做了一些研究并使用了 this book 和一般来源,比如 this one 我的结论是,一个好的做法是经常使用 RAND_write_file . 我从书中得知,应该始终使用/dev/random,其次是使用 RAND_load_file .这就得出结论,即使我的应用程序这次不能读取该文件,我也应该编写它以供将来应用程序或其他应用程序使用。

    这导致了文件不存在和/dev/random不可用的特殊情况。如果我只使用/dev/urandom,我的种子可能很弱,如果我使用 兰德尔写文件 理论上种子是弱的。我想在这一点上,这意味着如果你真的是偏执狂,你永远不想写文件,因为这将是错误播种的结果。但是,如果您知道攻击者第一次不在,那么您应该没事,因为攻击者不知道发生了什么(即文件是否具有良好的或可预测的熵)。同样,攻击者也不知道 rand_写入文件 已被不同的应用程序使用。

    所以我想这取决于你环境中的偏执狂;使用 兰德尔写文件 显然是很好的公民身份,但是如果文件不包含很好的熵,您不想欺骗其他应用程序。