一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种国密SM9算法私钥分发方法、用户终端和密钥生成中心与流程

2021-10-29 21:43:00 来源:中国专利 TAG:分发 算法 密钥 终端 生成

一种国密sm9算法私钥分发方法、用户终端和密钥生成中心
技术领域
1.本发明属于信息安全技术领域,具体涉及一种国密sm9算法私钥分发方法,还涉及一种用于国密sm9算法私钥分发的用户终端和密钥生成中心。


背景技术:

2.随着范在电力物联网建设的推进,物联网终端设备与日俱增,终端数目呈现指数级增长。为了保证物联网数据传输过程中的机密性和完整性,普遍采用非对称加密算法对终端和场站进行相互身份认证和工作密钥协商,但是传统pki系统需要进行繁琐的公钥证书签发管理和证书交换操作,面对如此海量基数的物联网终端,显得十分臃肿和低效。因此在范在物联网的建设中需要一种轻量级的非对称机制来保证通信安全。
3.国密sm9算法是一种基于身份标识的非对称算法,身份即公钥,省去了ca签发证书和通信双方交换证书的步骤,完全满足物联网轻量化应用的要求。但是sm9算法自2016年发布以来只公布了该算法本身的具体计算步骤,包括密钥生成中心(kgc)参数生成方法、加密算法、签名算法、密钥交换算法、密钥封装算法等,终端在使用sm9算法之前必须向kgc申请自己的签名私钥或加密私钥,算法规范并未公布一套通用的私钥安全申请分发流程。私钥分发安全对非对称算法的重要性不言而喻,私钥传输过程中的泄露将导致密码系统的完全失效。本发明提出一套sm9算法在线私钥分发协议,以解决用户在向kgc申请私钥过程中的安全认证和私钥安全传输问题。


技术实现要素:

