如果我要给某人两个 4096 位密钥,并说一个是在具有非常低可用熵的 Linux 操作系统中生成的,而另一个是在具有足够熵的 Linux 操作系统中生成的。
可以区分两者吗?他们能对低熵生成的密钥进行任何类型的攻击吗?
我问这个主要是因为我经常在 VM 上生成大量 4096 位密钥/证书/DH 参数等等,而我对此知之甚少,因为我想要使用大量可用的熵,因为它使预测事情变得更加困难。
我做了一些关于为什么随机性很重要的搜索,我发现了一篇博客文章(为什么安全系统需要随机数),它试图解释为什么随机性很重要,并描述了流行的编程和技术网站 Hacker News 的黑客行为:
并且所有的伪随机数生成器都需要从某个地方开始;他们需要播种,这就是 Hacker News 失败的地方。随机数生成器以最后一次启动 Hacker News 软件时的时间(以毫秒为单位)为种子。通过一些仔细的工作,攻击者设法让 Hacker News 崩溃,然后可以在大约一分钟的窗口内预测它何时重新启动。通过它,他能够预测在用户登录时分配给用户的唯一 ID,因此可以冒充他们。
好的,我明白了,但这是否仍然需要攻击者进行主动攻击而不仅仅是被动攻击?我的意思是你无法获得某人的流量并说“嘿,这个 Diffie-Hellman 参数/SSH 密钥似乎是用低熵生成的,所以让我们攻击它们吧”,对吧?
所以假设我刚刚生成了一个低熵的密钥或其他东西,但是攻击者无法发起主动攻击,并且目前不知道使用了哪个随机选择的预主密钥,那又如何?
我仍然觉得我无法真正表达我在说什么,所以我将再添加一个示例:
以下是使用 WiFi 的计算机如何使用流行的 WPA2 协议与接入点建立安全连接的部分内容:
- 接入点生成一个随机随机数并将其发送到计算机。
- 计算机生成一个随机数并将其发送到接入点。
- 接入点和计算机从那里继续使用这些随机 nonce 值来保护连接。
没关系。说我是中间人,你被动地观察流量,结果路由器的熵用完了,那又怎样?我怎么可能知道这一点,甚至考虑发起攻击以引起新的握手,并从他们那里尝试预测使用的随机 nonce 从而破坏加密?
如果答案是“你不能”就像我想的那样,那为什么它甚至很重要?这不会是任何人尝试的第一次攻击,除非他们知道使用了低熵源,就像他们在 Hacker News 事件中所知道的那样。
如果你能想出一个更好的标题,也可以随意编辑我的标题哈哈。