智能手机上有哪些好的熵源可用?

5

我考虑的是智能手机可以生成多少(kB/s)密码学安全熵的情况。举个例子,一个不停生成新加密密钥的VoIP应用程序。

以下是我能想到的一些可能的来源: - 摄像头 - 麦克风 - 加速度计 - 磁力计 - 触摸屏 - 通话、WiFi、蓝牙等信号强度和时间信息。

显然,每个来源会产生不同数量的信号(可预测数据)和噪声(所需熵),但适当地结合起来应该很好。


此外,如果有人对各种来源在正常条件下产生的熵的数量有任何估计,那也会很有帮助。


2
那听起来像是一个不错的硕士项目 ;) - caf
1个回答

9
通常的答案是你不需要太多的熵。128位就足够了;一旦你有了128个真正随机的比特,你可以使用一个密码学安全的伪随机数生成器(PRNG),它将产生任意数量的随机比特,速度很快,仅受本地计算能力限制(在智能手机上,PRNG带宽将以兆字节每秒为单位,而不是千字节每秒)。
持续的熵收集更像是一种迷信,而不是科学和理性的需求。有人说获得“真正”的随机性可以保护你免受未来对PRNG的密码分析攻击;但这个论点只有在你能够获得新鲜的均匀随机比特(实际上并不会发生:你需要应用哈希函数来平滑收集到的“噪声”)并且直接使用随机比特而不是作为加密算法中的密钥时才成立。关于种子存储,可以更有力地提出持续熵收集的理由:担心攻击者获取PRNG后可以查看其内部状态,恢复内部状态,并回溯猜测之前发射的随机比特。好的PRNG可以防止这种情况发生。至少,你可以每秒重新种植128个新的比特,这是一个较低的速率。
话虽如此,如果你需要熵,手机相机可能是最好的来源,因为CCD探测器对产生的噪声非常敏感,并且输出数据具有非常高的带宽。一个基本的手机相机单张图片很容易包含价值一兆字节的数据,即使手机在一个漆黑的冰箱里,你仍然会有数千位的噪声(只有一千位的噪声意味着在百万像素中,99.9%是“完美的”,这在一个400美元的手机中是一个有些荒谬的想法——NASA的工程师在价值百万倍的太空探测器中也无法做到这一点)。
所以只需拍照,用任何方便的哈希函数(例如SHA-256)进行哈希,就可以得到256位的熵,然后将其用于PRNG。如果你真的对PRNG感到紧张,过一段时间后再拍一张快照即可。

1
我同意在单个CCD图像中应该有几百位的噪声。然而,如果没有进一步的信息,我不确定是否愿意相信图像的条件熵在连续的图像中会那么高,或者如果有人获取物理相机进行分析,噪声是否真的那么不相关?随时间推移,噪声真的那么不相关吗? - Jack Lloyd
一个给定的CCD具有不均匀的基线:这是从探测器中获取到的图像,当没有任何光线时。该基线往往随时间保持恒定(或仅缓慢变化)。使用CCD的电路和软件应该已经对其进行了处理。然而,还存在一些低幅噪声,这就是我所说的。 - Thomas Pornin
一个解决方案是在将图像添加到熵池之前积极地“压缩”图像。普通的压缩格式可能不太适合,但可能是包含熵的良好估计器。 - BCS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接