我正在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. react-native-bcrypt:安全PRNG
- 3. 如何在C++中安全地存储AES加密密钥?
- 4. Excel加密的安全性
- 5. JSON安全和加密
- 6. 安全HIPAA ePHI加密
- 7. JavaScript加密有多安全
- 8. 安全/加密QR码
- 9. 加密安全备份
- 10. 加密有多安全?
- 11. 春季安全加密MD5
- 12. Java加密/安全错误
- 13. 安全XOR加密尝试
- 14. PHP安全登录 - 密码加密
- 15. 安全加密/解密功能
- 16. 使用DPAPI安全加密密钥
- 17. Apache Isis安全登录未安装密码加密服务
- 18. 使用加密函数在mysql数据库中加密安全密码
- 19. 创建一个密码加密存档在一个安全的
- 20. 安全加密/解密Algo在URLS(Rails)中工作
- 21. 如何在android中安全地存储加密密钥?
- 22. 如何安全地在.Net中存储加密密钥?
- 23. 如何在java中安全地存储加密密钥?
- 24. 在DefaultConfiguration中存储加密密钥是否安全?
- 25. 最安全的LAMP加密方法
- 26. 最安全的加密算法
- 27. WCF netTcpBinding Windows安全加密和签名
- 28. 安全的数据加密和验证
- 29. UDP加密 - 简单和分类安全
- 30. 使用加密文件安全
/dev/urandom是*假设*是加密安全的,并且基本上与您建议的一样 - 使用/ dev/random来种子PRNG。你是如何测试质量的? – 2013-03-14 19:36:48