一种基于FPGA硬件的OFFICE2007文档破解系统的制作方法

文档序号:15497386发布日期:2018-09-21 21:59阅读:203来源:国知局

本发明涉及信息安全技术领域,特别涉及一种基于fpga硬件的office2007文档破解系统。



背景技术:

微软office是目前使用最为广泛的办公软件,office文件的安全性主要是通过对office文件进行加密来实现的。在某些情况下,也还是存在对加密文档进行破解的需求。在office2007版本之前,加密机制存在漏洞,例如office2003中的加密密钥默认为40bit,如果采用密钥空间穷举破解,无需用户口令,最多遍历2的40次方就能穷举出密钥。如今的计算加速技术日新月异,最多几个小时就能100%破解。

但office2007对加密文档的安全性做了改进。开始采用128bit的密钥,且密钥生成需要50003轮sha1运算才能生成一个128bit的密钥。由于采用128bit的密钥,不仅使得密钥的穷举搜索攻击失效,同时密钥生成函数采用多重迭代运算,使得用户口令穷举搜索变得十分缓慢。

fpga即现成可编程逻辑阵列的缩写,是一种含有可编程元器件的半导体设备。fpga可以快速地进行算法及逻辑的设计、更改及验证,是现代集成电路设计的技术主流。fpga广泛运用于加速运算、信号处理等领域。

对现有技术的专利检索发现,专利申请号200510025068的“文件口令的破解方法”公开了文件口令的破解方法,该专利是基于pc机的穷举法破解,但pc机处理能力不如fpga,pc机单线程是串行处理机制,fpga可并行处理;且里面涉及的word文档属于2007之前的早期版本,其技术无法解决office2007的破解问题。专利申请号201610736431的“基于fpga硬件的word2003文档破解的系统及方法”专利,公开了fpga硬件实现word2003算法设计方法,该专利提出基于fpga硬件实现word2003算法的设计实现,基于彩虹表破解技术,同样无法用于office2007的破解问题。在文献《office文件加密机制的安全性》一文中提到了pc机穷举法破解,其实验数据:office2007单机(1台pc机)计算系统口令猜测破解速度约为50口令/秒;在分布式计算系统(20台pc机)口令猜测破解速度约为960口令/秒。破解速度太慢,实际部署成本巨大。

综上所述,现有技术中仅有在pc机上对office2007进行破解,并未涉及基于fpga硬件技术来加速破解office2007文档,因此如何显著提高office2007文档破解效率,则是现有技术中有待解决的问题。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种基于fpga硬件的office2007文档破解系统,使用fpga硬件技术对office2007文档的口令进行解密运算加速,极大提高对口令的穷举速度。

本发明的目的通过以下的技术方案实现:一种基于fpga硬件的office2007文档破解系统,包括:输入接口模块、office2007破解模块单元和输出接口模块;

输入接口模块与pc设备相连接,实现待破解口令和控制信息的传输以及输入接口模块报文的解析分发;

office2007破解模块包括:口令生成模块、sha1迭代运算模块、密钥解密模块;口令生成模块根据控制器下发的口令参数,按照ascii码依次递增的策略生成口令;sha1迭代运算模块对口令进行处理,缓存在fifo中,供后级密钥解密模块读取;密钥解密模块完成密钥生成及解密运算;

如果解密成功则输出接口模块输出解密成功信息,如果口令遍历完成而没有解密成功,则输出接口模块输出遍历完成信息。

优选的,将sha1迭代运算模块置于高时钟域,其他模块为低时钟域。

优选的,sha1迭代运算模块需要进行w次sha1运算,由若干基本sha1算法模块组成。

具体的,sha1迭代运算模块采用n个基本sha1算法模块级联的方式提高运算效率。

进一步的,基本sha1算法模块包含80次操作运算,每次运算为1级流水线处理,共计80级流水线;假设w=w0*n+w1,w1<n;n个sha1流水运算模块需要循环复用w0次才能完成80*n个口令的w0*n次sha1运算,最前面一个sha1只在一开始的时候接受外部口令输入,之后则将切换输入为最后一个sha1模块的输出结果;而剩余w1个sha1运算在后级依次进行处理;80*n个口令的w0*n次sha1运算完成后,缓存在fifo中,供后级密钥解密模块读取,同时接着处理下一组80*n个口令的运算。

