一种文档的数字签名及其验证方法和装置与流程

文档序号:17658774发布日期:2019-05-15 22:14阅读:239来源:国知局
一种文档的数字签名及其验证方法和装置与流程

本申请属于信息安全技术领域,特别涉及一种文档的数字签名及其验证方法和装置。



背景技术:

数字签名,就是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名主要是为了数据的安全性,防止被篡改,但是数据你是看得到的。

数字签名可以用于数字工程图纸审核流程中。设计院设计完图纸,对图纸进行数字签名,发送给审图单位。审图单位对电子图纸审核后,进行数字签名,发送给设计单位。在这个过程中,数字签名可以用于身份识别,确保图纸的有效性和防止被篡改。

文档数字签名一般结合sha算法和rsa算法,其一般包含两个关键步骤:(1)用sha-256算法对信息进行hash处理,得到hash值,sha的特性是不可以从消息摘要中复原信息和两个不同的消息不会产生同样的消息摘要;(2)采用rsa算法对hash值进行加密解密(非对称加密算法),非对称算法分为公钥和私钥,公钥是公开的,私钥是保密的。一般采用私钥进行加密,公钥进行解密,这样即使攻击者有公钥也无法解密。

目前,文档的数字签名一般跟创建文档的软件紧密结合。比如dwg图纸数字签名,一般使用autocad提供的api进行二次开发,实现在dwg文档中写入签名信息,即加密信息跟dwg中的图形信息混在一起。另外,使用api读取原始文档,需要解析文档里面的数据内容,故存在api版本需要跟文档版本兼容的问题:一般的软件,其老版本的程序和api打不开新版本程序产生的文档,即使能够打开也会存在数据丢失的情况,故使用专用软件提供的api(比如autocadarxapi)进行文档签名,需要针对不同版本的软件产生的文档开发不同版本的加密和解密程序。



技术实现要素:

本申请提供了一种文档的数字签名及其验证方法和装置,避免了现有的数字签名在读取不同的文档版本时产生的兼容问题,同时能够对文档进行多次签名。

本申请提供的一种文档的数字签名方法,包括如下步骤:

(1)使用独立的数字签名程序对文档进行数字签名;

(2)将所述数字签名追加到文档尾部形成新的文档;

(3)判断是否需要再次签名,在需要再次签名时,则针对所述新的文档重复上述步骤(1)和(2)。

所述步骤(1)具体为:使用独立的数字签名程序先对文档使用hash算法生成散列值,以用户的私钥和所述散列值作为非对称加密算法的输入产生所述数字签名。

所述步骤(3)具体为:判断是否需要对所述步骤(2)中形成的新的文档再使用独立的数字签名程序进行数字签名,如果需要再次数字签名,则针对所述新的文档重复执行上述步骤(1)和(2),如果不需要再次数字签名,流程结束。

本申请还提供了一种文档的数字签名验证方法,包括步骤:

(1)使用独立的数字签名程序从签名过的文档尾部读取数字签名信息和除所述数字签名信息外的剩余文档内容;

(2)使用独立的数字签名程序对所述读取的数字签名信息进行验证;

(3)判断所述剩余文档内容还存在其他数字签名,且需要进一步验证时,对所述剩余文档内容执行步骤(1)-(2)。

所述步骤(2)具体为:使用hash算法生成所述剩余文档内容的原始散列值,并使用公钥和所述数字签名信息采用非对称解密算法计算目标散列值,对比所述原始散列值和所述目标散列值,若两者一样,则文档通过验证,若两者不一样,则是无效的数字签名或者表示文档被篡改过。

所述步骤(3)具体为:判断所述剩余文档内容中是否存在其他数字签名,如果所述剩余文档内容中不存在其他数字签名,则整个过程结束;如果所述剩余文档内容中还存在其他数字签名,那么还需要判断是否需要对其他数字签名进行验证,在需要对其他数字签名进行验证时,将所述剩余文档内容作为新的签名过的文档继续执行所述步骤(1)-(2),如果不需要对其他数字签名进行验证,则整个过程结束。

本申请还提供了一种文档的数字签名装置,包括签名模块、生成模块和判断模块。

所述签名模块,用于使用独立的数字签名程序对文档进行数字签名;

所述生成模块,用于将所述数字签名追加到文档尾部形成新的文档;

所述判断模块,判断是否需要再次签名,在需要再次签名时,则顺次执行所述签名模块和生成模块的功能。

所述签名模块,具体用于:使用独立的数字签名程序先对文档使用hash算法生成散列值,以用户的私钥和所述散列值作为非对称加密算法的输入产生所述数字签名。

