为什么在 VeraCrypt 中生成密钥时仍然需要移动鼠标?

信息安全 密钥生成 真密码
2021-08-24 00:01:12

在设置新加密卷期间,VeraCrypt 需要在窗口内随机移动鼠标。如果有人从外面看,可以看到一只猴子坐在电脑前玩鼠标。

有很好的解决方案可以生成加密安全密钥,如Linux 和Windows上通常的/dev/urandom [1] [2] 。BCryptGenRandom在 TLS 中的随机密钥生成期间,没有人被要求成为猴子。在 OpenSSLopenssl rand 128中,密钥生成非常快。

那么,在这个时代,为什么我们仍然需要在 VeraCrypt 上移动鼠标呢?我想念它有什么具体原因吗?

1个回答

我认为您需要查看代码库的历史以首先了解它存在的原因。VeraCrypt是TrueCrypt的后裔,它是在 Windows 中的 CSPRNG 使用未指定的数据生成方法时构建的:

因为 CryptGenRandom 是 Win32 环境中事实上的标准 CSPRNG,所以它的安全性对 Windows 用户来说至关重要。

CryptGenRandom 算法的细节尚未正式公布。与任何未发布的随机数生成算法一样,它可能容易受到理论缺陷的影响,包括使用过时的算法,以及依赖于几个单调递增计数器的熵收集,这些计数器可能在一定程度上由具有本地访问权限的攻击者估计或控制到系统。

至于按照今天的标准是否仍然有必要,这显然是一个品味问题。我设法在 .NET 中找到了关于 CSPRNG 的高级声明在搜索 Microsoft 文档大约 10 分钟后,我一直无法发现任何类型的 Windows 内置 CSPRNG 规范。

对于尚未考虑信息安全这一方面的读者,这里有一个关于 CSPRNG 的很好的讨论:Pornin 2010 https://stackoverflow.com/a/3532136