优选的,密钥解密模块运算步骤为:

1、如果前级fifo非空且后级fifo非满,则读取一个缓存在前级fifo中的运算结果进行计算剩余w1次运算,得到密钥key;

2、使用密钥key对下发的文档参数encryptedverifier解密得到verifier,对verifier进行sha1运算获得data1;使用密钥key对下发的文档参数encryptedverifierhash解密得到data2;

3、比较data1与data2是否相同,如果相同则对应口令及为所需口令,否则回到步骤1。

优选的,密钥解密模块需要在下一组80*n计算完成之前,处理完成本次80*n组的密钥生成及解密运算。

优选的,输出接口模块对office2007破解模块结果进行报文分析组帧,所有破解都会报送pc,pc进行验证,检验ok,说明破解成功,否则破解失败,进而完成整个office2007文档破解任务。

本发明与现有技术相比,具有如下优点和有益效果:

本发明充分利用fpga技术进行运算加速:n个基础sha1运算模块级联参与几万次迭代sha1运算,同时提高模块时钟频率,加速了sha1迭代运算;迭代sha1运算模块和密钥解密模块可并行工作,使得迭代sha1运算模块和密钥解密运算模块可以同时计算,节省时间;因此能够提高对office2007文档口令的穷举速度,使得文档的解密速度明显极大提升。

附图说明

图1是实施例office2007文档解密过程示意图。

图2是实施例office2007破解方案框图。

图3是实施例sha1迭代运算模块详细设计框图。

图4是实施例基本sha1算法模块详细设计框图。

图5是实施例sha1迭代算法模块流程图。

图6是实施例密钥解密模块流程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

一种基于fpga硬件的office2007文档破解系统,包括:输入接口模块、office2007破解模块单元和输出接口模块。其核心部分是office2007破解模块。

输入接口模块与pc设备相连接,主要实现待破解口令和控制信息传输,输入接口模块报文的解析分发。

office2007破解模块主要包括:口令生成模块、sha1迭代运算模块、密钥解密模块。其中为了加快进行sha1迭代运算次数,将sha1迭代运算模块置于高时钟域,其他模块为低时钟域。

口令生成模块:根据控制器下发策略,实现有限长度口令的组合生成,对于不同的策略选择,口令组合可以是数字和特殊字符、数字和大小写字母、大小写字母和特殊字符、纯数字、纯字母、纯字符等所有组合。将待测口令按照ascii字符顺序依次存入fifo中,等待后级读取。

sha1迭代运算模块需要进行w次sha1运算,由若干基本sha1算法模块组成。由于运算量巨大,因此模块采用更高时钟频率进行处理,以提高运算速度。

基本sha1算法模块包含80次操作运算,每次运算为1级流水线处理,共计80级流水线。即流水输入后80个时钟周期后流水输出。

因为office2007的sha1迭代运算是上一次sha1运算结果加上序号作为下一次sha1运算的输入,因此sha1迭代运算模块采用n个基本sha1算法模块级联的方式提高运算效率,级联后的总的流水级数相当于80*n级,n越大则速度越快,理想模式下n=w则可实现全流水线运算,但实际上受限于fpga资源是不可能实现的。这里假设w=w0*n+w1(w1<n)。因此n个sha1流水运算模块需要循环复用w0次才能完成80*n个口令的w0*n次sha1运算,最前面一个sha1只在一开始的时候接受外部口令输入,之后则将切换输入为最后一个sha1模块的输出结果。而剩余w1个sha1运算由于运算量不大可以在后级依次进行处理。最后80*n个口令的w0*n次sha1运算完成后,缓存在fifo中,供后级密钥解密模块读取,同时接着处理下一组80*n个口令的运算。

对于一组80*n个口令的sha1迭代运算将消耗约80*n*w0个时钟周期。

密钥解密模块需要在下一组80*n计算完成之前,处理完成本次80*n组的密钥生成及解密运算即可:运算步骤为:

