PDF 安全解析:密码、权限与加密
PDF 安全常被描述为"密码保护",但现实更微妙。受保护的 PDF 可以要求密码才能打开、限制读者可对其做什么,并加密其内容。本参考解释每一层如何工作、加密选项实际意味着什么,以及 PDF 安全在何处不再有用。
基础
什么是 PDF 安全?
PDF 安全是 PDF 规范定义的一组可选控制,文档作者可将其应用于文件。有三个独立机制,常一起使用:
- 打开密码 — 文档被加密,没有正确密码无法查看。
- 权限 — 一组标志,即使在文档打开之后也限制打印、复制、修改和其他操作。
- 加密 — 用于打乱文档内容使其在没有密钥时不可读的算法和密钥长度。
这些定义在 PDF 标准的 Standard Security Handler 中。一个未应用任何这些的 PDF 是普通未保护文档 — 任何能打开它的人都可完全读取和编辑。
两种密码
用户密码 vs 所有者密码
受保护的 PDF 可以有两个不同的密码,理解区别很重要:
- 用户密码(也叫"打开密码")。打开并查看文档所需。没有它,文件根本无法解密。
- 所有者密码(也叫"权限密码")。更改权限标志所需 — 例如移除打印限制或允许复制。只有用户密码的读者可以打开文件,但受所有者设置的权限约束。
文档可以有用户密码、所有者密码或两者都有。一个常见模式是只设置所有者密码:文档对任何人自由打开,但除非读者提供所有者密码,否则打印或复制等操作受限。只设置用户密码意味着任何能打开文件的人也拥有全部权限 — 密码控制访问,不控制行为。
可限制的内容
PDF 权限
权限以 32 位整数存储在安全处理器中。每一位对应一个特定操作。最常用的权限标志是:
- 打印 — 文档是否可被打印。
- 高分辨率打印 — 与基本打印分开;某些文档允许低质量打印但不允许高保真输出。
- 复制或提取文本和图形 — 内容是否可被复制到剪贴板或被无障碍工具提取。
- 修改内容 — 页面内容是否可被编辑。
- 注释、填写表单和签名 — 是否可添加评论、表单字段或数字签名。
- 组装 — 是否可插入、删除或旋转页面。
- 为无障碍提取 — 一个单独的标志,专门允许为屏幕阅读器和辅助技术提取文本。
这些标志由 PDF 查看器而非文件本身执行。合规的阅读器遵守它们;不合规的工具可能完全忽略它们。这是下面讨论的一个关键局限。
算法
加密:RC4 vs AES
加密算法和密钥长度决定暴力破解文档的难度。PDF 标准在其历史上支持了几种:
- RC4(40 位和 128 位) — 原始 PDF 加密算法。40 位 RC4 按现代标准是弱的并被视为已弃用。128 位 RC4 更强,但 RC4 本身有已知密码学弱点,不再被推荐。
- AES-128 — 在 PDF 1.6 中引入。具有 128 位密钥的现代块密码。比 RC4 显著更强,并被当前 PDF 阅读器广泛支持。
- AES-256 — 在 PDF 1.7 Extension Level 3 中引入并延续到 PDF 2.0(ISO 32000-2)。标准中的最强选项。注意:一些早期 AES-256 实现有一个缺陷,密码哈希可独立于文档被攻击,削弱了保护 — 现代写入器使用已修正的修订版。
对于新文档,AES-256 是可用时的推荐选择。应避免 RC4。加密应用于文档的字符串和流(实际内容),不应用于文件的结构骨架 — 对象号和交叉引用表保持可见,使阅读器能在没有密钥的情况下导航文件。
底层
PDF 安全内部如何工作
当写入器加密一个 PDF 时,它使用由安全处理器修订版定义的哈希方案从用户密码派生一个加密密钥。该密钥用于加密文档的字符串和流对象。权限标志和一个验证哈希存储在文档的加密字典中,该字典本身不被加密(这样阅读器可以检测文件是否受保护并提示输入密码)。
当阅读器打开文件时,它使用提供的密码重新派生密钥,将其与存储的哈希比对,如果有效则按需解密每个对象。权限由查看器在允许每个受限操作之前检查。因为结构不被加密,受保护的 PDF 仍透露文件大小、页数和加密的存在,但不透露页面内容。
诚实的部分
PDF 安全的局限
PDF 安全有用,但理解它不是什么很重要:
- 它不是 DRM。 PDF 安全不把文档绑定到特定设备、用户账户或许可证服务器。任何拥有用户密码的人都可以在任何地方打开文件并传递下去。
- 权限是建议性的,非强制性。 因为查看器执行权限标志,选择忽略它们的工具可以照样复制、打印或提取内容。几个开源 PDF 库和一些阅读器正是这样做的。权限阻止随意用户;它们不阻止有决心的人。
- 密码可被暴力破解。 AES 加密 PDF 上的弱用户密码可被离线字典或暴力攻击恢复,速度在现代硬件上达每秒数百万次猜测。加密强度不补偿弱密码。
- 旧加密可被攻破。 40 位 RC4 可在几秒内被破解。128 位 RC4 有结构性弱点。用这些遗留设置加密的文档今天提供极少的真实保护。
实践要点:当真正需要保密时,使用强而长的用户密码和 AES-256 加密。把权限标志当作便利,而非安全边界。
IXPDF 的立场
IXPDF 与 PDF 安全
IXPDF 构建于本地优先、隐私优先的架构之上:你的文件永不离开你的设备。这一承诺同样适用于未来的保护或解锁功能 — 加密或解密将在你的浏览器中发生,而非服务器上。
然而,IXPDF 目前不提供密码保护或密码移除工具。两者都标记为 Research Required。原因是技术性的:我们当前的 PDF 引擎 pdf-lib 不支持读取或写入加密 PDF。添加可靠的 PDF 加密需要一个我们尚未针对包体积、性能和浏览器兼容性评估的不同引撃 — 而我们不会发布不达到我们质量标准的功能。当合适的引撃被集成时,这些工具将可用,同时保持所有处理本地。
在此之前,本页的概念仍适用于你遇到的任何 PDF。要在不上传的情况下查看文件元数据透露了什么,请参阅我们的元数据参考和本地编辑元数据工具。
继续阅读
相关资源
继续阅读