基于SM2算法的私钥处理方法、终端及密钥中心

著录项
  • CN201910600980.1
  • 20190704
  • CN110391900A
  • 20191029
  • 晋商博创(北京)科技有限公司
  • 段志勇;李维刚;卜异亚;南相浩
  • H04L9/08
  • H04L9/08 H04L9/32 H04L29/06

  • 北京市丰台区金泽西路8号院1号楼晋商联合大厦21层
  • 北京(11)
  • 北京润平知识产权代理有限公司
  • 肖冰滨;王晓晓
摘要
本发明涉及信息安全技术领域,公开了一种基于SM2算法的私钥处理方法、终端及密钥中心,解决了现有技术中在开放环境下私钥的安全保护问题。所述方法应用于密钥中心,所述方法包括:接收客户端的密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和第一私钥因子;根据密钥生成规则,得到所述密钥标识对应的私钥;根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子;将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。本发明实施例适用于在开放环境下私钥的分散存储和使用过程。
权利要求

1.一种基于SM2算法的私钥处理方法,其特征在于,所述方法应用于密钥中心,所述方法包括:

接收客户端的密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和第一私钥因子;

根据密钥生成规则,得到所述密钥标识对应的私钥;

根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子;

将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

2.根据权利要求1所述的方法,其特征在于,所述根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子包括:

根据得到所述第二私钥因子dy,其中,d为所述密钥标识对应的私钥,dx所述第一私钥因子。

3.一种基于SM2算法的私钥处理方法,其特征在于,所述方法应用于客户端,所述方法包括:

随机生成第一私钥因子;

向密钥中心发送密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和所述第一私钥因子,以便所述密钥中心根据密钥生成规则,得到所述密钥标识对应的私钥,根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子,并将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

利用所述第一私钥因子与所述第二私钥因子的签名过程:

获取待签名数据;

根据SM2算法以及所述待签名数据,得到所述待签名数据对应的数字摘要;

随机生成第一随机数和第二随机数,并根据所述第一随机数得到第一中间变量;

将所述第二随机数、第一中间变量与所述数字摘要发送至所述服务器端,以便所述服务器端根据所述第二随机数、第一中间变量、所述数字摘要以及第二私钥因子,得到签名变量、第一签名分量和第二签名分量,并将所述签名变量、第一签名分量和第二签名分量返回至所述客户端;

接收所述服务器端发送的所述签名变量、第一签名分量和第二签名分量;

根据所述签名变量、第一签名分量、第二签名分量以及第一私钥因子,得到所述待签名数据对应的签名值。

5.根据权利要求3所述的方法,其特征在于,所述方法还包括:

利用所述第一私钥因子与所述第二私钥因子的解密过程:

获取待解密的密文信息;

提取所述密文信息中的数字信封、密文和校验值,并将所述数字信封发送至所述服务器端,以便所述服务器端根据所述数字信封和所述第二私钥因子得到第二中间变量;

接收所述服务器端发送的第二中间变量;

根据所述第一私钥因子、第二中间变量和数字信封,得到第三中间变量;

根据所述第三中间变量,得到所述待解密的密文信息对应的会话密钥;

根据所述密文、会话密钥、第三中间变量以及校验值,确定所述待解密的密文信息对应的明文。

6.一种基于SM2算法的私钥处理方法,其特征在于,所述方法应用于服务器端,所述方法包括:

接收密钥中心发送的第二私钥因子,所述第二私钥因子与密钥标识对应的私钥以及客户端保存的第一私钥因子相关;

加密存储所述第二私钥因子。

7.根据权利要求6所述的方法,其特征在于,所述第二私钥因子与密钥标识对应的私钥以及客户端保存的第一私钥因子相关包括:

其中,d为密钥标识对应的私钥,dx为所述第一私钥因子,dy为所述第二私钥因子。

8.一种密钥中心,其特征在于,所述密钥中心用于执行上述权利要求1或2所述的基于SM2算法的私钥处理方法。

9.一种客户端,其特征在于,所述客户端用于执行上述权利要求3-5任一项所述的基于SM2算法的私钥处理方法。

10.一种服务器端,其特征在于,所述服务器端用于执行上述权利要求6或7所述的基于SM2算法的私钥处理方法。

