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

标签 mobile cryptography

我在智能手机可以生成多少(kB/s)加密安全熵的背景下思考这个问题。举一个示例应用程序:一个不断生成新加密 key 的 VoIP 应用程序。

我能立即想到的事情: - 相机 - 麦克风 - 加速度计 - 磁力计 - 触摸屏 - 通话、WiFi、蓝牙等的信号强度和时间

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

<小时/>

此外,如果有人对正常条件下各种来源产生的熵量有任何估计,这也会引起人们的兴趣。

最佳答案

通常的答案是,您不需要需要太多熵。 128位就够了;一旦您拥有 128 个真正的随机位,您就可以在加密安全的伪随机数生成器 (PRNG) 中使用它们,该生成器将以高速率生成您需要的任意数量的随机位,仅受本地计算能力的限制(在智能手机,PRNG 带​​宽将以兆字节每秒为单位,而不是千字节每秒)。

连续的熵收集更多的是一种迷恋,而不是科学、理性的需要。有人说,获得“真实”随机数可以保护您免受 future PRNG 上任何密码分析漏洞的影响;但只有当您可以获得新鲜的均匀随机位时(这在实践中不会发生:您需要应用哈希函数来平滑收集的“噪声”),并且如果您使用随机位,该论点才成立。位直接,而不是作为加密算法中的 key 。关于种子存储,可以提出连续熵收集的更强有力的理由:担心攻击者掌握了 PRNG,可以查看其内部结构,恢复内部状态,并追溯性地猜测的随机位。之前发出的。好的 PRNG 可以防止这种情况发生。至少,您每秒可以重新播种 128 个新位,这是一个很低的速率。

话虽这么说,如果您需要熵,手机摄像头可能是最好的来源,因为 CCD 探测器对热产生的噪声非常敏感,并且它输出的数据具有非常高的带宽。一张基本的手机摄像头单张图片很容易包含一兆字节的数据,而且,即使手机放在后倾式冰箱内,您仍然会有数千位的噪声(只有一千位的噪声意味着超过万像素,99.9% 是“完美”,这对于 400 美元的手机来说有点可笑——NASA 工程师无法在成本高出一百万倍的太空探测器中做到这一点)。

所以只需拍一张照片,用任何方便的哈希函数(例如 SHA-256)对其进行哈希处理,瞧!你有 256 位的熵,可以在 PRNG 中使用。如果一段时间后您真的对 PRNG 感到紧张,只需再拍一张快照即可。

关于mobile - 智能手机上有哪些好的熵源可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4504654/

相关文章:

java - 符合 FIPS 140-2 的随机数生成器 - Java

node.js - 解密有内容的加密pdf后,解密结果为空

c# - 数字签名如何保证消息已由 'Alice' 发送

android - Scala Comet 和移动应用程序

apache-flex - Flex 防止软键盘关闭

html - 为什么这个 CSS 在智能手机上显示时会产生如此巨大的布局?

java - Java keystore 中的 Lazysodium key

user-interface - 如何在React Native中实现卡片扩展到模态?

mobile - 在 AIR 中使用 GPS 的示例

javascript - 种子 PRNG 的安全性