你是不是也遇到过这样的困惑:PDF 设了密码,但别人好像随便就能复制里面的内容?或者反过来——一份 PDF 怎么都打不开,输什么密码都不对?
这两种体验对应的其实是 PDF 的两种完全不同的密码机制。理解它们的区别,能帮你正确保护自己的文档,也能在合法前提下解除不必要的限制。
打开密码:密码学级别的真加密
打开密码(Document Open Password,也叫用户密码)是 PDF 安全体系中唯一的硬防护。设了打开密码的 PDF,文档内容在存储层面被 AES 或 RC4 算法加密——直接读取二进制数据得到的只是一堆无意义的密文。
它是怎么工作的?
密码本身并不直接参与加密。整个流程是这样的:
- 生成文件密钥:PDF 软件随机生成一个文件密钥(File Key),用它对文档内的所有字符串和数据流执行 AES/RC4 加密
- 密码 → 密钥验证:你输入的密码经过哈希处理(SHA-256 / MD5),生成的值与 PDF 加密字典中的验证项比对
- 匹配成功 → 解锁文件密钥:验证通过后,系统派生出文件密钥,阅读器才能渲染文本、图像和表单
这意味着:没有正确密码 = 从数学上无法读取内容。这种不可读性由密码学强度保障,跟阅读器是否"合规"毫无关系。
打开密码无法绕过
对于使用 AES-256 + PBKDF2(修订版本 6)加密的 PDF,即使动用顶级 GPU(如 NVIDIA A100),由于高迭代次数的密钥拉伸,每秒也只能尝试几千个密码。一个 12 位混合密码的穷举时间以百年计。唯一的破解方式是知道密码本身。
加密算法的演进
PDF 的加密历史本质上是一部算法淘汰史。早期的弱加密今天已毫无安全性可言:
| 加密版本 | 算法 | 密钥长度 | 安全评估 |
|---|---|---|---|
| Revision 2(Acrobat 3/4) | RC4 | 40 位 | ❌ 秒破,密钥空间仅 2⁴⁰ |
| Revision 3(Acrobat 5/6) | RC4 | 128 位 | ⚠️ 算法本身有统计学漏洞,配合 MD5 易受彩虹表攻击 |
| Revision 5(Acrobat 9+) | AES-CBC | 256 位 | ✅ SHA-256 验证,强度足够 |
| Revision 6(PDF 2.0) | AES-CBC | 256 位 | ✅✅ PBKDF2 密钥拉伸,GPU 暴力破解成本不可接受 |

如果你使用 Acrobat 或其他工具加密 PDF,务必选择 AES-256(兼容 Acrobat X 及更高版本)。选择"兼容 Acrobat 5.0"会降级为 128 位 RC4,安全性大打折扣。
PBKDF2:让暴力破解变得不划算
PDF 2.0(ISO 32000-2)引入的修订版本 6 处理器,核心改进是 PBKDF2(Password-Based Key Derivation Function 2)——一种"密钥拉伸"技术:
- 加盐:每个文档随机生成 32 字节的盐值。即使上千份 PDF 使用相同密码,由于盐不同,哈希结果也完全不同
- 多轮迭代:将哈希函数循环执行数万到数十万次。旧版 MD5 只需一次运算,PBKDF2 把每次尝试的计算成本放大了 10 万倍以上
- OWASP 建议:PBKDF2-HMAC-SHA256 的迭代次数至少应为 310,000 次
简单说:PBKDF2 把"试一个密码"这件事变得很慢,从而让攻击者的速度优势被完全抹平。
权限密码:一个"君子协定"
权限密码(Permissions Password,也叫所有者密码/Owner Password)的设计初衷完全不同——它不阻止你阅读,而是限制你的操作权限,比如禁止打印、复制、编辑。
本质区别:没有真正加密
这是最关键的一点:权限密码通常不加密文档内容。
当 PDF 仅设置了权限密码而没有打开密码时,任何人都可以在不输入凭证的情况下打开文档。此时,限制的实施完全依赖于阅读器软件的"自觉"——Adobe Acrobat 看到权限标记后会主动把"打印"按钮变灰,但从技术上说,内容是可以被读取的。
权限密码 = 合规依赖
权限限制的有效性依赖于阅读器"合规"。Adobe Acrobat、Foxit Reader 等主流软件会遵守这些限制,但很多开源阅读器、浏览器插件根本不读取权限标记——它们会无视限制,允许自由复制和打印。
权限位掩码:精细到每个操作
PDF 的权限控制通过加密字典中的 P 值(一个 32 位有符号整数)实现。每个位元对应一种操作许可:
| 位元 | 控制内容 | 场景示例 |
|---|---|---|
| Bit 3 | 打印 | 禁止发送到打印机 |
| Bit 4 | 修改内容 | 禁止文本编辑、页面旋转 |
| Bit 5 | 复制/提取 | 禁止选中文字并粘贴 |
| Bit 6 | 批注/注释 | 禁止添加高亮和备注 |
| Bit 9 | 表单填写 | 允许填写但禁止修改表单结构 |
| Bit 10 | 辅助技术提取 | 允许屏幕阅读器等无障碍工具 |
| Bit 11 | 文档组装 | 允许插入/删除/旋转页面 |
| Bit 12 | 高质量打印 | Bit 3 开启 + Bit 12 关闭 = 只能低分辨率打印 |

