按照我的回答。如果我可以列出受密码保护的ZIP文件的内容,请检查每个存储文件的文件类型,甚至在不知道密码的情况下将其替换为另一个文件,那么ZIP文件仍应被视为安全吗? br />这在社会工程/影响力等方面是完全不安全的。

我可以劫持(拦截)他人的文件(受密码保护的ZIP文件),并且可以替换其中包含的文件之一,而我的密码(假冒,病毒)却不知道密码。替换的文件将保持未加密状态,在
ZIP中不受密码保护,但是其他文件将不会被修改。密码仅一次,而不是每次每个文件一次。因此最终用户将看不到区别-程序是否不要求输入密码,是因为它已经知道了密码(原始文件),还是因为提取的文件不需要密码(由我修改的文件)。这样,我可以在密码保护的ZIP文件中注入一些非常糟糕的东西,而无需知道它的密码,并假设该文件未经修改就依赖接收者。如果不需要密码就可以在受密码保护的文件中进行任何修改,那么对于解决方案的安全性条款我们能说什么?

评论

在ZIP档案的设计中,它们只是容器。加密是对文件而不是容器本身进行的,因此仍为内部文件授予机密性和完整性。 ZIP存档本身不受密码保护,但其中的文件受密码保护。实际上,RAR文件的行为几乎相同,只是它们为您提供了加密文件列表的选项。您可以将伪造的文件添加到RAR文件中(而不是通过WinRAR),但是如果文件列表是加密的,则无法对其进行修改,因此打开它的应用程序将无法列出伪造的文件。

进一步阅读后,我了解到ZIP在CBC模式下使用AES,实际上并没有授予完整性。尽管修改文件的内容并不是那么容易,但是持久的威胁最终将能够做到这一点。请注意:完整性问题当然不是可以替换文件。恕我直言,可以对文件进行替换和篡改是可以的,但无法检测到这种篡改是完整性问题。

您能否压缩文件(不使用密码),然后再次压缩该归档文件(使用密码)?这样,您将只有一个受密码保护的文件,并且由于无法访问该文件,因此无法修改内部zip。

@poke:非常有趣的主意! :]

请注意将文件解压缩到临时文件夹然后保留在其中的存档程序。 7zip会这样做,并拒绝修复它。如果使用7zip,则加密的文件将不安全,因为它们不可避免地会在未加密的临时文件夹中保留。

#1 楼

为了回答这个问题,需要对“安全”和/或“安全”有一个更好的定义。必须始终根据保护的目的和对系统的风险来定义它。这里没有一个适合所有的大小,对于一个系统来说“足够安全”,而在另一个系统上可能很小。而在另一种情况下,“足够安全”可能会导致成本过高或在权利不足的情况下不切实际。

因此,将典型的问题一一列举: >机密性-充裕。机密性通常是根据访问受保护材料所需的时间来评估的。我也许可以更改zip文件,但作为一名黑客,破解密码或强行使用它会花费我一些时间。在不多的时间里,密码是较弱的保护措施之一,而且鉴于zip文件通常被共享的方式,社交工程通常很难采用这种方式来获得密码。
完整性-不会-正如问问者所指出的-更改包装并使其看起来合法很容易。
可用性-通常不适用于这种安全控制-通常是指使服务不可用的风险-数据存储/打包通常不会以一种或另一种方式影响可用性。
否决-不,没有保护-任何人都可以修改软件包,所以任何贡献它的人都可能会拒绝。加密电子邮件是一种选择-作为更好的保护。尽管这构成了它自己的连接性问题。加密数据有许多更好的方法-但是更好的选择还涉及关键的分发挑战,这可能会增加时间和成本方面的顾虑。

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

评论


强密码(例如14个随机字符)与强加密方法(例如AES-256)相结合的弱点是什么?

– marcovtwout
15年6月15日在15:03

我不清楚您的问题来自什么角度?此人专门询问与zip文件相关的密码保护方法,并且问题在问题中得到了很好的概述-在这种情况下,无论您的密码有多大或随机,zip文件的密码锁都不会锁定很多东西。通常,密码很弱-它们很容易共享,并且要求双方都知道它们(它们是共享的秘密)-因此,总是存在别人知道密码的风险。因此,不可否认的是,任何密码都不可以。

–bethlakshmi
15年6月15日在21:07