4.本发明的目的在于克服现有技术中的不足,提供了一种国密sm9算法私钥分发方法,解决用户私钥通过非可信网络通道分发过程中面临的泄漏风险。
5.为解决上述技术问题,本发明提供了如下技术方案。
6.第一方面,本发明提供了一种国密sm9算法私钥分发方法,执行于用户终端,包括以下过程:
7.用户侧向密钥生成中心kgc注册并设置用户密码,生成对应的用户参数;
8.用户侧基于随机数和用户参数计算得到用于私钥申请的校验参数,并发送校验参数给kgc;
9.用户侧接收kgc发送的私钥参数;
10.用户侧验证私钥参数,若验证正确则基于私钥参数计算得到私钥。
11.可选地,所述私钥包括签名私钥和加密私钥。
12.可选地,所述签名私钥的分发过程为:
13.所述用户侧向密钥生成中心kgc注册并设置用户密码,生成对应的用户参数,包括:
14.用户侧向密钥生成中心kgc注册后得到用户标识my_id,用户密码my_password,用户标识和用户密码的sm3哈希值a、b的计算公式为:
15.a=sm3(my_id)
16.b=sm3(my_password)
17.对于签名私钥,用户参数qs、ts为:
18.qs=[a]p1,p1为sm9算法群g1的生成元
[0019]
ts=[b]p2,p2为sm9算法群g2的生成元
[0020]
所述用户侧基于随机数和用户参数计算用于私钥申请的校验参数,包括:
[0021]
用户侧生成随机数r;
[0022]
对于签名私钥,校验参数qs'、ts'为:
[0023]
qs'=[r]qs
[0024]
ts'=[r
‑1]ts
[0025]
所述用户侧验证私钥参数,包括:
[0026]
对于签名私钥:验证双线性对值e(ss',ps)是否等于e(qs',ppubs),如果等于则验证正确;ppubs为sm9算法系统签名主公钥,ss'为kgc发送的签名私钥参数,参数ps计算公式为:
[0027]
ps=[h1]p2 ppubs,h1=h1(my_id||hid,n),h1为密码函数,my_id为用户id,hid为签名私钥生成函数识别符:0x01,n为群g1、g2的阶;
[0028]
所述基于私钥参数计算得到私钥,包括:
[0029]
用户签名私钥为:dsa=[(r*a)
‑1]ss'。
[0030]
可选地,所述加密私钥的分发过程为:
[0031]
所述用户侧向密钥生成中心kgc注册并设置用户密码,生成对应的用户参数,包括:
[0032]
用户侧向密钥生成中心kgc注册后得到用户标识my_id,用户密码my_password,用户标识和用户密码的sm3哈希值a、b的计算公式为:
[0033]
a=sm3(my_id)
[0034]
b=sm3(my_password)
[0035]
对于加密私钥,用户参数qe、te为:
[0036]
qe=[a]p2,p2为sm9算法群g2的生成元
[0037]
te=[b]p1,p1为sm9算法群g1的生成元
[0038]
所述用户侧基于随机数和用户参数计算用于私钥申请的校验参数,包括:
[0039]
用户侧生成随机数r;
[0040]
对于加密私钥,校验参数qe'、te'为:
[0041]
qe'=[r]qe
[0042]
te'=[r
‑1]te
[0043]
所述用户侧验证私钥参数,包括:
[0044]
对于加密私钥:验证e(pe,se')是否等于e(ppube,qe'),如果等于则验证正确;ppube为sm9算法系统加密主公钥,se'为kgc发送的加密私钥参数,参数pe计算公式为:
[0045]
pe=[h1]p1 ppube,h1=h1(my_id||hid,n),h1为密码函数hid为加密私钥生成函数识别符:0x03,n为群g1、g2的阶;
[0046]
所述基于私钥参数计算得到私钥,包括:
[0047]
用户加密私钥为:de=[(r*a)
‑1]se'。
[0048]
第二方面,本发明提供了一种用于国密sm9算法私钥分发的用户终端,包括:
[0049]
用户注册模块,用于向密钥生成中心kgc注册并设置用户密码,生成对应的用户参数;
[0050]
私钥申请模块,用于基于随机数和用户参数计算得到用于私钥申请的校验参数,并发送校验参数给kgc;
[0051]
私钥接收模块,用于接收kgc发送的私钥参数;
[0052]
私钥计算模块,用于验证私钥参数,若验证正确则基于私钥参数计算得到私钥。
[0053]
第三方面,本发明提供了一种国密sm9算法私钥分发方法,执行于密钥生成中心kgc侧,包括以下过程:
[0054]
kgc侧接收用户侧的注册及设置密码,生成对应的用户参数,并预计算用户参数的双线性对值;
[0055]
kgc侧接收用户侧发送的校验参数;
[0056]
kgc侧基于用户参数验证校验参数是否正确,若验证正确,则发送私钥参数给用户侧。
[0057]
可选地,所述私钥包括签名私钥和加密私钥。
[0058]
可选地,所述签名私钥的分发过程为:
[0059]
所述kgc侧接收用户侧的注册及设置密码,生成对应的用户参数,并预计算用户参数的双线性对值,包括:
[0060]
接收用户侧注册后得到用户标识my_id,用户密码my_password,用户标识和用户密码的sm3哈希值a、b的计算公式为:
[0061]
a=sm3(my_id)
[0062]
b=sm3(my_password)
[0063]
对于签名私钥,用户参数qs、ts为:
[0064]
qs=[a]p1,p1为sm9算法群g1的生成元
[0065]
ts=[b]p2,p2为sm9算法群g2的生成元
[0066]
预计算用户参数的双线性对值e(qs,ts),e为sm9椭圆曲线上的对运算;
[0067]
所述kgc侧基于用户参数验证校验参数是否正确,包括:
[0068]
计算校验参数的双线性对值e(qs',ts')与预计算的e(qs,ts)相比较,如果两者相同则认为验证正确;
[0069]
所述kgc侧发送私钥参数为:ss'=[t2]qs',t2由kgc根据用户标识id和sm9算法系统参数计算得出。
[0070]
可选地,所述加密私钥的分发过程为:
[0071]
所述kgc侧接收用户侧的注册及设置密码,生成对应的用户参数,并预计算用户参数的双线性对值,包括:
[0072]
接收用户侧注册后得到用户标识my_id,用户密码my_password,用户标识和用户密码的sm3哈希值a、b的计算公式为:
[0073]
a=sm3(my_id)
[0074]
b=sm3(my_password)
[0075]
对于加密私钥,用户参数qe、te为:
[0076]
qe=[a]p2,p2为sm9算法群g2的生成元
[0077]
te=[b]p1,p1为sm9算法群g1的生成元
[0078]
预计算用户参数的双线性对值e(te,qe),e为sm9椭圆曲线上的对运算;
[0079]
所述kgc侧基于用户参数验证校验参数是否正确,包括:
[0080]
计算校验参数的双线性对值e(te',qe')并与预计算的e(te,qe)相比较,如果相同则认为验证正确;
[0081]
所述kgc侧发送私钥参数为:se'=[t2]qe',t2由kgc根据用户标识id和sm9算法系统参数计算得出。
[0082]
第四方面,本发明还提供了一种用于国密sm9算法私钥分发的密钥生成中心,包括:
[0083]
接收注册模块,用于接收用户侧的注册及设置密码,生成对应的用户参数,并预计算用户参数的双线性对值;
[0084]
接收参数模块,用于接收用户侧发送的校验参数;
[0085]
私钥参数分发模块,用于kgc侧基于用户参数验证校验参数是否正确,若验证正确,则发送私钥参数给用户侧。
[0086]
与现有技术相比,本发明所达到的有益效果是:
[0087]
1)本发明提出一种在非可信网络环境下安全分发用户sm9算法私钥的方法。基于sm9算法曲线上的对运算,密钥分发双方实现了一种简单的匿名签名方案,用于双方相互身份认证,并保证传输数据的完整性。同时私钥保护基于椭圆曲线离散对数难题,其安全性在数学上可以得到有效保证。
[0088]
2)本发明是一套支持sm9算法签名私钥和加密私钥的分发的方案。由于sm9算法的用户签名私钥和加密私钥产生方法并不完全相同,因此分发过程也需要区别对待,本发明描述的算法步骤针对两者分别提出了各自的计算步骤,满足sm9算法各种应用场景。
附图说明
[0089]
图1为签名私钥分发协议流程图;
[0090]
图2为加密私钥分发协议流程图。
具体实施方式
[0091]
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0092]
实施例1
[0093]
现有技术中已知用户私钥由密钥生成中心kgc生成,私钥由kgc在线发给用户,由于私钥分发途中经过了非可信公共网络,为避免私钥泄漏,本发明在传输过程中基于椭圆曲线离散对数运算,使用私钥因子计算出中间私钥参数,保证只有用户可以从私钥参数中还原私钥,同时双方附加了必要的完整性验证。
[0094]
由于sm9算法的用户签名私钥和加密私钥产生方法并不完全相同,因此私钥分发过程也需要区别对待,本发明描述的方法步骤针对两者分别提出了各自的计算步骤,以满
足sm9算法各种应用场景。
[0095]
本发明的一种国密sm9算法私钥分发方法,包括签名私钥分发和加密私钥分发:
[0096]
(1)签名私钥分发流程如图1所示,具体步骤为:
[0097]
步骤1:用户向密钥生成中心kgc注册并设置用户密码,kgc生成用户参数。
[0098]
本步骤中用户标识定义为my_id,用户密码定义为my_password,密钥生成中心kgc只需存储用户标识和用户密码的sm3哈希值a、b,并计算用户参数qs、ts,预计算用户参数的双线性对值e(qs,ts),e为sm9椭圆曲线上的对运算,相关参数计算公式如下:
[0099]
a)a=sm3(my_id)
[0100]
b)b=sm3(my_password)
[0101]
c)qs=[a]p1,p1为sm9算法群g1的生成元
[0102]
d)ts=[b]p2,p2为sm9算法群g2的生成元
[0103]
步骤2:用户侧生成随机数并基于用户参数计算用于私钥申请的校验参数。
[0104]
用户生成的随机数定义为r,用户需要向kgc进行私钥申请,其他需要计算的校验参数qs'、ts'为:
[0105]
a)qs'=[r]qs,参数qs计算方法与步骤1相同
[0106]
b)ts'=[r
‑1]ts,参数ts计算方法与步骤1相同
[0107]
步骤3:用户发送校验参数(qs',ts')给kgc。
[0108]
步骤4:kgc验证校验参数与用户参数,即用户的完整性验证。
[0109]
kgc计算校验参数的双线性对值e(qs',ts')与预计算的e(qs,ts)相比较,以验证用户合法性,如果两者相同则认为用户是合法的,进行下一步,否则判定用户异常,结束密钥分发过程。
[0110]
验证的目的:一是用户发送的校验参数后面计算要用到,二是验证用户参数,防止冒充获取别人的私钥。
[0111]
步骤5:kgc发送用户私钥参数。
[0112]
根据sm9算法标准,sm9用户签名私钥计算法为:dsa=[t2]p1,t2由kgc根据用户标识id和sm9算法系统参数计算得出,计算步骤请参考sm9算法标准文档,签名私钥分发的目的是把用户私钥dsa安全分发到用户侧,因为传输通道不安全,所以不能直接传输私钥dsa,本发明中是计算签名私钥参数ss'发送给用户,用户可以利用此参数计算出dsa。
[0113]
密钥分发过程中本步骤需要计算ss'=[t2]qs',qs'由步骤3)中用户数据提供。计算完成后kgc发送私钥参数ss'给用户。
[0114]
步骤6:用户验证kgc参数。
[0115]
用户收到ss'后,验证e(ss',ps)是否等于e(qs',ppubs),以确认ss'的完整性,是用户和kgc之间的双向认证。其中qs'由步骤2)计算得来,ppubs为sm9算法系统签名主公钥,为公开的系统参数,参数ps计算方法为:
[0116]
ps=[h1]p2 ppubs,p2为sm9算法群g2的生成元;
[0117]
h1=h1(my_id||hid,n),my_id为用户id,密码函数h1计算方法参照sm9算法标准文档,hid为签名私钥生成函数识别符:0x01,n为群g1、g2的阶。
[0118]
验证通过则认为kgc正常,进行下一步,否则判定kgc存在异常,结束私钥分发过程。
[0119]
步骤7:用户计算签名私钥。
[0120]
用户签名私钥为:dsa=[(r*a)
‑1]ss',r和a由步骤1和2得来。
[0121]
(2)用户加密私钥分发流程如图2所示,具体算法步骤为:
[0122]
步骤1:用户向密钥生成中心kgc注册并设置用户密码。
[0123]
本步骤中用户标识定义为my_id,用户密码定义为my_password,kgc只需存储用户标识和密码的sm3哈希值a、b,并计算用户参数te、qe,预计算双线性对值e(te,qe),e为sm9椭圆曲线上的对运算,相关参数计算方法如下:
[0124]
a)a=sm3(my_id)
[0125]
b)b=sm3(my_password)
[0126]
c)qe=[a]p2,p2为sm9算法群g2的生成元
[0127]
d)te=[b]p1,p1为sm9算法群g1的生成元
[0128]
步骤2:用户生成随机数并计算用于私钥申请的校验参数。
[0129]
用户生成的随机数定义为r,其他需要计算的校验参数有:
[0130]
a)qe'=[r]qe,参数q计算方法与步骤1相同
[0131]
b)te'=[r
‑1]te,参数t计算方法与步骤1相同
[0132]
步骤3:用户发送校验参数(qe',te')给kgc。
[0133]
步骤4:kgc验证用户参数。
[0134]
kgc计算e(te',qe')并与预计算的e(te,qe)相比较,以验证用户合法性,如果相同则认为用户正常,进行下一步,否则判定用户异常,结束密钥分发过程。
[0135]
验证的目的:一是用户发送的参数后面计算要用到,二是验证用户参数,防止冒充获取别人的私钥。
[0136]
步骤5:kgc发送用户私钥参数。
[0137]
根据sm9算法标准,sm9用户加密私钥计算法为:dea=[t2]p2,t2由kgc根据用户id和sm9算法系统参数计算得出,计算步骤请参考sm9算法标准文档,加密私钥分发的目的是把dea安全分发到用户方,因为传输通道不安全,所以不能直接传输私钥,本发明中是计算se'发送给用户,用户可以利用此参数计算出dea。
[0138]
密钥分发过程中本步骤需要计算se'=[t2]qe',qe'由步骤3)中用户数据提供。计算完成后kgc发送se'给用户。
[0139]
步骤6:用户验证kgc参数。
[0140]
用户收到se'后,计算并验证e(pe,se')是否等于e(ppube,qe'),以确认se'的完整性,其中qe'由步骤2)计算得来,ppube为sm9算法系统加密主公钥,为公开的系统参数,参数pe计算方法为:
[0141]
pe=[h1]p1 ppube,p1为sm9算法群g1的生成元
[0142]
h1=h1(my_id||hid,n),my_id为用户id,密码函数h1计算方法参照sm9算法标准文档,hid为加密私钥生成函数识别符:0x03,n为群g1、g2的阶。
[0143]
验证通过则进行下一步,否则判定kgc存在异常,结束私钥分发过程。
[0144]
步骤7:用户计算加密私钥。
[0145]
用户加密私钥为:de=[(r*a)
‑1]se',r和a由步骤1和2得来。
[0146]
本发明对密钥生成中心kgc建设和改造成本小,支持范在物联网海量终端的在线
私钥分发,有效的提高了物联网系统的安全性和可用性。
[0147]
实施例2
[0148]
基于与实施例1方法同样的发明构思,本发明的一种用于国密sm9算法私钥分发的用户终端,包括:
[0149]
用户注册模块,用于向密钥生成中心kgc注册并设置用户密码,生成对应的用户参数;
[0150]
私钥申请模块,用于基于随机数和用户参数计算得到用于私钥申请的校验参数,并发送校验参数给kgc;
[0151]
私钥接收模块,用于接收kgc发送的私钥参数;
[0152]
私钥计算模块,用于验证私钥参数,若验证正确则基于私钥参数计算得到私钥。
[0153]
本发明还提供了一种用于国密sm9算法私钥分发的密钥生成中心,包括:
[0154]
接收注册模块,用于接收用户侧的注册及设置密码,生成对应的用户参数,并预计算用户参数的双线性对值;
[0155]
接收参数模块,用于接收用户侧发送的校验参数;
[0156]
私钥参数分发模块,用于kgc侧基于用户参数验证校验参数是否正确,若验证正确,则发送私钥参数给用户侧。
[0157]
本发明装置中各模块的具体实现方案参见实施例1方法中各步骤处理过程。
[0158]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0159]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0160]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0161]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0162]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