基于sm2密钥交换协议的密钥协商方法及装置的制作方法

文档序号:7994376阅读:606来源:国知局
专利名称:基于sm2密钥交换协议的密钥协商方法及装置的制作方法
技术领域
本发明涉及信息技术领域,特别涉及一种基于SM2密钥交换协议的密钥协商方法
及装置。
背景技术
2010年12月中国国家密码管理局将SM2、SM3密码算法公开,标志着SM2、SM3密码算法进入了商用化阶段。SM2密钥交换协议作为SM2密码算法的一个组成部分,其在密钥管理和密钥协商功能领域得到很好的应用。在SM2密钥交换协议工程实现过程中,W参数作为密钥交换协议内的一个重要参数,其参数值的生成运算效率成为整个密钥交换协议实现效率的决定性因素。基于SM2密钥交换协议的规定,现有的密钥协商流程如下假设用户A为密钥协商发起方,而用户B为密钥协商响应方,用户A和用户B协商获得的密钥数据的长度为klen比特,以及用户A和用户B双方使用相同的椭圆曲线方程, 其中,该椭圆曲线方程类型可选择素域方程y2 = x3+ax+b,也可以选择二元扩域方程y2+xy =x3+ax2+b ο在SM2密钥交换协议内规定使用的密钥派生函数记为KDF(Z,klen),其作用是从一个秘密比特串中派生出密钥数据,其中,ζ为输入的秘密比特串,整数klen表示要获得的密钥数据的比特长度,要求该值小于032-1)ν,将长度为klen的密钥数据比特串记为K。在密钥数据生成的过程中,密钥派生函数需要调用密码杂凑函数(例如,SM3密码杂凑算法), 通常将密码杂凑函数记为HvO,密码杂凑函数的输出是长度为ν比特的杂凑值。下面介绍密钥派生函数运算步骤如下(1)、初始化一个32比特构成的计数器ct = 0x00000001 ;(2)、分别采用i从1到「- /vl的取值循环执行以下步骤a和步骤b,各次的执行结
果分别记为Hai、Ha2......Ha\k,enivy\、Ha、.\kMv],其中,Up^M为生成的最后一个t的
取值的部分或全部a、计算 Hai = hv(Z I I ct) ; | | 为级联运算b、ct++;在计算,Uptwv1时,若klen/v是整数,则令υ「Α/βΛ/ν = 明,若klen/V是非整数,则令^f!「论…为^^編H最左边的(射⑶-(vxL跄Wv」))个比特;⑶、最后,令I= Zfo1 Il Il …Il Hafklenhyi || HaIfklen^ ; κ 便是获得的密钥数据。基于获得的密钥函数,用户A和用户B为了获得相同的密钥,需要进行密钥协商, 具体运算步骤如下记狄=「(「10&( )]/2)]-1。
用户A:Al 采用随机数发生器产生随机数rA e [1,n-1];A2:计算椭圆曲线点I A= [rA]G= (x1 Yl), (Χι,Υι)即是点&的坐标值,G为选取的椭圆曲线参数。A3 将&发送给用户B ;用户B:Bl 采用随机数发生器产生随机数rB e [1,n-1];B2:计算椭圆曲线点&= [rB]G= (x2, y2), (x2, y2)即是点&的坐标值,G为选取的椭圆曲线参数。B3 从&中取出域元素x2,若域元素x2为二元扩域数据,则先要将其数据类型转换为整数,若域元素x2为素域数据,则无需转换,可直接进行后续操作;接着,计算用户B侧
的中间参数g,^ = 2W + (x2 & (2W -1));B4 计算& = (dB + x^-rB)modn ,其中,tB为用户B侧的中间参数,dB为用户
B本地保存的私钥、rB为用户B本地产生的随机数。B5 验证&是否满足椭圆曲线方程(采用素域方式或二元扩域方式可预先与用户A约定,双方采用相同的椭圆曲线方程),若不满足则确定本次密钥协商失败,若满足,则从&中取出域元素xl,若域元素Xl为二元扩域域数据,则先要将其数据类型转换为整数,
若域元素Xl为素域数据,则无需转换,可直接进行后续操作,计算用户B侧的中间参数¥, ^ = 2w+(x,&(2w-l));B6 计算椭圆曲线点厂=· ] (ΡΑ + [ ] Ra ) = (χν, >V ),其中,h为选取的椭圆
曲线参数,Pa为用户A的公钥,判断V是否为无穷远点(如,xv = 0, yv = 0),若是,则确认用户B密钥协商失败,否则,将域元素xv、yv的数据类型转换为比特串;B7:计算Kb = KDF(xv| IyvI Za ZB,klen) ;KB即为用户B通过密钥协商获得的密钥数据,此时,可默认用户B的密钥协商成功。可选地,在执行B7后,用户B还可以进一步执行B8 B8 将Ra的坐标xl、yl和&的坐标x2、y2的数据类型均转换为比特串,计算& = Hash (0x02 |yv| Hash(xv |ZA| Zb X1My1 X2 |y2)),HashO 可以看作是密码杂凑函数 HvO,&可以看作是运算获得的一杂凑值。B9 将&发送给用户A,若执行了 B8,则还需进一步将&发送给用户A ;用户A A4 从&中取出域元素xl,若域元素xl为二元扩域数据,则先要将其数据类型转换为整数,若域元素xl为素域数据,则无需转换,可直接进行后续操作,计算中间参数;, 〒=2"+(^&(2"-1));A5 计算G = ( 4+^τ4)πιο η ,其中,tA为用户A侧的中间参数,dA为用户A本地保存的私钥、rA为用户A本地产生的随机数。A6 验证&是否满足椭圆曲线方程(与用户B约定),若不满足,则确定本次密钥协商失败;否则,从&中取出域元素x2,若域元素x2为二元扩域域数据,则先要将其数据类型转换为整数,若域元素x2为素域数据,则无需转换,可直接进行后续操作,计算中间参数Α7 计算椭圆曲线点t/ = [h-tA](PB+[^]RB) = (χυ,γυ),若U是无穷远点(如,Xu
=0,= 0),则A协商失败;否则将域元素%、Yu的数据类型转换为比特串;A8:计算Ka = KDFUuI IyuI Za |&,klen),Ka即为用户A通过密钥协商获得的密钥数据,此时,可默认用户A的密钥协商成功;可选地,在执行A8后,若接收到用户B发送的SB,则用户A还可以进一步执行A9 禾P AlO A9 将Ra的坐标xl、yl和&的坐标x2、y2的数据类型均转换为比特串,计算S1 = Hash (0x02 IyuI Hash(xJ |ZA| Zb X1My1 X2 |y2)),HashO 可以看作是密码杂凑函数 HvO,S1可以看作是运算获得的一杂凑值,并检验S1 = Sb是否成立,若成立,则确定用户B 到用户A的密钥确认成功,若不成立则确定从用户B到用户A的密钥确认失败;AlO 计算 \ = Hash(0x03 yj Hash(xJ Za Zb X1 yj X2 |y2)),并将 \ 发送给用户B。用户B :(若接收到用户A发送的SA,则用户B可以继续执行步骤BlO和Bll)BlO 计算 & = Hash(0x03 yv Hash(xv Za Zb X1 yj X2 |y2)),并检验 & = Sa是否成立,若成立,则确定用户A到用户B的密钥确认成功,若不成立则确定从用户A到用户B的密钥确认失败。上述过程便是SM2密钥交换协议描述的密钥协商过程,由此可知,在上述流程中, W参数值运算公式为w =「(「log2(n)l/ 2)1-1 ,其中n为椭圆曲线参数,称为阶n,阶n通常是 160位以上的大整数,如果基于阶η直接求取10 (η)的对数值,然后再进行向上取整运算, 在工程实现上是较为复杂的,也比较耗费计算时间,从而直接降低了密钥协商流程的实现效率,提升了密钥协商流程的实现复杂度。

