针对PDF使用SM3算法和SM2算法数字签名的验证方法和系统与流程

文档序号:14216718阅读:539来源:国知局
本发明涉及pdf数字签名验证
技术领域
:,具体涉及一种针对pdf使用sm3算法和sm2算法数字签名的验证方法和系统。
背景技术
::pdf英文全称为portabledocumentformat,译为可移植文档格式,是一种电子文件格式。这种文件格式与操作系统平台无关,即pdf文件无论是在windows,unix还是在macos操作系统中都是通用的。这一特点使它成为电子文档发行和数字化信息传播的理想文件格式。pdf格式文件目前已成为数字化信息事实上的一个工业标准。伴随着互联网和智能手机走进千家万户,人们使用互联网的场景越来越多,相应的电子商务以及电子政务都已经可以在互联网上进行。由此形成了一个庞大的数字签名市场,以解决互联网带来的挑战,即对机密性,完整性,身份认证与授权和不可抵赖性的要求。数字签名(digitalsignature),与手写签名相似,政府部门、企业和客户间交换文件时,接收方对收到的文档要进行有效性的鉴别,在验证发送方的身份后才能确定文档是否有效。数字签名即是数字方式的证书在文档上签名,文档签名域中签名者身份以及文档签名后的状态都将显示出来,以方便验证。目前,市场上的pdf软件,如adobe旗下的adobereader和adobeacrobat,一般都内置了支持rsa算法的签名插件,同时支持多种摘要算法,如sha1、sha256、sha384、sha512等,但是并不支持sm2数字签名算法和sm2数字签名算法中所使用的摘要算法sm3密码杂凑算法。sm2数字签名算法属于椭圆曲线加密算法(ecc)中的一支,在密钥长度相同的情况下,相较于rsa算法,其安全性更高,所占空间更小,签名速度更快。adobe等pdf软件提供商目前仅支持使用rsa证书进行签名,无法识别sm2算法。出于信息安全的考虑,2010年中华人民共和国密码管理局就公布了sm2算法的行业标准,并一直在大力推行国密算法sm2算法在各行各业中的使用。当下的互联网环境下,对pdf文件进行签名的场景十分普遍,所以对pdf进行sm2签名的需求亟待解决。技术实现要素:为解决上述问题,本发明的目的在于提供一种针对pdf使用sm3算法和sm2算法数字签名的验证方法和系统,将sm3密码杂凑算法和sm2数字签名算法应用到pdf中去,使得数字签名更安全、快速和可靠。本发明的目的可以通过采取如下技术方案达到:一种针对pdf使用sm3算法和sm2算法数字签名的验证方法,包括以下步骤:1)发送端发送待验证pdf文档;2)接收端获取待验证pdf文档,提取使用sm3密码杂凑算法和sm2数字签名算法的数字签名,若无此类数字签名,则结束返回显示无此类数字签名;若提取成功,进行下一步;3)验证步骤2)提取到的数字签名中的时间戳,若验证失败,则结束返回显示时间戳签名无效,文档被篡改结果;若验证成功,进行下一步;4)对步骤3)验证完的数字签名中的数字证书的有效性进行验证,若验证失败,则结束返回显示签名证书无效;若验证成功,进行下一步;5)验证使用sm3密码杂凑算法和sm2数字签名算法的数字签名,使用sm2数字签名算法的验证算法和数字证书包含的公共密钥对数字签名值进行校验,若验证失败,则结束返回签名无效;否则验证成功,完成pdf签名的验证。进一步优选,一种针对pdf使用sm3算法和sm2算法数字签名的验证方法,包括以下步骤:1)发送端发送待验证pdf文档;2)接收端获取待验证pdf文档,调用ssq-gm,提取使用sm3密码杂凑算法和sm2数字签名算法的数字签名,若无此类数字签名,则结束返回显示无此类数字签名;若提取成功,进行下一步;3)调用ssq-gm,验证步骤2)提取到的数字签名中的时间戳,若验证失败,则结束返回显示时间戳签名无效,文档被篡改结果;若验证成功,进行下一步;4)调用ssq-gm,对步骤3)验证完的数字签名中的数字证书的有效性进行验证,若验证失败,则结束返回显示签名证书无效;若验证成功,进行下一步;5)调用ssq-gm,验证使用sm3密码杂凑算法和sm2数字签名算法的数字签名,使用sm2数字签名算法的验证算法和数字证书包含的公共密钥对数字签名值进行校验,若验证失败,则结束返回签名无效;否则验证成功,完成pdf签名的验证。本发明中,将sm3密码杂凑算法和sm2数字签名算法应用到pdf中去,使得数字签名更安全、快速和可靠。ssq-gm是杭州尚尚签网络科技有限公司提供的一个开发库,面向大众开放,是可信的第三方供应商(杭州尚尚签网络科技有限公司)提供。它是一个java语言库,主要提供国密算法相关功能,包括sm2数字签名算法(简称sm2算法)的签名验签、sm3密码杂凑算法(简称sm3算法)的计算和pdf合成等功能。步骤4)中,所述的数字证书包括私有密钥和公钥证书。所述的公钥证书包含身份拥有者的公共密钥、名称、发证机构名称、数字身份证号,以及发证机构的数字签名等信息。数字身份可由可信的数字证书认证中心发放的。数字证书的有效性进行验证,包括:数字证书在签名时是否在有效期内,使用数字证书的真实性,检查数字证书在签名时是否已吊销。为了更好地理解本
发明内容,本发明介绍在验证之前的签名过程,一种支持sm3密码杂凑算法和sm2数字签名算法的pdf签名方法,包括以下步骤:1)发送端发送待签名的pdf文档;2)接收端存在签名者的数字证书,接收端获取pdf文档,调用ssq-gm,对签名者的数字证书的有效性进行检查;3)调用ssq-gm,用sm3密码杂凑算法对获取的pdf文档进行摘要,产生待签名的摘要消息;4)调用ssq-gm,用sm2数字签名算法和签名者数字证书中的私有密钥对步骤3)产生的待签名的摘要消息进行签名,产生数字签名值;5)调用ssq-gm,对步骤4)生成的数字签名值进行校验,根据校验结果判断数字签名是否有效,若有效则进行步骤6),若无效重新执行步骤3);6)调用ssq-gm,用产生的数字签名值和签名者的数字证书生成cades格式的签名体,并将其与pdf文档合成含有本次数字签名的pdf文档,完成pdf签名。将sm3密码杂凑算法和sm2数字签名算法应用到pdf中去,使得数字签名更安全、快速和可靠。ssq-gm是杭州尚尚签网络科技有限公司提供的一个开发库,面向大众开放,是可信的第三方供应商(杭州尚尚签网络科技有限公司)提供。它是一个java语言库,主要提供国密算法相关功能,包括sm2数字签名算法(简称sm2算法)的签名验签、sm3密码杂凑算法(简称sm3算法)的计算和pdf合成等功能。步骤1)中,发送端发送带签名的pdf文档。步骤2)中,所述的数字证书包括私有密钥和公钥证书。所述的公钥证书包含身份拥有者的公共密钥、名称、发证机构名称、数字身份证号,以及发证机构的数字签名等信息。数字身份可由可信的数字证书认证中心发放的。对签名者的数字证书的有效性进行检查,包括:数字证书是否在有效期内,使用数字证书的真实性,检查数字证书是否已吊销。步骤5)中,数字签名值进行校验包括:使用sm2数字签名算法的验证算法和公钥证书包含的公共密钥对数字签名值进行校验。步骤6)中,在生成cades格式的签名体时,同时添加时间戳。cades为cmsadvancedelectronicsignatures,为cms高级电子签名。在一般情况下,算法被攻破后,容易伪造,会出现弱可验证性:签名正确但是签名不可信任,签名时间可能被伪造而实际签名时,证书已失效,或者已吊销。本发明中采用cades格式的签名体,基于sm2数字签名算法才能实现,该cades格式的签名体允许附带crl(证书吊销列表)和ocsp(在线证书状态协议),即使在算法被攻破的前提下,本发明中cades也能够在长时间内保持签名的强可验证性,即可以实现长时间内签名正确并且可信任。所述的签名体为pkcs7签名体。一种对pdf使用sm3算法和sm2算法数字签名的签名验证方法,包括:一、支持sm3密码杂凑算法和sm2数字签名算法的pdf签名方法;二、针对pdf使用sm3算法和sm2算法数字签名的验证方法。一种针对pdf使用sm3算法和sm2算法数字签名的验证系统,包括发送端和接收端:所述发送端进一步包括:发送模块,用于发送待验证pdf文档;接收模块,用于获取接收端发来的pdf文档签名验证结果;所述接收端进一步包括:获取模块,用于获取待验证pdf文档并提取使用sm3密码杂凑算法和sm2数字签名算法的数字签名;时间戳模块,验证数字签名中的时间戳有效性;证书有效性检查模块,验证数字签名中数字证书的有效性;签名验证模块,使用sm2数字签名算法的验证算法和数字证书包含的公共密钥对数字签名值进行校验;发送模块,用于将pdf文档签名验证结果发送给发送端。进一步优选,一种针对pdf使用sm3算法和sm2算法数字签名的验证系统,包括发送端和接收端:所述发送端进一步包括:发送模块,用于发送待验证pdf文档;接收模块,用于获取接收端发来的pdf文档签名验证结果;所述接收端进一步包括:获取模块,用于获取待验证pdf文档并提取使用sm3密码杂凑算法和sm2数字签名算法的数字签名;时间戳模块,用于调用ssq-gm,验证数字签名中的时间戳有效性;证书有效性检查模块,用于调用ssq-gm,验证数字签名中数字证书的有效性;签名验证模块,用于调用ssq-gm,使用sm2数字签名算法的验证算法和数字证书包含的公共密钥对数字签名值进行校验;发送模块,用于将pdf文档签名验证结果发送给发送端。时间戳模块,用于针对数字签名中的时间戳信息进行验证,验证其是否有效。时间戳本质也是数字签名,所以通过对其进行验证即可证明其有效性。数字证书的有效性进行验证,包括:数字证书是否在有效期内,使用数字证书的真实性,检查数字证书是否已吊销。发送模块,用于将pdf文档签名验证的结果发送给发送端,所述结果可能为验证成功,时间戳无效,签名证书无效,签名有误和无sm2签名五种结果。本发明对于现有技术具有如下的有益效果:1.本发明专门支持了sm2数字签名算法和sm3密码杂凑算法,解决了现有pdf文档阅读器不支持sm2数字签名算法和sm3密码杂凑算法pdf签名的验证问题。2.本发明支持的sm2数字签名算法相比较现行的rsa算法更安全,快速和可靠,支持sm2算法的意义重大,当今的互联网环境下对数字签名的需求日益增强,rsa算法为满足其安全性而导致密钥过长使得其签名效率受到极大限制,而sm2数字签名算法提供的强大安全性能和速度性能使得其将会成为未来市场上的首选,因此市场迫切需要能够支持sm2数字签名算法的数字签名验证产品。附图说明图1为本发明实施例2的签名验证方法的流程示意图;图2为本发明实施例3的签名验证系统的结构示意图;图3为本发明实施例3的签名验证系统的运行总体流程示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。相反,本发明涵盖任何由权利要求定义的在本发明的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本发明有更好的了解,在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。实施例1为了更好的阐述针对pdf使用sm3算法和sm2算法数字签名的验证方法,在数字签名验证之前,需要使用sm3密码杂凑算法和sm2数字签名算法对pdf签名,具体包括:1)发送端发送待签名的pdf文档;2)接收端存在签名者的数字证书,接收端获取pdf文档,调用ssq-gm,对签名者的数字证书的有效性进行检查;数字证书包括私有密钥和公钥证书。所述的公钥证书包含身份拥有者的公共密钥、名称、发证机构名称、数字身份证号,以及发证机构的数字签名等信息。数字身份可由可信的数字证书认证中心发放的;对签名者的数字证书的有效性进行检查,包括:数字证书是否在有效期内,使用数字证书的真实性,检查数字证书是否已吊销;3)调用ssq-gm,用sm3密码杂凑算法对获取的pdf文档进行摘要,产生待签名的摘要消息;4)调用ssq-gm,用sm2数字签名算法和签名者数字证书中的私有密钥对步骤3)产生的待签名的摘要消息进行签名,产生数字签名值;5)调用ssq-gm,对步骤4)生成的数字签名值进行校验,根据校验结果判断数字签名是否有效,若有效则进行步骤6),若无效重新执行步骤3);数字签名值进行校验包括:使用sm2数字签名算法的验证算法和公钥证书包含的公共密钥对数字签名值进行校验;6)调用ssq-gm,用产生的数字签名值和签名者的数字证书生成cades格式的签名体,并将其与pdf文档合成含有本次数字签名的pdf文档,完成pdf签名。在生成cades格式的签名体时,同时添加时间戳。所述的签名体为pkcs7签名体。本发明将sm3密码杂凑算法和sm2数字签名算法应用到pdf中去,使得数字签名更安全、快速和可靠。ssq-gm是杭州尚尚签网络科技有限公司提供的一个开发库,面向大众开放,是可信的第三方供应商(杭州尚尚签网络科技有限公司)提供。它是一个java语言库,主要提供国密算法相关功能,包括sm2数字签名算法(简称sm2算法)的签名验签、sm3密码杂凑算法(简称sm3算法)的计算和pdf合成等功能。实施例2:本实施例中,针对pdf使用sm3算法和sm2算法数字签名的验证方法如图1所示,包括发送端的发送接收过程和接收端的签名过程,流程如图3所示,图1、3中sm2签名为使用sm3密码杂凑算法和sm2数字签名算法的数字签名。所述发送端的发送接收过程包括以下步骤:s1、发送待验证pdf文档;s2、接收pdf文档数字签名的验证结果;所述接收端的签名验证过程包括以下步骤:s1、接收端获取待验证pdf文档;s2、调用ssq-gm,提取使用sm3密码杂凑算法和sm2数字签名算法的数字签名,若无此类数字签名,则结束返回显示无此类数字签名;若提取成功,进行下一步;ssq-gm是杭州尚尚签网络科技有限公司的一个开发库,主要提供国密算法相关功能,面向大众开放,包括sm2算法的签名验签,sm3算法的摘要计算和pdf合成等功能,此处使用了ssq-gm的摘要计算能力,可以将消息按散列算法计算得到一个固定位数的消息摘要值;其中,所述sm3算法是国家密码管理局发布的国密算法中的摘要算法;s3、调用ssq-gm,验证步骤2)提取到的数字签名中的时间戳,若验证失败,则结束返回显示时间戳签名无效,文档被篡改结果;若验证成功,进行下一步;时间戳是一个能表示一份数据在某个特定时间之前已经存在的、完整的、可验证的数据。它可以证明签名的时间,在结构上是一段被签名的数据。s4、调用ssq-gm,对步骤3)验证完的数字签名中的数字证书(也称签名证书)的有效性进行验证,若验证失败,则结束返回显示签名证书无效;若验证成功,进行下一步;数字证书的有效性进行验证,包括:数字证书是否在有效期内,使用数字证书的真实性,检查数字证书是否已吊销;s5、调用ssq-gm,验证使用sm3密码杂凑算法和sm2数字签名算法的数字签名,使用sm2数字签名算法的验证算法和数字证书包含的公共密钥对数字签名值进行校验,若验证失败,则结束返回签名无效;否则验证成功,完成pdf签名的验证;s5、发送pdf文档签名验证结果;实施例3:如图2所示,本实施例提供了一种针对pdf使用sm3算法和sm2算法数字签名的验证系统,该系统包括发送端和接收端。总体流程如图3所示,图3中sm2签名为使用sm3密码杂凑算法和sm2数字签名算法的数字签名,发送端发送待验证pdf文档,由接收端进行验证后再将结果传回发送端。发送端包括发送模块和接收模块,各模块具体功能如下:发送模块,用于发送待验证pdf文档。接收模块,用于获取接收端pdf文档签名验证结果。接收端包括获取模块,时间戳验证模块,签名证书有效性验证模块,签名值验证模块和发送模块,各个模块的具体功能如下:获取模块,用于获取pdf文档和提取使用sm3密码杂凑算法和sm2数字签名算法的数字签名。时间戳验证模块,验证数字签名中的时间戳信息是否有效,即时间戳是否被篡改。签名证书有效性验证模块,用于调用ssq-gm,验证数字签名中的签名证书(即数字证书)的有效性,在使用sm3密码杂凑算法和sm2数字签名算法对pdf签名时,数字证书将会一同嵌入pdf。签名值验证模块,用于使用sm2数字签名的验证算法和签名证书包含的公有密钥对数字签名值进行校验。发送模块,用于将合成的新pdf文档发送给发送端。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1