跳到主要内容
PulsarKit

发邮件前给PDF设置密码的正确方法

给PDF加密码可能意味着两件完全不同的事,其中只有一种能真正阻止别人读到文件内容。

作者:PulsarKit ·

两种密码,管两件不同的事

一个PDF可以带用户密码和所有者密码,两者保护的东西不一样。用户密码用来打开文档。没有它,文件里什么也读不到,因为整个内容流都已加密,页面文字、字体和图片在磁盘上都是密文。所有者密码只管权限:打印、复制、编辑和批注。一个文件可以只有其中一种,所以有些PDF在任何阅读器里都能直接打开,却不让打印;有些打开毫无阻碍,却不让你把一段文字复制到邮件里。

这个区别在你设置密码的那一刻最要紧,因为它决定了你承诺的是什么。如果目的是让某个附件不被转发到的人读到,在PDF加密里真正起作用的是用户密码。如果只是想告诉同事“请别改这份文件”,同时仍让任何人都能查看,那么带权限限制的所有者密码才是合适、也更轻量的做法。

哪些保护靠得住,哪些只是礼貌的请求

现代PDF密码保护用AES-256加密整份文档,采用第6版加密修订,这是PDF 2.0定义的最强选项。所有主流阅读器,包括Acrobat、Preview、Chrome、Edge,以及Android和iOS自带的查看器,没有正确密码就连一行都不会显示;任何试图解析这个文件的脚本或程序库也一样。这才是真正的保护。它没有后门,没有密码谁也读不到内容。

权限位是另一种性质的承诺。它们和密码存放在一起,守规矩的阅读器会遵守,按要求把打印或复制变成灰色不可用。但执行权限靠的是阅读器的自觉,而不是数学,所以知道打开密码、又有合适工具的人可以绕过它们。把权限看作向同事清楚、专业地表明意图,而不是挡住一心想绕过去的人的屏障。

发送之前,先想清楚你在保护什么

密码有多大用,取决于它要防的是什么威胁。用打开密码加密文档后,文件被转发给谁、在传输中丢失,或者在共享邮箱里放得比预期更久,都不会被人读到。人们通过邮件发送合同或工资条时担心的,大多就是这些。但它对同一个文件里的元数据毫无作用。作者姓名、生成文件的软件和创建日期都跟着文件一起走,虽然经过加密,却原封不动,只要用正确的密码打开文件就能立刻读到。如果敏感的恰恰是元数据本身,那是另一项工作:在加上密码之前,先用PDF删除元数据处理。

忘了密码会怎样

AES-256从原理上就没有后门,也没有恢复码。没有任何服务能替你破解一个真正的密码,我们也不能,因为专门用来找回遗忘密码的工具,就是专门用来打开别人文档的工具。实际的办法是:设置密码的那一刻就把它记在可靠的地方,用密码管理器,而不是便利贴;同时把未加密的原文件放在安全的地方,等加密版本完成任务再说。两者都没了,文档也就没了。

用正确的方式再把密码去掉

一份你本来就能打开的文档,也就是你知道密码的文档,可以用PDF解密把加密干净、彻底地去掉。页数、页面顺序、文字层、书签、链接和表单字段都原样保留,因为重写的只有加密这一层。前提是你自己输入密码。这里刻意不做任何猜测或暴力破解,连续输错三次,表单会暂停半分钟,而不是变成破解工具。常见的往返流程是:先移除密码,编辑文件或用PDF压缩处理,再重新设置一个新密码,然后发出去。

本文用到的工具

继续阅读