2015-06-28 34 views
2

我特别关心iOS和OS X.函数`arc4random`系列是否安全?

如果没有,那么随机密码质量可能的替代品是什么?

+3

您的线程安全担忧是什么?那是不会线程安全的问题呢?字节可能会混合?这将如何导致结果不那么随意? – zaph

+1

@zaph:种族情况导致*未定义的行为*,其中包括各种奇怪的魔法。我能想象的一种情况是两个线程获得完全相同的随机数。如果这是AES-CTR的初始化矢量,那完全破坏安全保证。 –

+1

@zaph如果它不是线程安全的,不仅可以是未定义的行为,从多个线程同时调用非线程安全的PRNG,但它也可能严重扰乱其内部状态并破坏所有未来结果的随机性。另外,如果PRNG没有受到这个影响,它可能仍然会为同时调用返回相同的结果,例如,这会完全搞乱任何类型的多线程蒙特卡洛近似...(尽管在这种使用中它通常更好有一个单独的PRNG实例,每个实例的接收方式不同,以避免需要同步。) – Arkku

回答

3

是,arc4random,arc4random_uniform,arc4random_buf,arc4random_stirarc4random_addrandom是线程安全的。

您可以在source code中看到这一点,并且也得到了Apple开发人员关系人员的确认(但目前我找不到该链接)。