说明书
技术领域

本发明涉及信息安全技术领域,具体地,涉及一种基于SM2算法的私钥处理方法、终端及密钥中心。

随着网络技术的发展,尤其是物联网的兴起,移动终端、嵌入式终端和传感器终端的安全性要求需求强烈,而在这些物联网终端上无法使用传统的U盾、智能IC卡等安全密码芯片为支撑的硬件密码产品。近年来业界提出去硬件化的解决方案以适应物联网领域的终端多样性兼容问题,采用虚拟化技术实现安全密码芯片等效的安全功能。然而,虚拟化技术在功能上与U盾等几乎等同,但在私钥的保护上却存在着较大的安全性风险,这种依赖于虚拟化技术的私钥存储数据可以被程序所复制,在进行数字签名或数据非对称解密时,私钥可能会暴露于终端的内存,风险性较大。

现有的解决方案主要包括:(1)采用本地加密存储私钥。这种方法在签名或解密计算过程中,需要将私钥解密后使用,这将导致完整的私钥出现在内存中,攻击者可能从终端内存中将其导出。(2)多方协同密钥对生成方法,由协作方分别各自独立生成部分私钥并分别存储,并由中心通过协作方提供的部分公钥计算公钥并公布。这种密钥对生成方法在实际应用中存在一些缺陷,例如,一般私钥被两方加密存储后,由于没有备份机制,当私钥丢了,或者设备损坏时,无法获取私钥,难以实现私钥恢复功能。

本发明实施例的目的是提供一种基于SM2算法的私钥处理方法、终端及密钥中心,解决了现有技术中在开放环境下私钥的安全保护问题,实现了虚拟化技术体系下私钥的整个生命周期内的分散保护。

为了实现上述目的,本发明第一方面实施例提供一种一种基于SM2算法的私钥处理方法,所述方法应用于密钥中心,所述方法包括:接收客户端的密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和第一私钥因子;根据密钥生成规则,得到所述密钥标识对应的私钥;根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子;将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

进一步地,所述密钥生成规则包括组合公钥CPK规则和公钥基础设施PKI规则。

进一步地,所述根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子包括:根据得到所述第二私钥因子dy,其中,d为所述密钥标识对应的私钥,dx为所述第一私钥因子。

本发明第二方面实施例提供一种基于SM2算法的私钥处理方法,所述方法应用于客户端,所述方法包括:随机生成第一私钥因子;向密钥中心发送密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和所述第一私钥因子,以便所述密钥中心根据密钥生成规则,得到所述密钥标识对应的私钥,根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子,并将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

进一步地,所述方法还包括:加密保存所述第一私钥因子。

进一步地,所述方法还包括:利用所述第一私钥因子与所述第二私钥因子的签名过程:获取待签名数据;根据SM2算法以及所述待签名数据,得到所述待签名数据对应的数字摘要;随机生成第一随机数和第二随机数,并根据所述第一随机数得到第一中间变量;将所述第二随机数、第一中间变量与所述数字摘要发送至所述服务器端,以便所述服务器端根据所述第二随机数、第一中间变量、所述数字摘要以及第二私钥因子,得到签名变量、第一签名分量和第二签名分量,并将所述签名变量、第一签名分量和第二签名分量返回至所述客户端;接收所述服务器端发送的所述签名变量、第一签名分量和第二签名分量;根据所述签名变量、第一签名分量、第二签名分量以及第一私钥因子,得到所述待签名数据对应的签名值。

进一步地,所述根据SM2算法以及所述待签名数据,得到所述待签名数据对应的数字摘要包括:根据得到所述待签名数据的拼接值其中,||表示拼接,M为所述待签名数据,ZA为所述客户端的可辨别标识、部分椭圆曲线系统参数和所述客户端的公钥的杂凑值;根据得到所述待签名数据对应的数字摘要e,Hv()表示预定的消息摘要长度为v比特的密码杂凑函数。

进一步地,所述根据所述第一随机数得到第一中间变量包括:根据W1=b1·G,得到第一中间变量W1,其中,b1为第一随机数,G为椭圆曲线E上n阶的基点,·表示椭圆曲线E的倍点运算。

