當使用openssl時,我被教導使用RAND_load_file
和RAND_write_file
來確保該庫在任何時候都使用良好的熵。但是,如果RAND_load_file
因文件不存在而失敗,我需要從其他位置獲取熵。假設我使用/ dev/random或/ dev/urandom來執行此操作。在考慮從「不太好的源代碼」(例如/ dev/urandom)獲得初始熵之前,即使該文件不存在,是否也使用RAND_write_file
也是一種好的做法?關於使用RAND_load_file和RAND_write_file有什麼好的做法
1
A
回答
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
是最好的公民身份,但您不想欺騙其他應用程序,即該文件包含良好的熵,如果不是。
相關問題
- 1. 關於Linux上的共享庫有什麼好的做法?
- 2. 關於使用MongoDB和Linq。 Norm有什麼更好或更糟?
- 3. 關於jQuery有什麼好玩的?
- 4. 存儲庫和業務對象有什麼好的做法?
- 5. 關於區分UTC和GMT的常見做法是什麼?
- 6. 什麼是最好的做法或方法(使用.NET)
- 7. 關於在C++項目中使用emacs有什麼好建議?
- 8. 關於捕獲異常良好做法
- 9. 被拒絕的應用有什麼更好的做法?
- 10. 什麼是更好的做法以下
- 11. 爲什麼-compile(export_all)不好的做法?
- 12. 有什麼更好的做法來重用where查詢
- 13. 爲什麼關閉Angular的良好做法? (或一般)?
- 14. 使用jQuery添加類的更好的做法是什麼?
- 15. 關於創建和使用JS附加元素的良好做法
- 16. 使用wait()和signal()有什麼好處?
- 17. 使用Cloudfront和Cloudflare有什麼好處?
- 18. 爲什麼從模塊導入*使用不好的做法?
- 19. 關於CGI的好文檔是什麼?
- 20. Grails中的CONTENT i18n有什麼好的做法
- 21. JSON中的類提示有什麼好的做法?
- 22. 有沒有關於使用buildout和pip的好教程?
- 23. 在OOP中,關於在課堂上使用「this」的最佳做法是什麼?
- 24. Mysql,sqlite和blob數據,什麼是好的做法?
- 25. 複合主鍵和自動增量?什麼是好的做法?
- 26. 有什麼更好的方法做了以下程序(C#3.0)
- 27. 有什麼更好的做法?檢索對象或object.id?
- 28. 對Perl特殊變量有什麼好的做法?
- 29. 禁止帳戶時有什麼好的做法?
- 30. 編寫Javascript/jQuery代碼時有什麼好的做法?