一种文件签名方法、装置和文件签名验证方法、装置转让专利

申请号 : CN201911346101.3

文献号 : CN111125781B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈信雄

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请公开了一种文件签名方法、装置和文件签名验证方法、装置;本申请可以对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息;本申请通过改进哈希运算和加密处理的流程,增加算法的复杂度,使得加密信息的破解难度进一步提升,提高了文件签名的安全性。

权利要求 :

1.一种文件签名方法,其特征在于,包括:

对电子文件进行哈希运算,得到第一哈希值;

对所述电子文件中的字节进行逻辑运算,得到字节序列;

对所述字节序列进行哈希运算,得到第二哈希值;

对所述电子文件的公钥进行哈希运算,得到第三哈希值;

将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;

基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。

2.根据权利要求1所述的方法,其特征在于,所述对所述电子文件中的字节进行逻辑运算,得到字节序列,包括:对所述电子文件中所有的偶数字节进行提取,得到偶数字节序列;

对所述电子文件中所有的奇数字节进行提取,得到奇数字节序列;

对所述偶数字节序列和所述奇数字节序列进行逻辑运算,得到字节序列。

3.根据权利要求1所述的方法,其特征在于,所述电子文件的属性信息包括多个子属性信息;所述将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列,包括:计算所述电子文件的各个子属性信息的哈希值;

基于哈希值的大小,对第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序,得到排序后信息;

对排序后信息进行拼接处理,得到信息序列。

4.根据权利要求1所述的方法,其特征在于,所述基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息,包括:对所述信息序列进行哈希运算,得到所述信息序列的哈希值;

基于所述电子文件的私钥,对所述信息序列的哈希值进行加密处理,得到所述电子文件的签名信息。

5.根据权利要求1至4任一项所述的方法,其特征在于,所述基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息之后,还包括:将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的附属文件中;

或者,

将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的隐藏域中。

6.一种文件签名验证方法,其特征在于,包括:基于电子文件的公钥对所述电子文件的签名信息进行解密运算,得到解密后信息序列;

对所述电子文件进行哈希运算,得到第一验证哈希值;

对所述电子文件中的字节进行逻辑运算,得到验证字节序列;

对所述验证字节序列进行哈希运算,得到第二验证哈希值;

对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;

将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;

基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。

7.根据权利要求6所述的方法,其特征在于,所述电子文件的属性信息包括多个子属性信息;所述将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列,包括:计算所述电子文件的各个子属性信息的哈希值;

基于哈希值的大小,对第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的子属性信息进行排序,得到排序后验证信息;

对排序后验证信息进行拼接处理,得到拼接后验证信息;

对拼接后验证信息进行哈希运算,得到验证信息序列。

8.根据权利要求6所述的方法,其特征在于,所述基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证,包括:将所述验证信息序列与所述解密后信息序列进行对比,得到对比结果;

根据所述对比结果,对所述电子文件的签名信息进行验证。

9.一种文件签名装置,其特征在于,包括:

第一哈希单元,用于对电子文件进行哈希运算,得到第一哈希值;

第一逻辑运算单元,用于对所述电子文件中的字节进行逻辑运算,得到字节序列;

第二哈希单元,用于对所述字节序列进行哈希运算,得到第二哈希值;

第三哈希单元,用于对所述电子文件的公钥进行哈希运算,得到第三哈希值;

第一拼接单元,用于将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;

加密单元,用于基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。

10.根据权利要求9所述的文件签名装置,其特征在于,所述第一逻辑运算单元包括:第一提取子单元,用于对所述电子文件中所有的偶数字节进行提取,得到偶数字节序列;

第二提取子单元,用于对所述电子文件中所有的奇数字节进行提取,得到奇数字节序列;

逻辑运算子单元,用于对所述偶数字节序列和所述奇数字节序列进行逻辑运算,得到字节序列。

11.根据权利要求9所述的文件签名装置,其特征在于,所述电子文件的属性信息包括多个子属性信息;所述第一拼接单元包括:第一计算子单元,用于计算所述电子文件的各个子属性信息的哈希值;

第一排序子单元,用于基于哈希值的大小,对第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序,得到排序后信息;

第一拼接子单元,用于对排序后信息进行拼接处理,得到信息序列。

12.根据权利要求9所述的文件签名装置,其特征在于,所述加密单元包括:第一哈希子单元,用于对所述信息序列进行哈希运算,得到所述信息序列的哈希值;

加密子单元,用于基于所述电子文件的私钥,对所述信息序列的哈希值进行加密处理,得到所述电子文件的签名信息。

13.根据权利要求9至12任一项所述的文件签名装置,其特征在于,所述文件签名装置还包括:存储单元,用于将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的附属文件中;或者,将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的隐藏域中。

14.一种文件签名验证装置,其特征在于,包括:解密单元,用于基于电子文件的公钥对所述电子文件的签名信息进行解密运算,得到解密后信息序列;

第一验证哈希单元,用于对所述电子文件进行哈希运算,得到第一验证哈希值;

第二逻辑运算单元,用于对所述电子文件中的字节进行逻辑运算,得到验证字节序列;

第二验证哈希单元,用于对所述验证字节序列进行哈希运算,得到第二验证哈希值;

第三验证哈希单元,用于对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;

第二拼接单元,用于将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;

验证单元,用于基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。

15.根据权利要求14所述的文件签名验证装置,其特征在于,所述电子文件的属性信息包括多个子属性信息;所述第二拼接单元包括:第二计算子单元,用于计算所述电子文件的各个子属性信息的哈希值;

