我在智能手机可以生成多少(kB / s)加密安全熵的背景下考虑这个问题。对于示例应用程序:一个不断生成新加密密钥的VoIP应用程序。
我能想到的事情: - 相机 - 麦克风 - 加速度计 - 磁力计 - 触摸屏 - 呼叫,WiFi,蓝牙等信号强度和时间
显然,每一项都会产生不同数量的信号(可预测的数据)和噪音(需要的熵)但合适的组合应该是好的。
此外,如果任何人对熵量有任何估计,各种来源会在正常情况下产生,而且也会引起兴趣。
答案 0 :(得分:8)
通常的答案是你不需要多少熵。 128位就足够了;一旦你有128个真正的随机位,你就可以在加密安全的伪随机数发生器(PRNG)中使用它们,这将产生你需要的任意数量的随机位,高速率,仅受本地计算能力的限制(在智能手机,PRNG带宽将以每秒兆字节为单位,而不是每秒千字节数。)
连续的熵聚集比科学的,理性的需要更加迷恋。有人说,获得“真实”的随机性可以保护您免受PRNG未来的任何密码分析攻击;但是这个论点只有在你能得到新的均匀随机位时才会成立(在实践中不会发生这种情况:你需要应用一个哈希函数来平滑所收集的“噪音”)和如果你使用随机直接位,而不是加密算法中的键。可以对种子存储进行连续熵收集的更强有力的案例:担心遭到PRNG攻击的攻击者可以查看其内部状态,恢复内部状态,并追溯猜测 的随机位以前发出的。好的PRNG可以防止这种情况发生。至少,您可以每秒重新设置128个新位,这是一个很低的速率。
话虽这么说,如果你需要熵,手机摄像头可能是最好的使用源,因为CCD探测器对热量产生的噪声非常敏感,它输出的带宽非常高。一个基本的手机摄像头单个图片很容易包含一个兆字节的数据,即使手机在一个背投冰箱内,你仍然会有数千比特的噪音(只有一千比特的噪音意味着超过百万像素,99.9%是“完美的”,400美元手机中的一个有点荒谬的概念 - 美国宇航局的工程师无法在空间探测器中做到这一点,而且价格要高出一百万倍。)
所以只需拍一张照片,用任何方便的哈希函数(例如SHA-256)哈希吧,瞧!你有200位熵,你在PRNG中使用。如果你在一段时间后真的对PRNG感到紧张,那就再拍一张快照。