最近我读到了伪随机生成器,我有一些观察:
(预先谢谢:)
发布于 2018-09-29 14:06:22
回答你的一些问题:-
PRNG的安全实现必须阻塞。
CSPRNG是PRNG的加密安全版本。如果有一个很好且未知的种子(对任何攻击者来说),那么CSPRNG就可以永远有效地运行。ChaCha20或基于AES的东西可以生成输出的Oodle字节。
这是一个语义上的区别,但您可以说这类CSPRNG应该在初始化时阻止。他们不应该输出任何东西,除非用足够的熵正确地播种。由于未知熵有时很难获得,在CSPRNG启动之前可能会有延迟。获取128位或256位的未知熵对于某些实现(如IoT设备)来说是很长的,而不需要在TRNG上运行。
然而,重新播种可能很有用,特别是在桌面计算机/server的情况下。这些设备允许其他进程与CSPRNG一起执行。目前有263台运行在我的/dev/urandom设备旁边。他们中的任何人都可能在监视我。定期重新播种是为了减轻CSPRNG内部状态的潜在妥协。如果RNG是在你厨房的IoT冰箱上运行的话,这种重新播种是不必要的。
...how重新播种?每分钟?每小时一次?
这就是诀窍。这将取决于你的环境。CSPRNG 福图纳使用了一种非常复杂的、可变的时间重新播种和池机制。昆蒂斯量子密钥分配系统可能每隔几分钟就重新对常规侧进行一次密钥分配.这应答给出默认的/dev/urandom重发率为1分钟。我看不出为什么物联网葡萄酒冷却器必须在功率周期之间重新分配。我觉得没人能给你一个有意义的转业期。一条建议可能是,如果你能够接触到某种形式的TRNG,你可以尽可能经常地利用它。
虽然考虑到在密码学而不是模拟中,确切的随机流往往与密钥和/或IV密切相关。在协议建立后简单地交换CSPRNG的内部状态就会突然中断会话。协议必须重新制定。这增加了复杂性和计算/network开销,也适用于OpenSSL。你的会议就会结束。
至于进一步的阅读,这个论坛当然。熵和CSPRNG标签下有很多争论。
https://crypto.stackexchange.com/questions/62745
复制相似问题