我仍然记得那个改变我对PDF安全性看法的电话。那是2019年3月的一个星期二凌晨2:47,我是一家中型医疗服务提供商的信息安全主管,负责管理超过340,000名患者的记录。我们的CISO在电话里,声音紧张带着克制的恐慌:“我们遇到问题了。患者记录。暴露了。我们认为安全的PDF。”那晚,我了解到23,000个所谓的“受密码保护”的PDF文件已被搜索引擎索引,其内容对任何有互联网连接的人完全可读。密码?技术上是存在的,但实施得如此糟糕,以至于简直可以说是在信封外面用蜡笔写的。
💡 关键要点
- PDF安全现状:为什么您的文档比您想象的更脆弱
- 理解PDF加密:并非所有保护都是平等的
- 密码策略:建立真正有效的防御
- 基于证书的加密:企业解决方案
那次事件让我们花费了120万美元用于修复、监管罚款和法律费用。更重要的是,它让我们失去了信任。但它教会了我一些宝贵的东西:PDF安全不仅仅是为了勾选框或应用某些按存在的功能。这关乎理解实际的威胁模型、现实世界的攻击向量,以及安全功能可能失败的,有时甚至是反直觉的方式。在过去14年在文件安全领域的工作中——最初在医疗行业,然后在法律科技,现在作为独立顾问——我看到了各种想得到的错误,我明白保护PDF需要一种与大多数人处理问题时不同的思维方式。
PDF安全现状:为什么您的文档比您想象的更脆弱
让我们从一个不舒服的真相开始:平均组织根本不知道有多少PDF包含敏感信息,那些PDF存储在哪里,或者谁可以访问它们。在我为一家财富500强金融服务公司进行的2023年审计中,我们发现其网络上有847,000个PDF文件。其中34%包含个人身份信息(PII),12%包含被视为重要非公开信息的财务数据,3%包含可以授予生产系统访问权限的凭据或API密钥。更令人惊讶的是,只有8%的敏感PDF文件应用了任何安全控制。
从安全角度来看,PDF具有独特的问题,因为它们处于多个威胁向量的交集。它们是文档,因此人们对待它们时很随意——通过电子邮件发送、上传到云存储、通过消息应用来分享。但它们也是可执行的容器,可以包含JavaScript、嵌入文件、提交数据的表单以及链接到外部资源。它们同时被信任过度又不够信任。用户不会考虑第二次便打开PDF,但未必会验证其真实性或检查其是否被篡改。
PDF规范本身是一个756页的文档(截至PDF 2.0),而实施PDF功能的大多数开发人员大概只理解其中的15%。这造成了一个巨大的攻击面。我个人利用畸形对象流攻击PDF阅读器,操纵交叉引用表以隐藏内容,并利用增量更新创建在打开时显示不同内容的文档。而我甚至不是一个特别复杂的攻击者——我只是一个试图理解可能性的防御者。
人们用来创建和保护PDF的工具从每个座位几千美元的企业级解决方案到可能正在收集您数据的免费在线转换器不等。在我的经验中,大约60%的组织至少使用三种不同的PDF创建工具,并且它们的安全政策几乎从未保持一致。一个部门可能正在使用Adobe Acrobat进行适当加密,另一个可能在使用一个剥除所有安全的打印到PDF驱动程序,第三个可能在使用一个将所有内容上传到数据保护法律可疑的辖区的在线工具。
理解PDF加密:并非所有保护都是平等的
当大多数人想到PDF安全时,他们想到的是加密。但“加密PDF”就像说“上锁的门”一样重要——有许多不同类型的锁,其中一些可以用回形针打开,而另一些需要工业切割设备。PDF规范支持多种加密算法,它们之间的差异不是学术性的——它们代表了实际安全与安全演出之间的区别。
“PDF安全不仅仅是为了勾选框或应用某些按存在的功能,而是理解实际的威胁模型、现实世界的攻击向量,以及有时反直觉的安全功能可能失败的方式。”
目前仍在使用的最古老的加密方法是40位密钥的RC4,加密在1990年代引入时被认为是弱的,现在完全被破解。我可以在30秒内用我的笔记本电脑和可用的免费工具破解一个40位RC4加密的PDF。然而,我仍然在现实中遇到这些文件,通常是由老旧的系统或已经十年没有更新的软件创建的。在一个记忆犹新的案例中,一家律师事务所因为其2004年的文档管理系统不支持其他任何加密,仍在使用RC4-40加密来处理和解协议。他们震惊地得知,他们的“安全”文档可以被任何具备基本技术能力的人打开。
当前的标准是AES-256加密,这也是您在任何真正需要安全的内容中应该使用的加密。AES-256是美国政府用于机密信息直至SECRET级别的相同加密标准。当与强密码正确实施时,它在当前技术下几乎是不可破的——我们谈论的是2^256个可能的密钥,这超出了可观察宇宙中原子的数量。但这里有个关键短语:“当与强密码正确实施时。”
密码是大多数PDF加密在实践中失败的地方。我分析了数千个加密的PDF,最常见的密码是可预测的模式:“password”、“123456”、公司名称、文档名称或各种格式的日期。在我去年进行的一次渗透测试中,我使用仅10,000个常见密码的字典成功破解了67%的加密PDF。该加密从技术上讲是强的——AES-256——但密码的强度却如此之弱,以至于加密完全可以说是不存在的。
此外,PDF中用户密码和所有者密码之间还有一个关键区分。用户密码(也称为打开密码)是打开文档所需的密码。所有者密码(也称为权限密码)控制您在文档打开后可以做什么——打印、复制文本、编辑等。问题在于:所有者密码在根本上是破坏性的。它们实际上并不加密内容;它们只是设置了合规的PDF阅读器同意尊重的标志。任何不关心合规的PDF阅读器都可以简单地忽略这些限制。我可以在大约五秒内使用任意多个免费的工具从PDF中移除所有者密码限制。
密码策略:建立真正有效的防御
如果您要使用密码保护——对于许多用例来说,这仍然是最实用的选项——您需要一个承认技术现实和人为因素的密码策略。我开发了一个框架,称为“上下文密码强度”,根据内容的敏感性、分发方法和文档的预期使用寿命来调整要求。
| 安全方法 | 保护级别 | 使用场景 | 局限性 |
|---|---|---|---|
| 仅密码保护 | 低 | 基本文件访问控制 | 易被绕过,不加密内容,容易受到暴力攻击 |
| 40位RC4加密 | 非常低 | 遗留兼容性 | 几秒内可破解,已弃用的标准,提供虚假的安全感 |
| 128位AES加密 | 中高 | 标准商业文档 | 如果实施正确则安全,易受到弱密码的影响 |
| 256位AES加密 | 高 | 敏感/受监管数据 | 强保护,需要正确的密钥管理和密码策略 |
| 信息删除 + 加密 | 非常高 | 法律、医疗、机密文档 | 必须使用适当的信息删除工具,关键元数据的移除至关重要,存在人为错误的风险 |
对于高度敏感的文档——任何包含PII、财务数据、商业机密或受监管的信息——