ios - SecRandomCopyBytes 有多好?

标签 ios security entropy

我主要对 SecRandomCopyBytesiOS 上的实现感兴趣,如果它与 OS X 实现不同的话。 (我假设它确实如此,因为移动设备比台式计算机拥有越来越多的可用熵源。)

有没有人知道:

  1. SecRandomCopyBytes 从哪里获取熵?
  2. 它可以产生良好随机数的速率是多少?
  3. 如果没有足够的熵可用,它会阻塞还是立即失败?
  4. 它是否符合 FIPS 140-2 标准,或者是否包含在任何其他官方认证中?

文档不包括这些点。

我只能找到听说它使用来自 radio 、指南针、加速度计和其他来源的信息的评论,但没有来自实际代表 Apple 的人的引述。

最佳答案

/dev/random 由来自 SecurityServer 的熵提供。 SecurityServer 从内核事件跟踪 (kdebug) 收集熵。该方法在“Mac OS X Internals. A Systems Approach”一书中进行了描述。您可以在线阅读相关信息,例如 http://flylib.com/books/en/3.126.1.73/1/

熵收集的源代码在这里:http://www.opensource.apple.com/source/securityd/securityd-40600/src/entropy.cpp

在 xnu-1504.9.37(撰写本文时 OS X 的最新版本)中,内核熵缓冲区在 kernel_debug_internal() 中填充,仅使用计时信息。这是写入熵缓冲区的唯一位置。

if (entropy_flag && (kdebug_enable & KDEBUG_ENABLE_ENTROPY)) {
    if (kd_entropy_indx < kd_entropy_count) {
        kd_entropy_buffer [ kd_entropy_indx] = mach_absolute_time();
        kd_entropy_indx++;
    }

    if (kd_entropy_indx == kd_entropy_count) {
        /*
         * Disable entropy collection
         */
        kdebug_enable &= ~KDEBUG_ENABLE_ENTROPY;
        kdebug_slowcheck &= ~SLOW_ENTROPY;
    }
}

关于ios - SecRandomCopyBytes 有多好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832941/

相关文章:

r - 如何在R中拟合信息(负熵)〜大小的回归?

iOS开发证书发行

ios - mvc ios 中的多个模型类

ios - 如何获得相机Objective-C的分辨率?

tomcat - Tomcat 5.5 上的 struts2 应用程序 : Basic user/pass security?

c - 如何通过按位运算尽可能精确地计算C中整数的log2

iphone - 如何将自定义数组保存/重新加载到 plist

javascript - 在 Html 中转义

java - 将参数传递给我的 login.jsp

训练 CNN 时大输入的 Tensorflow 熵为 NaN