发明内容
本发明实施例提供一种基于SM2密钥交换协议的密钥协商方法及装置,用以降低密钥协商流程的实现复杂度,提高密钥协商流程的实现效率。本发明实施例提供的具体技术方案如下一种基于SM2密钥交换协议的密钥协商方法,包括确定本次密钥协商所使用的椭圆曲线参数阶η的取值;计算所述阶η小于或等于2Χ时,X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值;基于所述W的取值与协商对端进行密钥协商。一种基于SM2密钥交换协议的密钥协商装置,包括第一控制模块,用于确定本次密钥协商所使用的椭圆曲线参数阶η的取值,并计算所述阶η小于或等于2Χ时,X的最小正整数值,并基于获得的X的最小正整数值获得参数 W的取值;
第二控制模块,用于基于所述W的取值与协商对端进行密钥协商。一种参数生成装置,包括确定单元,用于确定本次密钥协商所使用的椭圆曲线参数阶η的取值;计算单元,用于计算所述阶η小于或等于2Χ时,X的最小正整数值,并基于获得的 X的最小正整数值获得参数W的取值。本发明实施例中,协商双方均根据令不等式η < 2Χ成立的X取值中的最小正整数值,来计算参数W,并根据该参数W与协商对端进行基于SM2密钥交换协议的密钥协商。相较于采用先计算log2(n)对数值再向上取整的方式计算参数W的方法,有效地减少了计算量,并且降低了算法的实现复杂度,从而在很大程度上提高了基于SM2密钥交换协议的密钥协商流程的实现效率,进而优化了 SM2密钥交换协议的工程化实现。