进一步地,所述根据所述签名变量、第一签名分量、第二签名分量以及第一私钥因子,得到所述待签名数据对应的签名值包括:根据s=(d1×b1×s1+d1×s2-r)modn,得到所述待签名数据对应的签名值s,其中,dx为所述第一私钥因子,b1为所述第一随机数,s1为第一签名分量,s2为第二签名分量,r为所述签名变量。

进一步地,所述方法还包括:利用所述第一私钥因子与所述第二私钥因子的解密过程:获取待解密的密文信息;提取所述密文信息中的数字信封、密文和校验值,并将所述数字信封发送至所述服务器端,以便所述服务器端根据所述数字信封和所述第二私钥因子得到第二中间变量;接收所述服务器端发送的第二中间变量;根据所述第一私钥因子、第二中间变量和数字信封,得到第三中间变量;根据所述第三中间变量,得到所述待解密的密文信息对应的会话密钥;根据所述密文、会话密钥、第三中间变量以及校验值,确定所述待解密的密文信息对应的明文。

进一步地,所述提取所述密文信息中的数字信封,并将所述数字信封发送至所述服务器端包括:提取所述密文信息中的数字信封;根据S=[h]·C1,得到椭圆曲线点S,并判断所述椭圆曲线点S是否为零,其中,h为椭圆曲线系统参数,C1为数字信封,·表示椭圆曲线E的倍点运算;若所述椭圆曲线点不为零,将所述数字信封发送至所述服务器端。

进一步地,所述根据所述第一私钥因子、第二中间变量和数字信封,得到第三中间变量包括:根据W3=dx·W2-C1,得到所述第三中间变量W3,其中,dx为第一私钥因子,W2为第二中间变量,C1为数字信封。

进一步地,所述根据所述第三中间变量,得到所述待解密的密文信息对应的会话密钥包括:根据t=KDF(x3||y3,klen),得到所述待解密的密文信息对应的会话密钥t,||表示拼接,KDF()为预定的密钥派生函数,x3与y3为所述第三中间变量W3的坐标分量,klen为所述待解密的密文信息对应的明文的比特长度。

进一步地,所述根据所述密文、会话密钥、第三中间变量以及校验值,确定所述待解密的密文信息对应的明文包括:根据得到待确定的明文M',其中,C2为密文,t为会话密钥;根据u=Hash(x3||M'||y3),得到校验码u,其中,Hash()表示预设的密码杂凑函数,x3与y3为所述第三中间变量W3的坐标分量;判断校验码与校验值是否相等,若相等,确定所述待确定的明文为所述待解密的密文信息对应的明文。

本发明第三方面实施例提供一种基于SM2算法的私钥处理方法,所述方法应用于服务器端,所述方法包括:接收密钥中心发送的第二私钥因子,所述第二私钥因子与密钥标识对应的私钥以及客户端保存的第一私钥因子相关;加密存储所述第二私钥因子。

进一步地,所述第二私钥因子与密钥标识对应的私钥以及客户端保存的第一私钥因子相关包括:其中,d为密钥标识对应的私钥,dx为所述第一私钥因子,dy为所述第二私钥因子。

进一步地,所述方法还包括:利用所述第二私钥因子的签名过程:接收客户端发送的第二随机数、第一中间变量与数字摘要;随机生成第三随机数和第四随机数,并根据所述第二随机数、第一中间变量、第三随机数和第四随机数得到椭圆曲线点;根据所述椭圆曲线点和数字摘要,得到签名变量;根据所述第二私钥因子、签名变量、第二随机数、第三随机数和第四随机数,得到第一签名分量和第二签名分量;将所述签名变量、第一签名分量和第二签名分量返回至所述客户端,以便所述客户端根据所述签名变量、第一签名分量、第二签名分量以及其保存的第一私钥因子得到待签名数据对应的签名值。

进一步地,所述根据所述第二随机数、第一中间变量、第三随机数和第四随机数得到椭圆曲线点包括:根据(Wx,Wy)=k2·W1+b2×k1·G,得到椭圆曲线点(Wx,Wy),其中,k1为第二随机数,b2为第三随机数,k2为第四随机数,W1为第一中间变量,G为椭圆曲线E上n阶的基点,·表示椭圆曲线E的倍点运算。

