我正在C中產生非常大的隨機整數我發現/ dev/random是一個很好的來源,但它會阻塞熵池是否用盡。/dev/urandom看起來像是下一個goto,但隨機性的質量並不如此。有沒有一種方法可以使用/ dev/random中的整數來種子PRNG,以便我不必從/ dev/random中讀取數據?我正在尋找密碼安全的PRNG,雖然不是長期的。加密安全PRNG在C
回答
使用/dev/random
的整數來播種PRNG正是/dev/urandom
所做的。除非你有隨意的弱點證據,否則你正在重新發明輪子。
儘管urandom確實比/dev/random
弱,但是您提出的方案在完全相同的情況下很脆弱,所以與僅使用urandom相比,它沒有什麼好處。 urandom具有額外的好處,它可以連續混合新的熵到生成的數字中,因爲新的熵可以從底層硬件獲得。 FreeBSD的例子只有有一個urandom風格的設備。
最後,urandom已經存在很多年了,其來源已經由安全專家進行了審查,而替換者可以自行推出。
謝謝,我會使用urandom。 – JessMcintosh 2013-03-14 22:24:40
這可能取決於平臺。有些使用加密安全的PRNG已經用於/ dev/random。例子:FreeBSD,OpenBSD,OS X.你也可以看看Yarrow,Fortuna,ISAAC(基於RC4)。 如果你想更多地研究它,這是一個很好的開始:http://csrc.nist.gov/groups/ST/toolkit/index.html
如果你只是想要一個大的熵池,你可以做一些基本的事情,比如從噪聲數據流中獲取數據塊的SHA1(例如視頻或繁忙環境的音頻)。
那麼問題就變成了你想要的熵多少,以及多快?因爲「大數字」可能意味着任何事情,從一個項目的隨機比特的Gb到「我需要100k /秒的恆定熵熵」,這項服務「
如果你有硬件來做它會更好。如果它支持加密隨機數生成,請檢查您的CPU或任何其他模塊。在加密方面,/ dev/random和/ dev/urandom都不安全。您不應該將它們用作應用程序中的源代碼。
- 1. 加密安全PRNG(僞隨機數生成器)
- 2. 什麼是一個好的,快速的PRNG(非加密安全)
- 3. react-native-bcrypt:安全PRNG
- 4. 如何在C++中安全地存儲AES加密密鑰?
- 5. 密碼加密/解密彈簧安全
- 6. ASP.NET web.config加密安全
- 7. 安全/加密QR碼
- 8. Web Socket安全URL加密
- 9. Excel加密的安全性
- 10. Android安全 - 加密數據
- 11. 加密有多安全?
- 12. JSON安全和加密
- 13. 加密WCF傳輸安全
- 14. JavaScript加密有多安全
- 15. 春季安全加密MD5
- 16. 加密安全備份
- 17. 安全XOR加密嘗試
- 18. iphone安全數據加密
- 19. 安全HIPAA ePHI加密
- 20. 彈簧安全性_密碼加密
- 21. 如何安全地加密密碼
- 22. random.randint生成加密安全密鑰
- 23. 使用DPAPI安全加密密鑰
- 24. PHP安全登錄 - 密碼加密
- 25. 安全加密/解密功能
- 26. 在iOS上用C++獲取加密安全的隨機數
- 27. 我的加密密鑰加密方法是否安全?
- 28. 密碼安全
- 29. Apache Isis安全登錄未安裝密碼加密服務
- 30. 使用加密函數在mysql數據庫中加密安全密碼
/dev/urandom是*假設*是加密安全的,並且基本上與您建議的一樣 - 使用/ dev/random來種子PRNG。你是如何測試質量的? – 2013-03-14 19:36:48