建议实例化OpenSSL或Crypto ++加密安全随机数生成器,播种一次,并在多个加密操作(如生成密钥,加密,签名等)中按顺序使用它吗?
这是否足够安全,可以在不影响安全性的情况下处理多种用途?
对每项操作使用不同的PRNG并以不同方式播种它们是否安全?是否应该考虑细微差别?
答案 0 :(得分:4)
使用相同的加密安全 PRNG。我知道改变似乎更有意义,但是当需要更高的数学时,应用常识是一个很大的错误。从来没有"滚动你自己"加密,或改变方法,或进行任何改进"无论他们多么有意义。坚持使用经过验证的方法,经过测试的算法以及由具有良好声誉的人员编写的开源代码。
密码安全PRNG与用于蒙特卡罗模拟之类的标准PRNG非常不同。它们经过专门设计,即使在采用长序列值时也是不可预测的。如果你试图改善"通过切换,你更有可能搞砸了。
此外,良好的硬件真正的RNG本质上是加密安全的,所以如果你拥有它,最好的选择是使用像random.org这样的东西。
你可能做的最糟糕的事情是改变每个键的PRNG。现在你根本没有得到一个随机序列,而是一个序列,它是你种子的哈希函数,只有你的种子和每个PRNG的播种功能一样好。