基于GPU的PDF加密文档快速解密方法、设备及介质与流程

文档序号:28724795发布日期:2022-01-29 15:36阅读:289来源:国知局
基于gpu的pdf加密文档快速解密方法、设备及介质
技术领域
:1.本发明涉及文档解密
技术领域
:,尤其涉及一种基于gpu的pdf加密文档快速解密方法、设备及介质。
背景技术
::2.pdf全称是portabledocumentformat,它是adobe公司开发的一种电子文档格式。pdf文档具备良好的可移植性、跨平台性、可加密且适用于多种输出目标已成为目前文档传播的通用格式和国际标准,得到了广泛的使用。3.pdf编辑软件对pdf文档提供了加密保护功能,用户可以设置两种类型的文档保护口令,一种是用户口令,另一种是所有者口令。用户输入了正确的用户口令就能浏览文档内容,而所有者口令决定了用户是否具备修改文档的权限。文档打开后,即使不输入文档修改口令也是可以查看文档内容的,因此文档打开口令更为重要。4.实际中,用户对设置的文档打开口令时常有遗忘的情况发生,一旦重要的文档无法打开,将会给个人或公司带来比较严重的损失。另外,在司法电子取证场景中也常常面临解密pdf加密文档的需求。因此研究pdf加密文档的解密具有重要的实际价值。5.要解密pdf加密文档,如果破解了文档的打开口令,则可以直接输入口令完成文件内容的自动解密。因此,通过破解口令来解密文档是比较直接的方法。事实上,目前对pdf加密文档的解密还原也是通过恢复文档口令来实现的。针对pdf的口令恢复,市面上主要有两个知名的口令恢复工具,包括elcomsoft公司的advancedpdfpasswordrecovery和passware公司的passwarekitforensic。这两种工具都提供了对pdf加密文档的口令破解功能,破解方式包括三种:字典攻击、掩码攻击、暴力攻击。字典攻击是通过依次尝试口令字典里的每个口令来找出正确的文档口令,口令恢复的成功与否取决于字典里是否存在用户口令。掩码攻击是在知道目标用户的部分口令信息时,对尝试的口令事先设定某些位置的字符,这从理论上缩小了口令搜索的范围,但实际中这些部分口令信息也基本上是靠猜测来决定,如生日、姓名缩写等。暴力攻击一般是在前两种口令破解方式失败后采用穷举模式来搜索口令空间,若用户设置的口令较长或是口令复杂度较高,则暴力攻击常常不能奏效。因此,依靠对口令空间进行搜索的破解方式通常情况下口令恢复率不高,而且恢复的时间不能确定。6.图像处理器gpu(graphicprocessunit)的高性能数据处理能力的发展,为pdf加密文档口令的高速破解的提供了新的解决途径。gpu则将大量的晶体管用作alu计算单元,适合高计算强度的应用。gpu在高性能运算方面具有三个突出优点:第一,数据的并行数据处理能力强大,nvidia公司目前的nvidia最新的gpua100峰值浮点运算能力超过9tflops,几乎和一个小型cpu集群相当;第二,gpu拥有出色的高密集运算能力,a100的带宽超过1.5tb/s;第三,gpu拥有良好的可编程性,支持多种高级语言编程,nvidia开发的cuda架构支持c/c++和fortran。在口令破解领域,相对传统的cpu破解,基于gpu的口令破解的加速比一般在20倍以上,如果构建高密度多gpu卡系统,其加速比会更加可观。但是由于口令空间的巨大性和口令设置的复杂性,基于gpu的口令破解在破解时间方面仍然不理想。另一方面,目前的口令恢复工具已大都能支持gpu,例如passware公司的passwarekitforensic能够支持gpu,但是elcomsoft公司的advancedpdfpasswordrecovery尚不能支持gpu。7.综合看来,当前对pdf加密文档的解密还原基本还是依靠破解口令的方式,虽然采用口令字典或者掩码破解或者基于gpu平台能够一定程度上提升破解的成功率,但还存在以下主要问题:8.(1)复杂口令难以破解成功。若目标用户的口令长度较长或设置的口令采用了多种字符类型的混合模式,此时尝试的口令空间很大,难以进行成功破解。9.(2)密文文档的口令恢复时间较长,不能满足实际时效需求。实际中密文文档的口令破解时间越短越有实用价值,有时甚至要求对文档进行实时解密。现有方法的口令破解速度难以满足这样的实际需求。10.(3)密文文档口令破解的成功率不高。通过对现有破解工具的测试发现口令破解的成功率并不高,不能保证能对目标密文文档进行成功破解。11.(4)由于pdf格式的开放性,存在多种编辑软件,其中部分软件在加密时所用方法与标准方法有所不同,导致其加密特征值与标准不同,使得已有的口令恢复软件无法进行破解。技术实现要素:12.为了解决上述问题,本发明提出一种基于gpu的pdf加密文档快速解密方法、设备及介质,可用于1.1-1.3版本的pdf加密文档的解密还原。13.本发明采用的技术方案如下:14.一种基于gpu的pdf加密文档快速解密方法,包括以下步骤:15.s1.解析pdf加密文档,提取加密特征数据:pdf文档由多个不同的数据对象组成,其中与加密相关的数据存储在加密字典中,通过对pdf加密文档进行二进制搜索,得到加密特征数据;16.s2.基于gpu平台破译pdf加密文档的解密密钥:基于gpu平台对pdf加密文档的解密密钥进行搜索;17.s3.解密还原出对应的明文文档:步骤s2中破译出正确的解密密钥后,利用该解密密钥和文档密文数据存储结构信息解密还原出明文文档。18.进一步地,步骤s1包括以下子步骤:19.s101.二进制读取文件到流buff;20.s102.判断是否是pdf文件:读取buff前5个字节,检查是否是%pdf-,若是则为pdf文件,执行步骤s103;否则,结束;21.s103.判断是否加密:在buff中搜索字符串/encrypt,如果搜索到,则说明是加密的,读取/encrypt后面字符串直到第一个r,将这段字符串记为obj_en,并将字符串obj_en后缀r替换为obj,再执行步骤s104;否则未加密,退出;22.s104.定位到加密字典并搜索特征值:在buff中搜索字符串obj_en,搜索到obj_en之后搜索字符串“/u(”;搜索到“/u(”之后,读取在“/u(”和下一个“)/”之间的32字节值,记为u。23.进一步地,假设一共有n张gpu卡,每张gpu卡有m个计算核心,则步骤s2包括以下子步骤:24.s201.将32个字节的常数赋值给buffer;25.s202.将密钥空间平均分为n份:总空间为k,空间大小为240;n个空间分别为k1,k2,…,kn,每个空间的大小为240/n;26.s203.将密钥空间ki传输到第i张gpu卡,其中1≤i≤n;27.s204.在gpu上搜索正确的密钥:对于第i张gpu卡,收到的密钥空间为ki,将ki平均分为m份,第s份记为ki,s,分配到第s个计算核心上进行计算,其中1≤s≤m;在gpu的计算核心上,对于分配到的密钥空间ki,s中的每个密钥key_test,执行下列计算:28.keystream=rc4(key_test)29.u_test=keystreamxorbuffer30.如果u_test=u,那么停止所有gpu上的计算并输出key_test;否则,测试下一个key_test。31.进一步地,步骤s201中,赋值后的buffer为:32.buffer={0x28,0xbf,0x4e,0x5e,0x4e,0x75,0x8a,0x41,0x64,0x00,0x4e,0x56,0xff,0xfa,0x01,0x08,0x2e,0x2e,0x00,0xb6,0xd0,0x68,0x3e,0x80,0x2f,0x0c,0xa9,0xfe,0x64,0x53,0x69,0x7a}。33.进一步地,解密时,首先使用解密密钥生成密钥流,然后排除掉不加密的数据,对已加密数据进行解密,最后把不加密的数据保持不变放在文档的对应位置,此时即形成了整个明文文档。34.进一步地,所述不加密的数据包括:文件头,trailer里的id值,encrypt字典,contentstream和压缩objstream中的字符串,签名字典中的内容,用来表示文档结构的整数和布尔值,外部文件。35.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述的基于gpu的pdf加密文档快速解密方法的步骤。36.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现所述的基于gpu的pdf加密文档快速解密方法的步骤。37.本发明的有益效果在于:38.(1)本发明的解密方法与文档加密口令的复杂度无关,避免了现有文档破解方法中复杂口令无法破解的缺点;39.(2)本发明能100%地还原rc4-40bit加密的pdf文档;40.(3)本发明能快速解密密文文档,经测试在8张nvidia2080tigpu的系统上,密文文档的最长解密时间在3分钟以内,可以很好地满足实际中解密的时效要求。41.(4)本发明能够解密部分由非标准方法加密的pdf文档。附图说明42.图1是本发明实施例1的pdf加密文档快速解密方法流程图。43.图2是本发明实施例1的利用gpu破译解密密钥的流程图。具体实施方式44.为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。45.实施例146.本实施例提供了一种基于gpu的pdf加密文档快速解密方法,可用于1.1-1.3版本的pdf加密文档的解密还原,如图1所示,包括以下步骤:47.s1.解析pdf加密文档,提取加密特征数据:pdf文档由多个不同的数据对象组成,其中与加密相关的数据存储在加密字典中,通过对pdf加密文档进行二进制搜索,得到加密特征数据。48.s2.基于gpu平台破译pdf加密文档的解密密钥:基于gpu平台对pdf加密文档的解密密钥进行搜索。由于加密密钥只有40bit,因此在高性能的gpu平台中,此步骤可以较快完成。49.s3.解密还原出对应的明文文档:步骤s2中破译出正确的解密密钥后,利用该解密密钥和文档密文数据存储结构信息解密还原出明文文档。注意,该解密密钥并不是用户口令,而只是一个中间密钥,不能作为口令打开密文文档。50.优选地,步骤s1包括以下子步骤:51.s101.二进制读取文件到流buff;52.s102.判断是否是pdf文件:读取buff前5个字节,检查是否是%pdf-,若是则为pdf文件,执行步骤s103;否则,结束;53.s103.判断是否加密:在buff中搜索字符串/encrypt,如果搜索到,则说明是加密的,读取/encrypt后面字符串直到第一个r,将这段字符串记为obj_en,并将字符串obj_en后缀r替换为obj,再执行步骤s104;否则未加密,退出;54.s104.定位到加密字典并搜索特征值:在buff中搜索字符串obj_en,搜索到obj_en之后搜索字符串“/u(”;搜索到“/u(”之后,读取在“/u(”和下一个“)/”之间的32字节值,记为u。55.优选地,假设一共有n张gpu卡,每张gpu卡有m个计算核心,则如图2所示,步骤s2包括以下子步骤:56.s201.将32个字节的常数赋值给buffer:57.buffer={0x28,0xbf,0x4e,0x5e,0x4e,0x75,0x8a,0x41,0x64,0x00,0x4e,0x56,0xff,0xfa,0x01,0x08,0x2e,0x2e,0x00,0xb6,0xd0,0x68,0x3e,0x80,0x2f,0x0c,0xa9,0xfe,0x64,0x53,0x69,0x7a}58.s202.将密钥空间平均分为n份:总空间为k,空间大小为240;n个空间分别为k1,k2,…,kn,每个空间的大小为240/n;59.s203.将密钥空间ki传输到第i张gpu卡,其中1≤i≤n;60.s204.在gpu上搜索正确的密钥:对于第i张gpu卡,收到的密钥空间为ki,将ki平均分为m份,第s份记为ki,s,分配到第s个计算核心上进行计算,其中1≤s≤m;在gpu的计算核心上,对于分配到的密钥空间ki,s中的每个密钥key_test,执行下列计算:61.keystream=rc4(key_test)62.u_test=keystreamxorbuffer63.如果u_test=u,那么停止所有gpu上的计算并输出key_test;否则,测试下一个key_test。64.如前所述,pdf文档由多个不同的数据对象组成,当pdf文档被加密时,除了以下内容,文档中的其他内容都应被加密。65.·文件头66.·trailer里的id值67.·encrypt字典68.·contentstream和压缩objstream中的字符串69.·签名字典中内容70.·一些整数和布尔值,它们是用来表示文档结构而不是内容的71.·外部文件72.根据pdf文档的加密原理可知,pdf1.1-1.3版本采用rc4密码算法对文档的数据内容加密。rc4算法是一种流密码算法,种子密钥由用户输入的口令产生。密钥生成和数据加密过程为:用户口令首先经过一系列计算得到5字节的中间密钥,然后由rc4算法产生密钥流,与pdf文档中应该加密的数据进行异或得到相应的密文。73.因此,解密时首先使用解密密钥生成密钥流,然后排除掉上述不加密的数据,对已加密数据进行解密,最后把上述不加密的数据保持不变放在文档的对应位置,此时即形成了整个明文文档,可以直接打开。74.需要说明的是,对于本实施例,为了简便描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。75.实施例276.本实施例在实施例1的基础上:77.本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的基于gpu的pdf加密文档快速解密方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。78.实施例379.本实施例在实施例1的基础上:80.本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的基于gpu的pdf加密文档快速解密方法的步骤。其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(rom)、随机存取存储器(ram)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1