1、如果前级fifo非空且后级fifo非满,则读取一个缓存在前级fifo中的运算结果进行计算剩余w1次运算,得到密钥key。

2、使用密钥key对下发的文档参数encryptedverifier解密得到verifier,对verifier进行sha1运算获得data1;使用密钥key对下发的文档参数encryptedverifierhash解密得到data2。

3、比较data1与data2是否相同,如果相同则对应口令及为所需口令,否则回到步骤1。

输出接口模块对office2007破解模块结果进行报文分析组帧,所有破解都会报送pc,pc进行验证,检验ok,说明破解成功,否则破解失败,进而完成整个office2007文档破解任务。

实施例2

一种基于fpga硬件的office2007文档破解系统,包括:输入接口模块、office2007破解模块、输出接口模块。其核心部分是office2007破解模块。

office2007破解模块的三大子模块是实现office2007破解的核心,最重要的就是实现sha1迭代算法。

其中sha1迭代运算模块因运算次数较多,该模块的时钟频率为250mhz,用于加快其运算速度。而其他模块为100mhz,不同时钟域中间数据传递用异步fifo隔离缓存。

首先是pc通过输入接口模块将待破解office2007文档的相关参数,如salt、encryptedverifier、encryptedverifierhash等文档参数和口令字符集,字符集长度,口令长度等口令参数下发fpga。

口令生成模块:根据控制器下发的口令字符集,字符集长度,口令长度等参数,按照ascii码依次递增的策略生成口令。例如下发口令字符集长度为10,内容为0到9的阿拉伯数字,口令长度为8,则待穷举口令的范围为00000000到99999999,共计1亿个。

sha1迭代运算模块时钟频率为250mhz,需要进行50003次sha1运算,根据fpga资源情况,例如5个基本sha1算法模块级联,基本sha1算法模块包含80次操作运算,每次运算为1级流水线处理,共计80级流水线,5个基本sha1算法模块级联后的总的流水级数相当于400级。实际上就是每次以400个口令为一组进行运算。循环复用10000次后400个口令的50000轮sha1运算完成,并缓存在fifo中,供后级密钥解密模块读取。每个口令剩下的3次sha1运算由于运算量不大可以在后级依次进行处理。同时接着处理下一组400个口令的运算。

对于一组400个口令的sha1迭代运算将消耗约4000000个时钟周期,平均下来每一个口令消耗10000个时钟周期,数据处理速度即250m/10000=25000个数据/秒。

密钥解密模块将按照以下规则进行运算:

1、如果前级fifo非空且后级fifo非满,则读取一个缓存在前级fifo中的运算结果进行计算剩余3次运算,得到密钥key。

2、使用密钥key对下发的文档参数encryptedverifier解密得到verifier,对verifier进行sha1运算获得data1;使用密钥key对下发的文档参数encryptedverifierhash解密得到data2。

3、比较data1与data2是否相同,如果相同则对应口令及为所需口令,否则回到步骤1。

密钥解密模块将前面400个迭代结果一个一个依次运算。假设从步骤1到步骤3一共消耗约2000个时钟周期,数据处理速度即100m/2000=50000个数据/秒。实际上只要大于sha1迭代模块的数据处理速度即可不占用额外时间。

仅仅将高时钟域250mhz作用于最耗时间的sha1迭代模块,而其他模块采用基本的100mhz时钟即可,保证了整个工程的时序收敛,不会造成时序违例。

该设计总体破解速度即为sha1迭代模块的处理速度为25000个数据/秒。

输出接口模块:如果解密成功则向pc上报解密成功信息,如果口令遍历完成而没有解密成功,则上报遍历完成信息。因此输出接口最多向pc产生2个有用信息,输出数据量很少。

仅仅将高时钟域250mhz作用于最耗时间的sha1迭代模块,而其他模块采用基本的100mhz时钟即可,保证了整个工程的时序收敛,不会造成时序违例。

总的来说,基于fpga硬件的office2007文档破解速度达到了一片fpga处理速度为25000口令/秒,已经大大优于已公开的其他实现方法,特别是将本发明部署于fpga阵列中解密将具有很高的实用价值。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1