- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在智能手机可以生成多少(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/
我们有一个 WPF 应用程序,允许用户下载加密内容,并且我们希望提供离线解密该内容的功能。我的想法是下载 key 并使用 DPAPI 存储它们,但我在使用熵参数时遇到了问题。 是否有任何方法可以生成熵
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
我使用决策树算法来解决二元分类问题,目标是最大限度地减少分类的误报(最大化阳性预测值)(诊断工具的成本非常高) 。 有没有办法在基尼/熵分割标准中引入权重来惩罚误报错误分类? Here例如,修改后的基
我想检查我的 std::random_device 实现是否具有非零熵(即非确定性),使用 std::random_device::entropy() 函数。然而,根据至cppreference.co
我在 tensorflow_decision_forests 文档 ( https://github.com/tensorflow/decision-forests ) ( https://www.t
我是一名优秀的程序员,十分优秀!