进一步地,所述根据所述椭圆曲线点和数字摘要,得到签名变量包括:根据r=(e+Wx)modn,得到待定签名变量r,其中,e为数字摘要,Wx为所述椭圆曲线点的x坐标值;判断所述待定签名变量是否等于零;若所述待定签名变量等于零,重新随机生成第三随机数和第四随机数;若所述待定签名变量不等于零,将所述待定签名变量确定为签名变量。

进一步地,所述根据所述第二私钥因子、签名变量、第二随机数、第三随机数和第四随机数,得到第一签名分量和第二签名分量包括:根据s1=(d2×k2)modn,得到所述第一签名分量s1,其中,k2为第四随机数,dy为所述第二私钥因子;根据s2=[d2×(r+k1×b2)]modn,得到所述第二签名分量s2,其中,k1为第二随机数,b2为第三随机数,dy为所述第二私钥因子,r为签名变量。

进一步地,所述方法还包括:利用所述第二私钥因子的解密过程:接收客户端发送的待解密的密文信息中的数字信封;根据所述数字信封和第二私钥因子,得到第二中间变量;将所述第二中间变量返回至所述客户端,以便所述客户端根据所述第二中间变量、数字信封、其保存的第一私钥因子以及所述待解密的密文信息中的密文以及校验值,确定所述待解密的密文信息对应的明文。

进一步地,所述根据所述数字信封和第二私钥因子,得到第二中间变量包括:根据W2=dy·C1,得到所述第二中间变量W2,其中,dy为第二私钥因子,C1为数字信封。

本发明第四方面实施例一种密钥中心,所述密钥中心用于执行如上所述的应用于密钥中心的基于SM2算法的私钥处理方法。

本发明第五方面实施例一种客户端,所述客户端用于执行如上所述的应用于客户端的基于SM2算法的私钥处理方法。

本发明第六方面实施例一种服务器端,所述服务器端用于执行如上所述的应用于服务器端的基于SM2算法的私钥处理方法。

本发明第七方面实施例一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上所述的应用于密钥中心的基于SM2算法的私钥处理方法,和/或如上所述的应用于客户端的基于SM2算法的私钥处理方法,和/或如上所述的应用于服务器端的基于SM2算法的私钥处理方法。

通过上述技术方案,解决了现有技术中在开放环境下私钥的安全保护问题,通过密钥中心直接生成私钥,从而由私钥与客户端的第一私钥因子生成第二私钥因子,进而通过客户端保存第一私钥因子,服务器端加密保存第二私钥因子,实现了私钥的分散保护,确保私钥在存储与使用过程中在任何一方不出现完整的私钥。而且当某一方的私钥因子丢失时,还可以通过另一方的私钥因子与私钥再恢复,解决了私钥恢复的问题。

本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:

图1是本发明实施例提供的一种基于SM2算法的私钥处理方法的流程示意图;

图2是本发明实施例提供的另一种基于SM2算法的私钥处理方法的流程示意图;

图3是本发明实施例提供的又一种基于SM2算法的私钥处理方法的流程示意图;

图4是本发明实施例提供的再一种基于SM2算法的私钥处理方法的流程示意图;

图5是本发明实施例提供的客户端与服务器端之间利用第一私钥因子与第二私钥因子的签名流程示意图;

图6是本发明实施例提供的客户端与服务器端之间利用第一私钥因子与第二私钥因子的解密流程示意图。

以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

本发明实施例是基于SM2椭圆曲线公钥密钥算法,为了便于理解本发明实施例中的符号或术语,下面给出解释说明:

E(Fq):Fq上椭圆曲线E的所有有理点(包括无穷远点O)组成的集合;

Fq:包含q个元素的有限域;

O:椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法的单位元;

G:椭圆曲线的一个基点,其阶为素数;

Hash():密码杂凑函数;

Hv():预定的消息摘要长度为v比特的密码杂凑函数;

KDF():预定的密钥派生函数;

n:基点G的阶;

x||y:x与y的拼接,其中x与y可以是比特串或字节串;

mod n:模n运算;

ZA:关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A的公钥的杂凑值。

