软件密码模块账号的加密和解密方法及装置与流程

文档序号:29617196发布日期:2022-04-13 12:07阅读:576来源:国知局
软件密码模块账号的加密和解密方法及装置与流程

1.本发明涉及信息安全技术领域,尤其涉及一种软件密码模块账号的加密和解密方法及装置。


背景技术:

2.软件密码模块指的是有明确边界的软件形态的密码能力的集合,密码能力包括密码算法和密码协议。密码算法包括对称算法、非对称算法、杂凑算法。密码协议包括tls协议、ssl协议、tlcp协议等。软件密码模块的表现形式可以是一个库,也可以是一个进程。不论哪一种形态,都存在一个密钥的安全保存问题和解锁使用问题。
3.现有的密钥的安全保存和解锁方法主要有白盒密码技术和协同技术。其中,白盒密码技术是采用白盒密钥代码生成算法将密钥转换为代码,标记为白盒密钥代码,然后将白盒密钥代码与算法代码混合编码,混合编译,来起到对密钥保护的作用。协同技术包括协同签名技术和协同解密技术,无论是协同签名技术还是协同解密技术,都需要本地工作平台与远端协同服务器进行多次通信,并且本地工作平台和远端协同服务器都需要进行多次签名和多次解密,来起到对密钥保护和解锁的作用。
4.然而,无论是白盒密码技术还是协同技术,技术实现都比较复杂,运算效率较低,并且不适用于大量密钥的情况。另外在有些应用中,可能存在大量的密钥,如果每个密钥都需要进行协同处理,会需要较多的通信开销和运算开销。


技术实现要素:

