PDF 两种密码的真相:打开口令 vs 权限口令

· 约 4 分钟 🔐 PDF 加密

给 PDF 加密码感觉很严肃,但很多人不知道的是:PDF 有两种密码,而其中一种从技术上就形同虚设。下次收到”禁止打印”的 PDF 被秒解时,你就知道原因了。

两种密码的定位

PDF 规范(ISO 32000)定义了两个密码:

密码英文名作用真加密吗
打开口令User Password / Document Open Password打开文档前必须输入
权限口令Owner Password / Permissions Password修改权限前必须输入不是

关键区别:打开口令决定能否看到内容;权限口令只是告诉阅读器”请禁止复制/打印/编辑”——但这个”请”是可选的。

权限口令为什么不是真加密

设计初衷

1993 年 PDF 1.1 加入密码时,Adobe 的设想是:商业打印厂商会提供”加密 PDF 阅读器”,尊重权限位;用户想解除限制得找 Adobe 付费的专业版。这在 90 年代互联网不发达时还能用。

技术事实

文档内容本身加密 / 不加密由打开口令决定:

  • 有 user password:内容加密,无密码看不到
  • 只有 owner password:内容明文存储,文件头有一个”权限 flag”说明不允许什么
  • 两个都没有:纯明文

只有 owner password 的 PDF,任何不读权限 flag 的 PDF 解析器都能完整提取内容——内容本来就没加密。

秒破工具原理

网上一堆”PDF 解密”工具,在”只有 owner password”的场景下:

  1. 用任意开源 PDF 库(PDFium、PyPDF、Ghostscript)读文档
  2. 忽略 permissions flag
  3. 生成新 PDF 输出

整个过程不需要任何爆破算法,因为根本就没加密。正因如此,处理时间几乎是瞬间。

打开口令:真加密

PDF 打开口令对文档内容做实际加密:

  • PDF 1.3-1.4:40 位 RC4(已被破解)
  • PDF 1.4-1.5:128 位 RC4(弱,应避免)
  • PDF 1.6:128 位 AES(安全)
  • PDF 1.7+256 位 AES(推荐)

现代工具默认给 PDF 1.7+ 用 AES-256。强密码下这个加密在可预见的未来无法破。

设密码时该设哪个

按目的选:

敏感内容不能外传

打开口令(user password),必须用 AES-256,密码至少 12 位随机。别只设权限口令——那等于没设。

防止同事误打印 / 误编辑

可以设权限口令,当作”防呆提示”。但要预期到”真想绕过就能绕过”——不适合法律证据、财报等正式用途。

两个都设

PDF 支持同时设两个。user password 负责”能不能看”,owner password 负责”能不能改”。管理场景合适(员工看到内容但不能随便改和外传)。

常见 PDF 加密误区

”我设了密码就安全”

关键问题:哪种密码?如果只是 owner password,一键解除;如果 user password 密码弱(生日、123456),字典攻击分分钟。

“加密 PDF 转图片就绕过了”

只有 owner password 的 PDF 确实成立——你能看到内容才能转图片,转图片后自然没有权限限制。这恰恰证明 owner password 不是真加密。

有 user password 的 PDF,你打不开就转不了图片,除非你知道密码。

“打印成 PDF 能去密码”

系统”打印到 PDF”的前提是当前 PDF 阅读器允许打印

  • 只有 owner password 且阅读器遵守 flag:不能打印,但能绕过(用不遵守的阅读器)
  • 只有 owner password 且阅读器不遵守:直接打印,生成无密码 PDF
  • 有 user password:输入密码才能打开,打开后如果 owner password 允许打印就能打

”PDF 里带水印就防得住截图”

水印只是威慑,技术上挡不住。用户打开能看到 = 用户能截图。高敏场景应该走流式阅读器 + 动态水印(含用户 ID)+ 拒绝复制粘贴快捷键,但这些都是软防护,决心够大的人都能绕过。

加密 PDF 的兼容性

不同阅读器对加密方式支持不同:

阅读器AES-128AES-256
Adobe Reader✓(11+)
macOS Preview
Chrome / Edge PDF
老版 Foxit部分
手机系统阅读器多数支持
打印厂商设备不一定

发给老系统(打印厂、政府部门),AES-128 兼容性更好;现代场景直接 AES-256。

强 PDF 密码的标准

和普通账号密码相同:

  • 长度 ≥ 12 位(高敏 ≥ 16)
  • 含大小写字母 + 数字 + 符号
  • 不用字典词、生日、公司名
  • 每份文档不同密码

密码记不住用密码管理器。不要在同一邮件里既发文件又发密码。

解除权限限制的合规性

给自己的文档解除权限限制——合法。 帮他人解除——看授权情况。 解除非授权的版权内容——违法。

工具只是工具,用途由你决定。很多场景是”自己加密忘了 owner password 只记得 user password”——那就是合理的找回需求。

加密一个 PDF

选文件,设置打开密码(建议 12 位以上)和/或权限密码,算法选 AES-256——本地浏览器加密,文件不上传。生成的 PDF 在 Adobe Reader、Edge、macOS Preview 等主流阅读器里都能打开(需要密码)。

❓ 常见问题

为什么别人能从"禁止打印"的 PDF 直接打印?

因为 PDF 的权限口令(owner password)不是真加密,只是给 PDF 阅读器看的一个"建议"。文档内容本身没加密——解码器只要不读这个 flag 就能完整解析。一堆在线工具几秒就能"解除限制",原理就是生成新 PDF 忽略原文件的权限位。

那"打开密码"是不是也一样容易破?

完全不同。用户口令(user password / 打开密码)会对文档内容做真实加密(AES-128 或 AES-256)。强密码下基本无法破解——能否打开完全取决于密码强度。8 位弱密码几小时能爆破,16 位随机密码实际打不开。

加密 PDF 还能被搜索引擎收录吗?

加了打开密码的 PDF,搜索引擎没法读内容,不会被收录内容。但文件名、文件大小、URL 仍会被索引——敏感文档建议连文件名也避免暴露敏感词。另外,生产环境 PDF 别放在公开 URL 下,应该走需要登录的下载接口。

权限密码毫无意义吗?为什么 Adobe 还保留?

作为"合规提示"仍有意义——正规商业软件(Adobe、Office、大部分厂商阅读器)会遵守权限标记,阻止用户意外复制/打印/编辑,达到"日常合规"的效果。但绝不能把它当作安全机制。真的要保护内容,必须用打开密码(user password)并设强密码。

🔐 打开 PDF 加密 AES-256 · 打开密码/权限口令 · 自定义禁用复制/打印/编辑