2009-12-11 45 views
1

當使用openssl時,我被教導使用RAND_load_fileRAND_write_file來確保該庫在任何時候都使用良好的熵。但是,如果RAND_load_file因文件不存在而失敗,我需要從其他位置獲取熵。假設我使用/ dev/random或/ dev/urandom來執行此操作。在考慮從「不太好的源代碼」(例如/ dev/urandom)獲得初始熵之前,即使該文件不存在,是否也使用RAND_write_file也是一種好的做法?關於使用RAND_load_file和RAND_write_file有什麼好的做法

回答

1

我做了一些研究和使用this book發現的碎片,通用來源,如this one我的結論是,一個好的做法是始終使用RAND_write_file。從我得到的那本書中應該總是使用/ dev/random,其次是使用RAND_load_file。由此得出結論,即使我的應用程序無法讀取文件,我應該將其寫入以備將來由我的應用程序或其他應用程序使用。

這會導致文件不存在且/ dev/random不可用的特殊情況。如果我只使用/ dev/urandom,我的種子可能會很弱,如果我使用RAND_write_file,那麼種子理論上就會變弱。我想在這一點上,這意味着如果你真的偏執狂,你永遠不想寫這個文件,因爲這將是糟糕播種的結果。但是,如果您知道攻擊者第一次沒有出現,那麼攻擊者無法知道發生了什麼(即文件是否具有良好或可預測的熵),因此您應該確定這是第一次。另外,攻擊者無法知道RAND_write_file已被多個應用程序使用過多少次。

所以我想這取決於你的環境中的偏執狂;使用RAND_write_file是最好的公民身份,但您不想欺騙其他應用程序,即該文件包含良好的熵,如果不是。

相關問題