所述判断模块具体用于:判断是否需要对所述生成模块形成的新的文档再使用独立的数字签名程序进行数字签名,如果需要再次数字签名,则针对所述新的文档执行所述签名模块和生成模块的功能,如果不需要再次数字签名,流程结束。

本申请还提供了一种文档的数字签名验证装置,其特征在于,包括读取模块、验证模块和判断模块。

所述读取模块,用于使用独立的数字签名程序从签名过的文档尾部读取数字签名信息和除所述数字签名信息外的剩余文档内容;

所述验证模块,用于使用独立的数字签名程序对所述读取的数字签名信息进行验证;

所述判断模块,用于判断所述剩余文档内容还存在其他数字签名,且需要进一步验证时,对所述剩余文档内容顺次执行所述签名模块和生成模块的功能。

所述验证模块具体用于:使用hash算法生成所述剩余文档内容的原始散列值,并使用公钥和所述数字签名信息采用非对称解密算法计算目标散列值,对比所述原始散列值和所述目标散列值,若两者一样,则文档通过验证,若两者不一样,则是无效的数字签名或者表示文档被篡改过。

所述判断模块具体用于:判断所述剩余文档内容中是否存在其他数字签名,如果所述剩余文档内容中不存在其他数字签名,则整个过程结束;如果所述剩余文档内容中还存在其他数字签名,那么还需要判断是否需要对其他数字签名进行验证,在需要对其他数字签名进行验证时,将所述剩余文档内容作为新的签名过的文档继续执行所述签名模块和生成模块的功能,如果不需要对其他数字签名进行验证,则整个过程结束。

本申请还提供了一种电子设备,其特征在于,所述电子设备包括:存储装置;一个或多个处理器;所述存储装置用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述方法。

本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现上述方法。

相比于现有技术,本申请所提供的一种文档的数字签名及其验证方法和装置,采用不依赖于设计文档的软件或程序来执行数字签名,避免了读取不同的文档版本产生的兼容问题;并且在原始需签名文档的尾部追加信息,即把数字签名附加在原始需签名文档的尾部,且使用多个数字签名同时添加到文档尾部,实现文档多次数字签名。另外,该数字签名程序具有一定的通用性,适合二维图纸、三维模型等工程文件。

附图说明

为了便于本领域普通技术人员理解和实施本申请,下面结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1是本申请的一种文档的数字签名方法的流程图。

图2是本申请的数字签名过程示意图。

图3是本申请的多次数字签名结果示意图。

图4是本申请的一种文档的数字签名验证方法的流程图。

图5是本申请的数字签名验证过程示意图。

图6是本申请的一种文档的数字签名装置的模块组成示意图。

图7是本申请的一种文档的数字签名验证装置的模块组成示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。

现有技术中,在使用autocadarxapi等api的签名程序时,只能以autocad插件的方式执行,不能独立运行,导致在进行数字签名的过程中,读取不同的文档版本产生了兼容问题。本申请采用不依赖生产文档的特定软件,使用与文档版本无关的、独立的程序对文档签名,并且在原始需签名文档的尾部追加信息,即把数字签名附加在原始需签名文档的尾部,且使用多个数字签名同时添加到文档尾部,实现文档多次数字签名。

实施例一

参见图1,本申请实施例一提供了一种文档的数字签名方法,包括如下步骤:

(1)使用独立的数字签名程序对文档进行数字签名,所述独立的程序不依赖于生成文档的特定软件,是与文档版本无关的程序。

图2是对文档进行数字签名的示意图。先对原始文档使用hash算法生成散列值,以用户的私钥和所述散列值作为非对称加密算法的输入产生数字签名

(2)将所述数字签名追加到文档尾部形成新的文档。

在数字签名完毕后,使用独立的数字签名程序在文档尾部追加所述数字签名信息,例如图3中的数字签名1,并保存为新的文档。

(3)判断所述新的文档是否需要再次签名,在需要再次签名时,则针对所述新的文档重复上述步骤(1)和(2)。

判断是否需要对步骤(2)中形成的新的文档再使用独立的数字签名程序进行数字签名,比如审图单位对图纸审核通过后,需要再次签名,则针对新的文档重复执行上述步骤(1)和(2)的过程,生成数字签名2-n,并将生成的数字签名依次附加到文档尾部。如果不需要对步骤(2)中形成的新的文档再使用独立的数字签名程序进行数字签名,那么整个流程结束。

实施例二

参见图4,本申请实施例二提供了一种文档的数字签名验证方法,包括如下步骤:

