Jam*_*mes 25 security entropy ios
如果它与OS X实现不同,我主要SecRandomCopyBytes对iOS上的实现感兴趣.(我认为它确实如此,因为移动设备比台式计算机拥有越来越多的现成熵源.)
有没有人有关于的信息:
文档没有涵盖这些要点.
我只能找到听到 - 说评论它使用来自无线电,指南针,加速度计和其他来源的信息,但实际上代表Apple的人没有引用.
jm6*_*666 20
/ 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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据iOS文档,SecRandomCopyBytes它只是/dev/randomPRNG 的包装。在Unix的大多数实现中,此文件是阻塞的PRNG。但是,根据此页面和文档,/dev/random在OSX / iOS /dev/urandom上,它实际上不会像大多数其他Unix实现中那样起作用,因为它永远不会阻塞。
由于它不会阻塞,因此您应该能够使用简单的测试快速确定它生成随机数的速率。
/dev/random应该尝试从尽可能多的来源获取熵。因此,完全有理由相信,在iOS上,它使用无线电和加速度计作为熵的来源。但是,我找不到任何来源,并且文档仅声明它来自“内核的随机抖动测量”。
看来,iPhone是目前在这个过程中被FIPS 140-2验证。
| 归档时间: |
|
| 查看次数: |
6462 次 |
| 最近记录: |