第二排序子单元,用于基于哈希值的大小,对第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的子属性信息进行排序,得到排序后验证信息;

第二拼接子单元,用于对排序后验证信息进行拼接处理,得到拼接后验证信息;

第二哈希子单元,用于对拼接后验证信息进行哈希运算,得到验证信息序列。

16.根据权利要求14所述的文件签名验证装置,其特征在于,所述验证单元包括:对比子单元,用于将所述验证信息序列与所述解密后信息序列进行对比,得到对比结果;

验证子单元,用于根据所述对比结果,对所述电子文件的签名信息进行验证。

17.一种电子设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至5任一项所述的文件签名方法或权利要求6至8任一项所述的文件签名验证方法中的步骤。

18.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至5任一项所述的文件签名方法或权利要求6至8任一项所述的文件签名验证方法中的步骤。

说明书 :

一种文件签名方法、装置和文件签名验证方法、装置

技术领域

[0001] 本申请涉及信息安全技术领域,具体涉及一种文件签名方法、装置和文件签名验证方法、装置。

背景技术

[0002] 随着信息技术的发展,尤其是互联网的迅速发展,相应的电子商务等都可以在互联网上进行,电子签名的应用也越来越广泛。电子签名是一种通过密码技术对电子文档的电子形式的签名,它为电子商务等提供了安全保障机制。由于网络的开放性和共享性,网络安全问题日益重要,因此,电子签名的安全性备受重视。
[0003] 在目前的一些相关技术中,电子签名技术使用到非对称加密和哈希算法,通常在对电子文件进行电子签名时,较为直接地采用哈希算法对电子文件进行哈希运算,再对哈希运算后的结果使用私钥进行加密,得到电子文件的签名信息;在对电子文件验证签名时,采用相同的哈希算法对电子文件进行哈希运算,使用公钥对电子文件的签名信息进行解密,将解密后的结果与哈希运算后的结果进行比较,若二者相同,则验证通过。由于较为直接地采用哈希算法,算法复杂度较低,容易被破解,只要用穷举法使修改后电子文件的哈希值与解密后的结果一致,即可破解验证签名的过程,因此,其安全性较低。

发明内容

[0004] 本申请实施例提供一种文件签名方法、装置和文件签名验证方法、装置,可以通过增加算法的复杂度,提高文件签名的安全性。
[0005] 本申请实施例提供一种文件签名方法,包括:
[0006] 对电子文件进行哈希运算,得到第一哈希值;
[0007] 对所述电子文件中的字节进行逻辑运算,得到字节序列;
[0008] 对所述字节序列进行哈希运算,得到第二哈希值;
[0009] 对所述电子文件的公钥进行哈希运算,得到第三哈希值;
[0010] 将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;
[0011] 基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。
[0012] 本申请实施例提供一种文件签名验证方法,包括:
[0013] 基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;
[0014] 对所述电子文件进行哈希运算,得到第一验证哈希值;
[0015] 对所述电子文件中的字节进行逻辑运算,得到验证字节序列;
[0016] 对所述验证字节序列进行哈希运算,得到第二验证哈希值;
[0017] 对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;
[0018] 将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;
[0019] 基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。
[0020] 相应的,本申请实施例提供一种文件签名装置,包括:
[0021] 第一哈希单元,用于对电子文件进行哈希运算,得到第一哈希值;
[0022] 第一逻辑运算单元,用于对所述电子文件中的字节进行逻辑运算,得到字节序列;
[0023] 第二哈希单元,用于对所述字节序列进行哈希运算,得到第二哈希值;
[0024] 第三哈希单元,用于对所述电子文件的公钥进行哈希运算,得到第三哈希值;
[0025] 第一拼接单元,用于将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;
[0026] 加密单元,用于基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。
[0027] 相应的,本申请实施例提供一种文件签名验证装置,包括:
[0028] 解密单元,用于基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;
[0029] 第一验证哈希单元,用于对所述电子文件进行哈希运算,得到第一验证哈希值;
[0030] 第二逻辑运算单元,用于对所述电子文件中的字节进行逻辑运算,得到验证字节序列;
[0031] 第二验证哈希单元,用于对所述验证字节序列进行哈希运算,得到第二验证哈希值;
[0032] 第三验证哈希单元,用于对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;
[0033] 第二拼接单元,用于将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;
[0034] 验证单元,用于基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。
[0035] 可选的,在本申请的一些实施例中,所述第一逻辑运算单元可以包括第一提取子单元、第二提取子单元和逻辑运算子单元,如下:
[0036] 所述第一提取子单元,用于对所述电子文件中所有的偶数字节进行提取,得到偶数字节序列;
[0037] 第二提取子单元,用于对所述电子文件中所有的奇数字节进行提取,得到奇数字节序列;
[0038] 逻辑运算子单元,用于对所述偶数字节序列和所述奇数字节序列进行逻辑运算,得到字节序列。
[0039] 可选的,在本申请的一些实施例中,所述电子文件的属性信息包括多个子属性信息;所述第一拼接单元可以包括第一计算子单元、第一排序子单元和第一拼接子单元,如下:
[0040] 所述第一计算子单元,用于计算所述电子文件的各个子属性信息的哈希值;
[0041] 第一排序子单元,用于基于哈希值的大小,对第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序,得到排序后信息;
[0042] 第一拼接子单元,用于对排序后信息进行拼接处理,得到信息序列。
[0043] 可选的,在本申请的一些实施例中,所述加密单元可以包括第一哈希子单元和加密子单元,如下:
[0044] 所述第一哈希子单元,用于对所述信息序列进行哈希运算,得到所述信息序列的哈希值;
[0045] 加密子单元,用于基于所述电子文件的私钥,对所述信息序列的哈希值进行加密处理,得到所述电子文件的签名信息。
[0046] 可选的,在本申请的一些实施例中,所述文件签名装置还可以包括存储单元,如下:
[0047] 所述存储单元,用于将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的附属文件中;或者,将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的隐藏域中。
[0048] 可选的,在本申请的一些实施例中,所述电子文件的属性信息包括多个子属性信息;所述第二拼接单元可以包括第二计算子单元、第二排序子单元、第二拼接子单元和第二哈希子单元,如下
[0049] 所述第二计算子单元,用于计算所述电子文件的各个子属性信息的哈希值;
[0050] 第二排序子单元,用于基于哈希值的大小,对第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的子属性信息进行排序,得到排序后验证信息;
[0051] 第二拼接子单元,用于对排序后验证信息进行拼接处理,得到拼接后验证信息;
[0052] 第二哈希子单元,用于对拼接后验证信息进行哈希运算,得到验证信息序列。
[0053] 可选的,在本申请的一些实施例中,所述验证单元可以包括对比子单元和验证子单元,如下:
[0054] 所述对比子单元,用于将所述验证信息序列与所述解密后信息序列进行对比,得到对比结果;
[0055] 验证子单元,用于根据所述对比结果,对所述电子文件的签名信息进行验证。
[0056] 本申请实施例提供的一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令,以执行本申请实施例提供的文件签名方法和文件签名验证方法中的步骤。
[0057] 此外,本申请实施例还提供一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本申请实施例提供的文件签名方法和文件签名验证方法中的步骤。
[0058] 本申请实施例提供了一种文件签名方法、装置和文件签名验证方法、装置,可以对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息;由于本申请通过改进哈希运算和加密处理的流程,增加算法的复杂度,使得加密信息的破解难度进一步提升,提高了文件签名的安全性。