(1)使用独立的数字签名程序从签名过的文档尾部读取数字签名信息和除所述数字签名信息外的剩余文档内容。

(2)使用独立的数字签名程序对所述读取的数字签名信息进行验证。

在使用独立的数字签名程序从签名过的文档尾部读取数字签名信息和除所述数字签名信息外的剩余文档内容后,其验证过程参见图5,使用hash算法生成剩余文档内容的原始散列值,并使用用户的公钥和所述数字签名信息采用非对称解密算法计算目标散列值,对比原始散列值和目标散列值,若两者一样,则文档通过验证,否则,则是无效的数字签名或者是文档被篡改过。

(3)判断所述剩余文档内容还存在其他数字签名,且需要进一步验证所述其他数字签名时,对所述剩余文档内容执行步骤(1)-(2)。

在步骤(2)中的数字签名进行验证后,判断所述剩余文档内容中是否存在其他数字签名,如果所述剩余文档内容中不存在其他数字签名,则整个过程结束,如果所述剩余文档内容中还存在其他数字签名,那么还需要判断是否需要对其他数字签名进行验证,在需要进行验证时,将所述剩余文档内容作为新的签名过的文档继续执行步骤(1)-(2),如果不需要对其他数字签名进行验证,则整个过程结束。

实施例三

参见图6,本申请实施例三提供了一种文档的数字签名装置,包括签名模块、生成模块和判断模块:

所述签名模块,用于使用独立的数字签名程序对文档进行数字签名,所述独立的程序不依赖于生成文档的特定软件,是与文档版本无关的程序。

所述签名模块,先对原始文档使用hash算法生成散列值,以用户的私钥和所述散列值作为非对称加密算法的输入产生数字签名。

所述生成模块,用于将所述数字签名追加到文档尾部形成新的文档。

所述生成模块,在数字签名完毕后,使用独立的数字签名程序在文档尾部追加所述数字签名信息,例如图3中的数字签名1,并保存为新的文档。

所述判断模块,判断是否需要对所述新的文档再次签名,如需再次签名,则顺次执行所述签名模块和生成模块的功能。

所述判断模块,用于判断是否需要对所述生成模块形成的新的文档再使用独立的数字签名程序进行数字签名,比如审图单位对图纸审核通过后,需要再次签名时,则针对新的文档重复执行上述签名模块和生成模块的功能,生成数字签名2-n,并将生成的数字签名依次附加到文档尾部。如果不需要对所述生成模块形成的新的文档再使用独立的数字签名程序进行数字签名,那么整个流程结束。

实施例四

参见图7,本申请实施例四提供了一种文档的数字签名验证装置,包括读取模块、验证模块和判断模块。

所述读取模块,用于使用独立的数字签名程序从签名过的文档尾部读取数字签名信息和除所述数字签名信息外的剩余文档内容。

所述验证模块,用于使用独立的数字签名程序对所述读取的数字签名信息进行验证。

所述验证模块,在使用独立的数字签名程序从签名过的文档尾部读取数字签名信息和除所述数字签名信息外的剩余文档内容后,使用hash算法生成剩余文档内容的原始散列值,并使用用户的公钥和所述数字签名信息采用非对称解密算法计算目标散列值,对比原始散列值和目标散列值,若两者一样,则文档通过验证,否则,则是无效的数字签名或者是文档被篡改过。

所述判断模块,判断所述剩余文档内容中还存在其他数字签名,且需要进一步验证所述其他数字签名时,对所述剩余文档内容顺次执行所述读取模块和验证模块的功能。

所述判断模块,用于判断所述剩余文档内容中是否存在其他数字签名,如果所述剩余文档内容中不存在其他数字签名,则整个过程结束,如果所述剩余文档内容中还存在其他数字签名,那么还需要判断是否需要对其他数字签名进行验证,在需要进行验证时,将所述剩余文档内容作为新的签名过的文档继续执行所述读取模块和验证模块的功能,如果不需要对其他数字签名进行验证,则整个过程结束。

另外,本申请实施例还公开了一种电子设备,其包括存储装置和一个或多个处理器,存储装置用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如实施例一和三的方法。

本申请实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被执行时,实现如实施例一和三的方法。

附图中的流程图和框图显示了根据本申请的多个实施例的方法、装置和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图和框图中的每个方框可以代表一个单元、模块、程序段或代码的一部分,包含一个或多个用于实现逻辑功能的计算机可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。也要注意的是,框图和流程图中的每个方框或方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本申请不限制于任何特定形式的硬件和软件的结合。综上所述,以上仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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