使用带有弱密码的 truecrypt 密钥文件

信息安全 真加密
2021-09-10 14:44:38

我正在使用 Truecrypt,并且我在多台计算机上有多个卷。保持 20 多个字符的密码中的每一个都变得很复杂,所以我想使用密钥文件。由于密码与密钥文件中的 1024 个字节组合在一起,因此我的密码是否为“dog”是否重要?具有短密码的密钥文件(例如,包含许多疯狂字符的压缩文件)是否具有与 20 多个字符的复杂密码相同的暴力保护?我假设没有人可以访问我的密钥文件。

4个回答

如果您认为密钥文件是安全的,则不需要密码,如果您不能冒密钥文件泄露的风险,则需要使用强密码对其进行密码保护。没有密码或弱密码实际上是相同的。

您可以使用强密码将您的密钥文件存储在另一个 truecrypt 卷中,这样您只需要记住一个密码并且您的密钥文件是安全的。

tl;dr - 使用强密码,并在可能的情况下使用密钥文件对其进行补充。

在密码学方面,如果没有密码和密钥文件,在计算上是不可行的侵入你的 TrueCrypt 卷。从根本上说,解密密钥是密码散列和密钥文件散列的异或组合。但是,这并不意味着您可以从两种类型的密钥材料中获得相同的实际安全性。

TrueCrypt 的密钥文件是双因素身份验证方案的一部分。密码是您知道的,密钥文件是您拥有的。在大多数情况下,你知道的东西比你拥有的东西要强大得多——人们可以窃取你的财物,但窃取你的知识要困难得多。两者的结合可以提供强大的安全性。

因此,仅依靠密钥文件来保证安全性可能是个坏主意。您仅限于通过隐匿技术实现安全性,在这种技术中您试图隐藏密钥文件。如果您将它们存储在硬盘上,对您的磁盘进行取证分析通常能够找到您的密钥文件。如果您将它们存储在 USB 记忆棒或闪存卡上,彻底搜索您的房子/人可能会导致攻击者找到它们。

在您的主卷上使用弱密码,然后用强密码加密您的密钥文件是没有意义的 - 此时您应该只在主卷上使用强密码,并且不加密密钥文件。

如果没有人可以访问您的密钥文件,那么没有人可以访问您的数据。

密码在这里用作“如果密钥泄露怎么办”保护的额外层。如果密钥文件是绝对安全的(理论上讲这里!),那么数据也是如此。

我有一些完全由密钥文件保护的卷,根本没有密码,密钥泄露的可能性很小。请注意,这可能是一个合理的假设,也可能不是一个合理的假设,具体取决于您的情况 - 我用它来加密我的备份(每台机器都有一个独立的密钥,存储在机器上,它用于在备份之前挂载 TC 卷它 - 这需要在没有手动干预的情况下完成,这排除了密码)。

TrueCrypt 密钥文件实现至少存在以下问题: 密钥文件解析忽略超过前 1MB 的数据。在三因素身份验证(您拥有{keyfile}、您知道{password}和您是{biometrics})中,当您较少或较多地连接到互联网时,您可能希望能够检测您的文件流量您最常访问的目录中的文件,即带有密钥文件的文件。大文件不能使用 Evil Maid 样式攻击等隐藏在引导扇区中,因此您希望密钥文件很大。Veracrypt 和 Truecrypt 都有每个文件 1MB 限制的问题(其余的被忽略),这些文件很容易通过网络传输,甚至不会降低带宽作为警告信号。

第二个问题是 truecrypt 密钥文件解析算法使用 CRC32 而不是 SHA256 或更好,因此在大多数文件的末尾附加 CRC32 值(对密钥文件的主动抢占式攻击),在您将它们用作“新的新密钥文件”之前,可能会无效密钥文件输出,当您在不知不觉中切换到一个新的密钥文件时,您会认为它会为密码添加一些新内容,从而使您容易受到攻击。Keepass、Diskcryptor没有这个问题。