附图说明

[0059] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0060] 图1a是本申请实施例提供的文件签名方法的场景示意图;
[0061] 图1b是本申请实施例提供的文件签名方法的流程图;
[0062] 图1c是本申请实施例提供的文件签名方法的另一流程图;
[0063] 图1d是本申请实施例提供的文件签名方法的另一流程图;
[0064] 图1e是本申请实施例提供的文件签名方法的另一流程图;
[0065] 图1f是本申请实施例提供的文件签名方法的另一流程图;
[0066] 图1g是本申请实施例提供的文件签名方法的另一流程图;
[0067] 图1h是本申请实施例提供的文件签名方法的另一流程图;
[0068] 图2a是本申请实施例提供的文件签名验证方法的流程图;
[0069] 图2b是本申请实施例提供的文件签名验证方法的另一流程图;
[0070] 图3a是本申请实施例提供的文件签名装置的结构示意图;
[0071] 图3b是本申请实施例提供的文件签名验证装置的结构示意图;
[0072] 图3c是本申请实施例提供的文件签名装置的另一结构示意图;
[0073] 图3d是本申请实施例提供的文件签名装置的另一结构示意图;
[0074] 图3e是本申请实施例提供的文件签名装置的另一结构示意图;
[0075] 图3f是本申请实施例提供的文件签名验证装置的另一结构示意图;
[0076] 图3g是本申请实施例提供的文件签名验证装置的另一结构示意图;
[0077] 图4是本申请实施例提供的电子设备的结构示意图;
[0078] 图5是本申请实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图;
[0079] 图6是本申请实施例提供的区块结构的一个可选的示意图。

具体实施方式

