PDF安全完全指南:密码、加密、编辑和数字签名
覆盖PDF密码保护、AES-256加密、永久编辑、基于证书的安全和数字签名的全面参考。包含真实编辑失败案例和安全检查清单。
PDF承载秘密——大多数人保护得很差
PDF是敏感文档的默认格式:合同、纳税申报表、医疗记录、法律摘要、财务报表、公司文件和政府表格。然而,大多数人在保护这些文档时都会犯错,使其暴露在外。一个"受密码保护的"PDF可能使用了2015年就已破解的RC4加密。一份"已编辑的"文档可能仍然在这些黑色方块下存在可选择的文本。一份"已电子签名的"文档可能没有防止签署后被篡改的保护。
本指南涵盖正确保护PDF所需了解的一切,按每种技术所应对的威胁进行组织。
第1部分:密码保护
PDF密码保护有两种经常被混淆的不同类型。
用户密码(打开密码)
控制谁可以打开文件。没有此密码,PDF内容保持为加密的密文。用户密码是真正的安全——不是建议性的、不是可选的、不能通过不同的PDF阅读器绕过。如果文档使用AES-256和强密码加密,它将保持不可读,直到提供正确的密码。
所有者密码(权限密码)
控制他人在打开文档后可以做什么——打印、复制文本、编辑、添加注释和填写表单。以下是大多数PDF用户不知道的关键事实:所有者权限是建议性的,而非强制性的。 Adobe Acrobat会尊重它们。大多数第三方PDF阅读器——包括Chrome、Firefox和Edge内置的查看器——完全忽略它们。
仅使用所有者密码(无用户密码)保护的文档实际上并不安全。任何打开它的人都可以使用不强制执行这些限制的阅读器绕过打印和编辑限制。所有者密码是为每个人都使用Adobe Acrobat的世界设计的。那不是我们生活的世界。
规则: 始终设置用户密码。所有者密码是辅助性的便利信号,而非安全措施。
AES-256 vs AES-128 vs RC4
PDF规范支持三种加密算法:
| 算法 | 密钥大小 | 引入时间 | 状态 |
|---|---|---|---|
| RC4 | 40-128位 | PDF 1.3(1996年) | 已破解。存在实际攻击手段。请勿使用。 |
| AES-128 | 128位 | PDF 1.6(2004年) | 安全,但不推荐用于新文档 |
| AES-256 | 256位 | PDF 2.0(2017年) | 当前标准。用于所有新文档。 |
RC4曾是近十年的标准PDF加密算法,但自推出以来密码分析已取得显著进展。2015年,研究人员证明RC4加密的PDF可以使用已知明文攻击在一分钟内破解。存在多种工具可以在几秒内剥离PDF的RC4加密。
相比之下,AES-256被美国国家安全局批准用于加密高达绝密级别的机密文件(当与256位密钥在批准模式下使用时,CBC模式符合要求)。目前认为使用任何已知或近期技术都不可能通过暴力破解。
保护PDF时始终选择AES-256。 一些较旧的PDF阅读器不支持AES-256——特别是Adobe Acrobat 7及更早版本,以及2010年代的一些移动阅读器。如果必须与非常古老的软件兼容,AES-128是可以接受的后备选择。切勿选择RC4。
PDF加密的实际工作原理
当您在PDF上设置密码时,库不会将整个文件作为一个单一blob加密。相反,PDF内部的每个内容流——每页的文本、每个嵌入的图像、每个字体程序——都是单独加密的。加密密钥使用密钥派生函数从您的密码派生,该函数还结合了文件的唯一ID,确保在两个不同的PDF上应用相同的密码会产生两个不同的加密密钥。
AES-256加密(PDF 2.0)使用六步密钥派生过程,包括:
1. 对您的密码进行SHA-256哈希(防止预计算攻击)
2. 添加文件的唯一标识符(防止相同密码在不同文件中产生相同密钥)
3. 使用64字节盐和验证密钥进行重复哈希(防止通过彩虹表加速暴力破解)
4. 在CBC模式下对实际内容流进行AES-256加密(用于机密性)
结果是,没有密码的攻击者看到的是与随机噪声无法区分的密文,而非文本。每个内容流都单独加密,因此攻击者即使从加密数据中也无法推断文档的结构。
您的密码应该多强?
攻击PDF密码通常涉及暴力破解(尝试每个可能的密码)或字典攻击(从常用短语列表中尝试密码)。对两者的抵抗力取决于您的密码:
- 8个字符,仅小写字母: 在消费级硬件上不到24小时即可通过暴力破解。
- 10个字符,大小写混合+数字: 在消费级硬件上6-12个月破解;在GPU集群上数周。
- 14个字符,大小写混合+数字+符号: 在当前技术下通过暴力破解实际上不可破解。密钥空间为95^14,约为10^27种组合。
- 来自密码管理器的16个以上随机字符: 基本上对暴力破解提供永久安全性。
对于敏感文档,使用密码管理器生成的密码:至少14个字符,包括大写字母、小写字母、数字和符号。不要使用字典单词、日期或可能被认识您的人猜到的短语。
密码保护的限制
密码是最常见的PDF安全机制,但它们有根本性的弱点:
- 密码如果较弱可能被暴力破解。 即使使用AES-256,像"John2023"这样的密码在几秒内就会被字典攻击攻破。
- 密码必须与每个合法收件人分享。 一旦分享,该收件人可以将密码(和文件)分享给任何人。没有访问撤销机制——更改密码需要重新加密并重新分发文档。
- 没有审计追踪。 没有谁在何时打开文档以及打开次数的记录。如果发生泄露,您无法追溯到源头。
- 密码可能在传输过程中被拦截。 如果您通过单独的邮件发送密码,邮件可能被拦截。如果您在同一封邮件中同时发送密码和文档,密码保护就毫无用处。理想的机制是通过不同的渠道(电话、加密消息)或通过密码管理器的共享保管库分享密码。
第2部分:编辑——永久删除内容
编辑是PDF安全操作中最容易被误解的。在PDF查看器中用黑色矩形覆盖文本并不能真正编辑。
黑框问题
当您使用预览、Chrome的PDF查看器甚至某些版本的Adobe Acrobat注释工具在文本上绘制矩形时,您是在页面上添加一个形状注释。下方的文本仍然存在于PDF的内容流中。任何不渲染注释的阅读器——或任何提取文本的工具——都会清晰地看到"已编辑"的文本。
这并非假设。2019年,美国司法部因一份法院文件使用了预览中绘制的黑框覆盖文本,而无意中披露了机密线人的姓名。PDF元数据保留了原始文本。任何提取PDF纯文本的人都能读到线人的姓名。FBI不得不调查其办公室的内部泄漏文化,后来才发现原因根本不是泄漏——而是一名政府雇员认为已妥善保护的PDF的编辑失败。
类似的事件发生在苹果公司(产品规格用黑框编辑,文本仍可提取)、多家律师事务所(法院文件中的客户姓名),以及至少一个联邦机构(FOIA发布中的社会安全号码)。
真正的编辑
真正的编辑从PDF结构中永久移除内容。该操作在内容流级别工作:
1. 工具识别要编辑区域内的特定内容——文本字符、图像像素、矢量路径。
2. 这些内容对象从页面的内容流中被移除。不是覆盖,不是隐藏——而是移除。
3. 剩余内容为页面重新编译为新的内容流。
4. 可以在移除内容的位置放置一个实心矩形(可选,但通常是生成可见编辑文档的标准做法)。
真正的编辑之后,无法恢复已移除的内容。PDF不再包含这些数据。即使绕过渲染直接解析内容流的工具也找不到任何内容,因为内容已不存在。
如何验证编辑是否真正有效
在分享编辑后的PDF之前,验证编辑是否有效:
1. 尝试选择编辑区域。 在任何阅读器中打开PDF,在编辑出现的区域拖动以选择文本。如果有任何文本可选,编辑就失败了。
2. 复制并粘贴周围区域。 选择编辑标记附近的文本并粘贴到文本编辑器中。如果粘贴中出现任何已编辑的文本,编辑就失败了。
3. 提取原始文本。 使用pdftotext(Poppler的一部分)等工具转储PDF的文本内容:pdftotext document.pdf -。在输出中搜索本应被编辑的词语。如果它们出现,编辑就失败了。
4. 检查页面内容流。 在文本编辑器中打开PDF或使用PDF结构检查器。在未压缩的内容中搜索已编辑的词语。如果它们出现,编辑在内容流级别失败了。
在pdfprivately上,编辑PDF工具执行真正的内容流级别编辑。已编辑的文本被永久移除,无法从输出文件中恢复。
著名的编辑失败案例
这些真实案例说明了编辑错误的代价:
2019年——DOJ线人曝光。 如上所述,司法部在一份法院文件上使用了黑框注释编辑。下方的文本完全可恢复。FBI最初发起了内部泄密调查。
2018年——苹果产品规格。 苹果公司在一起专利案件中提交了一份法院文件,其中使用Word中的黑框编辑了产品销售数字。编辑后的文本在PDF元数据中仍然可读。数字在数小时内被新闻机构公布。
2016年——三星法律文件。 三星的法律团队使用Word中的黑色高亮编辑了法院文件中的财务数据。文本保留在文档元数据中。对方律师可以阅读已编辑的数字。
2013年——IRS的FOIA回复。 IRS通过用白色方块覆盖文本的方式编辑了一份根据FOIA发布的文件的部分内容。有人选择了文本,复制并粘贴到新文档中,恢复了所有"编辑"后的文本。
共同点:有人相信视觉模糊等同于数据移除。事实并非如此。
敏感文档的编辑检查清单
在分享任何包含不得披露信息的PDF之前,请遵循以下七个步骤:
1. 使用专为编辑设计的工具,而不是PDF查看器的注释工具。工具必须修改内容流,而不是叠加注释。
2. 对每个内容编辑两次。 应用编辑,然后通过尝试选择、复制和搜索内容来验证。错误会发生。验证会捕捉它们。
3. 同时编辑元数据。 PDF存储元数据——作者姓名、创建日期、编辑应用程序、文档标题——这些可能识别或暴露有关文档的信息。在分享前使用编辑元数据工具或PDF优化器清理元数据字段。
4. 检查隐藏图层。 某些PDF包含可以隐藏可见内容但仍保留在文件中的图层(OCG——可选内容组)。在编辑之前展平所有图层。
5. 移除注释和评论。 评论、便签和标记注释可能包含您正在编辑的信息。在编辑之前使用移除注释工具。
6. 考虑展平PDF。 展平将所有内容层和注释合并为单个内容层并移除表单字段。先展平再编辑以获得最大保证。
7. 在副本上测试。 编辑文档的副本,而不是原件。如果编辑工具有错误,原件仍然完好。
第3部分:证书加密
对于密码不够安全的环境,PDF支持使用公钥基础设施(PKI)的基于证书的加密。您不是用密码加密文档,而是使用每个预期收件人的公钥进行加密。每个收件人使用其私钥解密文档。
证书加密解决了密码的若干问题:
- 无需分享密码。 文档针对特定收件人加密。只有他们可以使用私钥打开。
- 审计追踪。 证书基础设施可以记录谁在何时访问了什么文档。
- 撤销。 如果收件人不再应拥有访问权限,他们的证书可以被撤销。下次他们尝试打开文档时,被撤销的证书将无法解密。
- 不可否认性。 由于解密密钥与特定身份绑定,收件人不能否认访问过文档。
缺点在于复杂性。证书加密需要PKI基础设施,这意味着需要证书颁发机构来签发和管理证书、发布证书的目录以及每个用户的客户端配置。大多数使用证书加密的组织通过Adobe LiveCycle或类似的企业文档管理平台进行部署。
对于个人用户,使用强密码的密码保护更实用,并且对大多数使用场景提供同等级别的安全。
第4部分:数字签名与电子签名
这些术语经常互换使用,但指的是完全不同的东西:
| 属性 | 电子签名 | 数字签名 |
|---|---|---|
| 它是什么 | 表示意图的图像或打字姓名 | 使用私钥签名的加密哈希 |
| 技术基础 | 无(只是页面上的数据) | 带证书的公钥密码学 |
| 篡改检测 | 无 | 任何更改都会破坏签名 |
| 身份验证 | 仅视觉 | 基于证书 |
| 法律框架 | ESIGN法案、eIDAS SES | eIDAS AES/QES |
| 升级路径 | 不可能 | 可以链式升级到合格 |
电子签名是页面上的视觉表示。它证明签署意图。它不能证明文档在签署后未被篡改。
数字签名是文档的加密哈希,使用签署人的私钥加密。如果文档的单个字节在签署后发生变化,哈希将不再匹配,数字签名将显示为无效。这是相当于防篡改封条的PDF技术。
对于大多数商业文件,电子签名已足够——法律承认意图,关于文档完整性的争议很少见。对于篡改是真正问题的文档(涉及大额财务的合同、监管文件、证书和许可证),数字签名提供加密证明,证明收到的文档就是签署的文档。
第5部分:PDF元数据——被忽视的泄露
每个PDF都携带元数据:作者姓名、文档标题、创建日期、修改日期、编辑应用程序,有时还有修订历史。这些元数据对任何打开文档并选择文件>属性(或等效操作)的人可见。
常见的元数据泄露:
- 作者姓名设置为您的系统用户名。 当您从Word或Google Docs创建PDF时,作者字段默认为您的系统登录名。如果您的用户名是"JohnDoe"或"jsmith@company.com",这会将您的身份或电子邮件地址泄露给任何检查文档的人。
- 编辑应用程序暴露您的工具。 使用您雇主的文档管理系统创建的PDF可能将该系统的名称嵌入到创建者字段中。这对于分析您文档的竞争对手来说可能是有用的信息。
- 协作编辑的修订历史。 有些PDF会保留修订标记、跟踪更改和编辑过程中的评论,即使您认为导出的是干净的副本。
在外部共享PDF之前,检查并清理其元数据。在pdfprivately上,编辑元数据工具允许您查看和修改所有元数据字段。移除或泛化可能泄露信息的字段:
- 将作者设置为通用名称:"作者"或您的组织名称,不附带识别细节。
- 仅在主题和关键词字段对收件人有用时才设置它们。
- 移除文档管理系统添加的任何自定义元数据属性。
第6部分:客户端安全——您的文件从不离开设备
本指南中描述的每项安全操作——密码保护、AES-256加密、编辑、元数据清理、数字签名——都可以完全在您的浏览器中使用像pdfprivately这样的客户端工具执行。
这对PDF安全的重要性是大多数人没有考虑到的。当您将敏感文档上传到基于服务器的PDF工具进行加密或编辑时,您恰恰在试图保护它的时刻将其暴露了。您想要保护免受未经授权访问的文档通过网络传输、存储在第三方服务器上、由您未编写的软件处理,然后送回给您。服务器运营商可能记录、保留或检查您的文档,尽管有隐私承诺。
客户端安全反转了这一点。文档从不离开您的设备。加密、编辑或元数据清理代码被下载到您的浏览器并在您的CPU上执行。您的文件从文件系统读入浏览器内存,在那里处理,然后下载回您的文件系统。没有文件内容的网络传输。没有可能被攻破、传唤或审计的第三方服务器。
在基于服务器的工具上受密码保护的PDF在处理期间曾以明文形式存在于该服务器上。在客户端工具上受密码保护的PDF始终在您的设备上保持加密——明文仅存在于浏览器标签页的地址空间中。
这是客户端处理的基本安全属性,与本指南中讨论的每种技术都相关。您的PDF安全不应依赖于信任另一方。使用基于浏览器的工具,您不必如此。
试试这些pdfprivately工具
保持更新
获取最新的PDF技巧、隐私指南和工具更新。无垃圾邮件,无跟踪 — 只有有用的内容发送到您的收件箱。
我们尊重您的隐私。随时退订。无跟踪,无分析。