PDF加密、解密内幕

上传人:鲁** 文档编号:507433866 上传时间:2023-07-29 格式:DOC 页数:27 大小:853KB
返回 下载 相关 举报
PDF加密、解密内幕_第1页
第1页 / 共27页
PDF加密、解密内幕_第2页
第2页 / 共27页
PDF加密、解密内幕_第3页
第3页 / 共27页
PDF加密、解密内幕_第4页
第4页 / 共27页
PDF加密、解密内幕_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《PDF加密、解密内幕》由会员分享,可在线阅读,更多相关《PDF加密、解密内幕(27页珍藏版)》请在金锄头文库上搜索。

1、0 几个关键词的说明PDF加密有两个口令即:Own er(to set the pdf docume nt Permissio n or change the permission) Password 和 User Password ,在本文中翻译为主(权 限)口令和用户口令,我觉得权限口令更好,因此就称作权限口令。文件加密后会生成一个新的对象, encryption dictionaries Object ,本文 中以加密字典对象来说明。其中加密字典对象中的项称为加密字典对象项。 另外文中能以中文来说明的尽量以中文来说明, 如果一些关键的英文词没有 很好的中文对应词我们还是保留原来的英文说法

2、。1几个常见的PDF安全问题最近经常有人问到几个问题,是关于 PDF加解密的,如果你对PDF规范比较 熟悉,那么有可能会觉得这这几个问题很简单甚至有些傻。 但几乎每个人都会有 这么一个阶段,总是从无知到有知,再到无知, , ,一个个轮回。在文章的最开始我把问题给提出来,然后作一个简单的回答,如果觉得这有 助于你对PDF加解密的认识,那我会非常开心的。如果你需要对PDF加密解密有更深入地了解和学习,那么可以继续关注系列 文章。当然这些文章的大部分内容你都可以从 PDF规范里面找到,在这里,我只 是以我个人的理解帮助大家可以更快地理解和应用。2 问:PDF有那些加密算法?PDF文件采用的加密算法目

3、前在用的有两种,RC4和AESPDF的早期版本是通过RC4加密算法对内容进行加密的,加密的长度为(40-128位)而从PDF1.6起,引入了 AES加密算法(128位),对应的阅读器 有ACROBAT7.0。因此说PDF中的加密算法是固定的,没有其他第三种加密算 法。关于RC4和AES你可以到相关网站找到答案,见参考资料。2 问:为什么我的PDF已经设置了权限设置,并且屏蔽了打印,但是为什么别人可 以很容易地破解?答: :打个不恰当的比方, 这只是“防君子而非小人”。 但是很多人都对 PDF 的权限设置产生误解。 认为作了权限设置就已经对文件内容进行了加密而一定要 输入口令,其实不然,典型的例

4、子有:http:/ ns.html。GMAIL这样做确实是一个非常大的 BUG这是明显违反PDF规范的,在这 一点上GMAIL做的太不严谨,幸好它能及时作修正。PDF中的权限设置只是一串字符而已,用这些字符的某些位来表示PDF是否允许某个操作或者禁止某个操作,而只有权限口令没有打开口令的情况下文件虽 然是加密了,但是可以通过加密字典对象和 PDF生成加密密钥的规则来得到加密 密钥(下一篇文章会详细解释),从而对文件内容进行解密,如果你解密后把它 另存为一个新的文件,那么就可以修改或去除这个字符串和相关的信息,那么 PDF文件权限就不受限制了。如果是要确保文件内容加密,那只有设置打开口令。2 问

5、:为什么我设置了打开口令,还被别人破解?答:如果你设置了打开口令,那么这个时候文件内容是加密的。要打开这类 文件是必须要得到加密口令的,这个时候如果还被破解的话,那很有可能是因为 你设置的打开口令太过于简单,长度比较小的缘故,这样的情况是可以通过穷举 来破解的,当然也可以使用口令字典来破解。那是通过怎样来破解的呢?PDF文件加密的时候,你输入一个打开口令,比如说是 123456,其实不是直 接由你输入的口令作为PDF加密内容的密钥的,还需要有一个转换过程才得到加 密密钥。而怎么才能判断你输入的口令是否正确呢?那是因为在加密PDF文件的时候会在PDF文件中放入一个由打开口令运算得 到的HASH序

6、列,当你输入口令的时候就需要对你输入的口令作一系列的运算而 得到另一个HASH列,如果两个HASH列一致,那么就可以根据这个 HASH 列和你输入的口令生成解密密钥开始解密,否则提示口令错误。这在我的上一篇文章PDF加密仿真中可以得到答案。2 问:什么是 ACROBA中 自定义的 Security Handler?答:PDF允许自定义Security handler ,如果大家访问过 PDF电子书网站,那一定会明白这是怎么一回事。一般的 PDF电子书网站都会要求你下载一个 PLUGIN( acrobat 或 adobe pdf reader 的插件),在这个 PLUGINM就会用到自 定义的

7、Security Handler 。那这些新的 PDF Security Handler 是否使用了新的加密方法呢?当然不是, 对PDF内容的加密还是使用RC4或AES只是加密密钥的生成方法不同。如果大家对这个感兴趣,我也将给大家作一个比较全面的介绍。2 一个PDF文件加密2.1用ACROBAT7.英文版给PDF文件口令加密的过程:1) 打开PDF文件。2) 选择菜单: File-Document Properties 。3) 选择 Security 选项卡。4) 在 Security Method 一栏中选择 Password Security,点 cha nge Sett in gs, 按

