PDF文档的加解密及数字签名技术(三)

PDF文档的加解密及数字签名技术(三)

 

读取加密的PDF文档

 

前文说过,加密的PDF文档,其中的字符串和流都是被加密的,要正确的解读这些信息,就要对其进行解密,解密就需要密钥,那么密钥怎么来呢?与加密时的情况稍稍不同,在加密字典中的O项和U项可以帮助我们计算密钥,所以下面我们讲解一下如何计算出解读加密PDF文档内容所需的密钥。

 

仅使用了权限口令加密的PDF文档 

 

如果一个PDF文档加密时使用了用户口令(User Password),则在打开PDF文档时必须要输入口令才能计算出密钥,这就是为什么PDF阅读器在打开PDF文档时会弹出个对话框让你输入密码了。如何判断一个加密的PDF文档是否使用了用户口令呢?翻到PDF Reference 1.7的127页,算法3.6。


算法3.6

 

第一步,根据加密字典中R值的不同,使用算法3.4或者算法3.5用用户口令计算出U项。

 

第二步,将计算出的U项与加密字典中已有的U项做个比较,如果相同,则用户口令正确。

 

好,先用空口令尝试用算法3.6进行用户口令校验,如果通过,则说明该文档没有用户口令。没有用户口令的PDF文档,可以直接使用算法3.2计算出全局密钥,计算所需要的一切我们都可以在PDF文档中找到:O项、P项、是否加密Metadata。算出全局密钥再根据算法3.1计算出对象的加密密钥,按照加密字典中声明的加密算法(RC4或AES)进行解密操作就是了。需要一提的是,如果是AES算法,则密文前128位是解密所需的IV,其后才是真正的密文,做解密程序的同学们请注意到这点。

 

但是根据规范,不提供权限口令,则对该PDF的操作要符合加密字典中P项的限制,例如限制复制内容、限制打印等。不过前文说过了,不符合规范的PDF应用大把,毕竟内容已经完全解密了,怎么操作完全看应用了。最恶劣的当属各类PDF Password Remover之类的程序,会直接根据解密的内容重新生成一个未加密的PDF文档,将加密信息直接抛弃。

 

使用用户口令加密的PDF文档

 

如果前述的算法3.6对于空口令无法校验通过,则说明该PDF文档有用户口令,用算法3.2就不能直接计算出全局密钥。我们就需要提供一个口令供算法3.6做校验,校验通过就可以使用算法3.1计算出全局密钥从而解密文档了。

 

既使用了用户口令又使用权限口令的PDF文档

 

在实际中,如果一个PDF文档经算法3.6验证使用了用户口令,会弹出对话框要求用户输入口令。而在用户提供了口令后,PDF阅读器会优先判断该口令是否是权限口令,如果是,则解密文档并开放所有权限。如果不是权限口令,而是用户口令,则解密文档并按照权限设定限制用户操作。如何验证是否用户口令,并仅用用户口令计算出全局密钥前面已经讲过了,那么如何验证权限口令并计算出全局密钥呢?翻到PDF Reference 1.7的128页,算法3.7。

 

算法3.7

 

第一步,根据用算法3.3的第一到第四步计算出一个密钥。

 

第二步,如果加密字典R项为2,依据第一步计算出的密钥直接对O项使用RC4算法解密。如果加密字典R项为3或更高,则要做20次以下操作:将第一步得出的密钥,每位分别与循环计数器做异或(XOR)操作,然后对O项(第一次循环时)或者上次循环得出的结果用RC4算法进行解密。其实这就是算法3.3第六、七两步的逆过程。只不过这个循环计数器不同于算法3.3中的1至19,而是19至0。一直还原到算法3.3第五步,看我们把什么还原出来了?

 

第三步,第二步将会还原出用户口令,使用用户口令用算法3.6做校验,如果通过校验,则说明权限口令校验正确。

 

好,既然计算出了用户口令,根据算法3.1,就可以得出全局密钥从而解密文档了。

 

写在最后

 

自认为PDF使用标准口令加密、解密的全过程已经讲得很清楚了,其实也没什么更多要说的了。根据本文,大家应该已经了解了使用标准口令加密的PDF文档的安全性其实也就那样。虽然使用了用户口令的PDF较难破解,但是想把PDF给人看,就必须得告诉人家用户口令。口令如何分发,这在密码学上是老问题了,随着加密PDF一起发送,显然是愚不可及的办法,同学们千万不要干这种事情,稍好点的办法是邮件传送PDF,用电话告诉别人密码。但是我预计对方显然会把PDF文档保存后再在同一个目录创建一个文本文件,名字叫“PDF密码.txt”>_<。还有一点,如果用户密码设置得较为简单,很容易被专用的软件暴力破解。好,你跟我们说又不能存放在一起,又不能设得太简单,我们按照你说的做。但万一我们把这个十分复杂的用户口令忘了,却又没记下来,怎么办?那我告诉你,神仙也很难救你了。看,这些都是标准口令加密的弊端。

 

要使用较高安全级别的加密方法,一种是使用Acrobat的插件功能自定义加密方法,但是阅读这种PDF,需要额外安装插件。另一种是使用标准的数字证书加密的方式,它解决了密钥分发与保存的问题,以后我也许会专门写文,介绍这种加密方式。

 

PDF文档的加解密就介绍到这里,下篇文章我们将说说PDF文档的数字签名技术。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
PDF一机一码加密解密是一种保护PDF文档安全的方法。一机一码加密意味着每个PDF文档都有唯一的密钥,只有使用该密钥才能解密和访问文档内容。以下是关于PDF一机一码加密解密的详细说明。 首先,对于PDF一机一码加密,当用户希望对PDF文档进行加密时,需要选择一种加密算法和生成一个密钥。接下来,使用所选的加密算法对整个PDF文档进行加密,确保文档的内容和结构都被加密保护住,只有使用正确的密钥才能解密。 然后,对于PDF一机一码解密,用户需要使用正确的密钥对加密PDF文档进行解密解密后,文档将恢复到原始的可编辑和可访问的状态,用户可以浏览、打印、复制和编辑文档内容。 PDF一机一码加密解密的好处在于提供了高度的安全性和保护机密信息的能力。由于每个PDF文档都有唯一的密钥,即使密钥被泄露,也只会影响一个文档的安全。此外,PDF一机一码加密还可以与数字签名技术相结合,确保文档的完整性和真实性。 需要注意的是,保护PDF文档安全不仅仅依赖于加密算法和密钥管理,还需要用户采取其他安全措施,如设定复杂的密码、限制访问权限以及定期备份文档等。 总之,PDF一机一码加密解密是一种安全的方法,能够保护PDF文档中的敏感信息和机密内容,为用户提供了安全的浏览和传输途径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值