第三个问题是密钥文件处理没有使用密码或盐说明,因此如果您不小心使用了短密码和相同的密钥文件两次,从攻击者的角度来看,他永远不需要重新计算整个文件的密钥文件,而是留在相同的已知 CRC32 分布在给定文件独有的 64 字节模式上。换句话说,为了从您的文件系统中获取所有可能的密钥文件对密码的贡献,您需要每个文件 64 字节的数据,并且您可以使用后门在线防病毒软件默默地做到这一点!Veracrypt、Discryptor 和 Keepass 以及可能所有开源加密软件都存在这个问题。正确的实现是 HASH(HASH(HASH(HASH(salt) ^ HASH(password)) ^ keyfile[block_0]), keyfile[block_1], ...), 一组以 salt 和 password 开头的嵌套调用,因此如果其中任何一个发生更改,即使假设损坏的 RNG 至少密码可能会更改,您应该沿着密钥文件重新计算整个例程。只有这样 keyfile 方法才会真正强大,因为攻击者必须拥有完整的、可能很重的文件才能进行暴力攻击。经常被忽视的是,最小长度(64 字节)的短密钥文件很容易被检测到,可能会暴露 RNG 低位的弱点,并且它们的随机性(每字节高)无法与每千字节熵非常低的典型文件相提并论. 这是您想要大于 1MB 大小的文件的另一个原因,除了它们更难以通过互联网窃取或传输而不被发现。您应该沿着密钥文件重新计算整个例程。只有这样 keyfile 方法才会真正强大,因为攻击者必须拥有完整的、可能很重的文件才能进行暴力攻击。经常被忽视的是,最小长度(64 字节)的短密钥文件很容易被检测到,可能会暴露 RNG 低位的弱点,并且它们的随机性(每字节高)无法与每千字节熵非常低的典型文件相提并论. 这是您想要大于 1MB 大小的文件的另一个原因,除了它们更难以通过互联网窃取或传输而不被发现。您应该沿着密钥文件重新计算整个例程。只有这样 keyfile 方法才会真正强大,因为攻击者必须拥有完整的、可能很重的文件才能进行暴力攻击。经常被忽视的是,最小长度(64 字节)的短密钥文件很容易被检测到,可能会暴露 RNG 低位的弱点,并且它们的随机性(每字节高)无法与每千字节熵非常低的典型文件相提并论. 这是您想要大于 1MB 大小的文件的另一个原因,除了它们更难以通过互联网窃取或传输而不被发现。经常被忽视的是,最小长度(64 字节)的短密钥文件很容易被检测到,可能会暴露 RNG 低位的弱点,并且它们的随机性(每字节高)无法与每千字节熵非常低的典型文件相提并论. 这是您想要大于 1MB 大小的文件的另一个原因,除了它们更难以通过互联网窃取或传输而不被发现。经常被忽视的是,最小长度(64 字节)的短密钥文件很容易被检测到,可能会暴露 RNG 低位的弱点,并且它们的随机性(每字节高)无法与每千字节熵非常低的典型文件相提并论. 这是您想要大于 1MB 大小的文件的另一个原因,除了它们更难以通过互联网窃取或传输而不被发现。

总而言之,使用密钥文件作为第二个因素非常好,因为如果您受到键盘记录器的攻击,它不会完全免费提供密码。

使用 Windows 时,keepass 有一个有趣的插件,它允许挂载 truecrypt wolumes 并在不输入密钥文件路径的情况下输入密钥文件路径,同时使用双通道混淆。这使您免受大多数剪贴板抓取器、屏幕抓取器、录音键盘分析和所有流行的键盘记录器的影响。如果目录名称很长且随机,则它们甚至不会显示密钥文件名称(因为路径太长),因此您可以免受屏幕抓取器攻击关于哪个文件是密钥文件的攻击,其中几个文件位于一个非常胖的目录中。因为 KeePass 使用 SecureDesktop,所以您可以通过启动 Keepass 管理器(可以使用已知位置存储在注册表中的密钥文件)来对键盘记录器产生更大的免疫力,然后直接从它启动 truecrypt(再次输入另一个密钥文件作为 truecrypt 输入)。

很酷的是,您可以使用 The Go 上的 Bitlocker 加密 U 盘上的密钥文件,然后使用 EFS 在每个文件的基础上进行加密。整个可移除的 USB 卷可以方便地由 Windows 自动挂载,而后者,每个文件的加密只有在特定的 Windows 用户登录时才起作用。因此,其他用户侵入 Windows 机器甚至无法访问这些密钥文件,并且一旦您注销或锁定控制台(需要在 gpedit.msc 中配置 EFS),EFS 的加密密钥甚至不会在内存中(针对密钥文件的冷启动攻击 - 安全)。此外,如果您将这些文件放在 USB 或 SD 卡上,您可以在安装卷后轻松将其删除,从而限制它们在工作系统中的暴露。这样的 SD 卡或 USB 密钥可以在几秒钟内处理掉,保证它不会' 不会被坚定的对手窃取。那么即使您在吸毒时告诉密码,您的数据也将是安全的,因为您可以免费吸毒,这有什么好处。不要忘记在森林深处保留几份密钥文件。