图IA为本发明实施例中密钥协商装置功能结构示意图;图IB为本发明实施例中参数W生成装置功能结构示意图;图2为本发明实施例中进行密钥协商的流程图;图3为本发明实施例中生成参数W的第一种方法流程图;图4为本发明实施例中生成参数W的第二种方法流程图。
具体实施例方式在基于SM2密钥交换协议的密钥协商过程中,为了降低密钥协商流程的执行复杂度,提高密钥协商流程的实现效率,本发明实施例中,进行密钥协商的双方不再采用 「log2( )l来计算参数W,而是求取满足η < 2Χ中X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值(例如,将X的最小正整数值替代的运算结果代入公式 W = [([Iog2 ( )1 / 2” -1中计算W的取值),然后,再基于采用这种方式计算出的W值与对端进行密钥协商。下面仍以用户A和用户B为例,结合附图对本发明优选的实施方式进行详细说明。参阅图IA所示,本发明实施例中,基于SM2密钥交换协议的密钥协商双方中,任意一方使用的密钥协商装置(可以是用户Α,也可以是用户B)包括第一控制模块10和第二控制模块11,其中,第一控制模块10,用于确定本次密钥协商所使用的椭圆曲线参数阶η的取值,并计算阶η小于或等于2Χ时,X的最小正整数值,并基于获得的X的最小正整数值获得参数W 的取值;第二控制模块11,用于基于上述参数W的取值与协商对端进行密钥协商。如图IA所示,第二控制模块11内部又可细分为若干以软件形式实现的功能单元和以硬件形式实现的功能单元,这些功能单元的作用将在后续实施例中进行详细介绍,另一方面,图IA所示的第二控制模块11内部的功能单元的划分方式仅为一种举例,实现应用中可以根据具体的应用环境而另行规划,在此不再赘述。另一方面,实际应用中,第一控制模块10可以是密钥协商装置中设置的逻辑模块,也可以是具有独立运行功能的子装置,参阅图IB所示,本发明实施例中,第一控制模块10包括确定单元100和计算单元101,其中,确定单元100,用于确定本次密钥协商所使用的椭圆曲线参数阶η的取值;计算单元101,用于计算阶η小于或等于2Χ时,X的最小正整数值,并基于获得的 X的最小正整数值获得参数W的取值。基于上述技术方案,参阅图2所示,本发明实施例中,SM2密钥协商双方中的任意一方(可以是用户Α,也可以是用户B)所执行的具体流程如下步骤200 确定本次密钥协商所使用的椭圆曲线参数阶η的取值。通常阶η的取值会预先设置,用户A和用户B在SM2密钥协商流程的启动阶段,会约定采用的椭圆曲线的方程,以及向对端发送自身采用的公钥,即Pa和IV步骤210 计算确定的阶η小于或等于2的X次方时,X的最小正整数值,即确定令不等式η < 2Χ成立的X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值。本实施例中,在确定令不等式η < 2Χ成立的X的最小正整数值时,执行的具体操作如下参阅图3和图4所示,密钥协商装置需要先确定阶η的有效比特数m,即从高位第一个非0比特位算起,阶η包含的比特总数目;然后,将阶η的取值与2"进行大小比较,即判断η > 21"-1 ?若是,则直接将m的当前取值作为X的最小正整数值;否则,采用设定步长值(如,步长值为1)对m逐次进行减小,每减少一次,判断一次η > 21"-1 ?直到该不等式成立为止,并将m减少后的最后取值作为X的最小正整数值。本实施例中,在获得X的最小正整数值后,在基于X的最小正整数值计算参数W的取值时,可以采用多种方式例如参阅图3所示,可以先判断最后获得的m的奇偶性(即X的最小正整数取值的奇偶性),若m为奇数,则将m除以第一预设参数并进行向下取整后的结果作为参数W的取值,如,采用公式w = L /2」计算参数W的取值,其中丄」为向下取整操作,m为X的最小正整数;若m为偶数,则将m除以第一预设参数并进行向下取整后再减去第二预设参数的结果作为参数W的取值,如,采用公式w = ^/2」—1计算参数W的取值,其中,2为第一预设参数, 1为第二预设参数。又例如,参阅图4所示,可以先判断最后获得的m的奇偶性(即X的最小正整数取值的奇偶性),若m为奇数,则将m右移设定位数后的结果作为参数W的取值,如,采用公式 w = m>> 1计算参数W的取值,其中,>>为向右移位操作,1为右移的设定位数,m >> 1 即表示将m的当前取值的最低位(二元扩域形式)删除,再将最高位补零;若m为偶数,则将m右移设定位数后再减去第三预设参数的结果作为参数W的取值,如,采用公式w = (m >> 1)"1计算参数W的取值,其中,第一个1为右移设定位数,第二个1为第三预设参数。步骤220 基于获得的参数W的取值与协商对端进行密钥协商。参阅图2所示,实现SM2密钥交换协议的密钥协商装置即可作为发起方用户A,也可作为响应方用户B,其中,第一控制模块10即是计算参数W的运算模块,密钥协商装置通过第一控制模块10获得参数W后,与对端进行密钥协商的过程如下在SM2密钥交换协议流程启动后,用户发起方A和用户响应方B通过各自使用的密钥协商装置内设置的第一控制模块10分别获得相应的参数W,接着,用户A通过密钥协商装置内的第二控制模块11计算随机数和椭圆曲线点,其中,第二控制模块11可以通过硬件方式实现,参阅图1所示,用户A可以通过第二控制模块11内的随机数发生单元生成随机数rAe [l,n-l],而ECC运算单元可以基于生成的随机数产生椭圆曲线点I A= [rA]G= (Xl,yi),同时,第二控制模块11将本密钥协商装置中密钥存储子模块内保存的参与本次密钥协商所用到的私钥dA相对应的公钥Pa取出,并将公钥Pa 通过本地以软件形式实现的通信接口将椭圆曲线点&和公钥Pa发送给用户B ;用户B使用的密钥协商装置B从用户A接收的信息中主要包括对方公钥Pa、对方椭圆曲线点IV对方用户信息4,同时获取本地用户信息4、椭圆曲线余因子参数h、协商密钥预期长度klen ;用户B采用本地第二控制模块11计算随机数和椭圆曲线点,其中,第二控制模块 11可以通过硬件方式实现,如,用户B可以通过第二控制模块11内的随机数发生单元生成随机数rB e [1,n-1],接着,通过第二控制模块11内的ECC运算单元可以基于生成的随机数产生椭圆曲线点[rB]G= (x2,y2),同时,第二控制模块11将本密钥协商装置中密钥存储单元内保存的参与本次密钥协商所用到的私_dB相对应的公钥取出,并通过本地以软件形式实现的通信接口将椭圆曲线点&和公钥I3b发送给用户A ;接着,用户B可以采用本地第二控制模块11内以软件形式实现的数据类型转换单元将获得的域元素X1和&的数据类型转化成整数数据类型,然后,调用第二控制单元11内以软件形式实现的I参数运算单元,基于已获得的参数W,采用公式7 = 2W+(χ &C2w-;i) 分别计算出参数i和g,其中,X1为椭圆曲线点&的横坐标,X2为椭圆曲线点&横坐标,此处便使用到了采用本发明实施例提供的方案生成的参数W。接着,用户B通过密钥协商装置将对端公钥Pa、对端椭圆曲线点I A、本地采用的椭圆曲线余因子参数h、参数f、参数g传输至第二控制模块11内的硬件实现部分,并调用其
中的大整数运算单元完成G = +iTdmod 运算,其中私钥dB是从第二控制模块Ii 中以硬件形式实现的密钥存储单元中读取出的,相关运算主要包括,先采用大整数模乘运算计算出/ = (。Α)ηκχ1 ,再采用大整数模加运算计算出、=(dB+l)modn ;用户B继续调用上述大整数运算单元完成f = [h · tB]运算,相关运算主要包括大整数乘运算。然后,用户B采用第二控制模块11内以硬件形式实现的ECC运算单元完成&是否
满足椭圆曲线方程的验证,再完成「= /(尺+[^]化)=(而,凡)运算,相关运算主要包括通过ECC点乘运算计算出s = ,通过ECC点加运算计算出g = PA+s,然后再次通过ECC点乘运算计算出V = f · g = (xv, yv)。用户B通过密钥协商装置中的第二控制模块11将&是否满足椭圆曲线方程的验证结果及椭圆曲线点V= (xv, yv)传输至软件实现部分,如果&不满足椭圆曲线方程,或, V = (xv,yv)为椭圆曲线无穷远点,则结束运算;否则用户B通过第二控制模块11中以软件形式实现的数据类型转换单元将椭圆曲线点V= (xv, yv)中横坐标xv和纵坐标”的数据类型转换为比特串数据类型,用户B通过第二控制模块11中以软件形式实现的密钥派生单元计算用户B本地的协商密钥Kb = KDF(xv| |yv| Za | ZB,klen),至此,用户B可以默认密钥协商成功。当然,可选的,用户B还可以进一步通过第二控制模块11中通过软件形式实现的数据类型转换单元将椭圆曲线点K= (Xl,yi)横坐标X1、纵坐Sy1和椭圆曲线点U2, I2)横坐标&、纵坐标72的数据类型转换为比特串数据类型,然后,通过第二控制模块11中以软件形式实现的密码杂凑计算单元计算出如下校验信息Sb = Hash (0x02 yv Hash(xv Za Zb X1 yj X2 y2))S2 = Hash (0x03 yv Hash(xv Za Zb X1 yj X2 y2))用户B将校验信息&通过以软件形式的传输接口传输到用户A。发起方A所属密钥协商装置接收用户B发送的信息,获得用户B的公钥IV用户B 椭圆曲线点&、用户B的用户信息Zb、以及获取本地用户信息Za、椭圆曲线余因子参数h、协商密钥预期长度klen,而后采用与用户B相同的流程计算出的Ka = KDF (xj yj Za Zb, klen)至此,发起方A也可以默认密钥协商成功。进一步地,若用户A接收到用户B发送的校验信息&,则也需要采用相同流程计算出以下验证信息S1 = Hash(0x02 yj Hash(xJ |ZA| Zb X1 yj X2 y2))Sa = Hash(0x03 yj Hash(xJ |ZA| Zb X1 yj X2 y2))然后校验S1是否与&相等,如果相等,则确认密钥协商成功,若不相等,则确认密钥协商失败,并将Sa发送给用户B ;用户B验证Sa是否等于S2,如果相等,则确认密钥协商成功,如果不相等,则确认密钥协商失败。至此,SM2密钥交换协议中制定的SM2密钥协商流程完全结束。综上所述,本发明实施例中,协商双方均根据令不等式η < 2X成立的X取值中的最小正整数值,来计算参数W,并根据该参数W与协商对端进行基于SM2密钥交换协议的密钥协商。其中,参数W的计算过程,可以在实际协商流程启动之前执行,或者,在实际协商流程启动之后执行,均可实现相同效果。相较于采用先计算log2(n)对数值再向上取整的方式计算参数W的方法,有效地减少了计算量,并且降低了算法的实现复杂度,从而在很大程度上提高了基于SM2密钥交换协议的密钥协商流程的实现效率,进而优化了 SM2密钥交换协议的工程化实现。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种基于SM2密钥交换协议的密钥协商方法,其特征在于,包括确定本次密钥协商所使用的椭圆曲线参数阶η的取值;计算所述阶η小于或等于2Χ时,X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值;基于所述参数W的取值与协商对端进行密钥协商。
2.如权利要求1所述的方法,其特征在于,计算所述阶η小于或等于2Χ时,X的最小正整数值,包括获取所述阶η的有效比特数m ;判断阶η的取值是否大于2"1-1的取值,若是,则直接将m的当前取值作为所述X的最小正整数值;否则,采用设定步长值对m逐次进行减小,每减少一次,将阶η的取值与2"1-1的取值进行一次比较,直到前者大于后者为止,并将m的最后取值作为所述X的最小正整数值。
3.如权利要求2所述的方法,其特征在于,基于获得的X的最小正整数值获得参数W的取值,包括判断X的最小正整数值为奇数还是偶数,若为奇数,则将X的最小正整数值除以第一预设参数并进行向下取整后的结果作为参数W的取值;若为偶数,则将X的最小正整数值除以第一预设参数并进行向下取整后再减去第二预设参数。
4.如权利要求2所述的方法,其特征在于,基于获得的X的最小正整数值获得参数W的取值,包括判断X的最小正整数值为奇数还是偶数,若为奇数,则将X的最小正整数值右移设定位数后的结果作为参数W的取值;若为偶数,则将X的最小正整数值右移设定位数后再减去第三预设参数的结果作为参数W的取值。
5.如权利要求1-4任一项所述的方法,其特征在于,基于所述W的取值与协商对端进行密钥协商,包括接收协商对端发送的对端公钥pA、对端椭圆曲线点&、对端用户信息zA,以及获取本地用户信息4、本地私钥dB、本地生成的随机数rB、本地生成的椭圆曲线点&、本地椭圆曲线余因子参数h和协商密钥预期长度klen ;基于已获得的参数W,分别根据椭圆曲线点&的横坐标X1和椭圆曲线点&的横坐标 &,采用SM2密钥交换协议规定的方式生成相应的参数;和根据本地椭圆曲线余因子参数h,本地私钥dB,所述参数;和i、对端公钥Pa、对端椭圆曲线点I A,本地生成随机数rB,采用SM2密钥交换协议规定的方式生成椭圆曲线点V,其坐标值为(χν,yv);根据椭圆曲线点V的横坐标χν和纵坐标yv,对端用户信息ZA,本地用户信息ZB,以及协商密钥预期长度klen,采用SM2密钥交换协议规定的方式生成本地协商密钥KB。
6.如权利要求5的方法,其特征在于,生成本地协商密钥Kb后,包括默认与协商对端的密钥协商成功;或者,根据所述椭圆曲线点的横坐标χν和纵坐标yv,椭圆曲线点&的横坐标X1和纵坐标y1; 椭圆曲线点&的横坐标&和纵坐标y2,对端用户信息ZA,本地用户信息ZB,采用SM2密钥交换协议规定的方式计算验证信息&和验证信息&,并将验证信息&发送至协商对端,令协商对端接收到验证信息&后,采用相同方式生成验证信息\和验证信息S1,并在确认&和 S1相等时,确定本地至协商对端的密钥协商成功,以及接收协商对端发送的验证信息\,并在确认\和&相等时,确定协商对端至本地的密钥协商成功。
7.一种基于SM2密钥交换协议的密钥协商的装置,其特征在于,包括第一控制模块,用于确定本次密钥协商所使用的椭圆曲线参数阶η的取值,并计算所述阶η小于或等于2Χ时,X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值;第二控制模块,用于基于所述参数W的取值与协商对端进行密钥协商。
8.如权利要求7所述的装置,其特征在于,所述第一控制模块计算所述阶η小于或等于 2Χ时,X的最小正整数值时,获取所述阶η的有效比特数m,判断阶η的取值是否大于2"1.1的取值,若是,则直接将m的当前取值作为所述X的最小正整数值;否则,采用设定步长值对m 逐次进行减小,每减少一次,将阶η的取值与2"1-1的取值进行一次比较,直到前者大于后者为止,并将m的最后取值作为所述X的最小正整数值。
9.如权利要求8所述的装置,其特征在于,所述第一控制模块基于获得的X的最小正整数值获得参数W的取值时,判断X的最小正整数值为奇数还是偶数,若为奇数,则将X的最小正整数值除以第一预设参数并进行向下取整后的结果作为参数W的取值;若为偶数,则将X的最小正整数值除以第一预设参数并进行向下取整后再减去第二预设参数后的结果作为参数W的取值。
10.如权利要求8所述的装置,其特征在于,所述第一控制模块基于获得的X的最小正整数值获得参数W的取值时,判断X的最小正整数值为奇数还是偶数,若为奇数,则将X的最小正整数值右移设定位数后的结果作为参数W的取值;若为偶数,则将X的最小正整数值右移设定位数后再减去第三预设参数的结果作为参数W的取值。
11.如权利要求8-10任一项所述的装置,其特征在于,所述第二控制模块基于所述W的取值与协商对端进行密钥协商时,执行以下操作接收协商对端发送的对端公钥PA、对端椭圆曲线点I、对端用户信息T^,以及获取本地用户信息4、本地私钥dB、本地生成的随机数rB、本地生成的椭圆曲线点&、本地椭圆曲线余因子参数h和协商密钥预期长度klen ;基于已获得的参数W,分别根据椭圆曲线点&的横坐标X1和椭圆曲线点&的横坐标 &,采用SM2密钥交换协议规定的方式生成相应的参数;和根据本地椭圆曲线余因子参数h,本地私钥dB,所述参数;和i、对端公钥Pa、对端椭圆曲线点I A,本地生成的随机数rB,采用SM2密钥交换协议规定的方式生成椭圆曲线点V,其坐标值为(xv,yv);根据椭圆曲线点V的横坐标χν和纵坐标yv,对端用户信息ZA,本地用户信息ZB,以及协商密钥预期长度klen,采用SM2密钥交换协议规定的方式生成本地协商密钥KB。
12.如权利要求11的装置,其特征在于,所述第一控制模块生成本地协商密钥Kb后,默认与协商对端的密钥协商成功;或者,根据所述椭圆曲线点的横坐标xv和纵坐标yv,椭圆曲线点&的横坐标X1和纵坐标yi,椭圆曲线点&的横坐标&和纵坐标y2,对端用户信息ZA, 本地用户信息&,采用SM2密钥交换协议规定的方式计算验证信息&和验证信息&,并将验证信息&发送至协商对端,令协商对端接收到验证信息&后,采用相同方式生成验证信息\和验证信息S1,并在确认&和S1相等时,确定本地至协商对端的密钥协商成功,以及接收协商对端发送的验证信息SA,并在确认Sa和&相等时,确定协商对端至本地的密钥协商成功。
13.一种参数生成装置,其特征在于,包括确定单元,用于确定本次密钥协商所使用的椭圆曲线参数阶η的取值;计算单元,用于计算所述阶η小于或等于2Χ时,X的最小正整数值,并基于获得的X的最小正整数值获得参数W的取值。
14.如权利要求13所述的装置,其特征在于,所述计算单元计算所述阶η小于或等于2Χ 时,X的最小正整数值时,获取所述阶η的有效比特数m,并判断阶η的取值是否大于2"1.1的取值,若是,则直接将m的当前取值作为所述X的最小正整数值;否则,采用设定步长值对m 逐次进行减小,每减少一次,将阶η的取值与2"1-1的取值进行一次比较,直到前者大于后者为止,并将m的最后取值作为所述X的最小正整数值。
15.如权利要求13所述的装置,其特征在于,所述计算单元基于获得的X的最小正整数值获得参数W的取值时,判断X的最小正整数值为奇数还是偶数,若为奇数,则将X的最小正整数值除以第一预设参数并进行向下取整后的结果作为参数W的取值;若为偶数,则将 X的最小正整数值除以第一预设参数并进行向下取整后再减去第二预设参数的结果作为参数W的取值。
16.如权利要求13所述的装置,其特征在于,所述计算单元基于获得的X的最小正整数值获得参数W的取值时,判断X的最小正整数值为奇数还是偶数,若为奇数,则将X的最小正整数值右移设定位数后的结果作为参数W的取值;若为偶数,则将X的最小正整数值右移设定位数后再减去第三预设参数的结果作为W的取值。
全文摘要
本发明涉及信息技术领域,公开了一种基于SM2密钥交换协议的密钥协商方法及装置。该方法为协商双方均根据令不等式n≤2x成立的X取值中的最小正整数值,来计算参数W,并根据该参数W与协商对端进行密钥协商。相较于采用先计算log2(n)对数值再向上取整的方式计算参数W的方法,有效地减少了计算量,并且降低了算法的实现复杂度,从而在很大程度上提高了基于SM2密钥交换协议的密钥协商流程的实现效率,进而优化了SM2密钥交换协议的工程化实现。
文档编号H04L9/08GK102412971SQ20111039056
公开日2012年4月11日 申请日期2011年11月30日 优先权日2011年11月30日
发明者李志勇, 颜湘 申请人:西安西电捷通无线网络通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1