我纯粹是在谈论机密性,而不是完整性或您根据此问题正确指出的任何其他值。您注意到“密码是较弱的保护措施之一”,我只想指出这一说法是相对的。这完全取决于密码的强度和加密方法,还取决于共享此共享密钥的方式。

– marcovtwout
15年6月16日在8:16

@bethlakshmi“可能的可否认性”-您是说合理的可否否认性吗?

– ScottJ
16-10-5在19:51

仅供参考,对于那些不熟悉机密性/完整性/可用性/不可否认性术语的人,维基百科在这里有外行描述: )

–特雷弗·博伊德·史密斯(Trevor Boyd Smith)
19/09/17在15:20

#2 楼

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

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

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


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


评论


或使用tar.gz :)

–努比亚水手
13年5月13日在13:13

在Windows上? :]如果我在Linux上,我根本不会使用ZIP!此外,问题是,是否可以将受密码保护的ZIP文件视为安全文件,而不是是否有更安全的存档文件。因为有,我对此很确定...

– Trejder
13年5月13日在13:22



是的,tar.gz不能在Windows上使用,尤其是在您不了解7zip,WinRar或数百万其他软件的情况下! :P我猜您在IE上浏览? :D

–晴天R Gupta
13年5月13日在16:04

亲爱的上帝,不! :]我在系统级别谈论本地支持。确切地说,.tar.gz格式适用于Linux(Unix),而.zip适用于Windows。但话又说回来,这只是一个旁注,因为问题不是,我应该使用哪种存档格式,仅.zip足够安全?

– Trejder
13年5月13日在18:27

我不了解Unix和Linux(不要使用它们),但是AFAIK可以直接从命令行使用存档,因为它们是几乎每个发行版附带的系统组件或外部程序(更不用说最小的发行版了) )。您安装了纯系统,就拥有了,对吗?尝试在Windows上实现相同的目标?如果不手动安装第三方程序,您将根本无法使用存档。 Windows XP中添加了对.zip的Shell支持。在Windows上的其他程序上,tar,rar,gzip完全没有外壳,也没有命令行支持。这就是我所说的本机。

– Trejder
13年5月14日在8:48

#3 楼

否。要创建加密文件(由于回显了密码,此方法是不安全的):

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

$ 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


man zip-e选项的描述中未提及此警告,但以下内容来自-P的文档:


,请使用强加密(例如Pretty Good Privacy)来代替zipfile实用程序提供的相对较弱的标准加密。) ,但这是另一个故事。

评论


为什么2.txt比1.txt更安全?

– 0x90
13年5月17日在6:40

不是。我只是想对两个文件使用不同的内容:)

–l0b0
13年5月17日在10:12



不幸的是,已知的较弱的安全性对于互操作性是必需的,因为那里有许多使用已知弱方案的zip归档文件,以及其他仅支持已知弱方案的系统。

–用户
16-3-31在9:52

伪造的数据可能是一个问题,但是可以通过在文件中包含MD5来缓解(它可能会发生冲突,但不太可能覆盖大多数数据库)

–马特·弗莱彻(Matt Fletcher)
18年7月30日在8:47



#4 楼

从某种程度上讲,您不能依赖zip文件的完整性,这是不安全的。由于您无法访问文件内容(仅文件名),因此仍保持机密性。

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

评论


如果接收方和结束方都具有PGP并准备好其密钥,我宁愿使用PGP加密zip文件,而不仅仅是对zip签名(在第一种情况下,无法知道整个内容(文件列表等)。 2,您只需要检查zip文件是否被更改即可。...zip密码保护太弱,无法确保未访问内容)

–奥利维尔·杜拉克(Olivier Dulac)
13年5月15日在8:41

@Lucas,您的意思是说,如果我压缩了一个exe文件并用密码保护了它,病毒仍然可以通过在不拥有密码的情况下向其添加有效载荷来修改包含的exe文件?

–起搏器
2014年4月27日20:30



不,我的意思是您无法验证机密性是否受到破坏。

–卢卡斯·考夫曼(Lucas Kauffman)
2014年4月27日在20:35

您是否介意解释“无法验证机密性是否受到破坏”的详细解释?

–起搏器
2014-04-27 20:54



改变事物是诚信,能够看到事物是机密。

