主要区别在于 TrueCrypt 创建容器而 7-Zip 加密文件本身,因此可以猜测文件大小。现在让我们来谈谈加密的强度和可破解性。
7-Zip 的 AES 加密与 TrueCrypt 的版本一样安全吗?
如果正确实施,AES 就是 AES;两个不同实现之间的输出是相同的,因此在事后比较中不可能有区别——如果正确完成,一个与另一个完全相同。
但是有几点可能会出现差异:
操作模式
Truecrypt 实现了一种改进的计数器模式,称为 XTS。它经过了很好的审查,并且经受了一些强大的攻击者(例如美国政府)的严重滥用。
通过检查 p7zip 源代码,7-zip 格式的 AES 编码似乎在 CBC 模式下运行。这当然不一定是不安全的;它是 TLS 等协议中最常用的模式,但它可能容易受到填充预言机攻击。有关更多信息,请参阅有关操作模式的讨论。
密钥派生
Truecrypt 使用 PBKDF2 将您的密码转换为加密密钥。很难想出比这更好的选择。p7zip 使用在可配置的迭代次数上重复的加盐 SHA256 哈希。PBKDF2 的可配置性更高,但 7-zip 的替代方案在功能上相似,并且可以说达到相同的目标。
经过审查的实施
这可能是最大的不同:TrueCrypt 的代码已经被密码学家倾倒,并仔细检查了实施错误。7-zip 没有(至少没有达到相同的程度)。这意味着7-zip 的代码包含某种错误的可能性更高,这可能会导致某种未知攻击。这并不是说存在这样的错误,也不是说在 TrueCrypt 中找不到这样的错误。但这是一个概率问题,而不是确定性问题。
总而言之,差异很小,对于大多数用例,从安全角度来看,您根本不应该期望有任何差异。如果是生死攸关的问题,我可能会选择 TrueCrypt。但是对于纯粹的保密问题,我建议使用最适合您问题的解决方案。
密码的安全性取决于它在软件实用程序中的具体实现。据我所知,7-Zip 或 TrueCrypt 中没有已知的 AES 实现问题。
AES 是一种快速密码,而 AES-NI 等硬件加速功能使其速度更快。因此,防止暴力破解需要通过密钥扩展机制来加强密钥。
7-Zip和TrueCrypt都存在暴力破解工具,它们支持硬件加速。
7-Zip使用密钥扩展来增加暴力破解的时间。用户密码使用 SHA256 哈希 130,000 到 524,288 次(取决于版本)。
TrueCrypt还使用 PBKDF2进行 1000 次迭代的密钥扩展,比 7-Zip 低 2 个数量级。一个问题是 TrueCrypt 使用了 10 年前推荐的最小迭代次数。
在 2000 年编写 PBKDF2 标准时,建议的最小迭代次数为 1000,但该参数打算随着 CPU 速度的提高而随着时间的推移而增加。
它还使用 512 位加盐,以减少对字典和彩虹表攻击的漏洞。
所以从暴力破解的角度来看,7-Zip 比 TrueCrypt 稍微好一点,但两者都被认为对暴力破解相当有弹性。
有一个故事,FBI 试图破解 TrueCrypt卷 12 个月但失败了。
除了实现错误,7-Zip 的加密比 TrueCrypt 的更强大,因为 TrueCrypt 的工作要困难得多。
扇区级全盘加密很难:
- 您拥有固定数量的空间,其中任何部分都可能随时更改。
- 您只有相对较少的空间可以保存元数据。如果您在每个扇区中保留了多于几位的跟踪数据,那么您可能会占用太多空间,并且用户会反对。
- 您无法更改密钥材料:需要重新加密的内容太多。
- 您必须确保攻击者无法将一个扇区复制到另一个扇区。
- 您必须确保窥探者不能在不同的日子多次读取磁盘并从更改中获取信息。
相比之下,7-Zip 的工作就简单多了。它写入文件一次并完成。如果需要更改某些内容,它可以使用不同的 IV 重新加密整个文件(即使密钥相同),新的加密文件看起来与旧文件完全不同。
这意味着 7-Zip 可以负担得起使用众所周知的 CTR 或 CBC 分组密码模式。同时,TrueCrypt 不得不使用 XTS,为了满足全盘加密的额外限制,XTS 做出了许多妥协。
有关更多详细信息,请参阅这篇关于全盘加密限制的文章。
我对 tylerl 的回答的不同之处在于,在撰写问题和答案时,TrueCrypt 的源代码尚未经过密码学家的审计。事实上,截至目前,仅由受人尊敬的密码学家完成了部分审计。
因此,目前这两个项目的核心密码例程由密码专家审查相同级别:没有。希望这两个代码库的情况会很快改变,但目前还没有对 7zip 的代码 AFAICT 进行审计。