macOS 中的 zip 程序使用什么加密方法?

信息安全 加密 苹果系统 压缩
2021-08-10 02:19:54

为了安全地发送文件,我将加密/密码保护一个 zip 文件。我为什么要这样做)。我正在使用 macOS Sierra 10.12.6,通过我的研究,我得出结论,在 macOS 上加密 zip 文件是通过以下方式完成的,

zip -e [newzip].zip [myFile].[extension]

这非常有效,但我想确保用于加密 zip 的算法/方法是安全的。不幸的是,我找不到任何关于该zip命令用于加密的算法/方法的文档,无论是它的 AES-256 位、AES-128 位还是完全不同的东西。

man页面zip没有帮助:

-e
       --encrypt
              Encrypt the contents of the zip archive using a  password  which
              is  entered  on  the terminal in response to a prompt (this will
              not be echoed; if standard error is not a  tty,  zip  will  exit
              with  an  error).   The  password prompt is repeated to save the
              user from typing errors.

请在您的答案中包含所使用的算法、此信息的可能来源,如果不是 AES-256 位/AES-128 位,那么该算法/方法的安全性如何。

1个回答

它使用.ZIP 文件格式规范第 6 节中描述的原始 PKZIP 2.0 加密(不同地称为“传统”或“传统”加密)它基于使用 CRC32 混合密码、(希望)随机种子和压缩文件。它不被认为是安全的;至少,它对已知明文攻击存在严重漏洞(请参阅此 crypto.se 答案以获取摘要)。

更新:Michael Stay 开发了一种更好的攻击,以便为客户恢复一些比特币私钥。Michael 的博客文章DEF CON 演讲中的详细信息,以及WiredHacker News的报道。

这是基于:查看Apple 的 ZIP 源代码README.CR 说:

加密代码是 Roger Schlafly 算法的直接转录,Phil Katz 在文件 appnote.txt 中进行了描述。该文件与 PKZIP 程序一起分发(即使在没有加密功能的版本中)。请注意,如果密码选择得当且足够长(至少 8 个字符),加密可能会抵抗业余爱好者的攻击,但它可能无法抵抗专家的攻击。Paul Kocher 提供了有关 PKWARE 加密方案的已知明文攻击的信息;有关详细信息,请参见http://www.cryptography.com/。)仅由小写字母组成的短密码可以在几个小时内在任何工作站上恢复。但是对于旨在防止您的母亲阅读您的邮件的休闲密码学,没关系。

请注意,该文件说最后一次更新是在 2008 年,所以当它谈到“在任何工作站上的几个小时内”恢复密码时,它指的是十年前的硬件。我对 Apple 实际使用的 Zip 版本有点困惑。README.CR 似乎表明它是 v2.31,但 WHATSNEW 列出了 Zip v3.0 beta 中的新功能(并表示 AES 计划用于 v3.1)。无论如何,它已经很老了。

作为进一步的支持,文件 crypto.c(虽然有点难以理解)显然使用 CRC32 进行加密/解密过程,并且唯一提到 AES 的文件中有几个文件说它计划用于更高版本。

哦,我还尝试用它创建一个加密文件,然后查看一个十六进制转储。它不包含 0x0017,它是“强加密标头”的标头 ID。确实有一个额外的 12 字节种子数据(“传统”格式的一部分)以及每个文件。所以这与源代码和自述文件相匹配。

总结:不要用。我会寻找支持更现代加密的第三方 Zip 实用程序,但我对它们中的任何一个都不够熟悉,无法提出建议。