支持SM3密码杂凑算法和SM2数字签名算法的PDF签名方法和系统与流程

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