是否应将同一个随机数生成器用于多个加密操作

Should the same Random Number Generator be used for multiple crypto operations

是否推荐实例化 OpenSSL 或 Crypto++ 加密安全随机数生成器,将其播种一次,然后在多个加密操作(如生成密钥、加密、签名等)中顺序使用它?

这是否足够安全,可以在不影响安全性的情况下处理多种用途?

对每个操作使用不同的 PRNG 并以不同的方式播种是否被认为是安全的做法?有什么细微差别需要考虑吗?

保持相同的加密安全 PRNG。我知道改变似乎更有意义,但是在需要高等数学时应用常识是一个很大的错误。永远不要 "roll your own" 加密,或更改方法,或做任何 "improvements",无论它们看起来有多大意义。坚持使用经过验证的方法、经过测试的算法和由声誉良好的人编写的开源代码。

加密安全 PRNG 与用于 Monte Carlo 模拟之类的标准 PRNG 非常不同。它们经过专门设计,即使在采用一长串值时也无法预测。如果您尝试通过切换来 "improve",您很可能会把它搞砸。

另外,好的硬件真正的 RNG 本质上是加密安全的,所以最好的选择是使用像 random.org.

这样的东西。

您可能做的最糟糕的事情就是更改每个键的 PRNG。现在你根本没有得到一个随机序列,而是一个序列,它是你的种子的哈希函数,并且只与你的种子和每个 PRNG 的种子函数一样好。