是否建议实例化 OpenSSL 或 Crypto++ 加密安全随机数生成器,为其播种一次,然后在生成 key 、加密、签名等多个加密操作中按顺序使用它?
这是否足够安全,可以在不影响安全性的情况下处理多种用途?
为每个操作使用不同的 PRNG 并以不同的方式播种是否被认为是安全的做法?是否有任何需要考虑的细微差别?
最佳答案
保持相同的加密安全 PRNG。我知道改变似乎更有意义,但当需要高等数学时应用常识是一个很大的错误。永远不要“推出自己的”加密货币,或改变方法,或进行任何“改进”,无论它们看起来有多大意义。坚持使用经过验证的方法、经过测试的算法以及由声誉良好的人编写的开源代码。
加密安全的 PRNG 与用于蒙特卡罗模拟等的标准 PRNG 有很大不同。它们经过专门设计,即使在获取一长串值时也是不可预测的。如果你试图通过切换来“改进”这一点,你很可能会搞砸。
此外,良好的硬件真正的 RNG 本质上是加密安全的,因此如果您有的话,最好的选择是使用 random.org 之类的东西。
您可能做的最糟糕的事情就是更改每个键的 PRNG。现在你得到的根本不是一个随机序列,而是一个种子的哈希函数序列,并且只能与你的种子和每个 PRNG 的种子函数一样好。
关于random - 是否应将同一个随机数生成器用于多个加密操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565259/