根据文件格式的规范,PDF能够采用AES(高级加密标准)-CBC(密码分组链接)加密。因此理论上来说只有拥有密码的人才能查看经过加密的PDF文件。为了进一步研究PDF安全性的问题,来自德国几所大学的一组研究人员测试了这种格式加密的可靠性。德国明斯特大学应用科技学院的费边·伊辛(Fabian Ising)发表了研究结果,表明PDF加密的安全性令人大失所望。
理论上,在通过不安全或不可信的通道传输数据,如将文件上传到很多人都能访问的云存储中时,企业会使用经加密的PDF文件。研究人员试图修改源文件,让它能在用户输入密码后将PDF中包含的信息自动发送给第三方,而原接收者不会发现任何异样。
研究人员开发了两种攻击方式使第三方访问加密内容成为可能。第一种方式(直接渗漏)无需任何特殊的密码技术,只需要了解PDF格式规范即可掌握。研究人员称之为”不懂密码学也可破解密码学”。第二种攻击方式被称为延展性攻击,相对来说较为复杂,且需要对密码分组链接模式有一定的认识。
谁需要使用加密的PDF文件,为什么?
企业使用加密PDF文档的理由繁多:
- 银行在与客户传递文件时采用加密PDF确保文件的机密性。
- 如果发件人选择”加密格式”选项,办公室多功能数码一体机(MFP)可以通过电子邮件接收扫描的文档,并提供保护密码的PDF文件。
- 医疗诊断设备使用安全的PDF文件将检测结果发送给患者或医护人员。
- 美国司法部等政府机构接受加密格式的PDF文件。
许多电子邮件应用插件提供了以加密PDF格式发送文档的功能,很显然,人们对这一功能的需求是切实存在的。
直接渗透攻击
加密PDF文件只加密其内容(如文件中的字符串组成对象),而其他与文件架构有关的对象依然是未加密的。换句话说,你仍然可以获取加密PDF文件的页数、对象和链接的数量和大小。对于潜在入侵者来说,这些信息就足以让他们设计一种规避加密的方法。
首先,研究人员想知道他们是否可以将自己的信息添加到文件中。如果可行,那么从理论上说,这将是一个渗透的渠道。从格式文档中可以了解到,PDF允许对加密进行细粒度控制,例如可以只加密字符串或字符流类型的对象,而不加密其他内容。
此外,由于多数PDF阅读器都不会进行完整性检查,即便有第三方向加密文档中添加了其他内容,用户也不会收到警报。所谓的”其他内容”可能是提交表单操作函数,这意味着他人可以将表单嵌入PDF文件,而这个表单会将文档的数据或完整内容发送给第三方。入侵者同样可以绑定诸如打开文档之类的操作。
以上只是渗透的一个简单例子,入侵者还有很多选择。他们可能会放置一个指向其站点的链接,并将文件的全部内容添加到URL中,或者使用JavaScript将解密后的内容发送到任何地方。当然,有些PDF阅读器在与网站通信之前会与用户进行再次确认,但并不是所有阅读器都会这样做,也不是所有用户都会仔细阅读跳出的提示。
延展性攻击
第二种对加密PDF的攻击方式利用了密码分组链接(CBC)模式的已知缺陷,该模式缺乏完整性控制。这种攻击本质是,攻击者知道加密的部分文本信息就可以更改分组的内容。
然而根据PDF格式规范,在加密PDF文件中的内容的同时,它还会加密不同的权限(例如仅允许作者编辑文档,不允许阅读者编辑文档)。这些权限是用与文档其余部分相同的AES密钥加密的,从理论上讲,这样做是为了防止攻击者篡改权限。
但这些权限同样也会以未加密的形式存储在文件中。这意味着一般情况下攻击者至少能知道文件中所包含的12个字节的内容,那么他们就能够篡改密码分组链接目标并随意操纵加密的数据,比如向加密文件添加数据渗透机制从而将文件的内容发送到第三方网站。
结论
研究人员对23个PDF阅读器和4个浏览器进行了测试,发现每个程序都至少受到其中一种攻击。
不幸的是,没有任何客户端解决方案能够完全解决这种格式缺陷。目前而言,在不破坏格式的情况下是不可能阻塞所有渗透通道的。研究人员联系了软件开发商并报告了问题,包括苹果在内的一些公司尝试通过强调通知的方式告知用户文件接入了第三方网站。另一些公司则表示他们尝试过,但无法”解决这种无法解决的问题”。
如果你需要传输机密数据,我们的建议是使用另一种方法来保护这些信息。例如,您可以使用我们的解决方案来创建加密的容器。