8、钮,如下图:Docuxent Properties5)出现下面加密项设置对话框:6) 首先选择兼容性,共有 acrobat3.0, acrobat5.0 ,acrobat6.0 和 acrobat7.0 ,默认为acrobat5.0,即被实现PDF1.4规范的软件支持。(本文我们就以此为例)7) 分别设置打开口令和权限口令,注意两个口令不能一样,我们在这个例子里 面将分别输入111111和222222,当然你在实际应用中必须使用复杂的口令。8) 设置你准备给该PDF文档读者授予的操作权限。9) 按0K按钮后确认打开口令和权限口令,按0K10) 文档被加密。2.2加密后PDF文件发生了什么变化?

9、 如果想知道PDF加密后发生了什么变化,那么最好的方法是找一个PDF文件, 然后对它进行加密, 保存后再用 Ultra Edit 打开,这样所有的变化都会一目了然。将我文章最后的PDF文件下载,如果你有ACROBAT话,那么按照我上 面的流程作一加密,加密保存后我们会发现文件发生了变化。通过观察你会看到PDF文件尾部(trailer )发生了变化,加密前我们看到 文件尾为:trailer /Size 16/Root 1 0 R/Info 2 0 R/ID 加密后文件尾变为:trailer/Size 18/Prev 10226/Root 6 0 R/Encrypt 5 0 R/Info 3 0

10、R/ID 明显地,红色部分是加密后增加的,说明加密字典对象的对象号为 5. 我们可以很容易找到以下的加密字典对象:5 0 objS8+E v櫁-zE r胺endobj其实这些加密字典对象项都是通过我们图形界面输入项生成的, 那么这些项都表 达什么意思呢?下面的内容我们可以从PDF规范1.6中找到:/Length 密钥的长度/Filter 生成密钥的方法 ,就是前面说的 security handler/O 是由用户口令和权限口令得到的,用来生成密钥和验证输入的权限口令/P 访问权限的标志/R 标准加密的( standard security handler )的版本/U 由用户口令生成,用来验

11、证输入的用户口令或权限口令,是否要提醒用户输 入密码/V 可选,用来指明加密的算法。当然加密字典还可能包含有其它项, 但是这里我不打算介绍每项可能的值和 对应的意思,因为这不是PDF规范的中文翻译,而是希望通过一系列的文章让读 者能对PDF规范有个更好更快速地了解。接下来我们结合实际的例子来说明各个加密字典对象项表达的意思。/Length 128%密钥的长度为 128位/Filter/Standard%内建的标准加密引擎 standard security handler ,对应的操作是口令加密的 第 4 步,即选择 Password Security/0(_憘 颖祳S8+E v櫁-zE r

12、胺滲?%由用户口令,权限口令,和文档 ID 生成的/P -3392%权限标志见PDF规范/R 3%加密版本3,如果V为2或3,那么就属于“版本3或更高”的范畴,在下一篇 文章中我们要用到这个概念/U(v旐厺a踜鎒h聯)%由用户口令得到,用来验证用户口令/V 2%允许加密长度超过40位,在上述这个例子里例子里密钥为 128位3实现PDF加密需要回答的三个问题加密字典对象是通过我们对加密的方式的选择和输入的口令生成的,那每项的内容对PDF文件的加密和解密都是有关系的,接下来我们最关心的问题是如何 来实现对一个PDF文件的加密?这个问题可以分解为四个小的问题:1. 文件的内容是如何被加密的?2. 加

13、密密钥是如何生成的?3. 上面的加密字典中的每一项是如何生成的?4. 加密字典和加密密钥的关系?接下来的文章我将告诉你所有的这几个问题的答案。 当然如果你要真正地写 一个实现PDF口令加密的程序,那么还得参考 PDF规范1.6。但是你觉得阅读起 来有困惑的地方,那么我想下篇文章对你来说也会有帮助的, 也会详细地告诉你 如何通过编程来实现PDF文件的口令加密。PDF加密、解密内幕(二)-PDF文件口令加密内幕(1)PDF加密、解密内幕(二)-PDF文件口令加密内幕(2)PDF加密、解密内幕(三)-彻底破解加密PDF文件PDF Password Remover V2.5.0531 汉化版 破解受保

14、护的 PDF0几个重要概念全局加密密钥,简称为全局密钥,该全局密钥由加密字典对象和你输入的口令生成,用来生成对象加密密钥对象加密密钥, 简称为对象密钥, 是用来实际加密 PDF 文件内容的密钥, 不 同于上篇PDF加密仿真里的全部的对象共用一个密钥不同, PDF文件中每个对 象的加密密钥都不一样。User Password 用户口令。Owner password 权限口令。1 PDF 文件的加密流程上一篇文章大致介绍了关于 ACROBAT 对 PDF 加密操作和加密后生成的PDF 文件中的加密字典对象。同时我们提出了下面的四个问题:1. 文件的内容是如何被加密的?2. 加密密钥是如何生成的?3. 加密字典中的每一项是如何生成的?4. 加密字典和加密密钥的关系? 第一个问题是我们的最终目的,本文要最终要解决的就是这个问题。而第2,3,4个问题作为第 1个问题的分解,在下文中有个清晰地解答。下面是一个PDF文件加密的大致过程:1. 选择PDF兼容版本和输入用户口令,权限口令。2. 根据输入生成加密字典对象。3. 由输入和加密字典对象生成全局密钥。4. 由全局密钥生成对象加密密钥。5. 用对象加密密钥加密对象内容。2 PDF 加密解密流程详解加密

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号