我需要向客户发送一些敏感信息。我想我会通过电子邮件发送一个使用 Windows XP 创建的受密码保护的 zip 文件,然后用密码调用它们。假设我选择了一个好的密码,这种方法有多安全?具体来说,解密受密码保护的 zip 文件有多难?
受 Windows 密码保护的 zip 文件的安全性如何?
创建受密码保护的 Zip 文件(使用操作系统中集成的“压缩文件夹”实用程序)时,Windows XP 对 Zip 文件使用“标准”加密算法。这是自制的流密码,很弱。使用 13 字节的已知明文,攻击的复杂性约为 2 38 次操作,在 PC 上几小时内即可完成。13 个字节相对容易获得(例如,如果存档中的文件之一是图像,则它可能会被解压缩并以已知的标头开头)。结果甚至得到了改进,特别是因为存档中的文件是单独加密的,但没有适当的密钥多样化。几年前(现在很多,tempus fugit),我见过一个密码破解软件Ivan Golubev充分利用了这门科学,可以在一小时内破解 Zip 加密。
Zip加密的攻击其实是:
- 密码分析的一个很好的介绍;
- 很好的编程练习;
- 提醒您不要推出自己的加密货币。Phil Katz 在他的领域非常出色,但世界上最好的密码学家会告诉你,制作安全算法需要的不仅仅是一位非常优秀的密码学家——它需要许多狂热地提出设计并试图破坏设计的密码学家在其他人中,几年,直到出现看似健壮的设计(其中“健壮”的意思是“没有人可以找到最轻微的论据来支持他们可能在某个未指定的日期对其产生影响的想法”)。
现在,如果您使用支持更新的、基于 AES 的加密的工具,只要格式和实现没有拙劣,并且密码具有足够的熵,情况就会更好。但是,现有的 WinXP 资源管理器不会打开此类 Zip 文件。
如果需要外部工具,您不妨依赖在格式规范和实现方面都经过彻底安全分析的工具;换句话说,正如@DW 建议的那样:GnuPG。
至于自解密档案,它们都是错误的,因为它们依赖于用户完全不应该做的事情,即启动他通过电子邮件收到的可执行文件。如果他确实打开了您发送给他的自解密档案,那么他将通过这个动作证明他容易受到在狂野互联网上漫游的无数病毒/蠕虫/任何东西的攻击,并且他可能已经感染了各种恶意软件,包括键盘记录程序。
尽管如此,在您的具体情况下,有一种方法可以使自解密档案变得合理。它仍然需要您的客户安装一个新软件,但至少它是直接来自微软的:文件校验和完整性验证器——计算文件哈希的工具的一个浮夸的名称。将自解密存档发送给您的客户,并让他将其保存为文件(无需执行它,当然)。然后,让他在上面运行 FCIV,以获取文件的 SHA-1 哈希。在你身边做同样的事情。最后,通过电话比较两个哈希值(口述 40 个十六进制字符并不难)。如果两个哈希值匹配,那么您的客户将知道文件在传输过程中没有被修改,他将能够放心地执行它。
(也就是说,如果您的客户信任您,并且相信您的机器没有充满病毒,而病毒可能会在归档文件退出时感染病毒。)
对于敏感数据,我有点不愿意使用受密码保护的 ZIP 或 7ZIP 存档。他们使用的当前加密版本尚未经过独立研究人员的充分研究或审查。该软件的旧版本存在安全漏洞,这并不令人担忧。较新的版本可能没问题,但由于它们没有经过独立审查,我不愿意对它们寄予很大的信任。理想情况下,像 GPG 或 PGP 这样的东西会更好。
请注意,使用密码加密往往很弱。大多数人选择的密码没有足够的熵来防止离线搜索(例如,字典攻击、穷举搜索)。此外,长而强的密码不方便使用,进一步抑制了它们。
我建议您避免向人们发送自解压 .exe 文件。这是一个安全风险。当您向人们发送自解压 .exe 文件时,您正在训练他们通过电子邮件接收 .exe 附件并运行它。从安全的角度来看,这是非常危险的做法。我认为 ZIP 和 7ZIP 鼓励这种做法的事实是无视安全的标志。
如果您必须使用基于密码的加密,我建议:使用 GPG 或 PGP(例如,gpg -c
)。GPG 加密的安全性已经过充分研究并且非常强大。使用长而强的密码:例如,使用实用程序生成加密随机密码。您需要一个长度约为 14-16 个随机字符且没有任何模式的密码。
这可能是您的客户最容易使用的选项,同时也提供了强大的保护。
如果您需要额外的安全性,请将加密数据存储在 CD 或 DVD 上,然后通过 Fedex(而不是通过电子邮件)发送 CD 或 DVD。这样,您就获得了两层安全保障:只有在可以访问 CD 或 DVD 并且拥有解密密码的情况下,某人才能窃取数据。
如果您的客户在使用 PGP 或 GPG 时遇到问题,您可以使用最新版本的 ZIP 或 7ZIP 的密码加密。在这种情况下,我会避免使用自解压 .exe 文件,而且我可能更倾向于通过邮件(在 CD 或 DVD 上)而不是通过 Internet 发送加密数据。
或者:如果您的客户精通技术并且您经常与他们交流,另一种选择是让他们使用 GPG 或 PGP 生成随机公钥对,将他们的公钥发送给您,然后您可以使用他们的公钥加密数据。如果他们知道如何使用 GPG 或 PGP,这将提供更强的安全性。但是,它不太直观,因此可能无法将一条数据发送给普通客户端。
解密受密码保护的 ZIP 文件并不难。有很多应用程序可以找出密码或删除密码。
很可能没有人会拦截您和他们之间的电子邮件。公共电子邮件服务器之间有大量数据流动。在电子邮件上输入密码可能就足够了。如果您需要更安全的东西,请考虑对发送附件的电子邮件进行加密,或将文件发布到像投递箱这样的安全投递位置(是的,我知道他们几周前遇到的问题)并发送给他们链接。
我使用受密码保护的 zip 文件作为临时加密机制(尽管我更喜欢在可能的情况下使用 GPG)。zip文件的密码恢复很多,但只要您使用的是当前版本,唯一实用的恢复机制就是蛮力。我相信 7-zip 和 Winzip 都支持 AES-256。如果您的客户已经有 Winzip,我会使用它(只要确保您使用 AES 而不是“传统”加密)。
使用此密码的最重要方面是您的密码(我建议使用密码短语,至少 16 个字符,输入一些特殊字符)。密码短语的优点是暴力破解困难,您可以相对轻松地通过电话交换它。
无论如何,这都不是一个完美的机制,但它可能足以满足您的目的(取决于数据的敏感性)。