本发明实施例既可以实现私钥的分散保护,又可以和SM2签名协议和加密协议互通,实现了软件盾与U盾等效的安全性。下面将详细描述本发明实施例的实现过程。另外,本发明实施例中客户端、密钥中心和服务器端共享SM2算法的椭圆曲线参数E(Fq)、G和n,上述参数的具体取值均根据SM2算法预先设定。

图1是本发明实施例提供的一种基于SM2算法的私钥处理方法的流程示意图。如图1所示,所述方法应用于密钥中心,所述方法包括如下步骤:

步骤101,接收客户端的密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和第一私钥因子;

步骤102,根据密钥生成规则,得到所述密钥标识对应的私钥;

步骤103,根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子;

步骤104,将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

其中,所接收的客户端的密钥申请消息中,包括了预申请密钥的密钥标识以及客户端生成的第一私钥因子dx,且dx∈[1,n-1]。

密钥中心可以根据密钥生成规则,得到所述密钥标识对应的密钥对,即公钥D和私钥d。其中所述密钥生成规则包括CPK(Combined Public Key,组合公钥)规则,以及PKI(Public Key Infrastructure,公钥基础设施)规则,参考现有技术中的CPK规则或者PKI规则,生成与所述密钥标识对应的密钥对,并将密钥对与所述密钥标识进行绑定,以便后续使用。

密钥中心在得到所述密钥标识对应的私钥以及第一私钥因子之后,根据得到所述第二私钥因子dy,其中,d为所述密钥标识对应的私钥,dx为所述第一私钥因子。另外,需要说明的是,如果令则私钥d可以表示为d=(d1×d2)-1-1,可见,私钥d被拆分为dx和dy。

然后,密钥中心将所述密钥标识对应的公钥发送给所述客户端,以便所述客户端保存公钥,以及将第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

通过本发明实施例,既避免了现有技术(1)中完整存储私钥,易被攻击获取的问题,也避免了现有技术(2)中易丢失,难以实现私钥恢复的问题。本发明实施例通过密钥中心直接生成私钥,从而由私钥与客户端的第一私钥因子生成第二私钥因子,进而通过客户端加密保存第一私钥因子,服务器端加密保存第二私钥因子,实现了私钥的分散保护,确保私钥在存储与使用过程中在任何一方不出现完整的私钥。而且当某一方的私钥因子丢失时,还可以通过另一方的私钥因子与私钥再恢复,解决了私钥恢复的问题。

对应的,图2是本发明实施例提供的一种基于SM2算法的私钥处理方法的流程示意图。如图2所示,所述方法应用于客户端,所述方法包括如下步骤:

步骤201,随机生成第一私钥因子;

步骤202,向密钥中心发送密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和所述第一私钥因子,以便所述密钥中心根据密钥生成规则,得到所述密钥标识对应的私钥,根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子,并将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子。

其中,客户端随机生成第一私钥因子dx,且dx∈[1,n-1]。然后客户端将预申请密钥的密钥标识以及所述第一私钥因子发送至密钥中心,以便所述密钥中心根据密钥生成规则,得到所述密钥标识对应的私钥,根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子,并将所述第二私钥因子发送至服务器端,以便所述服务器端加密存储所述第二私钥因子,从而实现了将密钥标识对应的私钥分为第一私钥因子与第二私钥因子,并分别加密存储于客户端和服务器端,实现了私钥的分散保护。

其中,客户端本地加密保存所述第一私钥因子。其中加密方式可以选择口令加密。

另外,客户端在接收到密钥中心发送的所述密钥标识对应的公钥后,客户端保存所述公钥。

相应的,图3是本发明实施例提供的一种基于SM2算法的私钥处理方法的流程示意图。如图3所示,所述方法应用于服务器端,所述方法包括如下步骤:

步骤301,接收密钥中心发送的第二私钥因子,所述第二私钥因子与密钥标识对应的私钥以及客户端保存的第一私钥因子相关;

步骤302,加密存储所述第二私钥因子。

其中,所述第二私钥因子与密钥标识对应的私钥以及客户端保存的第一私钥因子相关,如其中,d为密钥标识对应的私钥,dx为所述第一私钥因子,dy为所述第二私钥因子。

另外,加密存储所述第二私钥因子的方式可以选择口令加密。