为什么权限密码能被秒速移除?
权限密码面临三个结构性弱点:
- 非合规阅读器:许多开源或第三方 PDF 工具根本不读取 P 值,直接无视所有限制
- 打印重构:通过虚拟打印机将受限 PDF 打印为新 PDF,新文件不带任何权限限制
- 算法公开:权限密码的验证算法是公开的,且在文档可被打开的前提下(解密密钥已知),qpdf 等工具可以秒速移除所有 P 值限制
权限密码限制?一键移除
如果你的 PDF 能正常打开但无法打印或复制,说明只设了权限密码。使用 PDF 解锁 即可一键移除所有操作限制——无需输入任何密码。
两种密码的全维度对比
| 维度 | 打开密码(用户密码) | 权限密码(所有者密码) |
|---|---|---|
| 核心目的 | 保护机密性,阻止查看 | 管理操作范围,限制打印/复制/编辑 |
| 加密效果 | AES/RC4 全量加密数据流 | 通常不直接加密内容 |
| 破解难度 | 极高(需破解 AES + PBKDF2) | 极低(秒速移除) |
| 实施依据 | 密码学数学强度 | 阅读器软件的"自觉性" |
| 用户体验 | 打不开文档,提示输入密码 | 能阅读,但功能按钮灰色 |
| 适用场景 | 银行账单、合同、机密报告 | 宣传册、版权说明、内部流转文档 |
| 安全隐喻 | 🔒 保险箱的密码锁 | 🚧 "请勿触摸"的警示牌 |

安全建议:如果文档对机密性要求高,必须设置打开密码。仅设权限密码等于没有加密——内容一旦被读取,泄密就已经发生了。
真正的威胁往往不是算法
即使采用了最强的 AES-256 + PBKDF2,多数 PDF 泄密仍然源于"人的因素":
- 密码同传:在同一封邮件中发送加密 PDF 和密码——等于锁和钥匙绑在一起
- 密码重用:所有受保护文档使用相同的弱密码,或与社交账户共享密码
- 临时解密后遗忘:为了打印而移除密码,随后将无密码文件通过非加密渠道转发
密码传输建议
加密 PDF 和密码应通过不同渠道传输。例如:PDF 通过邮件发送,密码通过短信或即时通讯工具告知。
操作指南
移除权限限制
如果你的 PDF 能打开但无法复制/打印/编辑:
- 上传到 PDF 解锁
- 工具自动检测到权限密码并移除所有操作限制
- 下载解锁后的 PDF,自由使用
解锁加密 PDF
如果你的 PDF 需要密码才能打开(且你知道密码):
- 上传到 PDF 解锁
- 在弹出的密码框中输入正确密码
- 下载不再需要密码的 PDF
给 PDF 加密保护
如果你需要保护自己的文档:
- 上传到 PDF 加密
- 选择要设置的密码类型和权限限制
- 关键:确保选择 AES-256 加密标准以获得最高安全性
PDF 安全的未来
密码加密虽然是主流,但它的固有局限——无法防截屏、无法追踪阅读历史、无法远程销毁——正推动行业向更高级方案演进:
- 证书加密(PKI):用公钥加密文档,私钥存储在智能卡或安全芯片中,消除密码传输环节
- 数字版权管理(DRM):透明加密 + 设备绑定 + 动态水印 + 阅读次数限制,适合高度敏感的商业文档
- PDF 2.0 增强:ISO 32000-2 正式弃用了所有版本的 RC4 算法,并引入 AES-GCM(带身份验证的加密),可检测文档在加密状态下是否被篡改
常见问题
Q:只设了权限密码(打印/复制限制),文件安全吗? A:不安全。 权限密码不加密内容,任何不合规的阅读器或 解锁工具 都能秒速移除限制。如需真正保护,请同时设置打开密码。
Q:忘记了 PDF 的打开密码,有办法找回吗? A:如果使用了 AES-256 加密且密码足够复杂,几乎无法破解。建议联系原文件发送者获取密码。我们不会、也无法帮助破解未知密码。
Q:为什么有些 PDF 上传后自动就能编辑了? A:因为那些 PDF 只设了权限密码。Dpdf 的所有转换工具都会自动解除权限限制——这是合法且标准的操作,并不涉及破解加密。
Q:怎样的密码才够安全? A:至少 12 位,混合大小写字母、数字和特殊字符。熵值达到 78 位以上的密码,配合 AES-256 + PBKDF2,在当前技术条件下无法被暴力破解。
