【发布时间】:2015-06-28 02:58:13
【问题描述】:
我特别关心 iOS 和 OS X。
如果不是,那么随机性的加密质量有哪些可能的替代品?
【问题讨论】:
-
您的线程安全问题是什么?那不是线程安全怎么会导致问题呢?字节可能会混合?这将如何导致结果的随机性降低?
-
@zaph:竞争条件导致未定义的行为,其中包括各种奇怪的魔法。我可以想象的一种情况是两个线程得到完全相同的随机数。如果这是 AES-CTR 的初始化向量,则完全违背了安全保证。
-
@zaph 如果它不是线程安全的,那么从多个线程同时调用非线程安全的 PRNG 不仅可能是未定义的行为,而且还可能严重破坏其内部状态并中断所有未来结果的随机性。此外,如果 PRNG 没有受到此影响,它可能仍会为同时调用返回相同的结果,这将完全搞乱任何类型的多线程蒙特卡罗近似,例如……(尽管在这种使用中它通常更好为每个线程创建一个单独的 PRNG 实例,每个实例的种子都不同,以避免需要同步。)
-
例如,即使我们假设 PRNG 内部状态的读/写是原子的,典型的函数会首先读取内部状态,操作它以产生下一个状态,将其写入内部状态,然后根据状态返回结果。如果没有同步,如果第二个调用在第一个调用有时间写入下一个状态之前进入,则两个调用都可以读取相同的内部状态;它们会产生相同的结果,这会在频繁重复时产生非常非随机的模式。
标签: ios macos unix random cryptography