可见,通过本发明实施例,将预申请密钥的密钥标识对应的私钥分散存储于客户端与服务器端,实现了私钥的分散保护。

为了便于理解本发明实施例,图4提供了一种基于SM2算法的私钥处理方法的流程示意图,包括如下步骤:

步骤401,客户端随机生成第一私钥因子;

步骤402,向密钥中心发送密钥申请消息,所述密钥申请消息中包括所述客户端的密钥标识和所述第一私钥因子;

步骤403,密钥中心接收客户端的密钥申请消息;

步骤404,根据密钥生成规则,得到所述密钥标识对应的公钥和私钥;

步骤405,根据所述密钥标识对应的私钥和所述第一私钥因子,得到第二私钥因子;

步骤406,将所述第二私钥因子发送至服务器端;

步骤407,服务器端加密存储所述第二私钥因子;

步骤408,密钥中心将公钥发送至客户端;

步骤409,客户端保存公钥,并加密存储所述第一私钥因子。

通过本发明实施例,将私钥分散保存于客户端与服务器端,对于极端情况,当二者中的私钥因子均丢失时,由于密钥中心还保存有密钥标识对应的私钥,因此,只要客户端再随机生成一个新私钥因子,则密钥中心就可以根据新私钥因子与私钥生成另一个新私钥因子并发送至服务器端,从而恢复私钥因子,不惧于私钥因子的丢失。

对于私钥的应用,一般为数字签名和加密技术。对于数字签名,是通过私钥签名,公钥验证。对于加密技术,是通过公钥加密,私钥解密。所以,作为私钥的应用,本发明实施例中将要详细描述分散保护后的私钥如何实现数字签名以及数据解密过程。

首先,图5是本发明实施例提供的客户端与服务器端之间利用第一私钥因子与第二私钥因子的签名流程示意图。如图5所示,包括如下步骤:

步骤501,获取待签名数据M;

步骤502,根据SM2算法以及所述待签名数据,得到所述待签名数据对应的数字摘要,其中,根据得到所述待签名数据M的拼接值其中,ZA为所述客户端的可辨别标识、部分椭圆曲线系统参数和所述客户端的公钥的杂凑值,根据得到所述待签名数据对应的数字摘要e;

步骤503,客户端随机生成第一随机数b1和第二随机数k1,其中,b1∈[1,n-1],k1∈[1,n-1];

步骤504,根据所述第一随机数得到第一中间变量,如根据W1=b1·G,得到第一中间变量W1,其中,·表示椭圆曲线E的倍点运算;

然后,将所述第二随机数、第一中间变量与所述数字摘要发送至所述服务器端,以便所述服务器端根据所述第二随机数、第一中间变量、所述数字摘要以及第二私钥因子,得到签名变量、第一签名分量和第二签名分量,并将所述签名变量、第一签名分量和第二签名分量返回至所述客户端,具体如步骤505-512:

步骤505,将所述第二随机数、第一中间变量与所述数字摘要发送至所述服务器端;

步骤506,服务器端接收所述第二随机数、第一中间变量与所述数字摘要,并随机生成第三随机数b2和第四随机数k2;

步骤507,根据所述第二随机数、第一中间变量、第三随机数和第四随机数得到椭圆曲线点,如根据(Wx,Wy)=k2·W1+b2×k1·G,得到椭圆曲线点(Wx,Wy);

然后,根据所述椭圆曲线点和数字摘要,得到签名变量,具体如步骤508-510:

步骤508,根据r=(e+Wx)modn,得到待定签名变量r,其中,Wx为所述椭圆曲线点的x坐标值;

步骤509,判断所述待定签名变量是否等于零,是则返回步骤506,重新随机生成第三随机数和第四随机数,否则,执行步骤510;

步骤510,将所述待定签名变量确定为签名变量;

步骤511,根据所述第二私钥因子、签名变量、第二随机数、第三随机数和第四随机数,计算得到第一签名分量和第二签名分量,如根据s1=(d2×k2)modn,得到所述第一签名分量s1,根据s2=[d2×(r+k1×b2)]modn,得到所述第二签名分量s2,其中,dy为所述第二私钥因子,dy为所述第二私钥因子,r为签名变量;

