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