–卢卡斯·考夫曼(Lucas Kauffman)
14年4月27日在21:01

#5 楼

除了您已经指出的风险之外,恕我直言,压缩工具的最大问题之一是与使用临时文件夹存储未压缩的文件有关。
由于输入文件可以是任意大小,因此未压缩的输出文件可能不适合RAM。使用一个临时输出文件夹(通常是操作系统的默认文件夹)。

因此,如果您每次解压缩受psw保护的文件时都忘记适当地粉碎临时文件夹,则加密算法的强度并不重要。大多数工具不会自动清除输出目录,也不会警告用户。压缩时同样的事情:您应该确保切碎原始文件。

#6 楼

如果我使用安全的一般定义来表示它强制执行隐私,身份验证,完整性和不可否认性,那么我会说它在许多方面都不安全。但是由于加密的ZIP文件上的密码保护仅旨在提供保密性(除非有意向的一方禁止查看文件的内容),我想说它确实可以做到。

#7 楼

官方.ZIP格式规范确实允许隐藏文件名列表(但不包括文件数量),以及隐藏元数据,例如原始文件大小和原始文件的CRC。但是您不能使用WinZip或Info-Zip来做到这一点。此外,除加密外,还通过使用一个或多个数字签名来提供官方.ZIP规范中的完整性。不过,我个人的建议是避免使用密码,而应使用公用密钥。密钥派生功能不断提高,我不相信任何供应商都试图跟上它。

#8 楼

如果您使用密码保护的zip文件中某个文件的未加密版本,则可以使用已知明文攻击来获取所有其他文件的密码。

评论


已知的明文攻击应该如何提供帮助? Zip不使用脑残算法,因此可以抵抗已知的纯文本攻击。

–吉尔斯'所以-不再是邪恶的'
13年5月13日在22:03

elcomsoft.com/help/archpr/…抱歉,我可能应该包括一个链接,但这是几天前在此讨论区上提到的。 Google在提出此答案方面也非常有效。

– Rod MacPherson
13年5月15日在20:55



嗯谢谢这与Adnan关于zip使用AES-CBC的主张相反。自发现该漏洞以来,格式是否已更改?各种zip实现都支持哪些算法?

–吉尔斯'所以-不再是邪恶的'
13年5月15日在21:42



似乎Elcomsoft指的是非常老的zip实现。查看Winzip文档,他们现在使用AES和PBKDF2。 kb.winzip.com/help/winzip/help_encryption.htm

–northox
13年5月28日在15:59

#9 楼

因此,最重要的是,除非加密代码中存在漏洞或后门,否则它的安全性就如同密码短语可以抵抗暴力攻击一样。互联网上有很多站点,您可以在其中使用打算使用的方案的原型,以大致检查破解所需的时间。 (不要使用您打算使用的东西)

只要有足够的时间,任何人都可以物理访问的任何东西都是可破解的。但是,如果访问信息所需的成本和/或时间超过其可能的价值,则可以具有实用的安全性。除非有诸如财务信息之类的东西,否则对黑客有价值的东西和对您有价值的东西之间通常会有很大的区别。如果zip中的文件名是Attachment_1,并且电子邮件的未加密内容未描述附件的内容,则不会给黑客带来太多麻烦。黑客不太可能会花费很多时间,当然也不会花钱来获得某些东西,而这些东西并没有令人信服地包含其有价值的东西的可能性。

#10 楼

并非所有受密码保护的内容都可以被暴力攻击所入侵。但是,zip文件可能会被蛮力破解。其他系统具有适当的检查,例如,在三次尝试后锁定,密码验证等。

评论


从压缩文件中锁定?在离线攻击情况下应该如何工作?您是否不需要类似服务器的在线攻击方案?为什么说zip文件可以被暴力破解?仅当密码足够牢固时才如此。按照您的逻辑,即使是最强的加密方法(如您提到的加密方法)也可以被“强力破解”。两种方式都只需要很多时间。

– phil294
18年8月1日在7:19



#11 楼

我听说过破解密码保护的压缩文件的方法。通常是通过蛮力攻击。
因此,简而言之,它们对于机密和机密数据并不十分安全。

评论


任何依赖于密码的内容都容易受到暴力破解。这不是重点。

–吉尔斯'所以-不再是邪恶的'
13年5月13日在22:03