[0080] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0081] 本申请实施例提供了一种文件签名方法、装置和文件签名验证方法、装置。
[0082] 具体地,本申请实施例提供适用于第一电子设备的文件签名装置,该第一电子设备可以为终端或服务器等设备;本申请实施例还提供适用于第二电子设备的文件签名验证装置,该第二电子设备可以为终端或者服务器等设备。其中,终端可以为手机、平板电脑、笔记本电脑、或个人计算机(PC,Personal Computer)等设备。服务器可以是单台服务器,也可以是由多个服务器组成的服务器集群。
[0083] 可以理解的是,本实施例的文件签名方法或文件签名验证方法可以是在终端上执行的,也可以是在服务器上执行的,还可以是由终端和服务器共同执行的。
[0084] 本申请实施例将以终端执行文件签名方法,服务器执行文件签名验证方法为例进行说明。参考图1a,本申请实施例提供的文件签名系统包括终端10和服务器11等;终端10与服务器11之间通过网络连接,比如,通过有线或无线网络连接等,其中,文件签名装置集成在终端中,文件签名验证装置集成在服务器上。以上举例不应理解为对本申请的限制。
[0085] 终端10,可以用于对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。
[0086] 其中,在完成对电子文件的签名后,终端10可以对所述电子文件的签名信息进行存储,在需要对签名进行验证时,终端10可以向服务器11发送签名验证请求,并将所述签名信息和电子文件发送给服务器11,以对电子文件的签名进行验证,再接收由服务器11所发送的验证结果。
[0087] 其中,服务器11,可以用于在接收到终端10所发送的签名验证请求后,基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;对所述电子文件进行哈希运算,得到第一验证哈希值;对所述电子文件中的字节进行逻辑运算,得到验证字节序列;对所述验证字节序列进行哈希运算,得到第二验证哈希值;对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证,再将验证结果发送给终端10。
[0088] 以上举例并不作为对本申请的限定。可选的,上述服务器11对电子文件的签名信息的验证过程,也可以由终端10来执行。
[0089] 本申请实施例提供的文件签名方法和文件签名验证方法涉及信息技术(IT,Information Technology)领域中的信息安全技术(Information SecurityTechnology)下的信息加密技术(InformationEncrpytionTachniques)。本申请实施例通过改进哈希运算和加密处理的流程,增加算法的复杂度,提高了文件签名的安全性。
[0090] 其中,信息技术(IT,Information Technology)主要是应用计算机科学和通信技术来设计、开发、安装和实施信息系统及应用软件。它也常被称为信息和通信技术。信息技术的广泛应用使信息的重要生产要素和战略资源的作用得以发挥,使人们能更高效地进行资源优化配置。
[0091] 其中,信息安全技术(Information SecurityTechnology)主要用于防止系统漏洞,防止外部黑客入侵,防御病毒破坏和对可疑访问进行有效控制等。它以保密性、完整性、可用性、可控性和不可否认性五个安全目标为核心,对于保护用户信息数据具有重要的现实意义。信息安全技术可以包括入侵检测技术、防火墙及病毒防护技术、数字签名技术和身份认证技术等等。
[0092] 其中,信息加密技术(InformationEncrpytionTachniques)是利用技术手段,通过把电子信息变为乱码(加密),对电子信息在传输过程中和存储体内进行保护,以防止其它非法人员对数据的窃取篡改的技术。在安全保密中,可通过信息加密技术来保证网络的信息通讯安全。信息加密技术具体可以分为两类,即对称加密(私钥加密)和非对称加密(公钥加密)。对称加密的加密密钥和解密密钥相同,而非对称加密的加密密钥和解密密钥不同。非对称加密算法需要两个密钥:公钥(publickey)和私钥(privatekey)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密;如果用私钥对数据进行加密,那么只有用对应的公钥才能解密。
[0093] 以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
[0094] 实施例一、
[0095] 本申请实施例将从文件签名装置的角度进行描述,该文件签名装置具体可以集成在第一电子设备中,该第一电子设备可以是终端或者服务器等设备。
[0096] 如图1b所示,该文件签名方法的具体流程如下:
[0097] 101、对电子文件进行哈希运算,得到第一哈希值。
[0098] 其中,参见图1c,该电子文件可以是各种类型的电子文件,例如文本文档格式(TXT,Text)和便携式文档格式(PDF,Portable Document Format)的文件等等。
[0099] 其中,哈希运算所采用的算法可以是安全散列算法(SHA,Secure Hash Algorithm)和消息摘要算法第五版(MD5,Message Digest Algorithm 5)等,本实施例对此不作限定。
[0100] 哈希运算(Hash Function)是一种主要用于信息安全领域中的加密算法,哈希运算又称为散列函数,是一种通过散列算法,将任意长度的输入转化为固定长度输出的函数,其输出为固定长度的字符串,被称为哈希值。这种转化的本质是一种压缩映射,即哈希值的空间通常小于输入值的空间。哈希运算的一个重要属性是不可逆,即给定一个哈希值,想要计算出它所对应的消息是极其困难的。其中,不同输入值对应的输出值基本不同,不同输出值对应的输入值不同,所以不可能从散列值来确定唯一的输入值,也就是说,没有办法从输出的哈希值得到原来输入的数据。基于哈希原理的常见哈希算法包括安全散列算法(SHA,Secure Hash Algorithm)和消息摘要算法第五版(MD5,Message Digest Algorithm 5)等。不同哈希算法的对象标识符(OID,ObjectIdentifier)不同,其中,MD5的OID为
1.2.840.113549.2.5,SHA256的OID是1.2.840.113549.1.1.11。
[0101] 102、对所述电子文件中的字节进行逻辑运算,得到字节序列。
[0102] 可选的,在一些实施例中,步骤“对所述电子文件中的字节进行逻辑运算,得到字节序列”,可以包括:
[0103] 对所述电子文件中所有的偶数字节进行提取,得到偶数字节序列;
[0104] 对所述电子文件中所有的奇数字节进行提取,得到奇数字节序列;
[0105] 对所述偶数字节序列和所述奇数字节序列进行逻辑运算,得到字节序列。
[0106] 其中,电子文件由N个字节组成(N≥1),将电子文件的偶数字节提取出来,并进行拼接,即可得到偶数字节序列;同理,将电子文件的奇数字节提取出来,并进行拼接,即可得到奇数字节序列。
[0107] 其中,逻辑运算又称布尔运算,在逻辑代数中,有与、或、非三种基本逻辑运算。逻辑运算的运算规则有很多种,本实施例中不对其做限定,本实施例中的逻辑运算可以是相或或相与等等。
[0108] 例如,步骤“对所述偶数字节序列和所述奇数字节序列进行逻辑运算,得到字节序列”,可以包括:将所述偶数字节序列和所述奇数字节序列相或,得到字节序列。具体地,将参与运算的偶数字节序列和所述奇数字节序列各对应的二进位相或,只要对应的两个二进位有一个为1时,结果位就为1,否则结果位为0,通过相或的逻辑运算即可得到字节序列。
[0109] 103、对所述字节序列进行哈希运算,得到第二哈希值。
[0110] 其中,哈希运算所采用的算法可以是安全散列算法和消息摘要算法第五版等,本实施例对此不作限定。
[0111] 可选的,一些实施例中,如图1d所示,可以将电子文件的偶数字节序列和奇数字节序列进行相或,得到字节序列hex_or_val,再对字节序列hex_or_val进行哈希运算,得到第二哈希值。
[0112] 104、对所述电子文件的公钥进行哈希运算,得到第三哈希值。
[0113] 其中,哈希运算所采用的算法可以是安全散列算法和消息摘要算法第五版等,本实施例对此不作限定。
[0114] 参见图1e,在一些实施例中,步骤“对所述电子文件的公钥进行哈希运算,得到第三哈希值”,可以包括:
[0115] 获取所述电子文件的公钥;
[0116] 对所述公钥进行哈希运算,得到第三哈希值。
[0117] 其中,获取电子文件的公钥方式有很多种。
[0118] 例如,可以从本地的数据库获取该电子文件的公钥,也可以通过其他设备来获取电子文件的公钥,进而提供给该文件签名装置,即该文件签名装置可以接收其他设备发送的公钥。
[0119] 105、将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列。
[0120] 其中,本实施例中,拼接的方式有很多种,本实施例对此不作限定。例如可以根据哈希值的大小来决定拼接的顺序,具体如下所述。
[0121] 在一些实施例中,参见图1f,所述电子文件的属性信息包括多个子属性信息;步骤“将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列”,可以包括:
[0122] 计算所述电子文件的各个子属性信息的哈希值;
[0123] 基于哈希值的大小,对第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序,得到排序后信息;
[0124] 对排序后信息进行拼接处理,得到信息序列。
[0125] 其中,哈希运算所采用的算法可以是安全散列算法和消息摘要算法第五版等,本实施例对此不作限定。电子文件的各个子属性信息可以采用不同的哈希运算来计算对应的哈希值,也可以采用相同的哈希运算来计算对应的哈希值。
[0126] 其中,排序可以根据哈希值的大小,由小到大地对第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序;也可以根据哈希值的大小,由大到小地第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序。
[0127] 其中,电子文件的各个子属性信息可以包括电子文件的创建时间、哈希运算的对象识别符和签名算法的对象识别符等等。其中签名算法的对象识别符是签名算法的标识,不同签名算法的对象识别符OID不同,常见的签名算法有国密和RSA(里维斯特,萨莫尔&阿德曼,Rivest,Shamir&Adleman)算法等等。这些电子文件的子属性信息相对较为保密,使用电子文件的子属性信息,可以大大增加电子文件的破解难度。
[0128] 其中,RSA算法的安全性基于数论中的大素数分解的困难性。RSA需要采用足够大的整数。因子分解越困难,密码越难以破译,加密程度越高。RSA算法的对象识别符为1.2.840.113549.1.1-PKCS-1。
[0129] 106、基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。
[0130] 可选的,如图1g和1h所示,在一些实施例中,步骤“基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息”,可以包括:
[0131] 对所述信息序列进行哈希运算,得到所述信息序列的哈希值;
[0132] 基于所述电子文件的私钥,对所述信息序列的哈希值进行加密处理,得到所述电子文件的签名信息。
[0133] 其中,哈希运算所采用的算法可以是安全散列算法和消息摘要算法第五版等,本实施例对此不作限定。加密处理所采用的算法可以是RSA算法等,本实施例对加密所采用的算法不做限定。
[0134] 其中,电子文件的签名信息中隐含了私钥的信息,因此,签名信息可以证明发布者的身份。电子文件的签名信息可以用于防止电子文件被第三方篡改和防止电子文件内容发布者抵赖,它能够提供身份验证、数据完整性和不可抵赖等安全保障。
[0135] 本申请实施例中,使用非对称密钥加密算法,它需要使用不同的密钥来分别完成加密和解密操作,其中,一个密钥(称为“私钥”)是保密的,它只能由一方保存,而不能各方共享;另一个密钥(称为“公钥”)不是保密的,可以广泛共享。这两个密钥(称为“密钥对”)在加密和解密操作中配合使用。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。例如,在进行数字签名时使用私钥加密,则验证签名时必须使用对应的公钥。
[0136] 其中,私钥可以由用户客户端基于密钥生成工具自行生成;而公钥可以通过私钥来确定,具体地,可通过加密算法对私钥进行处理来确定对应公钥。例如,如果密钥生成工具所指示的用于生成公钥的算法为哈希运算,则可以根据该哈希运算的具体算法对私钥进行计算,以得到公钥。需要说明的是,通过公钥无法反向计算得到私钥,这种不可逆性使得基于私钥所生成的公钥的安全性更高,提高数据安全性。
[0137] 非对称密钥加密算法的优势是两个用户能够安全的沟通而不需交换秘密钥匙。例如,当一个用户B要与A通信,又想保证信息不被别人看到,而且保证信息在传送过程中没有被修改,即需要确保数据安全时,就可以使用A的公钥来加密信息,再把密文传给A,即信息发送者用公钥去加密,而信息接收者则用私钥去解密。因此只有A手中的私钥才能对这个密文进行解密,这样就确保了信息的安全。
[0138] 可选的,在一些实施例中,步骤“基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息”之后,还可以包括:
[0139] 将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的附属文件中;
[0140] 或者,
[0141] 将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的隐藏域中。
[0142] 其中,电子文件有多种格式,部分电子文件可以把电子文件的属性信息、签名信息和公钥存储至电子文件的签名域中,然后可以通过解析工具把签名域隐藏起来,使签名域不显现出来,即这部分电子文件设置有隐藏域,如PDF格式文件。但是有些电子文件的签名域不可以隐藏,如TXT格式文件,则可以把电子文件的属性信息、签名信息和公钥存储至附属文件中。
[0143] 由上可知,本实施例可以对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。本申请可以通过改进哈希运算和加密处理的流程,增加算法的复杂度,使得加密信息的破解难度进一步提升,提高了文件签名的安全性。
[0144] 实施例二、
[0145] 本实施例将从文件签名验证装置的角度进行描述,该文件签名验证装置具体可以集成在第二电子设备中,该第二电子设备可以是终端或者服务器等设备。
[0146] 本申请实施例的文件签名验证方法可以应用于各种类型的电子文件的签名验证中,如文本文档格式(TXT,Text)和便携式文档格式(PDF,Portable Document Format)等等。
[0147] 如图2a所示,该文件签名验证方法的具体流程如下:
[0148] 201、基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列。
[0149] 可选的,在一些实施例中,步骤“基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列”,可以包括:
[0150] 接收终端发送的文件签名验证请求,并获取电子文件和所述签名信息;
[0151] 基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列。
[0152] 其中,所述电子文件为待验证的电子文件,所述公钥与步骤106中的私钥为同一个密钥对,通过该私钥加密的电子文件,只能通过该公钥进行解密。
[0153] 其中,公钥可以通过私钥来确定,具体地,可通过加密算法对私钥进行处理来确定对应公钥。例如,如果密钥生成工具所指示的用于生成公钥的算法为哈希运算,则可以根据该哈希运算的具体算法对私钥进行计算,以得到公钥。需要说明的是,通过公钥无法反向计算得到私钥,这种不可逆性使得基于私钥所生成的公钥的安全性更高,提高数据安全性。
[0154] 可选的,在一些实施例中,签名信息和公钥可以从电子文件的附属文件中提取;在另一些实施例中,签名信息和公钥也可以从电子文件的隐藏域中提取。
[0155] 202、对所述电子文件进行哈希运算,得到第一验证哈希值。
[0156] 其中,文件签名验证过程中的哈希运算步骤与文件签名过程中的哈希运算步骤是一致的,。因此,步骤“对所述电子文件进行哈希运算,得到第一验证哈希值”中,该哈希运算所采用的算法应与步骤101中计算第一哈希值所采用的算法一致。
[0157] 203、对所述电子文件中的字节进行逻辑运算,得到验证字节序列。
[0158] 若文件签名过程中存在对电子文件的偶数字节序列和奇数字节序列进行逻辑运算的过程,则文件签名验证过程也应存在相应的步骤。则步骤“对所述电子文件中的字节进行逻辑运算,得到验证字节序列”,可以包括:
[0159] 对所述电子文件中所有的偶数字节进行提取,得到偶数验证字节序列;
[0160] 对所述电子文件中所有的奇数字节进行提取,得到奇数验证字节序列;
[0161] 对所述偶数验证字节序列和所述奇数验证字节序列进行逻辑运算,得到验证字节序列。
[0162] 其中,若文件签名过程中采用的逻辑运算为相或,则在文件签名验证过程中所采用的逻辑运算也为相或,即本实施例中,步骤“对所述偶数验证字节序列和所述奇数验证字节序列进行逻辑运算,得到验证字节序列”,可以包括:将所述偶数验证字节序列和所述奇数验证字节序列进行相或,得到验证字节序列。具体地,将参与运算的偶数验证字节序列和所述奇数验证字节序列各对应的二进位相或,只要对应的两个二进位有一个为1时,结果位就为1,否则结果位为0,通过相或的逻辑运算即可得到验证字节序列。
[0163] 204、对所述验证字节序列进行哈希运算,得到第二验证哈希值。
[0164] 其中,文件签名验证过程中的哈希运算步骤与文件签名过程中的哈希运算步骤是一致的。因此,步骤“对所述验证字节序列进行哈希运算,得到第二验证哈希值”中,该哈希运算所采用的算法应与步骤103中计算第二哈希值所采用的算法一致。
[0165] 205、对所述电子文件的公钥进行哈希运算,得到第三验证哈希值。
[0166] 其中,文件签名验证过程中的哈希运算步骤与文件签名过程中的哈希运算步骤是一致的。因此,步骤“对所述电子文件的公钥进行哈希运算,得到第三验证哈希值”中,该哈希运算所采用的算法应与步骤104中计算第三哈希值所采用的算法一致。
[0167] 206、将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列。
[0168] 其中,该拼接处理的过程应该与文件签名过程中的拼接处理过程所采用的方法一致。
[0169] 可选的,所述电子文件的属性信息包括多个子属性信息;若文件签名过程中是根据哈希值的大小来决定拼接的顺序,具体可参见步骤105中的描述;并且在文件签名过程的加密处理中是先对信息序列进行哈希运算后,再进行加密的,参见步骤106中的描述,则步骤:“将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列”,可以包括:
[0170] 计算所述电子文件的各个子属性信息的哈希值;
[0171] 基于哈希值的大小,对第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的子属性信息进行排序,得到排序后验证信息;
[0172] 对排序后验证信息进行拼接处理,得到拼接后验证信息;
[0173] 对拼接后验证信息进行哈希运算,得到验证信息序列。
[0174] 其中,电子文件的各个子属性信息与步骤105中所使用的子属性信息是一样的。第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的子属性信息的排序应与步骤105中的排序一致,且排序后验证信息的拼接顺序与步骤105中的拼接顺序一致。
[0175] 其中,步骤“对拼接后验证信息进行哈希运算,得到验证信息序列”中,该哈希运算所采用的算法应与步骤106中计算信息序列的哈希值所采用的算法一致。
[0176] 可选的,在一些实施例中,电子文件的属性信息可以从电子文件的附属文件中提取;在另一些实施例中,电子文件的属性信息也可以从电子文件的隐藏域中提取。
[0177] 207、基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。
[0178] 本实施例中,步骤“基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证”,可以包括:
[0179] 将所述验证信息序列与所述解密后信息序列进行对比,得到对比结果;
[0180] 根据所述对比结果,对所述电子文件的签名信息进行验证。
[0181] 其中,将所述验证信息序列和所述解密后信息序列进行对比,若对比结果一致,则确定所述签名信息验证通过,电子文件未被修改且签名属实;若对比结果不一致,则所述签名信息验证不通过,电子文件可能被篡改或者签名不属实,如图2b所示。
[0182] 需要说明的是,文件签名验证过程中哈希运算的步骤与文件签名过程中哈希运算的步骤是一一对应的,且文件签名验证过程中所使用的哈希算法与文件签名过程中所使用的哈希算法是一致的。
[0183] 由上可知,本实施例可以基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;对所述电子文件进行哈希运算,得到第一验证哈希值;对所述电子文件中的字节进行逻辑运算,得到验证字节序列;对所述验证字节序列进行哈希运算,得到第二验证哈希值;对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。本申请通过改进文件签名的流程,增加算法的复杂度,使得加密信息的破解难度进一步提升,提高了文件签名的安全性。
[0184] 实施例三、
[0185] 为了更好地实施以上方法,本申请实施例还提供一种文件签名系统。该文件签名系统包括文件签名装置31和文件签名验证装置32,其中,如图3a所示,文件签名装置31可以包括第一哈希单元3101、第一逻辑运算单元3102、第二哈希单元3103、第三哈希单元3104、第一拼接单元3105和加密单元3106;如图3b所示,文件签名验证装置32可以包括解密单元3201、第一验证哈希单元3202、第二逻辑运算单元3203、第二验证哈希单元3204、第三验证哈希单元3205、第二拼接单元3206和验证单元3207,如下:
[0186] A.文件签名装置31
[0187] (1)第一哈希单元3101;
[0188] 第一哈希单元3101,用于对电子文件进行哈希运算,得到第一哈希值。
[0189] (2)第一逻辑运算单元3102;
[0190] 第一逻辑运算单元3102,用于对所述电子文件中的字节进行逻辑运算,得到字节序列。
[0191] 可选的,在本申请的一些实施例中,所述第一逻辑运算单元3102可以包括第一提取子单元31021、第二提取子单元31022和逻辑运算子单元31023,参见图3c,如下:
[0192] 所述第一提取子单元31021,用于对所述电子文件中所有的偶数字节进行提取,得到偶数字节序列;
[0193] 第二提取子单元31022,用于对所述电子文件中所有的奇数字节进行提取,得到奇数字节序列;
[0194] 逻辑运算子单元31023,用于对所述偶数字节序列和所述奇数字节序列进行逻辑运算,得到字节序列。
[0195] (3)第二哈希单元3103;
[0196] 第二哈希单元3103,用于对所述字节序列进行哈希运算,得到第二哈希值。
[0197] (4)第三哈希单元3104;
[0198] 第三哈希单元3104,用于对所述电子文件的公钥进行哈希运算,得到第三哈希值。
[0199] (5)第一拼接单元3105;
[0200] 第一拼接单元3105,用于将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列。
[0201] 可选的,在本申请的一些实施例中,所述电子文件的属性信息包括多个子属性信息;所述第一拼接单元3105可以包括第一计算子单元31051、第一排序子单元31052和第一拼接子单元31053,参见图3d,如下:
[0202] 所述第一计算子单元31051,用于计算所述电子文件的各个子属性信息的哈希值;
[0203] 第一排序子单元31052,用于基于哈希值的大小,对第一哈希值、第二哈希值、第三哈希值和所述电子文件的子属性信息进行排序,得到排序后信息;
[0204] 第一拼接子单元31053,用于对排序后信息进行拼接处理,得到信息序列。
[0205] (6)加密单元3106;
[0206] 加密单元3106,用于基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息。
[0207] 可选的,在本申请的一些实施例中,所述加密单元3106可以包括第一哈希子单元31061和加密子单元31062,参见图3e,如下:
[0208] 所述第一哈希子单元31061,用于对所述信息序列进行哈希运算,得到所述信息序列的哈希值;
[0209] 加密子单元31062,用于基于所述电子文件的私钥,对所述信息序列的哈希值进行加密处理,得到所述电子文件的签名信息。
[0210] 可选的,在本申请的一些实施例中,所述文件签名装置31还可以包括存储单元,如下:
[0211] 所述存储单元,用于将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的附属文件中;或者,将所述电子文件的属性信息、所述签名信息和所述公钥存储至所述电子文件的隐藏域中。
[0212] B.文件签名验证装置32
[0213] (1)解密单元3201;
[0214] 解密单元3201,用于基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列。
[0215] (2)第一验证哈希单元3202;
[0216] 第一验证哈希单元3202,用于对所述电子文件进行哈希运算,得到第一验证哈希值。
[0217] (3)第二逻辑运算单元3203;
[0218] 第二逻辑运算单元3203,用于对所述电子文件中的字节进行逻辑运算,得到验证字节序列。
[0219] (4)第二验证哈希单元3204;
[0220] 第二验证哈希单元3204,用于对所述验证字节序列进行哈希运算,得到第二验证哈希值。
[0221] (5)第三验证哈希单元3205;
[0222] 第三验证哈希单元3205,用于对所述电子文件的公钥进行哈希运算,得到第三验证哈希值。
[0223] (6)第二拼接单元3206;
[0224] 第二拼接单元3206,用于将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列。
[0225] 可选的,在本申请的一些实施例中,所述电子文件的属性信息包括多个子属性信息;所述第二拼接单元3206可以包括第二计算子单元32061、第二排序子单元32062、第二拼接子单元32063和第二哈希子单元32064,参见图3f,如下:
[0226] 所述第二计算子单元32061,用于计算所述电子文件的各个子属性信息的哈希值;
[0227] 第二排序子单元32062,用于基于哈希值的大小,对第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的子属性信息进行排序,得到排序后验证信息;
[0228] 第二拼接子单元32063,用于对排序后验证信息进行拼接处理,得到拼接后验证信息;
[0229] 第二哈希子单元32064,用于对拼接后验证信息进行哈希运算,得到验证信息序列。
[0230] (7)验证单元3207;
[0231] 验证单元3207,用于基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。
[0232] 可选的,在本申请的一些实施例中,所述验证单元3207可以包括对比子单元32071和验证子单元32072,参见图3g,如下:
[0233] 所述对比子单元32071,用于将所述验证信息序列与所述解密后信息序列进行对比,得到对比结果;
[0234] 验证子单元32072,用于根据所述对比结果,对所述电子文件的签名信息进行验证。
[0235] 由上可知,本实施例可以对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息;
[0236] 或者,可以基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;对所述电子文件进行哈希运算,得到第一验证哈希值;对所述电子文件中的字节进行逻辑运算,得到验证字节序列;对所述验证字节序列进行哈希运算,得到第二验证哈希值;对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证;
[0237] 本申请可以通过改进哈希运算和加密处理的流程,增加算法的复杂度,使得加密信息的破解难度进一步提升,提高了文件签名的安全性。
[0238] 实施例四、
[0239] 本申请实施例还提供一种电子设备,如图4所示,其示出了本申请实施例所涉及的电子设备的结构示意图,具体来讲:
[0240] 该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0241] 处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
[0242] 存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
[0243] 电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0244] 该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
[0245] 尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
[0246] 对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息;
[0247] 或者,基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;对所述电子文件进行哈希运算,得到第一验证哈希值;对所述电子文件中的字节进行逻辑运算,得到验证字节序列;对所述验证字节序列进行哈希运算,得到第二验证哈希值;对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。
[0248] 以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0249] 由上可知,本实施例可以对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息;
[0250] 或者,可以基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;对所述电子文件进行哈希运算,得到第一验证哈希值;对所述电子文件中的字节进行逻辑运算,得到验证字节序列;对所述验证字节序列进行哈希运算,得到第二验证哈希值;对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证;
[0251] 本申请可以通过改进哈希运算和加密处理的流程,增加算法的复杂度,使得加密信息的破解难度进一步提升,提高了文件签名的安全性。
[0252] 本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
[0253] 为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种文件签名方法和文件签名验证方法中的步骤。例如,该指令可以执行如下步骤:
[0254] 对电子文件进行哈希运算,得到第一哈希值;对所述电子文件中的字节进行逻辑运算,得到字节序列;对所述字节序列进行哈希运算,得到第二哈希值;对所述电子文件的公钥进行哈希运算,得到第三哈希值;将第一哈希值、第二哈希值、第三哈希值和所述电子文件的属性信息进行拼接处理,得到信息序列;基于所述电子文件的私钥,对所述信息序列进行加密处理,得到所述电子文件的签名信息;
[0255] 或者,可以基于电子文件的公钥对所述签名信息进行解密运算,得到解密后信息序列;对所述电子文件进行哈希运算,得到第一验证哈希值;对所述电子文件中的字节进行逻辑运算,得到验证字节序列;对所述验证字节序列进行哈希运算,得到第二验证哈希值;对所述电子文件的公钥进行哈希运算,得到第三验证哈希值;将第一验证哈希值、第二验证哈希值、第三验证哈希值和所述电子文件的属性信息进行拼接处理,得到验证信息序列;基于所述验证信息序列和所述解密后信息序列,对所述电子文件的签名信息进行验证。
[0256] 以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0257] 其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
[0258] 由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种文件签名方法和文件签名验证方法中的步骤,因此,可以实现本申请实施例所提供的任一种文件签名方法和文件签名验证方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
[0259] 本申请实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的电子设备,如服务器、终端)通过网络通信的形式连接形成的分布式系统。
[0260] 以分布式系统为区块链系统为例,参见图5,图5是本申请实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点200(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端300形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。本实施例中,电子文件的签名信息等信息,可以通过节点被存储在区域链系统的共享账本中,电子设备(例如终端或服务器)可以基于共享账本存储的记录数据获取电子文件的签名信息等信息。
[0261] 参见图5示出的区块链系统中各节点的功能,涉及的功能包括:
[0262] 1)路由,节点具有的基本功能,用于支持节点之间的通信。
[0263] 节点除具有路由功能外,还可以具有以下功能:
[0264] 2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
[0265] 例如,应用实现的业务包括:
[0266] 2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
[0267] 2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
[0268] 2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
[0269] 3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
[0270] 参见图6,图6是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
[0271] 以上对本申请实施例所提供的一种文件签名方法和文件签名验证方法、装置、电子设备和存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。