我应该在多长时间内随机移动鼠标以生成加密密钥?

信息安全 真加密
2021-08-26 05:21:42

在创建 Truecrypt 卷时,有一个向导页面,用户被告知随机移动鼠标(越长越好)以生成熵,这将显着增加加密密钥的强度。

我感觉在移动鼠标一段时间后按键随机性的增加将不再显着,但我不知道如何获得一个数量级。

换句话说,如果我移动鼠标 3 分钟而不是 1 分钟,加密密钥真的会更强吗?你会移动鼠标多长时间?

谢谢。

3个回答

主机中PRNG以硬件事件为食以实现随机性。当您移动鼠标时,它会向 PC 发送“移动事件”,其中“移动事件”就像“嘿,PC,我刚刚向上移动了 0.58 厘米,向左移动了 0.31 厘米”。典型的速率是每秒 15 次移动事件(游戏鼠标的速率更高)。在操作系统方面,每个方向的移动量,以及接收事件的确切时间,将被用作“熵”。

熵的好处在于它只是加起来,只要你使用加密哈希函数将它混合到熵池中。操作系统就是这样做的。大约 128 位的熵就足够了,但偏执狂会想超越一点,如果只是为了在我的熵比你的长的游戏中获胜。可以假设(非常保守的估计)每个移动事件都会产生至少一个熵(这意味着如果攻击者试图预测下一个移动事件的时间和数量,他只会展示两个同样可能的事件)。因此,您每秒将拥有至少 15 位的熵,即在不到9 秒的时间内获得 128 位的熵。

因此,不需要折磨你的鼠标超过十几秒。移动鼠标一分钟已经完全过分了。

(由于操作系统从启动时就开始收集熵,并且依赖于更多的硬件事件而不仅仅是鼠标,它实际上已经拥有比需要更多的熵,整个跳舞鼠标的事情更多的是仪式和心理而不是科学;它让你感到安全不仅仅是它实际上增加了真正的安全性。)

1. 背景

计算机无法生成真正的随机数,它们按照你告诉它们思考的方式思考,它们不能自己想出随机数。为加密方案生成密钥只是一种数学运算。它需要一个输入,它给出一个输出。

PRNG(X) = Y

只要你提供相同的X,你总是会得到相同的Y记住方程式。

2.熵

所以我们不能得到真正的随机Y,但我们可以得到下一个最好的东西;再现性的机会较低。因此,再次提出相同问题的可能性越小X,“随机”就越多Y这个过程称为增加熵。

3.TrueCrypt

TrueCrypt 增加熵的方式是收集不太可能再次重复的信息,例如时间戳/dev/randomLinux/Mac OS X 中的时间戳、Windows 中的CryptoAPI、网络统计信息以及鼠标和键盘。

4.鼠标移动

最后,以上所有内容与鼠标移动有什么关系?我想你现在已经想通了。移动鼠标的次数越多,熵的增加就越多。移动鼠标 1 秒会有一定的熵,移动 10 秒肯定会有更多的熵。但是多少熵实际上就足够了?对我们来说幸运的是,Thomas Pornin 对数字进行了计算,结果证明 128 位就足够了。

编辑:因此,同样根据 Thomas的说法,9 秒足以生成 128 位熵。

这个问题并不能真正回答,因为它取决于您可以随机移动鼠标的程度。如果你能真正随机移动鼠标 1 分钟,那可能比上下移动鼠标 20 分钟要好得多。问题是人们真的不擅长随机移动,而且非常善于发现和制作模式。因此,您的动作很可能不是完全随机的,并且如果某种类型的模式形成,那么更长的时间可能会增加很少甚至可能会带走一些安全性,具体取决于他们的算法如何工作。

许多这样的算法只是将运动总结为加密伪随机数生成器的随机种子,然后使用该 PRNG 的输出来生成密钥。