受密码保护的 ZIP 文件是否安全?

信息安全 密码 压缩
2021-08-14 01:11:47

按照我的回答如果我可以列出受密码保护的 ZIP 文件的内容,检查每个存储文件的文件类型,甚至将其替换为另一个文件,而实际上并不知道密码,那么 ZIP 文件是否仍应被视为安全文件?

这在社会工程/影响力等方面是完全不安全的。

我可以劫持(拦截)其他人的文件(受密码保护的 ZIP 文件),并且可以在不知道密码的情况下用我的文件(假的、病毒)替换其中包含的文件之一。被替换的文件将保持未加密状态,在 ZIP 中不受密码保护,但其他文件不会被修改。

如果受害者解压受密码保护的存档,解压程序只会要求输入密码一次,而不是每个文件每次都要求输入密码。所以最终用户不会看到区别——程序是否不要求输入密码,是因为它已经知道密码(原始文件)还是因为被提取的文件不需要密码(我修改的文件)。这样,我可以在不知道其密码的情况下向受密码保护的 ZIP 文件中注入一些非常糟糕的东西,并依靠接收者(假设文件未修改)。

我错过了什么还是这真的错了?如果不需要密码来在受密码保护的文件中引入任何修改,我们可以对解决方案的安全条款说些什么?

4个回答

为了回答这个问题,需要对“安全”和/或“安全”有一个更好的定义。它总是必须根据保护的目的和系统的风险来定义。这里没有一种适合所有人的尺寸,对于一个系统来说“足够安全”的东西,在另一个系统上可能非常弱。在另一种情况下,对另一个“足够安全”的东西可能成本过高或完全不切实际。

因此,一一解决典型问题:

  • 保密性- 充其量是微不足道的。机密性通常根据访问受保护材料所需的时间来评估。我也许可以更改zip 文件,但作为一名黑客,我需要一些时间来破解密码或暴力破解密码。很多时候,密码是较弱的保护措施之一,鉴于 zip 文件经常被共享的方式,社会工程的密码通常并不难。

  • 完整性- 不 - 正如提问者指出的那样 - 更改包并使其看起来合法很容易。

  • 可用性——通常不适用于这种安全控制——这通常是指使服务不可用的风险——数据存储/打包通常不会以某种方式影响可用性。

  • 不可否认性- 不,没有保护 - 任何人都可以修改包,因此任何为它做出贡献的人都可能具有可否认性。

诀窍是——你想好多少?加密电子邮件是一种选择 - 作为更好的保护。虽然它提出了它自己的连接问题。还有许多更好的数据加密方法——但更好的选择还涉及密钥分发挑战,这可能会增加时间和成本问题。

作为打包和共享一些您不想完全公开的数据的快速方法 - 总比没有好,而且有时它是您可以解决的唯一公分母。对于任何高风险的事情,我会找到更好的选择。

密码旨在确保机密性,而不是完整性或真实性。

这是安全性受到可用性和人为意图限制的情况之一。存档管理器无法判断您修改的文件是否本来就是要加密的。本质上,这是一种社会工程攻击,因为您欺骗了用户相信原始文件已经存在。但是,真正的安全漏洞是您首先拥有对敏感存档的读/写访问权限。

就缓解而言,有几种方法可以提高安全性:

  • 使用支持文件名加密的存档格式(例如 7Zip、RAR)
  • 使用私钥对存档进行签名,例如通过 GPG。

否。要创建加密文件(不安全,因为密码被回显):

$ cd -- "$(mktemp --directory)"
$ echo secret > 1.txt
$ echo super secret > 2.txt
$ zip -e -P dIg4BuOTFh secret.zip 1.txt 2.txt
  adding: 1.txt (stored 0%)
  adding: 2.txt (stored 0%)

要找出包含哪些文件:

$ unzip -l secret.zip
Archive:  secret.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        7  2013-05-14 10:15   1.txt
       13  2013-05-14 10:14   2.txt
---------                     -------
       20                     2 files

在不知道密码的情况下用虚假数据覆盖文件:

$ echo lie > 2.txt
$ zip -u secret.zip 2.txt
updating: 2.txt (stored 0%)

核实:

$ unzip -o -P dIg4BuOTFh secret.zip
Archive:  secret.zip
 extracting: 1.txt                   
 extracting: 2.txt     
$ cat 2.txt
lie

man zip在选项的描述中没有提到这个警告-e,但以下来自文档-P

(如果安全性非常重要,请使用强加密,例如 Pretty Good Privacy,而不是 zipfile 实用程序提供的相对较弱的标准加密。)

应该从实用程序中删除已知的弱加密以避免错误的安全感,但这是另一回事。

从某种意义上说,它不安全,因为您不能依赖 zip 文件的完整性。由于您无法访问文件内容(仅文件名),因此仍然需要保密。

zip中的这个缺点之前已经讨论过,我个人总是因为这个问题而使用rar。另一种解决方法是使用 PGP 对 zip 文件进行签名。