加了密码的 PDF 到底有多安全?这多半取决于密码本身

一位女性举着锤子,下方是锁住一叠文件的挂锁和链条

你要发送一份带有敏感内容的文档,于是设了一个密码。现在这个文件在打开前会先问你要密码,感觉事情就算办妥了。

大体上确实如此。给 PDF 加密码是件明智的事,我也鼓励你这么做。但值得弄清楚你到底建起了什么,因为这层保护有两个薄弱点,而它们都不在人们以为的地方。

两种密码,两件截然不同的差事

首先要说一个几乎人人都会绊倒的区别。PDF 支持两种密码,而它们的严肃程度并不相同。

所有者密码用来设定权限——不许打印、不许复制文字、不许编辑。文档对任何人都能打开,那些限制之所以生效,只是因为阅读器软件选择尊重它们。它是一个请求,不是一把锁。免费工具几秒钟就能去掉它,而这算不上什么破解;因为压根就没有东西需要攻破。

用户密码才是真正的那一个。没有它,文件的内容是真正被加密的,文档根本无法打开。

如果你设置密码时看到过关于打印和复制的选项,请检查一下你设的到底是哪一个。人们经常以为文档已经受到保护,而实际上他们只是客气地请求阅读器不要打印。

暴力破解实际上是什么样子

假设你设的是一个正经的用户密码。拿到文件的攻击者可以一个接一个地试密码,直到某一个成功——这就是暴力破解,唯一的问题是要花多久。

答案取决于两件事:你的密码有多长、多有变化,以及用的是哪个版本的 PDF 加密。

现代的 PDF 使用 AES-256,它足够强。较早的文件使用 RC4,密钥短得多,而 RC4 被认为已经过时很多年了。如果你的 PDF 软件仍在生成旧格式的加密,那就值得去设置里改掉它。

但真正的瓶颈通常不是加密强度,而是密码。破解工具不会硬着头皮穷举每一种可能的组合——它会先从常见密码词典、已知的泄露密码、人名、日期以及可以预料到的字符替换开始。Invoice2026! 看着挺复杂,却会在第一波就被拿下,因为”首字母大写的单词 + 年份 + 标点”这个模式,恰恰是那些工具最先尝试的。

长度胜过花招,而且屡试不爽。四个互不相关的单词,比八个字符的标点大杂烩难攻破得多,而且在电话里念出来也容易得多。

那种完全绕过密码的攻击

接下来这部分大多数人从没听说过,而它会重新定义整个话题。

2019 年,来自波鸿鲁尔大学和明斯特应用科学大学的研究者发表了 PDFex,并在 Black Hat Europe 上做了演示。他们证明,一份加密 PDF 的内容可以在完全不知道密码的情况下被提取出来。

原因出在结构上:PDF 加密并不会加密整个文件。结构中的一部分保持可读,好让软件弄清楚该如何处理这份文档。这就给攻击者留下了修改文件的空间——比如加进一条指令,让文档在合法收件人打开并输入正确密码的那一刻,把解密后的内容发送到远程服务器。

受害者每一步都做对了。他有密码,他打开的是自己的文档,而内容却从一条他从未看见的通道流了出去。

研究者测试了 27 款 PDF 阅读器。其中 23 款存在漏洞,可被那种直接外传内容的变体攻击,而全部阅读器都受制于第二种技术——它利用的是加密模式处理被篡改数据的方式。

厂商已经修补了这个问题,如今的软件状况好了很多。但即使补丁到位,这个教训依然成立:加密保护的是文件的内容,而不是文件的完整性。截获你加密 PDF 的陌生人读不了它——但他可能有办法以某种要紧的方式改动它。

针对加了密码的 PDF 文件的暴力破解攻击

实际该怎么做

用长口令,而不是聪明的密码。四到五个互不相关的单词。真正击败暴力破解的是长度,别的手段都远远比不上。

把密码单独发送。在同一个邮件会话里同时发出受保护的 PDF 和它的密码,是这整个领域里最常见的错误。任何能看到那个邮箱的人都会同时拿到两样东西。文件用邮件发,密码用电话或即时通讯软件发。

确认你用的是现代加密。如果你的软件提供兼容性选项,请选基于 AES-256 的那一项,而不是任何标着 RC4 或 40/128 位的选项。

不要把权限当成保护。如果你的要求是”不该看到的人一律打不开”,那你需要的是用户密码。打印和复制限制是给愿意配合的软件用的,不是给对手用的。

保持阅读器更新。PDFex 的修复是以更新的形式送达的,下一轮问题的修复同样会以更新的形式到来。

想一想加密是不是合适的工具。如果一份文档只给一个人、只发一次,密码就够了。如果几个人在好几个月里都需要用到它,那么一套带有像样访问控制的系统,会比一个被转发、被抄在纸上、最终被粘进群聊的密码更管用。

实际到底要花多久?

人们希望在这里得到一个数字,而老实的答案是:这个数字几乎完全取决于你,而不是取决于加密。

决定它的是攻击者必须猜多少次。一个出自可预测模式的密码——一个词典单词、一个人名、一个年份、一串键盘上连着的字符——所处的搜索空间小到现代硬件能很快穷举完。加进一个真正无法预料的单词,这个空间就会成倍放大。再加一个,它又会再放大一倍。这正是长度能决定性取胜的原因:每多一个元素,难度不是被加上去,而是被乘上去。

由此得出两个实际的结论。

第一,可预测性给你带来的损失比长度更大。一个由熟悉模式拼出来的十二位密码,可能比四个随机单词还要弱,尽管它看上去更复杂。破解工具恰恰是围绕人们被要求”包含一个大写字母、一个数字和一个符号”时会想到的那些模式而构建的。

第二,重复使用会让一切前功尽弃。如果你发出的每一份文档都由同一个口令保护,那么只要一次泄露——一封被转发的邮件、一位同事被攻破的邮箱——就会让这一整批文档暴露。攻击者什么都不需要猜。

实际的目标不是”无法破解”,而是”相比其他途径,不值得费这个劲”,而对我们大多数人日常发送的文档来说,四个互不相关的单词轻松就能达到这条线。

关于你在哪里加密的一点说明

这里有一处值得点破的讽刺。搜索”如何给 PDF 加密码”,排在最前面的结果是一些替你完成这件事的网站——也就是说,你得把那份你认为敏感到需要加密的文档,以未加密的状态上传到陌生人的服务器上,好让他们替你加密。

于是这项服务手里就握着明文,而且很可能连密码也一并握着。如果这份文档重要到需要保护,那它也就重要到不该先交出去。

这正是 PDF Manipulator 在本地完成的操作之一:文件在你自己的机器上加密,从不上传。它没法把一个弱密码变强,如果你把密码和文件一起用邮件发出去,它也帮不上忙——但它确实意味着,这份文档的敏感版本除了你自己的电脑之外,从未在任何地方存在过。

简单来说

给 PDF 加密码值得做,也很容易在细微处做错。请确认你设的是真正加密的那个密码,而不是只会客气请求的那个;用长口令代替聪明的短密码;永远不要让密码和文件走同一条通道。另外记住加密承诺的是什么:它保护的是文档里面的内容,而不是文档本身。

无需先上传就能加密你的 PDF——PDF Manipulator 完全免费 →

参考来源

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部