步骤512,将所述签名变量、第一签名分量和第二签名分量返回至所述客户端;

步骤513,客户端接收所述签名变量、第一签名分量和第二签名分量;

然后,根据所述签名变量、第一签名分量、第二签名分量以及第一私钥因子,得到所述待签名数据对应的签名值,具体如步骤514-516:

步骤514,根据s=(d1×b1×s1+d1×s2-r)modn,计算得到所述待签名数据对应的签名值s;

步骤515,判断签名值是否不等于0且不等于n-r,是则得到所述待签名数据对应的签名值,执行步骤516,否则返回步骤506通知服务器端重新随机生成第三随机数和第四随机数;

步骤516,输出完整签名结果(r,s)。

另外,图6是本发明实施例提供的客户端与服务器端之间利用第一私钥因子与第二私钥因子的解密流程示意图。如图6所示,包括如下步骤:

步骤601,客户端获取待解密的密文信息,其中SM2密文信息的结构为C=C1||C2||C3;

然后,提取所述密文信息中的数字信封、密文和校验值,并将所述数字信封发送至所述服务器端,以便所述服务器端根据所述数字信封和所述第二私钥因子得到第二中间变量,如步骤602-608:

步骤602,提取所述密文信息中的数字信封C1、密文C2和校验值C3;

步骤603,根据S=[h]·C1,计算得到椭圆曲线点S,其中,h为椭圆曲线系统参数,·表示椭圆曲线E的倍点运算;

步骤604,判断所述椭圆曲线点S是否为零,是则报错并退出,否则执行步骤605;

步骤605,将所述数字信封发送至所述服务器端;

步骤606,服务器端接收客户端发送的待解密的密文信息中的数字信封;

步骤607,根据W2=dy·C1,计算得到所述第二中间变量W2;

步骤608,将所述第二中间变量返回至所述客户端;

步骤609,客户端接收所述服务器端发送的第二中间变量;

步骤610,根据所述第一私钥因子、第二中间变量和数字信封,得到第三中间变量,如根据W3=dx·W2-C1,计算得到所述第三中间变量W3;

步骤611,根据所述第三中间变量,得到所述待解密的密文信息对应的会话密钥,如,根据t=KDF(x3||y3,klen),得到所述待解密的密文信息对应的会话密钥t,x3与y3为所述第三中间变量W3的坐标分量,klen为所述待解密的密文信息对应的明文的比特长度;

步骤612,判断会话密钥是否为零,是则报错并退出,否则执行步骤613;

然后,根据所述密文、会话密钥、第三中间变量以及校验值,确定所述待解密的密文信息对应的明文,具体包括步骤613-617:

步骤613,根据计算得到待确定的明文M';

步骤614,根据u=Hash(x3||M'||y3),计算得到校验码u;

步骤615,判断校验码u与校验值C3是否相等,若相等,执行步骤616,否则执行步骤617;

步骤616,将所述待确定的明文作为所述待解密的密文信息对应的明文输出;

步骤617,提示解密失败。

通过本发明实施例,由密钥中心产生密钥对,并将第一私钥因子与第二私钥因子分别存放于客户端与服务器端,实现了对私钥的分散保护,同时协同完成标准的数字签名与基于数字信封技术的数据加密,可确保私钥在存储与使用过程中在任何一方不出现完整的私钥,实现虚拟化技术体系下私钥的整个生命周期内的安全保护。

相应的,本发明实施例还提供一种密钥中心,所述密钥中心用于执行上述实施例所述的应用于密钥中心的基于SM2算法的私钥处理方法。

相应的,本发明实施例还提供一种客户端,所述客户端用于执行上述实施例所述的应用于客户端的基于SM2算法的私钥处理方法。

相应的,本发明实施例还提供一种服务器端,所述服务器端用于执行上述实施例所述的应用于服务器端的基于SM2算法的私钥处理方法。

相应的,本发明实施例还提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如上述实施例所述的应用于密钥中心的基于SM2算法的私钥处理方法,和/或如上述实施例所述的应用于客户端的基于SM2算法的私钥处理方法,和/或如上述实施例所述的应用于服务器端的基于SM2算法的私钥处理方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

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

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

本文发布于:2024-09-24 08:24:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/87192.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议