5.针对现有技术中的问题,本发明实施例提供一种软件密码模块账号的加密和解密方法及装置。
6.具体地,本发明实施例提供了以下技术方案:
7.第一方面,本发明实施例提供了一种软件密码模块账号的加密方法,应用于本地工作平台,包括:
8.响应于接收到加密指令生成第一随机数,基于所生成的第一随机数和椭圆曲线上基点g的坐标,确定所述椭圆曲线上第一点的坐标;
9.基于所述第一随机数和从远端协同服务器接收到的p点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述p点的坐标是所述远端协同服务器基于随机生成的第二私钥碎片、所述基点g的坐标和所述本地工作平台发出的p1点的坐标生成;所述p1点的坐标是所述本地工作平台基于所述基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成;
10.基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储所述用户账号下密钥的目标文件进行加密,生成第一密文,并基于哈希算法对所述第二点的坐标和所述目标文件进行加密,生成第二密文;
11.基于所述第一点的坐标、所述第一密文和所述第二密文,生成所述目标文件的目
标密文。
12.进一步地,所述基于所述基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成所述p1点的坐标,包括:
13.响应于接收到用户输入的所述解锁口令,基于密钥派生算法根据所述解锁口令生成所述第一私钥碎片;
14.基于所述椭圆曲线包含q个元素的有限域和所述基点g的阶数,确定所述第一私钥碎片的第一逆元;
15.基于所确定的第一逆元和所述基点g的坐标生成所述p1点的坐标,并向所述远端协同服务器发送所生成的p1点的坐标。
16.进一步地,所述基于随机生成的第二私钥碎片、所述基点g的坐标和所述本地工作平台发出的p1点的坐标生成所述p点的坐标,包括:
17.接收所述本地工作平台发出的所述p1点的坐标,随机生成所述第二私钥碎片;
18.基于所述椭圆曲线包含q个元素的有限域和所述基点g的阶数,确定所述第二私钥碎片的第二逆元;
19.基于所述p1点的坐标、所确定的第二逆元和所述基点g的坐标,生成所述p点的坐标,并向所述本地工作平台发送所生成的p点的坐标。
20.进一步地,所述基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储所述用户账号下密钥的目标文件进行加密,生成第一密文,包括:
21.对所述第二点的横坐标和所述第二点的纵坐标进行拼接,生成第一数据;
22.基于密钥派生算法,根据所述第一数据生成所述密钥;
23.基于所述密钥对所述目标文件进行加密,生成所述第一密文。
24.进一步地,所述基于哈希算法对所述第二点的坐标和所述目标文件进行加密,生成第二密文,包括:
25.对所述第二点的横坐标、所述目标文件和所述第二点的纵坐标进行拼接,生成第二数据;
26.基于哈希算法对所述第二数据进行加密,生成所述第二密文。
27.进一步地,所述基于所述第一点的坐标、所述第一密文和所述第二密文,生成所述目标文件的目标密文,包括:
28.对所述第一点的横坐标、所述第一点的纵坐标、所述第二密文和所述第一密文进行拼接,生成所述目标密文,并对所生成的目标密文进行存储。
29.第二方面,本发明实施例还提供了一种软件密码模块账号的解密方法,应用于本地工作平台,包括:
30.响应于接收到用户输入的解锁口令,基于密钥派生算法根据所述解锁口令生成所述第一私钥碎片,并从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和所述第一私钥碎片生成t1点的坐标;
31.向远端协同服务器发送所生成的t1点的坐标,并接收所述远端协同服务器发出的t2点的坐标,基于所接收到的t2点的坐标和所述第一点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述t2点的坐标是所述远端协同服务器基于所述t1点的坐标和随机生成的第二私钥碎片生成;
32.基于所确定的第二点的坐标生成密钥,并从所述目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件;
33.基于哈希算法对所述第二点的坐标和所生成的目标文件进行加密,生成第二密文,并从所述目标密文中提取第二密文,若所提取的第二密文与所生成的第二密文相同,所生成的目标文件为软件密码模块中存储所述用户账号下密钥的明文。
34.进一步地,所述从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和所述第一私钥碎片生成t1点的坐标,包括:
35.从所述目标密文中提取第三数据,并将所提出的第一数据转换为所述椭圆曲线上第一点的坐标;
36.基于所述椭圆曲线包含q个元素的有限域和所述基点g的阶数,确定所述第一私钥碎片的第一逆元;
37.基于所确定的第一逆元和所述第一点的坐标生成所述t1点的坐标。
38.进一步地,所述基于所述t1点的坐标和随机生成的第二私钥碎片生成所述t2点的坐标,包括:
39.基于所述t1点的坐标和第二逆元生成所述t2点的坐标;其中,所述第二逆元是基于随机生成的第二私钥碎片生成。
40.进一步地,所述基于所确定的第二点的坐标生成密钥,并从所述目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件,包括:
41.对所述第二点的横坐标和所述第二点的纵坐标进行拼接,生成第一数据;
42.基于密钥派生算法,根据所述第一数据生成所述密钥;
43.从所述目标密文中提取第一密文,并基于所述密钥对所述第一密文进行解密,生成所述目标文件。
44.进一步地,所述基于哈希算法对所述第二点的坐标和所生成的目标文件进行加密,生成第二密文,包括:
45.对所述第二点的横坐标、所述目标文件和所述第二点的纵坐标进行拼接,生成第二数据;
46.基于哈希算法对所述第二数据进行加密,生成所述第二密文。
47.第三方面,本发明实施例还提供了一种软件密码模块账号的加密装置,应用于本地工作平台,包括:
48.第一坐标确定模块,用于响应于接收到加密指令生成第一随机数,基于所生成的第一随机数和椭圆曲线上基点g的坐标,确定所述椭圆曲线上第一点的坐标;
49.第二坐标确定模块,用于基于所述第一随机数和从远端协同服务器接收到的p点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述p点的坐标是所述远端协同服务器基于随机生成的第二私钥碎片、所述基点g的坐标和所述本地工作平台发出的p1点的坐标生成;所述p1点的坐标是所述本地工作平台基于所述基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成;
50.第一密文生成模块,用于基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储所述用户账号下密钥的目标文件进行加密,生成第一密文,并基于哈希算法对所述第二点的坐标和所述目标文件进行加密,生成第二密文;
51.第二密文生成模块,用于基于所述第一点的坐标、所述第一密文和所述第二密文,生成所述目标文件的目标密文。
52.第四方面,本发明实施例还提供了一种软件密码模块账号的解密装置,应用于本地工作平台,包括:
53.第三坐标确定模块,用于响应于接收到用户输入的解锁口令,基于密钥派生算法根据所述解锁口令生成所述第一私钥碎片,并从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和所述第一私钥碎片生成t1点的坐标;
54.第四坐标确定模块,用于向远端协同服务器发送所生成的t1点的坐标,并接收所述远端协同服务器发出的t2点的坐标,基于所接收到的t2点的坐标和所述第一点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述t2点的坐标是所述远端协同服务器基于所述t1点的坐标和随机生成的第二私钥碎片生成;
55.明文生成模块,用于基于所确定的第二点的坐标生成密钥,并从所述目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件;
56.明文验证模块,用于基于哈希算法对所述第二点的坐标和所生成的目标文件进行加密,生成第二密文,并从所述目标密文中提取第二密文,若所提取的第二密文与所生成的第二密文相同,所生成的目标文件为软件密码模块中存储所述用户账号下密钥的明文。
57.第五方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述软件密码模块账号的加密方法,或如第二方面所述软件密码模块账号的解密方法的步骤。
58.第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述软件密码模块账号的加密方法,或如第二方面所述软件密码模块账号的解密方法的步骤。
59.第五方面,本发明实施例还提供了一种计算机程序产品,其上存储有可执行指令,该指令被处理器执行时使处理器实现如第一方面所述软件密码模块账号的加密方法,或如第二方面所述软件密码模块账号的解密方法的步骤。
60.本发明实施例提供的软件密码模块账号的加密和解密方法及装置,通过本地工作平台与远端协同服务器之间进行一次协同操作,可以生成对软件密码模块账号保存所有密钥的文件进行加密的重要元素,根据协同操作生成的元素生成密钥进行加密,可以实现对软件密码模块账号保存所有密钥的文件进行一次协同技术的保护,在一次协同技术保护之后,对于其中的工作密钥可以在本地进行运用和保护,对于其中的核心密钥可以仍采用协同技术进行高级别的保护,因此在通过一次协同技术极大地提高安全性的同时也可以提高整体的运算效率,可以适用于大量密钥的情况,并且以用户输入口令的方式进行账号的解锁简单方便。
附图说明
61.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根
据这些附图获得其他的附图。
62.图1是本发明提供的软件密码模块账号的加密方法的流程示意图;
63.图2是本发明提供的生成p1点的坐标的流程示意图;
64.图3是本发明提供的生成p点的坐标的流程示意图;
65.图4是本发明提供的生成第一密文的流程示意图;
66.图5是本发明提供的生成第二密文的流程示意图;
67.图6是本发明提供的软件密码模块账号的解密方法的流程示意图;
68.图7是本发明提供的生成t1点的坐标的流程示意图;
69.图8是本发明提供的软件密码模块账号的加密装置的结构示意图;
70.图9是本发明提供的软件密码模块账号的解密装置的结构示意图;
71.图10为本发明提供的电子设备的实体结构示意图。
具体实施方式
72.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
73.下面结合图1-图7描述本发明的软件密码模块账号的加密和解密方法。
74.请参阅图1,图1是本发明提供的软件密码模块账号的加密方法的流程示意图,图1所示的软件密码模块账号的加密方法可以由软件密码模块账号的加密装置执行,该软件密码模块账号的加密装置可以应用于本地工作平台,本地工作平台可以包括客户端和/或服务器,例如,客户端可以为智能手机、台式计算机、笔记型计算机、平板型计算机、可穿戴设备等,服务器可以为包含独立主机的物理服务器、主机集群承载的虚拟服务器、云服务器等,本发明实施例对此不作限定。如图1所示,该软件密码模块账号的加密方法,至少包括:
75.101,响应于接收到加密指令生成第一随机数,基于所生成的第一随机数和椭圆曲线上基点g的坐标,确定椭圆曲线上第一点的坐标。
76.其中,加密指令可以为关机指令,或者,基于关机指令触发生成加密指令,也可以基于用户的特定操作指令(如保存操作)等触发加密指令。为表述方便,以下实施例中以收到关机指令作为方案执行的前提,凡提及关机指令之处,可以认为此处用加密指令替代也是适当的。
77.在本发明实施例中,软件密码模块通常是将每个用户账号名下的密钥保存于一个文件中,通常将这个文件命名为keystore,这些保存于一个文件中的密钥共同组成了一个软件密码模块账号,密钥的存在决定了软件密码模块账号状态的延续性。可选地,每个keystore文件中的密钥根据重要性又可以分为核心密钥和工作密钥,其中核心密钥是指重要性比较高的密钥,例如根据用途可以包括解密密钥和签名密钥,工作密钥是指重要性比较低的密钥,在每个keystore文件中均可以包括多个核心密钥和多个工作密钥,其中多个核心密钥可以组成一个核心密钥组,多个工作密钥可以组成一个工作密钥组,核心密钥组和工作密钥组可以如表1和表2所示,也可以说每个keystore文件可以是由核心密钥组和工作密钥组组成。
78.表1
79.代号功能crucial_key_1核心密钥1crucial_key_2核心密钥2
…………
crucial_key_n核心密钥3
80.表2
81.代号功能work_key_1工作密钥1work_key_2工作密钥2
…………
work_key_n工作密钥3
82.在本发明实施例中,软件密码模块设置于本地工作平台,由于本地工作平台在关机时需要保存关机之前的密钥信息,也即业务的工作状态,因此在本地工作平台关机时需要对软件密码模块中的keystore文件进行加密,以实现对密钥信息的保护。本地工作平台可以基于sm2算法对软件密码模块中的keystore文件进行加密。本地工作平台在接收到关机指令时,可以响应于关机指令生成第一随机数k,然后根据第一随机数k和椭圆曲线上基点g的坐标,计算椭圆曲线上第一点c1的坐标,本发明实施例对根据第一随机数k和椭圆曲线上基点g的坐标计算椭圆曲线上第一点c1的坐标的实现方法不作限定。例如,可以通过将第一随机数k与椭圆曲线上基点g的坐标相乘,计算椭圆曲线上第一点c1的坐标,此时计算第一点c1的坐标的公式1如下:
83.c1=kg=(x1,y1)
ꢀꢀꢀꢀꢀ
(公式1)
84.其中,k∈[1,n-1],n为点g的阶,x1和y1分别为椭圆曲线上第一点c1的横坐标和纵坐标。
[0085]
102,基于第一随机数和从远端协同服务器接收到的p点的坐标,确定椭圆曲线上第二点的坐标;其中,p点的坐标是所述远端协同服务器基于随机生成的第二私钥碎片、基点g的坐标和本地工作平台发出的p1点的坐标生成;p1点的坐标是本地工作平台基于基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成。
[0086]
在本发明实施例中,远端协同服务器是通过与本地工作平台进行通信实现协同技术的服务器,例如,远端协同服务器可以为包含独立主机的物理服务器、主机集群承载的虚拟服务器、云服务器等,本发明实施例对此不作限定。在得到椭圆曲线上第一点c1的坐标之后,本地工作平台可以根据第一随机数k和从远端协同服务器接收到的p点的坐标,计算椭圆曲线上第二点的坐标,本发明实施例对根据第一随机数k和从远端协同服务器接收到的p点的坐标计算椭圆曲线上第二点的坐标的实现方法不作限定。例如,可以通过将第一随机数k与从远端协同服务器接收到的p点的坐标相乘,计算椭圆曲线上第二点的坐标,此时计算第二点的坐标的公式2如下:
[0087]
kp=(x2,y2)
ꢀꢀꢀꢀꢀ
(公式2)
[0088]
其中,x2和y2分别为椭圆曲线上第二点的横坐标和纵坐标,p点的坐标是远端协同服务器根据随机生成的第二私钥碎片、基点g的坐标和本地工作平台发出的p1点的坐标生
成;p1点的坐标是本地工作平台根据基点g的坐标和第一私钥碎片生成,第一私钥碎片是本地工作平台根据用户输入的解锁口令生成。p点的坐标可以是在对软件密码模块中的keystore文件进行加密之前接收并存储于本地工作平台。
[0089]
103,基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储用户账号下密钥的目标文件进行加密,生成第一密文,并基于哈希算法对第二点的坐标和所述目标文件进行加密,生成第二密文。
[0090]
在本发明实施例中,在得到椭圆曲线上第二点的坐标之后,本地工作平台可以根据椭圆曲线上第二点的坐标生成密钥t,本发明实施例对根据椭圆曲线上第二点的坐标生成密钥t的实现方法不作限定。例如,可以通过密钥派生算法kdf对将椭圆曲线上第二点的坐标进行计算,得到密钥t。然后,本地工作平台可以将软件密码模块中存储发出解锁口令的用户的密钥的keystore文件作为目标文件m,并根据密钥t对目标文件m进行加密,生成目标文件m的第一密文c2,本发明实施例对根据密钥t对目标文件m进行加密生成第一密文c2的实现方法不作限定。例如,密钥t可以通过与目标文件m进行逻辑运算,对目标文件m进行加密,得到第一密文c2。之后,本地工作平台可以根据哈希算法对第二点的坐标和目标文件m进行加密,生成目标文件m的第二密文c3。例如,可以通过哈希算法对第二点的坐标和目标文件m进行计算,得到第二密文c3。
[0091]
104,基于第一点的坐标、第一密文和第二密文,生成目标文件的目标密文。
[0092]
在本发明实施例中,在得到目标文件m的第一密文c2和第二密文c3之后,本地工作平台可以根据椭圆曲线上第一点c1的坐标、目标文件m的第一密文c2和第二密文c3,生成目标文件m的目标密文c,本发明实施例对根据第一点c1的坐标、第一密文c2和第二密文c3生成目标密文c的实现方法不作限定。例如,可以通过对第一点c1的横坐标x1、第一点c1的纵坐标y1、第一密文c2和第二密文c3进行拼接,生成目标密文c,此时计算目标密文c的公式3如下:
[0093]
c=c1||c2||c3ꢀꢀꢀꢀ
(公式3)
[0094]
在得到目标文件m的目标密文c之后,本地工作平台可以对目标密文c进行存储,例如将目标密文c保存于硬盘中,之后完成关机动作。
[0095]
本发明实施例提供的软件密码模块账号的加密方法,通过本地工作平台与远端协同服务器之间进行一次协同操作,可以生成对软件密码模块账号保存所有密钥的文件进行加密的重要元素,根据协同操作生成的元素生成密钥进行加密,可以实现对软件密码模块账号保存所有密钥的文件进行一次协同技术的保护,在一次协同技术保护之后,对于其中的工作密钥可以在本地进行运用和保护,对于其中的核心密钥可以仍采用协同技术进行高级别的保护,因此在通过一次协同技术极大地提高安全性的同时也可以提高整体的运算效率,可以适用于大量密钥的情况,并且以用户输入口令的方式进行账号的解锁简单方便。
[0096]
请参阅图2,图2是本发明提供的生成p1点的坐标的流程示意图,如图2所示,基于基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成p1点的坐标,至少包括:
[0097]
201,响应于接收到用户输入的解锁口令,基于密钥派生算法根据解锁口令生成第一私钥碎片。
[0098]
在本发明实施例中,本地工作平台在接收到用户输入的解锁口令时,可以根据解锁口令通过密钥派生算法生成第一私钥碎片d1,例如密钥派生算法可以为kdf,并检查所生成的第一私钥碎片d1是否满足d1∈[1,n-1]的条件,其中n为点g的阶,若满足上述条件,则进
行后续的处理,若不满足上述条件,则需要提醒用户重新输入解锁口令,直至满足上述条件为止。本发明实施例对用户输入解锁口令的实现方式不作限定,例如,用户可以通过实体或者虚拟键盘输入解锁口令,或者用户也可以通过书写板输入解锁口令。
[0099]
202,基于椭圆曲线包含q个元素的有限域和基点g的阶数,确定第一私钥碎片的第一逆元。
[0100]
在本发明实施例中,在根据用户输入的解锁口令得到第一私钥碎片d1之后,本地工作平台可以根据椭圆曲线包含q个元素的有限域fq和基点g的阶数n计算第一私钥碎片d1的第一逆元本发明实施例对根据椭圆曲线包含q个元素的有限域fq和基点g的阶数n计算第一私钥碎片d1的第一逆元的实现方法不作限定。例如,可以通过计算第一私钥碎片d1在椭圆曲线包含q个元素的有限域fq上的第一逆元得到第一逆元
[0101]
203,基于所确定的第一逆元和基点g的坐标生成p1点的坐标,并向远端协同服务器发送所生成的p1点的坐标。
[0102]
在本发明实施例中,在得到第一私钥碎片d1的第一逆元之后,本地工作平台可以根据第一逆元和基点g的坐标,计算p1点的坐标,本发明实施例对根据第一逆元和基点g的坐标计算p1点的坐标的实现方法不作限定。例如,可以通过将第一逆元与基点g的坐标相乘,计算p1点的坐标,此时计算p1点的坐标的公式4如下:
[0103][0104]
在得到p1点的坐标之后,本地工作平台可以将p1点的坐标发送给远端协同服务器。
[0105]
请参阅图3,图3是本发明提供的生成p点的坐标的流程示意图,如图3所示,基于随机生成的第二私钥碎片、基点g的坐标和本地工作平台发出的p1点的坐标生成p点的坐标,至少包括:
[0106]
301,接收本地工作平台发出的p1点的坐标,随机生成第二私钥碎片。
[0107]
在本发明实施例中,远端协同服务器在接收到本地工作平台发出的p1点的坐标之后,会随机生成第二私钥碎片d2,随机生成的第二私钥碎片d2需要满足d2∈[1,n-1]的条件,其中n为点g的阶,本发明实施例对随机生成第二私钥碎片d2的方法不作限定。
[0108]
302,基于椭圆曲线包含q个元素的有限域和基点g的阶数,确定第二私钥碎片的第二逆元。
[0109]
在本发明实施例中,在生成第二私钥碎片d2之后,远端协同服务器可以根据椭圆曲线包含q个元素的有限域fq和基点g的阶数n计算第二私钥碎片d2的第二逆元本发明实施例对根据椭圆曲线包含q个元素的有限域fq和基点g的阶数n计算第二私钥碎片d2的第二逆元的实现方法不作限定。例如,可以通过计算第二私钥碎片d2在椭圆曲线包含q个元素的有限域fq上的第二逆元得到第二逆元
[0110]
303,基于p1点的坐标、所确定的第二逆元和基点g的坐标,生成p点的坐标,并向本地工作平台发送所生成的p点的坐标。
[0111]
在本发明实施例中,在得到第二私钥碎片d2的第二逆元之后,远端协同服务
器可以根据p1点的坐标、第二逆元和基点g的坐标,计算p点的坐标,本发明实施例对根据p1点的坐标、第二逆元和基点g的坐标计算p点的坐标的实现方法不作限定。例如,可以通过将第二逆元与p1点的坐标相乘再减去基点g的坐标,计算p点的坐标,此时计算p点的坐标的公式5如下:
[0112][0113]
在得到p点的坐标之后,远端协同服务器可以将p点的坐标发送给本地工作平台,作为生成对keystore文件进行加密的密钥的重要元素。
[0114]
请参阅图4,图4是本发明提供的生成第一密文的流程示意图,如图4所示,基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储用户账号下密钥的目标文件进行加密,生成第一密文,至少包括:
[0115]
401,对第二点的横坐标和第二点的纵坐标进行拼接,生成第一数据。
[0116]
402,基于密钥派生算法,根据第一数据生成密钥。
[0117]
403,基于密钥对目标文件进行加密,生成第一密文。
[0118]
在本发明实施例中,本地工作平台可以首先通过对第二点的横坐标x2和第二点的纵坐标y2进行拼接得到第一数据,然后通过密钥派生算法kdf对第一数据进行计算得到密钥t,计算密钥t的公式6如下:
[0119]
t=kdf(x2||y2,klen)
ꢀꢀꢀꢀꢀ
(公式6)
[0120]
其中,klen为所生成的密钥t的比特长度。
[0121]
之后本地工作平台可以通过密钥t与目标文件m进行逻辑运算,对目标文件m进行加密,得到第一密文c2,计算第一密文c2的公式7如下:
[0122][0123]
本发明实施例对生成第一密文c2的逻辑运算的方式不作限定。
[0124]
请参阅图5,图5是本发明提供的生成第二密文的流程示意图,如图5所示,基于哈希算法对第二点的坐标和目标文件进行加密,生成第二密文,至少包括:
[0125]
501,对第二点的横坐标、目标文件和第二点的纵坐标进行拼接,生成第二数据。
[0126]
502,基于哈希算法对第二数据进行加密,生成第二密文。
[0127]
在本发明实施实例中,本地工作平台可以首先对第二点的横坐标x2、目标文件m和第二点的纵坐标y2进行拼接得到第二数据,然后通过哈希算法对第二数据进行计算,得到第二密文c3,计算第二密文c3的公式8如下:
[0128]
c3=hash(x2||m||y2)
ꢀꢀꢀꢀꢀꢀ
(公式8)
[0129]
本发明实施例对生成第二密文c3的哈希算法的实现方式不作限定。
[0130]
请参阅图6,图6是本发明提供的软件密码模块账号的解密方法的流程示意图,图6所示的软件密码模块账号的解密方法可以由软件密码模块账号的解密装置执行,该软件密码模块账号的解密装置也可以同时是软件密码模块账号的加密装置,该软件密码模块账号的解密装置可以应用于本地工作平台。如图6所示,该软件密码模块账号的解密方法,至少包括:
[0131]
601,响应于接收到用户输入的解锁口令,基于密钥派生算法根据解锁口令生成第
一私钥碎片,并从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和第一私钥碎片生成t1点的坐标。
[0132]
在本发明实施例中,本地工作平台在接收到用户输入的解锁口令时,可以根据解锁口令通过密钥派生算法生成第一私钥碎片d1,例如密钥派生算法可以为kdf,并从本地工作平台保存的目标密文c中提取椭圆曲线上第一点c1的坐标,本发明实施例对从目标密文c中提取第一点c1的坐标的实现方式不作限定。在得到第一点c1的坐标之后,本地工作平台会验证所提取的第一点c1的坐标是否为椭圆曲线上的非无穷远点,若是,则根据所提取的第一点c1的坐标和第一私钥碎片d1,计算t1点的坐标,本发明实施例对根据第一点c1的坐标和第一私钥碎片d1计算t1点的坐标的实现方式不作限定。其中,提取第一点c1的坐标的目标密文c是根据软件密码模块中存储发出解锁口令的用户的密钥的keystore文件生成。
[0133]
602,向远端协同服务器发送所生成的t1点的坐标,并接收远端协同服务器发出的t2点的坐标,基于所接收到的t2点的坐标和第一点的坐标,确定椭圆曲线上第二点的坐标;其中,t2点的坐标是远端协同服务器基于t1点的坐标和随机生成的第二私钥碎片生成。
[0134]
在本发明实施例中,在得到t1点的坐标之后,本地工作平台可以向远端协同服务器发送t1点的坐标,远端协同服务器在接收到本地工作平台发出的t1点的坐标之后,可以根据t1点的坐标和随机生成的第二私钥碎片d2计算t2点的坐标,并向本地工作平台发送t2点的坐标,本地工作平台在接收到远端协同服务器发出的t2点的坐标之后,可以根据t2点的坐标和第一点c1的坐标,计算椭圆曲线上第二点的坐标,本发明实施例对根据t2点的坐标和第一点c1的坐标计算第二点的坐标的实现方式不作限定。例如,可以通过t2点的坐标与第一点c1的坐标的差值,计算第二点的坐标,此时计算第二点的坐标的公式9如下:
[0135]
(x2,y2)=t
2-c1ꢀꢀꢀꢀ
(公式9)
[0136]
603,基于所确定的第二点的坐标生成密钥,并从目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件。
[0137]
在本发明实施例中,在得到椭圆曲线上第二点的坐标之后,本地工作平台可以根据椭圆曲线上第二点的坐标生成密钥t,本发明实施例对根据椭圆曲线上第二点的坐标生成密钥t的实现方法不作限定。例如,可以通过对第二点的横坐标x2和第二点的纵坐标y2进行拼接得到第一数据,通过密钥派生算法kdf对第一数据进行计算得到密钥t,此时计算密钥t的公式10如下:
[0138]
t=kdf(x2||y2,klen)
ꢀꢀꢀꢀꢀ
(公式10)
[0139]
然后,本地工作平台可以从目标密文c中提取第一密文c2,本发明实施例对从目标密文c中提取第一密文c2的实现方式不作限定。在得到第一密文c2之后,本地工作平台可以根据密钥t对第一密文c2进行解密,生成目标密文
[0140]
c对应的目标文件m,本发明实施例对根据密钥t对第一密文c2进行解密生成目标文件m的实现方法不作限定。例如,密钥t可以通过与第一密文c2进行逻辑运算,对第一密文c2进行解密,得到目标文件m,此时计算目标文件m的公式11如下:
[0141][0142]
本发明实施例对生成目标文件m的逻辑运算的方式不作限定。
[0143]
604,基于哈希算法对第二点的坐标和所生成的目标文件进行加密,生成第二密文,并从目标密文中提取第二密文,若所提取的第二密文与所生成的第二密文相同,所生成
的目标文件为软件密码模块中存储用户账号下密钥的明文。
[0144]
在本发明实施例中,在得到目标文件m之后,本地工作平台可以根据哈希算法对第二点的坐标和目标文件m进行加密,生成目标文件m的第二密文c3。例如,可以通过对第二点的横坐标x2、目标文件m和第二点的纵坐标y2进行拼接得到第二数据,通过哈希算法对第二数据进行计算,得到第二密文u,此时计算第二密文u的公式12如下:
[0145]
u=hash(x2||m||y2)
ꢀꢀꢀꢀꢀ
(公式12)
[0146]
本发明实施例对生成第二密文u的哈希算法的实现方式不作限定。在计算得到第二密文u之后,本地工作平台可以从目标密文c中提取第二密文c2,本发明实施例对从目标密文c中提取第二密文c3的实现方式不作限定。然后本地工作平台可以将所提取的第二密文c3与计算得到的第二密文u进行比较,若两者相同,则计算得到的目标文件m为软件密码模块中存储用户账号下密钥的明文。在得到目标文件m之后,可以直接使用其中的工作密钥,也可以对工作密钥组进行查询、增加、删除等操作。
[0147]
请参阅图7,图7是本发明提供的生成t1点的坐标的流程示意图,如图7所示,从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和第一私钥碎片生成t1点的坐标,至少包括:
[0148]
701,从目标密文中提取第三数据,并将所提出的第三数据转换为椭圆曲线上第一点的坐标。
[0149]
在本发明实施例中,本地工作平台是从目标密文c中提取第三数据,通过对第三数据进行转换,得到椭圆曲线上第一点c1的坐标,本发明实施例对通过第三数据的转换得到第一点c1的坐标的实现方法不作限定。例如,第三数据可以是由第一点c1的横坐标x1与第一点c1的纵坐标y1拼接得到,可以直接对第三数据进行拆分,得到第一点c1的坐标。
[0150]
702,基于椭圆曲线包含q个元素的有限域和基点g的阶数,确定第一私钥碎片的第一逆元。
[0151]
在本发明实施例中,在得到椭圆曲线上第一点c1的坐标之后,本地工作平台可以根据椭圆曲线包含q个元素的有限域fq和基点g的阶数n计算第一私钥碎片d1的第一逆元本发明实施例对根据椭圆曲线包含q个元素的有限域fq和基点g的阶数n计算第一私钥碎片d1的第一逆元的实现方法不作限定。例如,可以通过计算第一私钥碎片d1在椭圆曲线包含q个元素的有限域fq上的第一逆元得到第一逆元
[0152]
703,基于所确定的第一逆元和第一点的坐标生成t1点的坐标。
[0153]
在本发明实施例中,在得到第一私钥碎片d1的第一逆元之后,本地工作平台可以根据第一逆元和第一点c1的坐标,计算t1点的坐标,本发明实施例对根据第一逆元和第一点c1的坐标计算t1点的坐标的实现方法不作限定。例如,可以通过将第一逆元与第一点c1的坐标相乘,计算t1点的坐标,此时计t1点的坐标的公式13如下:
[0154][0155]
在本发明实施例中,远端协同服务器在接收到本地工作平台发出的t1点的坐标之
后,可以根据t1点的坐标和随机生成的第二私钥碎片d2的第二逆元计算t2点的坐标,本发明实施例对根据t1点的坐标和第二逆元计算t2点的坐标的实现方法不作限定。例如,可以通过将第二逆元与t1点的坐标相乘,计算t2点的坐标,此时计t2点的坐标的公式14如下:
[0156][0157]
其中,随机生成的第二私钥碎片d2的第二逆元可以是在对目标文件m进行加密时保存于远端协同服务器的,在得到t2点的坐标之后,远端协同服务器可以将t2点的坐标发送给本地工作平台。
[0158]
下面对本发明提供的软件密码模块账号的加密和解密装置进行描述,下文描述的软件密码模块账号的加密和解密装置与上文描述的软件密码模块账号的加密和解密方法可相互对应参照。
[0159]
请参阅图8,图8是本发明提供的软件密码模块账号的加密装置的结构示意图,图8所示的软件密码模块账号的加密装置可用来执行图1的软件密码模块账号的加密方法,如图8所示,该软件密码模块账号的加密装置至少包括:
[0160]
第一坐标确定模块810,用于响应于接收到加密指令生成第一随机数,基于所生成的第一随机数和椭圆曲线上基点g的坐标,确定椭圆曲线上第一点的坐标。
[0161]
第二坐标确定模块820,用于基于第一随机数和从远端协同服务器接收到的p点的坐标,确定椭圆曲线上第二点的坐标;其中,p点的坐标是所述远端协同服务器基于随机生成的第二私钥碎片、基点g的坐标和本地工作平台发出的p1点的坐标生成;p1点的坐标是本地工作平台基于基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成。
[0162]
第一密文生成模块830,用于基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储用户账号下密钥的目标文件进行加密,生成第一密文,并基于哈希算法对第二点的坐标和目标文件进行加密,生成第二密文。
[0163]
第二密文生成模块840,用于基于第一点的坐标、第一密文和第二密文,生成目标文件的目标密文。
[0164]
可选地,该软件密码模块账号的加密装置,还包括:
[0165]
第一私钥碎片生成模块,用于响应于接收到用户输入的解锁口令,基于密钥派生算法根据解锁口令生成所述第一私钥碎片。
[0166]
第一逆元确定模块,用于基于椭圆曲线包含q个元素的有限域和基点g的阶数,确定第一私钥碎片的第一逆元。
[0167]
第一坐标生成模块,用于基于所确定的第一逆元和基点g的坐标生成p1点的坐标,并向远端协同服务器发送所生成的p1点的坐标。
[0168]
可选地,远端协同服务器包括:
[0169]
第二私钥碎片生成模块,用于接收本地工作平台发出的p1点的坐标,随机生成第二私钥碎片。
[0170]
第二逆元确定模块,用于基于椭圆曲线包含q个元素的有限域和基点g的阶数,确定第二私钥碎片的第二逆元。
[0171]
第二坐标生成模块,用于基于p1点的坐标、所确定的第二逆元和基点g的坐标,生成p点的坐标,并向本地工作平台发送所生成的p点的坐标。
[0172]
可选地,第一密文生成模块830包括:
[0173]
第一拼接单元,用于对第二点的横坐标和第二点的纵坐标进行拼接,生成第一数据。
[0174]
第一密钥生成单元,用于基于密钥派生算法,根据第一数据生成密钥。
[0175]
第一密文生成单元,用于基于密钥对目标文件进行加密,生成第一密文。
[0176]
可选地,第一密文生成模块830还包括:
[0177]
第二拼接单元,用于对第二点的横坐标、目标文件和第二点的纵坐标进行拼接,生成第二数据。
[0178]
第二密文生成单元,用于基于哈希算法对第二数据进行加密,生成第二密文。
[0179]
可选地,第二密文生成模块840,用对第一点的横坐标、第一点的纵坐标、第二密文和第一密文进行拼接,生成目标密文,并对所生成的目标密文进行存储。
[0180]
请参阅图9,图9是本发明提供的软件密码模块账号的解密装置的结构示意图,图9所示的软件密码模块账号的解密装置可用来执行图7的软件密码模块账号的解密方法,如图9所示,该软件密码模块账号的解密装置至少包括:
[0181]
第三坐标确定模块910,用于响应于接收到用户输入的解锁口令,基于密钥派生算法根据解锁口令生成第一私钥碎片,并从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和第一私钥碎片生成t1点的坐标。
[0182]
第四坐标确定模块920,用于向远端协同服务器发送所生成的t1点的坐标,并接收远端协同服务器发出的t2点的坐标,基于所接收到的t2点的坐标和第一点的坐标,确定椭圆曲线上第二点的坐标;其中,t2点的坐标是远端协同服务器基于t1点的坐标和随机生成的第二私钥碎片生成。
[0183]
明文生成模块930,用于基于所确定的第二点的坐标生成密钥,并从目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件。
[0184]
明文验证模块940,用于基于哈希算法对第二点的坐标和所生成的目标文件进行加密,生成第二密文,并从目标密文中提取第二密文,若所提取的第二密文与所生成的第二密文相同,所生成的目标文件为软件密码模块中存储用户账号下密钥的明文。
[0185]
可选地,第三坐标确定模块910包括:
[0186]
数据提取单元,用于从目标密文中提取第三数据,并将所提出的第一数据转换为椭圆曲线上第一点的坐标。
[0187]
第一逆元确定单元,用于基于椭圆曲线包含q个元素的有限域和基点g的阶数,确定第一私钥碎片的第一逆元。
[0188]
第一坐标生成单元,用于基于所确定的第一逆元和第一点的坐标生成t1点的坐标。
[0189]
可选地,远端协同服务器包括:
[0190]
第三坐标生成模块,用于基于t1点的坐标和第二逆元生成t2点的坐标;其中,第二逆元是基于随机生成的第二私钥碎片生成。
[0191]
可选地,明文生成模块930包括:
[0192]
第三拼接单元,用于对第二点的横坐标和第二点的纵坐标进行拼接,生成第一数据。
[0193]
第二密钥生成单元,用于基于密钥派生算法,根据第一数据生成密钥。
[0194]
明文生成单元,用于从目标密文中提取第一密文,并基于密钥对第一密文进行解密,生成目标文件。
[0195]
可选地,明文验证模块940包括:
[0196]
第四拼接单元,用于对第二点的横坐标、目标文件和第二点的纵坐标进行拼接,生成第二数据。
[0197]
第三密文生成单元,用于基于哈希算法对第二数据进行加密,生成第二密文。
[0198]
图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(communications interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行如下方法:响应于接收到加密指令生成第一随机数,基于所生成的第一随机数和椭圆曲线上基点g的坐标,确定所述椭圆曲线上第一点的坐标;基于所述第一随机数和从远端协同服务器接收到的p点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述p点的坐标是所述远端协同服务器基于随机生成的第二私钥碎片、所述基点g的坐标和所述本地工作平台发出的p1点的坐标生成;所述p1点的坐标是所述本地工作平台基于所述基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成;基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储所述用户账号下密钥的目标文件进行加密,生成第一密文,并基于哈希算法对所述第二点的坐标和所述目标文件进行加密,生成第二密文;基于所述第一点的坐标、所述第一密文和所述第二密文,生成所述目标文件的目标密文。
[0199]
或者,响应于接收到用户输入的解锁口令,基于密钥派生算法根据所述解锁口令生成所述第一私钥碎片,并从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和所述第一私钥碎片生成t1点的坐标;向远端协同服务器发送所生成的t1点的坐标,并接收所述远端协同服务器发出的t2点的坐标,基于所接收到的t2点的坐标和所述第一点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述t2点的坐标是所述远端协同服务器基于所述t1点的坐标和随机生成的第二私钥碎片生成;基于所确定的第二点的坐标生成密钥,并从所述目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件;基于哈希算法对所述第二点的坐标和所生成的目标文件进行加密,生成第二密文,并从所述目标密文中提取第二密文,若所提取的第二密文与所生成的第二密文相同,所生成的目标文件为软件密码模块中存储所述用户账号下密钥的明文。
[0200]
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种
可以存储程序代码的介质。
[0201]
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:响应于接收到加密指令生成第一随机数,基于所生成的第一随机数和椭圆曲线上基点g的坐标,确定所述椭圆曲线上第一点的坐标;基于所述第一随机数和从远端协同服务器接收到的p点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述p点的坐标是所述远端协同服务器基于随机生成的第二私钥碎片、所述基点g的坐标和所述本地工作平台发出的p1点的坐标生成;所述p1点的坐标是所述本地工作平台基于所述基点g的坐标和基于用户输入的解锁口令生成的第一私钥碎片生成;基于所确定的第二点的坐标生成密钥,基于所生成的密钥对软件密码模块中存储所述用户账号下密钥的目标文件进行加密,生成第一密文,并基于哈希算法对所述第二点的坐标和所述目标文件进行加密,生成第二密文;基于所述第一点的坐标、所述第一密文和所述第二密文,生成所述目标文件的目标密文。
[0202]
或者,响应于接收到用户输入的解锁口令,基于密钥派生算法根据所述解锁口令生成所述第一私钥碎片,并从目标密文中提取椭圆曲线上第一点的坐标,基于所提取的第一点的坐标和所述第一私钥碎片生成t1点的坐标;向远端协同服务器发送所生成的t1点的坐标,并接收所述远端协同服务器发出的t2点的坐标,基于所接收到的t2点的坐标和所述第一点的坐标,确定所述椭圆曲线上第二点的坐标;其中,所述t2点的坐标是所述远端协同服务器基于所述t1点的坐标和随机生成的第二私钥碎片生成;基于所确定的第二点的坐标生成密钥,并从所述目标密文中提取第一密文,基于所生成的密钥对所提取的第一密文进行解密,生成目标文件;基于哈希算法对所述第二点的坐标和所生成的目标文件进行加密,生成第二密文,并从所述目标密文中提取第二密文,若所提取的第二密文与所生成的第二密文相同,所生成的目标文件为软件密码模块中存储所述用户账号下密钥的明文。
[0203]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0204]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0205]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1