CN102761411B - p元域SM2椭圆曲线密钥协商*** - Google Patents

p元域SM2椭圆曲线密钥协商*** Download PDF

Info

Publication number
CN102761411B
CN102761411B CN201110107526.6A CN201110107526A CN102761411B CN 102761411 B CN102761411 B CN 102761411B CN 201110107526 A CN201110107526 A CN 201110107526A CN 102761411 B CN102761411 B CN 102761411B
Authority
CN
China
Prior art keywords
point
submodule
module
responder
initiator
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110107526.6A
Other languages
English (en)
Other versions
CN102761411A (zh
Inventor
徐树民
屈善新
刘振
王绍麟
田心
刘建巍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aisino Corp
Original Assignee
Aisino Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aisino Corp filed Critical Aisino Corp
Priority to CN201110107526.6A priority Critical patent/CN102761411B/zh
Publication of CN102761411A publication Critical patent/CN102761411A/zh
Application granted granted Critical
Publication of CN102761411B publication Critical patent/CN102761411B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及一种p元域SM2椭圆曲线密钥协商***。该***包括:由控制本子***内其他模块的工作时序、数据调用、判断密钥协商成功与否的发起方控制中心、生成随机数的发起方随机数生成模块、实现倍点运算的发起方倍点运算模块、实现点加运算的发起方点加模块、具有密钥派生功能的发起方密钥派生模块构成的发起方子***;由控制本子***内其他模块的工作时序、数据调用、判断密钥协商成功与否的响应方控制中心、生成随机数的响应方随机数生成模块、实现倍点运算的响应方倍点运算模块、实现点加运算的响应方点加模块、具有密钥派生功能的响应方密钥派生模块构成的响应方子***。本发明能用硬件实现SM2椭圆曲线公钥密码算法中的密钥交换协议。

Description

p元域SM2椭圆曲线密钥协商***
技术领域
本发明涉及信息安全技术领域,特别是涉及一种p元域SM2椭圆曲线密钥协商***。
背景技术
随着通信技术和信息处理技术的发展,信息在传输过程中的安全性越来越受到关注,需要通过信息处理技术来保证信息在通信过程中不被窃听、篡改和仿造。密码技术能很好的解决这方面的要求。
自从1976年Diffie和Hellmann提出公钥密码体制的概念以来,出现了3类公认的安全有效的公钥密码***,其依赖的数学问题分别为整数因数分解问题(IFP)、离散对数问题(DLP)和椭圆曲线离散对数问题(ECDLP),对应的算法依次是RSA算法、DSA数字签名算法、椭圆曲线算法(ECC)。这三种问题均基于计算复杂性的NPC问题(Non-determini sticPolynomial Complete problem)来保证密钥的安全性的。相对于另外两种算法,ECC的安全性能更高、计算量更小,处理速度更快、在安全性相同的情况下所需要的密钥尺寸更小、对带宽的要求更低,因此,ECC体制具有更为广阔的应用前景。
SM2椭圆曲线公钥密码算法是国家密码管理局发布的一种ECC算法,密钥交换协议是其中的一项重要算法,它适用于商用密码应用中的密钥交换,可满足通信双方经过两次或三次信息传递过程,计算获取一个由双方共同决定的共享的会话密钥。但国家密码管理局已公布的仅仅是SM2椭圆曲线公钥密码算法中密钥交换协议的流程,目前尚未出现任何将其用硬件实现的硬件设备,难以将这种优秀的算法付诸应用。
发明内容
本发明所要解决的技术问题是提供一种p元域SM2椭圆曲线密钥协商***,能用硬件来实现SM2椭圆曲线公钥密码算法中的密钥交换协议。
本发明解决上述技术问题的技术方案如下:一种p元域SM2椭圆曲线密钥协商***,所述椭圆曲线具有基G和余因子h,G的阶为n;发起方杂凑值和响应方杂凑值分别为ZA和ZB;发起方公钥和发起方私钥分别为PA和dA,响应方公钥和响应方私钥分别为PB和dB;发起方和响应方约定的会话密钥的长度为klen;该***包括:发起方子***和响应方子***;所述发起方子***包括:发起方控制中心、发起方随机数生成模块、发起方倍点运算模块、发起方点加模块、发起方密钥派生模块;所述响应方子***包括:响应方控制中心、响应方随机数生成模块、响应方倍点运算模块、响应方点加模块、响应方密钥派生模块;其中,
所述发起方控制中心用于,将rA和G作为一组倍点运算数据发送到所述发起方倍点运算模块;将RA发送到所述响应方控制中心;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;计算x10和rA的标量乘积x10·rA,根据tA=(dA+x10·rA)modn计算得到tA;判断RB是否为所述椭圆曲线上的点;将x20和RB作为一组倍点运算数据发送到所述发起方倍点运算模块;计算h和tA的标量乘积h·tA;将PB和[x20]RB作为一组点加运算数据发送到所述发起方点加模块;将h·tA和(PB+[x20]RB)作为一组倍点运算数据发送到所述发起方倍点运算模块;判断U是否为无穷远点;将xU、yU、ZA和ZB拼接成的比特串Z发送到所述发起方密钥派生模块;将发起方密钥派生模块返回的比特串KA作为发起方会话密钥输出;在判断出RB不为所述椭圆曲线上的点、U为无穷远点的情况之一时,输出协商失败的消息;
所述发起方随机数生成模块用于,将生成的1与(n-1)之间的随机数rA发送到所述发起方控制中心;
所述发起方倍点运算模块用于,对G进行rA倍点运算,得到坐标为(x1,y1)的点RA,并将RA发送到所述发起方控制中心;对RB进行x20倍点运算,将得到的[x20]RB发送到所述发起方控制中心;对(PB+[x20]RB)进行h·tA倍点运算,将得到的点U发送到所述发起方控制中心,所述点U的坐标为(xU,yU);
所述发起方点加模块用于,对PB和[x20]RB进行点加运算,将生成的(PB+[x20]RB)发送到所述发起方控制中心;
所述发起方密钥派生模块用于,对比特串Z进行密钥派生运算,将得到的长度为klen的比特串KA发送到所述发起方控制中心;
所述响应方控制中心用于,将rB和G作为一组倍点运算数据发送到所述响应方倍点运算模块;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;计算x20和rB的标量乘积x20·rB,根据tB=(dB+x20·rB)modn计算tB;判断RA是否为所述椭圆曲线上的点;将x10和RA作为一组倍点运算数据发送到所述响应方倍点运算模块;计算h和tB的标量乘积h·tB;将PA和[x10]RA作为一组点加运算数据发送到所述响应方点加模块;将h·tB和(PA+[x10]RA)作为一组倍点运算数据发送到所述响应方倍点运算模块;判断V是否为无穷远点;将xV、yV、ZA和ZB拼接成的比特串Z’发送到所述响应方密钥派生模块;将响应方密钥派生模块返回的比特串KB作为响应方会话密钥输出;将RB发送到所述发起方控制中心;在判断出RA不为所述椭圆曲线上的点、V为无穷远点的情况之一时,输出协商失败的消息;
所述响应方随机数生成模块用于,将生成的1与(n-1)之间的随机数rB发送到所述响应方控制中心;
所述响应方倍点运算模块用于,对G进行rB倍点运算,得到坐标为(x2,y2)的点RB,并将RB发送到所述响应方控制中心;对RA进行x10倍点运算,将得到的[x10]RA发送到所述响应方控制中心;对(PA+[x10]RA)进行h·tB倍点运算,将得到的点V发送到所述响应方控制中心,所述点V的坐标为(xV,yV);
所述响应方点加模块用于,对PA和[x10]RA进行点加运算,将生成的(PA+[x10]RA)发送到所述响应方控制中心;
所述响应方密钥派生模块用于,对比特串Z’进行密钥派生运算,将得到的长度为klen的比特串KB发送到所述响应方控制中心;
其中,w为参数,&为按比特逻辑与运算符,mod为求模运算符。
本发明的有益效果是:由于发起方控制中心和响应方控制中心可分别安排相应的随机数生成模块、倍点运算模块、点加模块、密钥派生模块的工作时序,使发起方随机数生成模块和响应方随机数生成模块各自随机生成1与(n-1)之间的随机数rA和rB,使发起方倍点运算模块和响应方倍点运算模块分别进行标量数值与点之间的倍点运算,使发起方点加模块和响应方点加模块分别进行两个点的点加运算,使发起方密钥派生模块和响应方密钥派生模块分别对比特串进行密钥派生运算,同时,发起方控制中心和响应方控制中心分别进行协商成功与否的判断,从而实现发起方与响应方之间的密钥协商,在双方协商成功时,发起方和响应方分别通过发起方密钥派生模块和响应方密钥派生模块运算得到同一个会话密钥,从而进行通信的加密和解密,在协商不成功时,输出协商失败的信息。因此,本发明能利用发起方控制中心、发起方随机数生成模块、发起方倍点运算模块、发起方点加模块、发起方密钥派生模块组成的发起方子***和响应方控制中心、响应方随机数生成模块、响应方倍点运算模块、响应方点加模块、响应方密钥派生模块组成的响应方子***,用硬件来实现SM2椭圆曲线公钥密码算法中的密钥交换协议。
附图说明
图1为国家密码管理局发布的SM2椭圆曲线公钥密码算法中的密钥交换协议的流程图;
图2为本发明提供的p元域SM2椭圆曲线密钥协商***的结构图;
图3为本发明提供的发起方控制中心和响应方控制中心实现标量乘运算功能的硬件结构图;
图4为本发明提供的倍点运算模块的结构图;
图5为本发明提供的点加模块的结构图;
图6为本发明提供的密钥派生模块的结构图;
图7为本发明一个具体实施例的结构图;
图8为本发明另一个具体实施例的结构图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
图1为国家密码管理局发布的SM2椭圆曲线公钥密码算法中的密钥交换协议的流程图。在密钥交换协议所涉及的相互通信的两个用户中,发送首轮交换信息的用户称为发起方,另一用户则称为响应方,这两方均有公私密钥对。本发明中,发起方用符号A来表示,响应方用符号B来表示,因而发起方公钥和发起方私钥分别用PA和dA表示,响应方公钥和响应方私钥分别用PB和dB来表示。如图1所示,该流程中,步骤A-101至步骤A-107均由发起方A来执行,步骤B-101至步骤B-106均由响应方B来执行,并且在条件满足的情况下,发起方A和响应方B均可执行步骤108。
如图1所示,步骤A-101至步骤A-107如下:
步骤A-101:确认发起方A的已知数据:椭圆曲线的基G及G的阶n、余因子h、发起方杂凑值ZA、响应方杂凑值ZB、发起方公钥PA和发起方私钥dA、响应方公钥PB、双方约定的会话密钥长度klen、参数w=||(||log2 n||/2)||-1。
本步骤是一个确认已知数据的步骤,后续的步骤A-102至步骤A-107均是在本步骤确定的这些已知数据的基础上进行运算的。
本发明中所述的椭圆曲线均为p元有限域中的椭圆曲线。p元有限域中,椭圆曲线的方程为y2=x3+ax+b,这里的p为大于3的素数,a和b均为p元域中的数值,且满足(4a3+27b2)mod p不为0,mod为求模运算符。
本发明中所述的椭圆曲线具有基,记为G,G为该椭圆曲线上的一个点,该点的坐标为(xG,yG),并且G具有阶n。另外,椭圆曲线还具有一个参数,称为余因子,本发明中用h表示。
发起方杂凑值ZA是将拼接A的可辨别标识、椭圆曲线方程中的参数a、b、xG、yG、PA的横坐标xA和纵坐标yA后得到的比特串进行密码杂凑运算所得到的杂凑值,同样,响应方杂凑值ZB是将拼接B的可辨别标识、a、b、xG、yG、PB的横坐标xB、yB后得到的比特串进行密码杂凑运算所得到的杂凑值。这里的拼接运算指的是将一个比特串连接到前一比特串的最末位比特之后,密码杂凑运算则是一种将任意长度的比特串映射为固定长度比特串的运算,其输出值称为杂凑值。密码杂凑运算具有运算不可逆性和输入输出一一对应性,因而利用密码杂凑运算获得的杂凑值不会泄露其输入值的信息。
在密钥交换协议执行之前,A和B需要约定共享的会话密钥的长度,本发明用klen表示该长度。
在确定参数w时用到的||X ||运算,是确定大于或等于X的最小整数的运算,例如,||7.2||=8,||8||=9。因此,||log2 n||即为大于或等于log2 n的最小整数,||(||log2 n||/2)||即为大于或等于(||log2 n||/2)的最小整数。
步骤A-102:产生1与(n-1)之间的随机数rA,根据RA=[rA]G=(x1,y1)得到RA,并将RA发送到响应方。
本步骤中的随机数rA为正整数,且不能超过(n-1)。
计算公式RA=[rA]G=(x1,y1)中的G为椭圆曲线的基,rA为随机数,[rA]G运算为对G进行rA倍点运算,运算结果RA也为一个点,其坐标为(x1,y1)。
步骤A-103:根据tA=(dA+x10·rA)modn计算得到tA,其中的参数x10根据公式x10=2w+[x1&(2w-1)]计算得到。
本步骤中,x10·rA的运算为p元有限域中的标量乘运算。x10=2w+[x1&(2w-1)]中的&为按比特逻辑与运算符。
步骤A-104:接收步骤B-106发送的RB,并判断RB的坐标是否满足本发明中的椭圆曲线方程,即RB是否为椭圆曲线上的点,是则执行步骤A-105,否则,执行步骤108。
本步骤主要是一个判断步骤,在步骤B-106的基础上执行。
步骤A-105:根据U=[h·tA](PB+[x20]RB)=(xU,yU)计算U,其中的x20根据公式x20=2w+[x2&(2w-1)]计算得到。
本步骤中的h·tA为标量乘运算,得到一个p元有限域中的数值;[x20]RB为对RB进行x20倍点运算,得到的结果与PB再进行p元有限域中的点加运算,运算结果仍为一个点,这样,[h·tA](PB+[x20]RB)就是对点(PB+[x20]RB)进行h·tA倍点运算,运算结果U为椭圆曲线上的一个新的点,其坐标为(xU,yU)。
步骤A-106:判断步骤A-105所得到的U是否为无穷远点,是则执行步骤108,否则执行步骤A-107。
这里所说的无穷远点为p元有限域椭圆曲线上的一个特殊点,步骤A-105进行的运算为倍点运算,其运算结果有可能为无穷远点,而密钥交换协议在协商成功后A在计算会话密钥时要用到点U的坐标,这里参与计算的点U不能是无穷远点,因而需要在本步骤判断U是否为无穷远点。
步骤A-107:协商成功,根据KA=KDF(xU-yU-ZA-ZB,klen)计算会话密钥KA。
本步骤中的协商成功有两层含义,其一是实现了从B到A的密钥确认,即实现了A确信B拥有会话密钥的保证;另外,由于由于本步骤是在步骤A-104接收B在步骤B-106发出的RB的基础上执行的,而步骤B-106判断从A到B协商成功,即实现了从A到B的密钥确认,B确信A拥有会话密钥的保证,这样,本步骤中的协商成功就有了另一层含义,即AB双方均确信对方拥有了会话密钥,即密钥交换协议所要进行的AB双方的协商完全成功,A只需计算得到会话密钥即可结束协商过程。
这里根据KA=KDF(xU-yU-ZA-ZB,klen)计算得到的KA即为本发明中A和B所要共享的会话密钥,从数学的角度来看,整个密钥交换协议到本步骤后,由本步骤计算得到的KA与步骤B-106计算得到的KB是相同的,因而AB双方可用同一个会话密钥对向对方发送的数据进行加密,并对对方发来的加密数据进行解密。
这里的xU-yU-ZA-ZB为由U的横坐标xU、纵坐标yU、发起方杂凑值ZA和响应方杂凑值ZB拼接而成的比特串,KDF(xU-yU-ZA-ZB,klen)运算是对比特串xU-yU-ZA-ZB进行密钥派生运算,生成长度为klen的比特串,其中的KDF为密钥派生函数的标识,如果用比特串Z来表示比特串xU-yU-ZA-ZB,设置一个32比特的计数变量ct,并设在该密钥派生运算中所进行的密码杂凑运算生成的杂凑值的长度均为v比特,则该密钥派生运算的运算规则为:
(a)置ct的初始值为用16进制表示的00000001;
(b)确定出大于或等于(klen/v)的最小整数||klen/v||,在循环变量i从1增加到||klen/v||的过程中,循环执行b1和b2步骤:
(b1)根据Hai=Hv(Z-ct)得到Hai;其中,Hv(Z-ct)是对Z与ct拼接而成的比特串进行密码杂凑运算,生成的杂凑值的长度为v比特;
(b2)ct递增16进制的00000001;
(c)如果(klen/v)为整数,则置Ha!||klen/v||=Ha||klen/v||;否则,则将Ha!||klen/v||置为比特串Ha||klen/v||中从最高比特位起的比特,其中的为小于或等于(klen/v)的最小整数;
(d)进行拼接运算KA=Ha1-Ha2-...-Ha(||klen/v||-1)-Ha!||klen/v||,得到会话密钥KA。
由此,从步骤(a)至步骤(d),可通过密钥派生运算得到会话密钥KA,可以看出,该密钥派生运算过程中,除了比特串拼接运算外,最核心的运算为循环进行密码杂凑运算。步骤(c)的目的在于,确定步骤(d)中用于拼接成KA的最后一个比特串Ha!||klen/v||,使KA的长度符合AB预先约定的长度klen。
步骤B-101至步骤B-106如下:
步骤B-101:确认响应方B的已知数据:椭圆曲线的基G及G的阶n、余因子h、发起方杂凑值ZA、响应方杂凑值ZB、响应方公钥PB和响应方私钥dB、发起方公钥PA、双方约定的会话密钥长度klen、参数w=||(||log 2 n||/2)||-1。
本步骤与步骤A-101相似,也是一个确认已知数据的步骤,后续的步骤B-102至步骤B-106均是在本步骤确定的这些已知数据的基础上进行运算的。
步骤B-102:产生1与(n-1)之间的随机数rB,根据RB=[rB]G=(x2,y2)得到RB,根据tB=(dB+x20·rB)modn得到tB,其中的参数x20根据公式x20=2w+[x2&(2w-1)]计算得到。
与步骤A-102相似,本步骤中的[rB]G也是对G进行的倍点运算,区别在于倍点次数不同,这里进行的是rB倍点运算,运算结果RB也为一个点,其坐标为(x2,y2)。
与步骤A-103相似,本步骤中的x20·rB也为p元有限域中的标量乘运算。
步骤B-103:接收A发送的RA,并判断RA的坐标是否满足椭圆曲线方程,是则执行步骤B-104,否则执行步骤108。
本步骤所接收的RA是A通过步骤A-102计算得到的一个点的坐标。
步骤B-104:根据V=[h·tB](PA+[x10]RA)=(xV,yV)计算得到V,其中的x10可通过公式x10=2w+[x1&(2w-1)]计算得到。
与步骤A-105相似,本步骤中的h·tB为标量乘运算,得到一个p元有限域中的数值;[x10]RA为对RA进行x10倍点运算,得到的结果与PA再进行p元有限域中的点加运算,运算结果仍为一个点,这样,[h·tB](PA+[x10]RA)就是对点(PA+[x10]RA)进行h·tB倍点运算,运算结果V为椭圆曲线上的一个新的点,其坐标为(xV,yV)。
步骤B-105:判断步骤B-104得到的V是否为无穷远点,是则执行步骤108,否则执行步骤B-106。
步骤B-106:从A到B的协商成功,根据KB=KDF(xV-yV-ZA-ZB,klen)计算得到KB,并将RB发送到A。
本步骤中,从A到B的协商成功,意味着实现了从A到B的密钥确认,即B确信A拥有会话密钥的保证,因而可以计算得到KB来作为会话密钥,并结束响应方的协商过程,密钥交换协议剩余的工作转移到步骤A-104,由发起方A来执行,如果A判断协商也成功,则本密钥交换协议的协商过程就会完全成功,并在步骤A-107中计算得到发起方的会话密钥KA,从数学的角度讲,步骤A-107得到的KA和本步骤得到的KB是相等的,即发起方A和响应方B在此后的通信过程中,将使用相同的会话密钥来对信息加密和解密。
另外,步骤108为:协商失败。
这里,无论是A执行步骤A-101至步骤A-107的过程中执行本步骤,还是B在执行步骤B-101至步骤B-106的过程中执行本步骤,均为整个密钥交换协议的协商过程失败,则AB双方需要重新开启协商过程才能获得双方共享的会话密钥。
图2为本发明提供的p元域SM2椭圆曲线密钥协商***的结构图。本发明中所述的椭圆曲线具有基G和余因子h,并且G的阶为n;发起方杂凑值和响应方杂凑值分别为ZA和ZB;发起方公钥和发起方私钥分别为PA和dA,响应方公钥和响应方私钥分别为PB和dB;发起方和响应方约定的会话密钥的长度为klen。该密钥协商***用于从硬件上实现p元域SM2椭圆曲线公钥密码算法中的密钥交换协议,如果发起方和响应方协商成功,则二者分别生成相同的会话密钥,该会话密钥的长度即为约定长度klen。
如图2所示,该***包括:发起方子***212和响应方子***213;发起方子***212包括:发起方控制中心201、发起方随机数生成模块202、发起方倍点运算模块205、发起方点加模块204、发起方密钥派生模块203;响应方子***213包括:响应方控制中心206、响应方随机数生成模块207、响应方倍点运算模块208、响应方点加模块209、响应方密钥派生模块210;可见,发起方子***和响应方子***中的各模块是相互对应的,可用同样的硬件来实现。该***中,
发起方控制中心201用于,将rA和G作为一组倍点运算数据发送到发起方倍点运算模块205;将RA发送到响应方控制中心206;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;计算x10和rA的标量乘积x10·rA,根据tA=(dA+x10·rA)modn计算得到tA;判断RB是否为椭圆曲线上的点;将x20和RB作为一组倍点运算数据发送到发起方倍点运算模块205;计算h和tA的标量乘积h·tA;将PB和[x20]RB作为一组点加运算数据发送到发起方点加模块204;将h·tA和(PB+[x20]RB)作为一组倍点运算数据发送到发起方倍点运算模块205;判断U是否为无穷远点;将xU、yU、ZA和ZB拼接成的比特串Z发送到发起方密钥派生模块203;将发起方密钥派生模块203返回的比特串KA作为发起方会话密钥输出;在判断出RB不为椭圆曲线上的点、U为无穷远点的情况之一时,输出协商失败的消息;
发起方随机数生成模块202用于,将生成的1与(n-1)之间的随机数rA发送到发起方控制中心201;
发起方倍点运算模块205用于,对G进行rA倍点运算,得到坐标为(x1,y1)的点RA,并将RA发送到发起方控制中心201;对RB进行x20倍点运算,将得到的[x20]RB发送到发起方控制中心201;对(PB+[x20]RB)进行h·tA倍点运算,将得到的点U发送到发起方控制中心201,点U的坐标为(xU,yU);
发起方点加模块204用于,对PB和[x20]RB进行点加运算,将生成的(PB+[x20]RB)发送到发起方控制中心201;
发起方密钥派生模块203用于,对比特串Z进行密钥派生运算,将得到的长度为klen的比特串KA发送到发起方控制中心201;
响应方控制中心206用于,将rB和G作为一组倍点运算数据发送到响应方倍点运算模块208;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;计算x20和rB的标量乘积x20·rB,根据tB=(dB+x20·rB)modn计算tB;判断RA是否为椭圆曲线上的点;将x10和RA作为一组倍点运算数据发送到响应方倍点运算模块208;计算h和tB的标量乘积h·tB;将PA和[x10]RA作为一组点加运算数据发送到响应方点加模块209;将h·tB和(PA+[x10]RA)作为一组倍点运算数据发送到响应方倍点运算模块208;判断V是否为无穷远点;将xV、yV、ZA和ZB拼接成的比特串Z’发送到响应方密钥派生模块210;将响应方密钥派生模块210返回的比特串KB作为响应方会话密钥输出;将RB发送到发起方控制中心201;在判断出RA不为椭圆曲线上的点、V为无穷远点的情况之一时,输出协商失败的消息;
响应方随机数生成模块207用于,将生成的1与(n-1)之间的随机数rB发送到响应方控制中心206;
响应方倍点运算模块208用于,对G进行rB倍点运算,得到坐标为(x2,y2)的点RB,并将RB发送到响应方控制中心206;对RA进行x10倍点运算,将得到的[x10]RA发送到响应方控制中心206;对(PA+[x10]RA)进行h·tB倍点运算,将得到的点V发送到响应方控制中心206,点V的坐标为(xV,yV);
响应方点加模块209用于,对PA和[x10]RA进行点加运算,将生成的(PA+[x10]RA)发送到响应方控制中心206;
响应方密钥派生模块210用于,对比特串Z’进行密钥派生运算,将得到的长度为klen的比特串KB发送到响应方控制中心206;
其中,w为参数,&为按比特逻辑与运算符,mod为求模运算符。
需要指出的是,本发明中对点进行的运算,均指的是对该点的坐标进行的运算,例如,点加运算是对两个点的坐标进行的运算,倍点运算是对一个标量与一个点的坐标进行的运算。因此,本发明中所提到的各模块或子模块发送或接收点,指的就是发送或接收该点的坐标。
本发明中的发起方控制中心和响应方控制中心均为各自所在子***的控制中心,负责安排所在子***内各模块的工作时序,并将数据在各模块间传递、运算,将数据发送给另一子***中的控制中心,最重要的,这两个控制中心负责判断协商成功与否,如发起方控制中心可判断RB是否为椭圆曲线上的点,如果判断结果为否,则输出协商失败的消息,这说明发起方与响应方的协商失败。再例如,响应方控制中心负责判断V是否为无穷远点,如果是,则输出协商失败的消息,这也说明发起方与响应方的协商失败。
与图1发布的流程图相对应,其步骤A-101至步骤A-107由发起方子***来实现,步骤B-101至步骤B-106由响应方子***来实现,而步骤108则由双方共同实现。其中,步骤A-101和步骤B-101由相应子***中的控制中心来实现,即将这两个步骤中的各已知数据输入或存储在相应子***中的控制中心,并由该控制中心发送给相应的模块,以便在计算中使用;步骤A-101中产生1与(n-1)之间的随机数rA的步骤由发起方随机数生成模块实现,根据RA=[rA]G=(x1,y1)得到RA的步骤由发起方倍点运算模块实现,将RA发送到响应方的步骤以及步骤A-103、A-104和A-106由发起方控制中心实现;步骤A-105中h与tA之间的标量乘运算由发起方控制中心实现,x20与RB之间、以及h·tA与(PB+[x20]RB)之间的倍点运算由发起方倍点运算模块实现,PB与[x20]RB之间的点加运算由发起方点加模块来实现;步骤A-107中判断协商成功的步骤由发起方控制中心实现,根据KA=KDF(xU-yU-ZA-ZB,klen)计算会话密钥KA的步骤由发起方密钥派生模块来实现。与发起方子***的各模块相对应,响应方子***中的各模块也能实现步骤B-101至步骤B-106,具体为:步骤B-102中产生1与(n-1)之间的随机数rB的步骤由响应方随机数生成模块来实现,根据RB=[rB]G=(x2,y2)得到RB的步骤由响应方倍点运算模块来实现,根据tB=(dB+x20·rB)modn得到tB以及根据公式x20=2w+[x2&(2w-1)]计算x20的步骤和步骤B-103由响应方控制中心来实现;步骤B-104中,h与tB之间的标量乘运算由响应方控制中心实现,x10与RA之间以及h·tB与(PA+[x10]RA)之间的倍点运算由响应方倍点运算模块实现,PA与[x10]RA之间的点加运算由响应方点加模块来实现,步骤B-105和B-106中判断从A到B的协商成功的步骤和将RB发送到发起方A的步骤由响应方控制中心实现,根据KB=KDF(xV-yV-ZA-ZB,klen)计算得到KB的步骤由响应方密钥派生模块实现。根据判断的情况,步骤108由发起方控制中心或响应方控制中心来实现。
由此可见,由于发起方控制中心和响应方控制中心可分别安排相应的随机数生成模块、倍点运算模块、点加模块、密钥派生模块的工作时序,使发起方随机数生成模块和响应方随机数生成模块各自随机生成1与(n-1)之间的随机数rA和rB,使发起方倍点运算模块和响应方倍点运算模块分别进行标量数值与点之间的倍点运算,使发起方点加模块和响应方点加模块分别进行两个点的点加运算,使发起方密钥派生模块和响应方密钥派生模块分别对比特串进行密钥派生运算,同时,发起方控制中心和响应方控制中心分别进行协商成功与否的判断,从而实现发起方与响应方之间的密钥协商,在双方协商成功时,发起方和响应方分别通过发起方密钥派生模块和响应方密钥派生模块运算得到同一个会话密钥,从而进行通信的加密和解密,在协商不成功时,输出协商失败的信息。因此,本发明能利用发起方控制中心、发起方随机数生成模块、发起方倍点运算模块、发起方点加模块、发起方密钥派生模块组成的发起方子***和响应方控制中心、响应方随机数生成模块、响应方倍点运算模块、响应方点加模块、响应方密钥派生模块组成的响应方子***,用硬件来实现SM2椭圆曲线公钥密码算法中的密钥交换协议。
由于本发明能够利用硬件来实现SM2椭圆曲线公钥密码算法中的密钥交换协议,相对于该密钥交换协议的软件实现,本发明的运算速度更快,安全性也更高。
如图2所示,该***进一步包括w生成模块211,用于根据计算得到参数w,并将其分别发送到发起方控制中心201和响应方控制中心206。
本发明中的发起方控制中心和响应方控制中心均具有标量乘运算功能,该功能可以通过相同的硬件结构来实现。图3为本发明提供的发起方控制中心和响应方控制中心实现标量乘运算功能的硬件结构图,该硬件结构包含于发起方控制中心和响应方控制中心内部。如图3所示,该硬件结构包括:控制子模块301、域转换子模块302、蒙哥马利域乘法子模块303;其中,
控制子模块301用于,将需要进行标量乘运算的m和j二者在有限域的值发送到域转换子模块302;将m和j各自在蒙哥马利域的值发送到蒙哥马利域乘法子模块303;将1与蒙哥马利域乘法子模块303返回的mj发送到蒙哥马利域乘法子模块303;
域转换子模块302用于,将m和j二者在有限域的值分别转换为各自在蒙哥马利域的值返回控制子模块301;
蒙哥马利域乘法子模块303用于,对m和j各自在蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的乘积mj返回控制子模块301;对mj与1进行蒙哥马利域乘法运算,得到m和j在有限域的值的标量乘积;将m和j在有限域的值的标量乘积返回控制子模块301。
这里所涉及的m和j是进行标量乘运算的两个标量,其可以代表通过图2中发起方控制中心201进行标量乘运算的x10和rA,或h和tA,也可以代表通过响应方控制中心206进行标量乘运算的x20和rB,或h和tB。
本发明中,发起方控制中心和响应方控制中心将标量乘运算的两个数据由有限域转换到蒙哥马利域中进行,可以大大降低运算难度,提高运算效率,有利于进一步提高密钥交换协议的运算速度。
当然,图3中的控制子模块还可以作为发起方控制中心或响应方控制中心中的控制核心,完成其所在的控制中心的其他控制、运算、判断功能。例如,发起方控制中心里的控制子模块除了具有图3所述的标量乘运算的控制功能之外,还可以用于:将rA和G作为一组倍点运算数据发送到发起方倍点运算模块;将RA发送到响应方控制中心里的控制子模块;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;根据tA=(dA+x10·rA)modn计算得到tA;判断RB是否为椭圆曲线上的点;将x20和RB作为一组倍点运算数据发送到发起方倍点运算模块;将PB和[x20]RB作为一组点加运算数据发送到发起方点加模块;将h·tA和(PB+[x20]RB)作为一组倍点运算数据发送到发起方倍点运算模块;判断U是否为无穷远点;将xU、yU、ZA和ZB拼接成的比特串Z发送到发起方密钥派生模块;将发起方密钥派生模块返回的比特串KA作为发起方会话密钥输出;在判断出RB不为椭圆曲线上的点、U为无穷远点的情况之一时,输出协商失败的消息。再如,响应方控制中心里的控制子模块除了具有图3所述的标量乘运算的控制功能外,还可以用于:将rB和G作为一组倍点运算数据发送到响应方倍点运算模块;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;根据tB=(dB+x20·rB)modn计算tB;判断RA是否为椭圆曲线上的点;将x10和RA作为一组倍点运算数据发送到响应方倍点运算模块;将PA和[x10]RA作为一组点加运算数据发送到响应方点加模块;将h·tB和(PA+[x10]RA)作为一组倍点运算数据发送到响应方倍点运算模块;判断V是否为无穷远点;将xV、yV、ZA和ZB拼接成的比特串Z’发送到响应方密钥派生模块;将响应方密钥派生模块返回的比特串KB作为响应方会话密钥输出;将RB发送到发起方控制中心里的控制子模块;在判断出RA不为椭圆曲线上的点、V为无穷远点的情况之一时,输出协商失败的消息。
本发明中,发起方倍点运算模块和响应方倍点运算模块均为进行倍点运算的模块,其进行的倍点运算是相同的,因而可以用相同的硬件机构来实现,该硬件机构可以称之为倍点运算模块。图4为本发明提供的倍点运算模块的结构图,该倍点运算模块可以用作发起方倍点运算模块,也可以用作响应方倍点运算模块。
如图4所示,该倍点运算模块包括:倍点运算控制子模块401、射影系二倍点运算子模块404、域转换子模块403、蒙哥马利域乘法子模块405、有限域求逆子模块402、射影系点加子模块406;其中,
倍点运算控制子模块401用于,接收由数值f和点C组成的一组倍点运算数据,将C在仿射坐标系下的坐标(xc,yc)转换为C在射影坐标系下的坐标(xc2,yc2,1),并将xc2、yc2、1发送到域转换子模块403;将(xc3,yc3,zc3)发送到射影系点加子模块406,并将其作为[f]C在蒙哥马利域的坐标(xc1,yc1,zc1)的初始值,其中的[f]C为对C进行f倍点运算的结果;确定f的二进制比特长度L;将f的二进制形式中的次高比特位作为其当前比特位的初始值,从f的二进制形式中的次高比特位开始,每次降低一个比特位作为当前比特位,直至其最低比特位为止,进行(L-1)次迭代运算;将(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的zc1发送到蒙哥马利域乘法子模块405;将zc1在有限域的值发送到有限域求逆子模块402;将zc1-1在有限域的值发送到域转换子模块403;将(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的xc1、yc1以及zc1-1在蒙哥马利域的值发送到蒙哥马利域乘法子模块405;将1与蒙哥马利域乘法子模块405返回的xc1在仿射坐标系的值发送到蒙哥马利域乘法子模块405;将1与蒙哥马利域乘法子模块405返回的yc1在仿射坐标系的值发送到蒙哥马利域乘法子模块405;将xc1、yc1二者在有限域的值组成的坐标(xc1,yc1)作为[f]C的运算结果输出;其中的一次迭代运算包括:将坐标(xc1,yc1,zc1)的当前值发送到射影系二倍点运算子模块404、在f的当前比特位为二进制1的情况下,将射影系二倍点运算子模块404返回的输出坐标发送到射影系点加子模块406;
域转换子模块403用于,将有限域的值xc2、yc2、1分别转换为各自在蒙哥马利域的值xc3、yc3、zc3,并将其返回倍点运算控制子模块401;将zc1-1在有限域的值转换为其在蒙哥马利域的值,并将其返回倍点运算控制子模块401;
射影系二倍点运算子模块404用于,对输入坐标进行二倍点运算,将运算结果作为输出坐标返回至倍点运算控制子模块401;
射影系点加子模块406用于,将输入坐标与(xc3,yc3,zc3)进行点加运算,将运算结果发送到倍点运算控制子模块401;
蒙哥马利域乘法子模块405用于,对zc1在蒙哥马利域的值与1进行蒙哥马利域乘法运算,将得到的zc1在有限域的值发送到倍点运算控制子模块401;对xc1与zc1-1在蒙哥马利域的值进行蒙哥马利域乘法运算,对yc1与zc1-1在蒙哥马利域的值进行蒙哥马利域乘法运算,将分别得到的xc1、yc1二者在仿射坐标系的值返回倍点运算控制子模块401;对1与xc1在仿射坐标系的值进行蒙哥马利域乘法运算,对yc1在仿射坐标系的值与1进行蒙哥马利域乘法运算,将得到的xc1、yc1二者在有限域的值返回到倍点运算控制子模块401;
有限域求逆子模块402用于,对zc1在有限域的值进行求逆运算,将得到的zc1-1在有限域的值发送到倍点运算控制子模块401。
这里进行倍点运算的一组倍点运算数据所包含的数值f和点C为倍点运算控制子模块从其所在的子***中的控制中心所接收,如其位于发起方子***中,则接收自发起方控制中心,如其位于响应方子***中,则接收自响应方控制中心。并且这里的f和C分别为各组倍点运算数据中的数值和点的指代,如,f和C可以分别为图2所示的发起方控制中心发送给发起方倍点运算模块的rA和G,或x20和RB,或h·tA和(PB+[x20]RB),也可以为响应方控制中心发送给响应方倍点运算模块的rB和G,或x10和RA,或h·tB和(PA+[x10]RA)。当然,上述的xc2、yc2、xc3、yc3、zc3、xc1、yc1、zc1以及zc1-1也可以分别与图2中发起方倍点运算模块205或响应方倍点运算模块208的功能中的相应运算数值一一对应。
本发明提供的如图4所示的倍点运算模块,先将数据由仿射坐标系转换到射影坐标系,再将其从有限域转换到蒙哥马利域,这样就可以在蒙哥马利域进行相应的计算,完成后将数据从射影坐标系转换到仿射坐标系,再从蒙哥马利域转换到有限域,最终将倍点运算的结果输出,相对于直接在仿射坐标系进行计算,本发明虽然增加了坐标系间以及域之间的数据转换过程,但倍点运算的效率仍有很大的提高。
图2所示的***中,发起方点加模块和响应方点加模块实现的都是点加功能,因而可以用相同的硬件来实现,该硬件称为点加模块。图5为本发明提供的点加模块的结构图,该点加模块可以用作发起方点加模块,也可以用作响应方点加模块。
如图5所示,该点加模块包括:点加控制子模块501、域转换子模块502、射影系点加子模块504、蒙哥马利域乘法子模块503、有限域求逆子模块505;其中,
点加控制子模块501用于,将接收的要进行点加运算的点PP1和PP2在仿射坐标系下的坐标(x11’,y11’)和(x12’,y12’)分别转换为各自在射影坐标系下的坐标(x11’,y11’,1)和(x12’,y12’,1),并将x11’、y11’、1和x12’、y12’、1发送到域转换子模块502;将x111’、y111’、z111’组成的坐标(x111’,y111’,z111’)和x121’、y121’、z121’组成的坐标(x121’,y121’,z121’)发送到射影系点加子模块504;将射影系点加子模块504返回的坐标(x131’,y131’,z131’)中的z131’发送到蒙哥马利域乘法子模块503;将蒙哥马利域乘法子模块503返回的z131’在有限域的值发送到有限域求逆子模块505;将z131′-1在有限域的值发送到域转换子模块502;将坐标(x131’,y131’,z131’)中的x131’、y131’以及z131′-1在蒙哥马利域的值发送到蒙哥马利域乘法子模块503;将1与蒙哥马利域乘法子模块503返回的x131’在仿射坐标系的值、1与蒙哥马利域乘法子模块503返回的y131’在仿射坐标系的值分别发送到蒙哥马利域乘法子模块503;将蒙哥马利域乘法子模块503返回的x131’、y131’二者在有限域的值组成的坐标(x131’,y131’)作为PP1和PP2在仿射坐标系下进行点加运算的结果输出;
域转换子模块502用于,分别将x11’、y11’、1和x12’、y12’、1在有限域的值转换为各自在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’,并将其返回点加控制子模块501;将z131′-1在有限域的值转换为z131′-1在蒙哥马利域的值,并将其返回点加控制子模块501;
射影系点加子模块504用于,对输入的坐标(x111’,y111’,z111’)和(x121’,y121’,z121’)进行点加运算,将得到的坐标(x131’,y131’,z131’)返回点加控制子模块501;
蒙哥马利域乘法子模块503用于,对输入的z131’与1进行蒙哥马利域乘法运算,将得到的z131’在有限域的值发送到点加控制子模块501;对x131’与z11′-1在蒙哥马利域的值、y131’与z11′-1在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得到的x131’、y131’二者在仿射坐标系的值返回点加控制子模块501;对x131’、y131’二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的x131’、y131’二者在有限域的值返回点加控制子模块501;
有限域求逆子模块505用于,对输入的z131’在有限域的值进行求逆运算,将得到的z131′-1在有限域的值发送到点加控制子模块501。
这里的点PP1和PP2为点加控制子模块从自身所在的子***中的控制中心接收的数据,如其位于发起方子***中,则接收自发起方控制中心,如其位于响应方子***中,则接收自响应方控制中心。
这里的点PP1和PP2代表的是发起方点加控制子模块或响应方点加控制子模块进行点加运算的数据,如,PP1和PP2可以分别代表发起方控制中心发送给发起方点加模块的点加运算数据PB和[x20]RB,也可以分别代表响应方控制中心发送给响应方点加模块的点加运算数据PA和[x10]RA。
本发明提供的如图5所示的点加模块,是将PP1和PP2在仿射坐标系下的坐标转换到射影坐标系,然后从有限域转换到蒙哥马利域进行相应计算,完成后再从射影坐标系转换到仿射坐标系,从蒙哥马利域转换到有限域,最后将结果输出,该过程虽然比直接在仿射坐标系下运算增加了数据转换步骤,但运算效率仍有很大的提高。
本发明中,发起方密钥派生模块和响应方密钥派生模块均为实现密钥派生功能的模块,也可以用相同的硬件结构来实现,该硬件结构称为密钥派生模块。图6为本发明提供的密钥派生模块的结构图,该密钥派生模块可以作为发起方密钥派生模块,也可以作为响应方密钥派生模块来应用。
如图6所示,该密钥派生模块包括:密钥派生控制子模块601、输出的杂凑值的长度为v比特的密码杂凑子模块602;其中,
密钥派生控制子模块601用于,接收输入比特串ZZ;设置32比特的计数变量ct的初始值为16进制表示的00000001;确定大于或等于(klen/v)的最小整数‖klen/v ‖;循环变量i从1起递增至‖klen/v‖,每次递增1,执行‖klen/v‖次密码杂凑运算;在(klen/v)为整数的情况下,置Ha!||klen/v||=Ha||klen/v||;在(klen/v)不为整数的情况下,将Ha!||klen/v||置为比特串Ha||klen/v||中从最高比特位起的比特,其中的为小于或等于(klen/v)的最小整数;将i从1递增至(‖klen/v||-1)的Hai以及Ha!||klen/v||顺次拼接,将得到的长度为klen比特的比特串作为对ZZ进行密钥派生运算的结果输出;其中,一次密码杂凑运算包括:将ct的当前值与ZZ拼接为比特串ZZ-ct;将ZZ-ct发送到密码杂凑子模块602;将密码杂凑子模块602返回的Hv(ZZ-ct)赋值给v比特的Hai;ct的值增加16进制的00000001;
密码杂凑子模块602用于,对输入比特串ZZ-ct进行密码杂凑运算,将输出的v比特的杂凑值Hv(ZZ-ct)返回密钥派生控制子模块601。
这里,比特串ZZ是密钥派生控制子模块从自身所在的子***中的控制中心接收的,如其位于发起方子***中,则接收自发起方控制中心,如其位于响应方子***中,则接收自响应方控制中心。
比特串ZZ表示的是发起方密钥派生模块或响应方密钥派生模块所接收的比特串,例如,ZZ可以表示图2中发起方控制中心发送给发起方密钥派生模块的比特串Z,也可以表示响应方控制中心发送给响应方密钥派生模块的比特串Z’。
可以看出,该***中,发起方子***和响应方子***的部分模块可以对应具有相同的结构,如发起方随机数生成模块和响应方随机数生成模块可以为相同结构的随机数生成模块;发起方倍点运算模块和响应方倍点运算模块可以为相同结构的倍点运算模块;发起方点加模块和响应方点加模块可以为相同结构的点加模块;发起方密钥派生模块和响应方密钥派生模块可以为相同结构的密钥派生模块,因此,可以对两个子***中相对应的模块进行复用,从而节约硬件资源,提高***集成度,减小芯片面积。
图7为本发明一个具体实施例的结构图。如图7所示,该***包括发起方控制中心701、响应方控制中心702、随机数生成模块704、倍点运算模块705、点加模块706、密钥派生模块707,与图2结构相比较,图2中的发起方随机数生成模块和响应方随机数生成模块在图7中用同一个随机数生成模块704实现;发起方倍点运算模块和响应方倍点运算模块在图7中用同一个倍点运算模块705实现;发起方点加模块和响应方点加模块在图7中用同一个点加模块706实现;发起方密钥派生模块和响应方密钥派生模块在图7中用同一个密钥派生模块707实现;另外,该***在图2所示***结构的基础上,进一步包括:上层复选模块703;
发起方控制中心701用于,向上层复选模块703发送发起方占用信号;
响应方控制中心702用于,向上层复选模块703发送响应方占用信号;
上层复选模块703用于,根据发起方占用信号,将随机数生成模块704、倍点运算模块705、点加模块706、密钥派生模块707的工作模式置为发起方模式,使各模块分别具有图2中发起方随机数生成模块、发起方倍点运算模块、发起方点加模块、发起方密钥派生模块的功能,并转发发起方控制中心701与随机数生成模块704、倍点运算模块705、点加模块706、密钥派生模块707之间的通信数据;根据响应方占用信号将随机数生成模块704、倍点运算模块705、点加模块706、密钥派生模块707的工作模式置为响应方模式,使各模块分别具有图2中响应方随机数生成模块、响应方倍点运算模块、响应方点加模块、响应方密钥派生模块的功能,并转发响应方控制中心与随机数生成模块704、倍点运算模块705、点加模块706、密钥派生模块707之间的通信数据。
另外,图7中还可以进一步包括w生成模块708,以实现生成w发送给发起方控制中心701和响应方控制中心702的功能。
由此可见,图7所示的实施例中,通过增设一个上层复选模块作为发起方控制中心和响应方控制中心与各自子***中其他模块通信数据的转发模块,发起方控制中心和响应方控制中心只需通过上层复选模块控制其他模块的工作模式,即可使两个子***中的对应结构相同的模块实现复用,从而大大减少了模块的数量,节约了硬件的资源。
进一步地,通过图3、4、5所示的各模块的结构可知,图7实施例中的发起方控制中心、响应方控制中心、倍点运算模块、点加模块还可以进一步实现相同功能的子模块的复用。由此可得到图8所示的本发明的另一个具体实施例的结构图。
图8实施例中的***包括:由图7所示的发起方控制中心、响应方控制中心、倍点运算模块、点加模块所共用的域转换子模块810、蒙哥马利域乘法子模块811;由倍点运算模块、点加模块所共用的射影系点加子模块812、有限域求逆子模块813;
该***进一步包括下层复选模块808,以实现上述对域转换子模块810、蒙哥马利域乘法子模块811、射影系点加子模块812、有限域求逆子模块813的共用;
图7中的发起方控制中心还可以包括:发起方控制子模块801;响应方控制中心还包括:响应方控制子模块802;倍点运算模块还包括:倍点运算控制子模块805、射影系二倍点运算子模块809;点加模块还包括:点加控制子模块806;图7中的随机数生成模块、上层复选模块在图8中的标号分别为804和803,其功能与图7中的相同。
图8中的发起方控制子模块用于,向下层复选模块发送发起方控制子模块占用信号;将需要进行标量乘运算的两个有限域的值发送到域转换子模块;将域转换子模块返回的两个蒙哥马利域的值发送到蒙哥马利域乘法子模块;将1与蒙哥马利域乘法子模块返回的乘积发送到蒙哥马利域乘法子模块;除了这里所说的标量乘运算功能,该发起方控制子模块还具有图2中发起方中心所具有的数据运算、判断和控制其他模块工作时序的功能,例如:将rA和G作为一组倍点运算数据发送到倍点运算控制子模块;将RA发送到响应方控制子模块;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;根据tA=(dA+x10·rA)modn计算得到tA;判断RB是否为椭圆曲线上的点;将x20和RB作为一组倍点运算数据发送到倍点运算控制子模块;将PB和[x20]RB作为一组点加运算数据发送到点加控制子模块;将h·tA和(PB+[x20]RB)作为一组倍点运算数据发送到倍点运算控制子模块;判断U是否为无穷远点;将xU、yU、ZA和ZB拼接成的比特串Z发送到密钥派生模块;将密钥派生模块返回的比特串KA作为发起方会话密钥输出;在判断出RB不为椭圆曲线上的点、U为无穷远点的情况之一时,输出协商失败的消息;由此,该发起方控制子模块通过下层复选模块,与域转换子模块、蒙哥马利域乘法子模块共同构成了图3所示的发起方控制中心,也具有了图3所示的发起方控制中心的功能。
图8中的响应方控制子模块用于,向下层复选模块发送响应方控制子模块占用信号;将需要进行标量乘运算的两个有限域的值发送到域转换子模块;将域转换子模块返回的两个蒙哥马利域的值发送到蒙哥马利域乘法子模块;将1与蒙哥马利域乘法子模块返回的乘积发送到蒙哥马利域乘法子模块;除了这里所说的标量乘运算功能,该响应方控制子模块还具有图2中响应方中心所具有的数据运算、判断和控制其他模块工作时序的功能,例如:将rB和G作为一组倍点运算数据发送到倍点运算控制子模块;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;根据tB=(dB+x20·rB)modn计算tB;判断RA是否为椭圆曲线上的点;将x10和RA作为一组倍点运算数据发送到倍点运算控制子模块;将PA和[x10]RA作为一组点加运算数据发送到点加控制子模块;将h·tB和(PA+[x10]RA)作为一组倍点运算数据发送到倍点运算控制子模块;判断V是否为无穷远点;将xV、yV、ZA和ZB拼接成的比特串Z’发送到密钥派生模块;将密钥派生模块返回的比特串KB作为响应方会话密钥输出;将RB发送到发起方控制子模块;在判断出RA不为椭圆曲线上的点、V为无穷远点的情况之一时,输出协商失败的消息;这样,响应方控制子模块通过下层复选模块,与域转换子模块、蒙哥马利域乘法子模块共同构成了图3所示的响应方控制中心,也具有了图3所示的响应方控制中心的功能。
图8中的倍点运算控制子模块用于,向下层复选模块发送倍点运算控制子模块占用信号;接收由数值f和点C组成的一组倍点运算数据,将C在仿射坐标系下的坐标(xc,yc)转换为C在射影坐标系下的坐标(xc2,yc2,1),并将xc2、yc2、1发送到域转换子模块;将(xc3,yc3,zc3)发送到射影系点加子模块,并将其作为[f]C在蒙哥马利域的坐标(xc1,yc1,zc1)的初始值,其中的[f]C为对C进行f倍点运算的结果;确定f的二进制比特长度L;将f的二进制形式中的次高比特位作为其当前比特位的初始值,从f的二进制形式中的次高比特位开始,每次降低一个比特位作为当前比特位,直至其最低比特位为止,进行(L-1)次迭代运算;将(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的zc1发送到蒙哥马利域乘法子模块;将zc1在有限域的值发送到有限域求逆子模块;将zc1-1在有限域的值发送到域转换子模块;将(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的xc1、yc1以及zc1-1在蒙哥马利域的值发送到蒙哥马利域乘法子模块;将1与蒙哥马利域乘法子模块返回的xc1在仿射坐标系的值发送到蒙哥马利域乘法子模块;将1与蒙哥马利域乘法子模块返回的yc1在仿射坐标系的值发送到蒙哥马利域乘法子模块;将xc1、yc1二者在有限域的值组成的坐标(xc1,yc1)作为[f]C的运算结果输出;其中的一次迭代运算包括:将坐标(xc1,yc1,zc1)的当前值发送到射影系二倍点运算子模块、在f的当前比特位为二进制1的情况下,将射影系二倍点运算子模块返回的输出坐标发送到射影系点加子模块;
射影系二倍点运算子模块用于,对输入坐标进行二倍点运算,将运算结果作为输出坐标返回至倍点运算控制子模块;
由此可见,这里的倍点运算控制子模块通过下层复选模块,与域转换子模块、蒙哥马利域乘法子模块、射影系二倍点运算子模块、射影系点加子模块、有限域求逆子模块共同构成了图4所示的倍点运算模块的结构,也就具有了图4所示的倍点运算模块的功能。
图8中的点加控制子模块用于,向下层复选模块发送点加控制子模块占用信号;将接收的要进行点加运算的点PP1和PP2在仿射坐标系下的坐标(x11’,y11’)和(x12’,y12’)分别转换为各自在射影坐标系下的坐标(x11’,y11’,1)和(x12’,y12’,1),并将x11’、y11’、1和x12’、y12’、1发送到域转换子模块;将x111’、y111’、z111’组成的坐标(x111’,y111’,z111’)和x121’、y121’、z121’组成的坐标(x121’,y121’,z121’)发送到射影系点加子模块;将射影系点加子模块返回的坐标(x131’,y131’,z131’)中的z131’发送到蒙哥马利域乘法子模块;将蒙哥马利域乘法子模块返回的z131’在有限域的值发送到有限域求逆子模块;将z131′-1在有限域的值发送到域转换子模块;将坐标(x131’,y131’,z131’)中的x131’、y131’以及z131′-1在蒙哥马利域的值发送到蒙哥马利域乘法子模块;将1与x131’在仿射坐标系的值发送到蒙哥马利域乘法子模块;将1与y131’在仿射坐标系的值发送到蒙哥马利域乘法子模块;将蒙哥马利域乘法子模块返回的x131’、y131’二者在有限域的值组成的坐标(x131’,y131’)作为PP1和PP2在仿射坐标系下进行点加运算的结果输出;由此可见,图8中的点加控制子模块通过下层复选模块的数据转发,与域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块共同构成了图5所示的点加模块的结构,也就具有了图5所示的点加模块的功能。
下层复选模块用于,根据发起方控制子模块占用信号,将域转换子模块、蒙哥马利域乘法子模块的工作模式置为发起方控制子模块占用模式,并转发发起方控制子模块与域转换子模块、蒙哥马利域乘法子模块之间的通信数据;根据响应方控制子模块占用信号,将域转换子模块、蒙哥马利域乘法子模块的工作模式置为响应方控制子模块占用模式,并转发响应方控制子模块与域转换子模块、蒙哥马利域乘法子模块之间的通信数据;根据倍点运算控制子模块占用信号,将域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块的工作模式置为倍点运算控制子模块占用模式,并转发倍点运算控制子模块与域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块之间的通信数据;根据点加控制子模块占用信号,将域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块的工作模式置为点加控制子模块占用模式,并转发点加控制子模块与域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块之间的通信数据;
由此可见,该实施例通过在图7的基础上进一步设置下层复选模块,用于对发起方控制子模块、响应方控制子模块、倍点运算控制子模块、点加控制子模块与域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块之间的通信数据进行转发,以及控制域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块的工作模式,从而实现了对域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块的复用,在图7实施例的基础上进一步节约了硬件资源,减小了芯片面积。
图8中的域转换子模块用于,在发起方控制子模块占用模式下,将发起方控制子模块发送的两个有限域的值分别转换为各自在蒙哥马利域的值返回发起方控制子模块;在响应方控制子模块占用模式下,将响应方控制子模块发送的两个有限域的值分别转换为各自在蒙哥马利域的值返回响应方控制子模块;在倍点运算控制子模块占用模式下,将有限域的值xc2、yc2、1分别转换为各自在蒙哥马利域的值xc3、yc3、zc3,并将其返回倍点运算控制子模块;将zc1-1在有限域的值转换为其在蒙哥马利域的值,并将其返回倍点运算控制子模块;在点加控制子模块占用模式下,分别将x11’、y11’、1和x12’、y12’、1在有限域的值转换为各自在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’,并将其返回点加控制子模块;将z131′-1在有限域的值转换为z131′-1在蒙哥马利域的值,并将其返回点加控制子模块;
图8中的蒙哥马利域乘法子模块用于,在发起方控制子模块占用模式下,对发起方控制子模块发送的两个蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的乘积返回发起方控制子模块;对1与发起方控制子模块发送的乘积进行蒙哥马利域乘法运算,将运算结果返回发起方控制子模块;在响应方控制子模块占用模式下,对响应方控制子模块发送的两个蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的乘积返回响应方控制子模块;对1与响应方控制子模块发送的所述乘积进行蒙哥马利域乘法运算,将运算结果返回响应方控制子模块;在倍点运算控制子模块占用模式下,对zc1在蒙哥马利域的值与1进行蒙哥马利域乘法运算,将得到的zc1在有限域的值发送到倍点运算控制子模块;对xc1与zc1-1在蒙哥马利域的值进行蒙哥马利域乘法运算,将yc1与zc1-1在蒙哥马利域的值进行蒙哥马利域乘法运算,将分别得到的xc1、yc1二者在仿射坐标系的值返回倍点运算控制子模块;对1与xc1在仿射坐标系的值进行蒙哥马利域乘法运算,对yc1在仿射坐标系的值与1进行蒙哥马利域乘法运算,将得到的xc1、yc1二者在有限域的值返回到倍点运算控制子模块;在点加控制子模块占用模式下,对输入的z131’与1进行蒙哥马利域乘法运算,将得到的z131’在有限域的值发送到点加控制子模块;对x131’与z11′-1在蒙哥马利域的值进行蒙哥马利域乘法运算,将y131’与z11′-1在蒙哥马利域的值进行蒙哥马利域乘法运算,将分别得到的x131’、y131’二者在仿射坐标系的值返回点加控制子模块;对x131’在仿射坐标系的值与1进行蒙哥马利域乘法运算,对y131’在仿射坐标系的值与1进行蒙哥马利域乘法运算,将分别得到的x131’、y131’二者在有限域的值返回点加控制子模块;
图8中的射影系点加子模块用于,在倍点运算控制子模块占用模式下,将输入坐标与(xc3,yc3,zc3)进行点加运算,将运算结果发送到倍点运算控制子模块;在点加控制子模块占用模式下,对输入的坐标(x111’,y111’,z111’)和(x121’,y121’,z121’)进行点加运算,将得到的坐标(x131’,y131’,z131’)返回点加控制子模块;
图8中的有限域求逆子模块用于,在倍点运算控制子模块占用模式下,对zc1在有限域的值进行求逆运算,将得到的zc1-1在有限域的值发送到倍点运算控制子模块;在点加控制子模块占用模式下,对输入的z131’在有限域的值进行求逆运算,将得到的z131′-1在有限域的值发送到点加控制子模块。
由此可见,图8中的域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块可在下层复选模块所设置的工作模式下工作,从而完成标量乘运算、点加运算和倍点运算。
另外,图8所示的***实施例中还可以进一步包括w生成模块814,用于生成w以提供给发起方控制子模块801和响应方控制子模块802。
图8中的密钥派生模块807也可以具有图6所示的结构。
由此可见,本发明具有以下优点:
(1)本发明中,由于发起方控制中心和响应方控制中心可分别安排相应的随机数生成模块、倍点运算模块、点加模块、密钥派生模块的工作时序,使发起方随机数生成模块和响应方随机数生成模块各自随机生成1与(n-1)之间的随机数rA和rB,使发起方倍点运算模块和响应方倍点运算模块分别进行标量数值与点之间的倍点运算,使发起方点加模块和响应方点加模块分别进行两个点的点加运算,使发起方密钥派生模块和响应方密钥派生模块分别对比特串进行密钥派生运算,同时,发起方控制中心和响应方控制中心分别进行协商成功与否的判断,从而实现发起方与响应方之间的密钥协商,在双方协商成功时,发起方和响应方分别通过发起方密钥派生模块和响应方密钥派生模块运算得到同一个会话密钥,从而进行通信的加密和解密,在协商不成功时,输出协商失败的信息。因此,本发明能利用发起方控制中心、发起方随机数生成模块、发起方倍点运算模块、发起方点加模块、发起方密钥派生模块组成的发起方子***和响应方控制中心、响应方随机数生成模块、响应方倍点运算模块、响应方点加模块、响应方密钥派生模块组成的响应方子***,用硬件来实现SM2椭圆曲线公钥密码算法中的密钥交换协议。
(2)由于本发明能够利用硬件来实现SM2椭圆曲线公钥密码算法中的密钥交换协议,相对于该密钥交换协议的软件实现,本发明的运算速度更快,安全性也更高。
(3)本发明中,发起方控制中心和响应方控制中心将标量乘运算的两个数据由有限域转换到蒙哥马利域中进行,可以大大降低运算难度,提高运算效率,有利于进一步提高密钥交换协议的运算速度。
(4)本发明提供的倍点运算模块和点加模块,先将数据由仿射坐标系转换到射影坐标系,再将其从有限域转换到蒙哥马利域,这样就可以在蒙哥马利域进行相应的计算,完成后将数据从射影坐标系转换到仿射坐标系,再从蒙哥马利域转换到有限域,最终将倍点运算的结果输出,相对于直接在仿射坐标系进行计算,本发明进行倍点运算和点加运算的效率有很大的提高。
(5)本发明对发起方子***和响应方子***中相对应的模块以及子模块进行复用,大大节约了硬件资源,提高了***的集成度,减小了芯片的面积。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种p元域SM2椭圆曲线密钥协商***,所述椭圆曲线具有基G和余因子h,G的阶为n;发起方杂凑值和响应方杂凑值分别为ZA和ZB;发起方公钥和发起方私钥分别为PA和dA,响应方公钥和响应方私钥分别为PB和dB;发起方和响应方约定的会话密钥的长度为klen;其特征在于,该***包括:发起方子***和响应方子***;所述发起方子***包括:发起方控制中心、发起方随机数生成模块、发起方倍点运算模块、发起方点加模块、发起方密钥派生模块;所述响应方子***包括:响应方控制中心、响应方随机数生成模块、响应方倍点运算模块、响应方点加模块、响应方密钥派生模块;其中,
所述发起方控制中心用于,将rA和G作为一组倍点运算数据发送到所述发起方倍点运算模块,其中rA为所述发起方随机数生成模块生成的1与(n-1)之间的随机数;将RA发送到所述响应方控制中心,其中RA为所述发起方倍点运算模块对G进行rA倍点运算得到的坐标为(x1,y1)的点;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;计算x10和rA的标量乘积x10·rA,根据tA=(dA+x10·rA)mod n计算得到tA;判断RB是否为所述椭圆曲线上的点,其中RB为所述响应方倍点运算模块对G进行rB倍点运算,得到坐标为(x2,y2)的点,rB为所述响应方随机数生成模块生成的1与(n-1)之间的随机数;将x20和RB作为一组倍点运算数据发送到所述发起方倍点运算模块;计算h和tA的标量乘积h·tA;将PB和[x20]RB作为一组点加运算数据发送到所述发起方点加模块;将h·tA和(PB+[x20]RB)作为一组倍点运算数据发送到所述发起方倍点运算模块;判断U是否为无穷远点,其中U为对点(PB+[x20]RB)进行h·tA倍点运算的运算结果,其坐标为(xU,yU);将xU、yU、ZA和ZB拼接成的比特串Z发送到所述发起方密钥派生模块;将发起方密钥派生模块返回的比特串KA作为发起方会话密钥输出;在判断出RB不为所述椭圆曲线上的点、U为无穷远点的情况之一时,输出协商失败的消息;
所述发起方随机数生成模块用于,将生成的1与(n-1)之间的随机数rA发送到所述发起方控制中心;
所述发起方倍点运算模块用于,对G进行rA倍点运算,得到坐标为(x1,y1)的点RA,并将RA发送到所述发起方控制中心;对RB进行x20倍点运算,将得到的[x20]RB发送到所述发起方控制中心;对(PB+[x20]RB)进行h·tA倍点运算,将得到的点U发送到所述发起方控制中心,所述点U的坐标为(xU,yU);
所述发起方点加模块用于,对PB和[x20]RB进行点加运算,将生成的(PB+[x20]RB)发送到所述发起方控制中心;
所述发起方密钥派生模块用于,对比特串Z进行密钥派生运算,将得到的长度为klen的比特串KA发送到所述发起方控制中心;
所述响应方控制中心用于,将rB和G作为一组倍点运算数据发送到所述响应方倍点运算模块;根据x10=2w+[x1&(2w-1)]和x20=2w+[x2&(2w-1)]分别计算得到x10和x20;计算x20和rB的标量乘积x20·rB,根据tB=(dB+x20·rB)mod n计算tB;判断RA是否为所述椭圆曲线上的点;将x10和RA作为一组倍点运算数据发送到所述响应方倍点运算模块;计算h和tB的标量乘积h·tB;将PA和[x10]RA作为一组点加运算数据发送到所述响应方点加模块;将h·tB和(PA+[x10]RA)作为一组倍点运算数据发送到所述响应方倍点运算模块;判断V是否为无穷远点,其中V为对(PA+[x10]RA)进行h·tB倍点运算得到的点,所述点V的坐标为(xV,yV);将xV、yV、ZA和ZB拼接成的比特串Z’发送到所述响应方密钥派生模块;将响应方密钥派生模块返回的比特串KB作为响应方会话密钥输出;将RB发送到所述发起方控制中心;在判断出RA不为所述椭圆曲线上的点、V为无穷远点的情况之一时,输出协商失败的消息;
所述响应方随机数生成模块用于,将生成的1与(n-1)之间的随机数rB发送到所述响应方控制中心;
所述响应方倍点运算模块用于,对G进行rB倍点运算,得到坐标为(x2,y2)的点RB,并将RB发送到所述响应方控制中心;对RA进行x10倍点运算,将得到的[x10]RA发送到所述响应方控制中心;对(PA+[x10]RA)进行h·tB倍点运算,将得到的点V发送到所述响应方控制中心,所述点V的坐标为(xV,yV);
所述响应方点加模块用于,对PA和[x10]RA进行点加运算,将生成的(PA+[x10]RA)发送到所述响应方控制中心;
所述响应方密钥派生模块用于,对比特串Z’进行密钥派生运算,将得到的长度为klen的比特串KB发送到所述响应方控制中心;
其中,w为参数,&为按比特逻辑与运算符,mod为求模运算符。
2.根据权利要求1所述的***,其特征在于,该***进一步包括w生成模块,用于根据计算得到参数w,并将其分别发送到所述发起方控制中心和所述响应方控制中心。
3.根据权利要求1所述的***,其特征在于,所述发起方控制中心和响应方控制中心均包括:控制子模块、域转换子模块、蒙哥马利域乘法子模块;其中,
所述控制子模块用于,将需要进行标量乘运算的m和j二者在有限域的值发送到所述域转换子模块;将m和j各自在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将1与所述蒙哥马利域乘法子模块返回的mj发送到所述蒙哥马利域乘法子模块;
所述域转换子模块用于,将m和j二者在有限域的值分别转换为各自在蒙哥马利域的值返回所述控制子模块;
所述蒙哥马利域乘法子模块用于,对m和j各自在蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的乘积mj返回所述控制子模块;对mj与1进行蒙哥马利域乘法运算,得到m和j在有限域的值的标量乘积;将m和j在有限域的值的标量乘积返回所述控制子模块。
4.根据权利要求1所述的***,其特征在于,所述发起方倍点运算模块和响应方倍点运算模块均包括:倍点运算控制子模块、射影系二倍点运算子模块、域转换子模块、蒙哥马利域乘法子模块、有限域求逆子模块、射影系点加子模块;其中,
所述倍点运算控制子模块用于,接收由数值f和点C组成的一组倍点运算数据,将C在仿射坐标系下的坐标(xc,yc)转换为C在射影坐标系下的坐标(xc2,yc2,1),并将xc2、yc2、1发送到所述域转换子模块;将(xc3,yc3,zc3)发送到所述射影系点加子模块,并将其作为[f]C在蒙哥马利域的坐标(xc1,yc1,zc1)的初始值,其中的[f]C为对C进行f倍点运算的结果;确定f的二进制比特长度L;将f的二进制形式中的次高比特位作为其当前比特位的初始值,从所述f的二进制形式中的次高比特位开始,每次降低一个比特位作为当前比特位,直至其最低比特位为止,进行(L-1)次迭代运算;将所述(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的zc1发送到所述蒙哥马利域乘法子模块;将zc1在有限域的值发送到所述有限域求逆子模块;将zc1-1在有限域的值发送到所述域转换子模块;将所述(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的xc1、yc1以及zc1-1在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将1与xc1在仿射坐标系的值、1与yc1在仿射坐标系的值分别发送到蒙哥马利域乘法子模块;将xc1、yc1二者在有限域的值组成的坐标(xc1,yc1)作为[f]C的运算结果输出;其中的一次所述的迭代运算包括:将坐标(xc1,yc1,zc1)的当前值发送到所述射影系二倍点运算子模块、在f的当前比特位为二进制1的情况下,将所述射影系二倍点运算子模块返回的输出坐标发送到所述射影系点加子模块;
所述域转换子模块用于,将有限域的值xc2、yc2、1分别转换为各自在蒙哥马利域的值xc3、yc3、zc3,并将其返回所述倍点运算控制子模块;将zc1-1在有限域的值转换为其在蒙哥马利域的值,并将其返回所述倍点运算控制子模块;
所述射影系二倍点运算子模块用于,对输入坐标进行二倍点运算,将运算结果作为输出坐标返回至所述倍点运算控制子模块;
所述射影系点加子模块用于,将输入坐标与(xc3,yc3,zc3)进行点加运算,将运算结果发送到所述倍点运算控制子模块;
所述蒙哥马利域乘法子模块用于,对zc1在蒙哥马利域的值与1进行蒙哥马利域乘法运算,将得到的zc1在有限域的值发送到所述倍点运算控制子模块;对xc1与zc1-1在蒙哥马利域的值、yc1与zc1-1在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得到的xc1、yc1二者在仿射坐标系的值返回所述倍点运算控制子模块;将所述xc1、yc1二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的xc1、yc1二者在有限域的值返回到所述倍点运算控制子模块;
所述有限域求逆子模块用于,对zc1在有限域的值进行求逆运算,将得到的zc1-1在有限域的值发送到所述倍点运算控制子模块。
5.根据权利要求1所述的***,其特征在于,所述发起方点加模块和响应方点加模块均包括:点加控制子模块、域转换子模块、射影系点加子模块、蒙哥马利域乘法子模块、有限域求逆子模块;其中,
所述点加控制子模块用于,将接收的要进行点加运算的点PP1和PP2在仿射坐标系下的坐标(x11’,y11’)和(x12’,y12’)分别转换为各自在射影坐标系下的坐标(x11’,y11’,1)和(x12’,y12’,1),并将x11’、y11’、1和x12’、y12’、1发送到所述域转换子模块;将x111’、y111’、z111’组成的坐标(x111’,y111’,z111’)和x121’、y121’、z121’组成的坐标(x121’,y121’,z121’)发送到所述射影系点加子模块;将所述射影系点加子模块返回的坐标(x131’,y131’,z131’)中的z131’发送到所述蒙哥马利域乘法子模块;将所述蒙哥马利域乘法子模块返回的z131’在有限域的值发送到所述有限域求逆子模块;将z131'-1在有限域的值发送到所述域转换子模块;将坐标(x131’,y131’,z131’)中的x131’、y131’以及z131'-1在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将x131’在仿射坐标系的值与1、y131’在仿射坐标系的值与1分别发送到所述蒙哥马利域乘法子模块;将所述蒙哥马利域乘法子模块返回的x131’、y131’二者在有限域的值组成的坐标(x131’,y131’)作为PP1和PP2在仿射坐标系下进行点加运算的结果输出;
所述域转换子模块用于,分别将x11’、y11’、1和x12’、y12’、1在有限域的值转换为各自在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’,并将其返回所述点加控制子模块;将z131'-1在有限域的值转换为z131'-1在蒙哥马利域的值,并将其返回所述点加控制子模块;
所述射影系点加子模块用于,对输入的坐标(x111’,y111’,z111’)和(x121’,y121’,z121’)进行点加运算,将得到的坐标(x131’,y131’,z131’)返回所述点加控制子模块;
所述蒙哥马利域乘法子模块用于,对输入的z131’与1进行蒙哥马利域乘法运算,将得到的z131’在有限域的值发送到所述点加控制子模块;对x131’与z11'-1在蒙哥马利域的值、y131’与z11'-1在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得到的x131’、y131’二者在仿射坐标系的值返回所述点加控制子模块;对所述x131’、y131’二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的x131’、y131’二者在有限域的值返回所述点加控制子模块;
所述有限域求逆子模块用于,对输入的z131’在有限域的值进行求逆运算,将得到的z131'-1在有限域的值发送到所述点加控制子模块。
6.根据权利要求1所述的***,其特征在于,所述发起方密钥派生模块和响应方密钥派生模块均包括:密钥派生控制子模块、输出的杂凑值的长度为v比特的密码杂凑子模块;其中,
所述密钥派生控制子模块用于,接收输入比特串ZZ;设置32比特的计数变量ct的初始值为16进制表示的00000001;确定大于或等于(klen/v)的最小整数||klen/v||;循环变量i从1起递增至||klen/v||,每次递增1,执行||klen/v||次密码杂凑运算;在(klen/v)为整数的情况下,置Ha!||klen/v||=Ha||klen/v||;在(klen/v)不为整数的情况下,将Ha!||klen/v||置为比特串Ha||klen/v||中从最高比特位起的比特,其中的为小于或等于(klen/v)的最小整数;将i从1递增至(||klen/v||-1)的Hai以及Ha!||klen/v||顺次拼接,将得到的长度为klen比特的比特串作为对ZZ进行密钥派生运算的结果输出;其中,一次所述的密码杂凑运算包括:将ct的当前值与ZZ拼接为比特串ZZ-ct;将ZZ-ct发送到所述密码杂凑子模块;将所述密码杂凑子模块返回的Hv(ZZ-ct)赋值给v比特的Hai;ct的值增加16进制的00000001;
所述密码杂凑子模块用于,对输入比特串ZZ-ct进行密码杂凑运算,将输出的v比特的杂凑值Hv(ZZ-ct)返回所述密钥派生控制子模块。
7.根据权利要求1所述的***,其特征在于,该***进一步包括:上层复选模块;
所述发起方随机数生成模块和所述响应方随机数生成模块为同一个随机数生成模块;所述发起方倍点运算模块和所述响应方倍点运算模块为同一个倍点运算模块;所述发起方点加模块和所述响应方点加模块为同一个点加模块;所述发起方密钥派生模块和所述响应方密钥派生模块为同一个密钥派生模块;
所述发起方控制中心用于,向所述上层复选模块发送发起方占用信号;
所述响应方控制中心用于,向所述上层复选模块发送响应方占用信号;
所述上层复选模块用于,根据所述发起方占用信号,将所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块的工作模式置为发起方模式,使各模块分别具有所述发起方随机数生成模块、所述发起方倍点运算模块、所述发起方点加模块、所述发起方密钥派生模块的功能,并转发所述发起方控制中心与所述随机数生成模块、所述倍点运算模块、所述点加模块、所述密钥派生模块之间的通信数据;根据所述响应方占用信号将所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块的工作模式置为响应方模式,使各模块分别具有所述响应方随机数生成模块、所述响应方倍点运算模块、所述响应方点加模块、所述响应方密钥派生模块的功能,并转发所述响应方控制中心与所述随机数生成模块、所述倍点运算模块、所述点加模块、所述密钥派生模块之间的通信数据。
8.根据权利要求7所述的***,其特征在于,该***进一步包括下层复选模块;
该***包括:由所述发起方控制中心、响应方控制中心、倍点运算模块、点加模块所共用的域转换子模块、蒙哥马利域乘法子模块;由所述倍点运算模块、点加模块所共用的射影系点加子模块、有限域求逆子模块;
所述发起方控制中心还包括:发起方控制子模块;所述响应方控制中心还包括:响应方控制子模块;所述倍点运算模块还包括:倍点运算控制子模块、射影系二倍点运算子模块;所述点加模块还包括:点加控制子模块;
所述发起方控制子模块用于,向所述下层复选模块发送发起方控制子模块占用信号;将需要进行标量乘运算的两个有限域的值发送到所述域转换子模块;将所述域转换子模块返回的两个蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将1与所述蒙哥马利域乘法子模块返回的乘积发送到所述蒙哥马利域乘法子模块;
所述响应方控制子模块用于,向所述下层复选模块发送响应方控制子模块占用信号;将需要进行标量乘运算的两个有限域的值发送到所述域转换子模块;将所述域转换子模块返回的两个蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将1与所述蒙哥马利域乘法子模块返回的乘积发送到所述蒙哥马利域乘法子模块;
所述倍点运算控制子模块用于,向所述下层复选模块发送倍点运算控制子模块占用信号;接收由数值f和点C组成的一组倍点运算数据,将C在仿射坐标系下的坐标(xc,yc)转换为C在射影坐标系下的坐标(xc2,yc2,1),并将xc2、yc2、1发送到所述域转换子模块;将(xc3,yc3,zc3)发送到所述射影系点加子模块,并将其作为[f]C在蒙哥马利域的坐标(xc1,yc1,zc1)的初始值,其中的[f]C为对C进行f倍点运算的结果;确定f的二进制比特长度L;将f的二进制形式中的次高比特位作为其当前比特位的初始值,从所述f的二进制形式中的次高比特位开始,每次降低一个比特位作为当前比特位,直至其最低比特位为止,进行(L-1)次迭代运算;将所述(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的zc1发送到所述蒙哥马利域乘法子模块;将zc1在有限域的值发送到所述有限域求逆子模块;将zc1-1在有限域的值发送到所述域转换子模块;将所述(L-1)次迭代运算的结果坐标(xc1,yc1,zc1)中的xc1、yc1以及zc1-1在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将1与xc1在仿射坐标系的值、1与yc1在仿射坐标系的值分别发送到所述蒙哥马利域乘法子模块;将xc1、yc1二者在有限域的值组成的坐标(xc1,yc1)作为[f]C的运算结果输出;其中的一次所述的迭代运算包括:将坐标(xc1,yc1,zc1)的当前值发送到所述射影系二倍点运算子模块、在f的当前比特位为二进制1的情况下,将所述射影系二倍点运算子模块返回的输出坐标发送到所述射影系点加子模块;
所述射影系二倍点运算子模块用于,对输入坐标进行二倍点运算,将运算结果作为输出坐标返回至所述倍点运算控制子模块;
所述点加控制子模块用于,向所述下层复选模块发送点加控制子模块占用信号;将接收的要进行点加运算的点PP1和PP2在仿射坐标系下的坐标(x11’,y11’)和(x12’,y12’)分别转换为各自在射影坐标系下的坐标(x11’,y11’,1)和(x12’,y12’,1),并将x11’、y11’、1和x12’、y12’、1发送到所述域转换子模块;将x111’、y111’、z111’组成的坐标(x111’,y111’,z111’)和x121’、y121’、z121’组成的坐标(x121’,y121’,z121’)发送到所述射影系点加子模块;将所述射影系点加子模块返回的坐标(x131’,y131’,z131’)中的z131’发送到所述蒙哥马利域乘法子模块;将所述蒙哥马利域乘法子模块返回的z131’在有限域的值发送到所述有限域求逆子模块;将z131'-1在有限域的值发送到所述域转换子模块;将坐标(x131’,y131’,z131’)中的x131’、y131’以及z131'-1在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块;将x131’在仿射坐标系的值与1、y131’在仿射坐标系的值与1分别发送到所述蒙哥马利域乘法子模块;将所述蒙哥马利域乘法子模块返回的x131’、y131’二者在有限域的值组成的坐标(x131’,y131’)作为PP1和PP2在仿射坐标系下进行点加运算的结果输出;
所述下层复选模块用于,根据所述发起方控制子模块占用信号,将所述域转换子模块、蒙哥马利域乘法子模块的工作模式置为发起方控制子模块占用模式,并转发所述发起方控制子模块与所述域转换子模块、蒙哥马利域乘法子模块之间的通信数据;根据所述响应方控制子模块占用信号,将所述域转换子模块、蒙哥马利域乘法子模块的工作模式置为响应方控制子模块占用模式,并转发所述响应方控制子模块与所述域转换子模块、蒙哥马利域乘法子模块之间的通信数据;根据所述倍点运算控制子模块占用信号,将所述域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块的工作模式置为倍点运算控制子模块占用模式,并转发所述倍点运算控制子模块与所述域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块之间的通信数据;根据所述点加控制子模块占用信号,将所述域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块的工作模式置为点加控制子模块占用模式,并转发所述点加控制子模块与所述域转换子模块、蒙哥马利域乘法子模块、射影系点加子模块、有限域求逆子模块之间的通信数据;
所述域转换子模块用于,在所述发起方控制子模块占用模式下,将所述发起方控制子模块发送的所述两个有限域的值分别转换为各自在蒙哥马利域的值返回所述发起方控制子模块;在所述响应方控制子模块占用模式下,将所述响应方控制子模块发送的所述两个有限域的值分别转换为各自在蒙哥马利域的值返回所述响应方控制子模块;在所述倍点运算控制子模块占用模式下,将有限域的值xc2、yc2、1分别转换为各自在蒙哥马利域的值xc3、yc3、zc3,并将其返回所述倍点运算控制子模块;将zc1-1在有限域的值转换为其在蒙哥马利域的值,并将其返回所述倍点运算控制子模块;在所述点加控制子模块占用模式下,分别将x11’、y11’、1和x12’、y12’、1在有限域的值转换为各自在蒙哥马利域的值x111’、y111’、z111’和x121’、y121’、z121’,并将其返回所述点加控制子模块;将z131'-1在有限域的值转换为z131'-1在蒙哥马利域的值,并将其返回所述点加控制子模块;
所述蒙哥马利域乘法子模块用于,在所述发起方控制子模块占用模式下,对所述发起方控制子模块发送的两个蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的乘积返回所述发起方控制子模块;对1与发起方控制子模块发送的所述乘积进行蒙哥马利域乘法运算,将运算结果返回所述发起方控制子模块;在所述响应方控制子模块占用模式下,对所述响应方控制子模块发送的两个蒙哥马利域的值进行蒙哥马利域乘法运算,将得到的乘积返回所述响应方控制子模块;对1与响应方控制子模块发送的所述乘积进行蒙哥马利域乘法运算,将运算结果返回所述响应方控制子模块;在所述倍点运算控制子模块占用模式下,对zc1在蒙哥马利域的值与1进行蒙哥马利域乘法运算,将得到的zc1在有限域的值发送到所述倍点运算控制子模块;对xc1与zc1-1在蒙哥马利域的值、yc1与zc1-1在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得到的xc1、yc1二者在仿射坐标系的值返回所述倍点运算控制子模块;将所述xc1、yc1二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的xc1、yc1二者在有限域的值返回到所述倍点运算控制子模块;在所述点加控制子模块占用模式下,对输入的z131’与1进行蒙哥马利域乘法运算,将得到的z131’在有限域的值发送到所述点加控制子模块;对x131’与z11'-1在蒙哥马利域的值、y131’与z11'-1在蒙哥马利域的值分别进行蒙哥马利域乘法运算,将得到的x131’、y131’二者在仿射坐标系的值返回所述点加控制子模块;对所述x131’、y131’二者在仿射坐标系的值分别与1进行蒙哥马利域乘法运算,将得到的x131’、y131’二者在有限域的值返回所述点加控制子模块;
所述射影系点加子模块用于,在所述倍点运算控制子模块占用模式下,将输入坐标与(xc3,yc3,zc3)进行点加运算,将运算结果发送到所述倍点运算控制子模块;在所述点加控制子模块占用模式下,对输入的坐标(x111’,y111’,z111’)和(x121’,y121’,z121’)进行点加运算,将得到的坐标(x131’,y131’,z131’)返回所述点加控制子模块;
所述有限域求逆子模块用于,在所述倍点运算控制子模块占用模式下,对zc1在有限域的值进行求逆运算,将得到的zc1-1在有限域的值发送到所述倍点运算控制子模块;在所述点加控制子模块占用模式下,对输入的z131’在有限域的值进行求逆运算,将得到的z131'-1在有限域的值发送到所述点加控制子模块。
CN201110107526.6A 2011-04-27 2011-04-27 p元域SM2椭圆曲线密钥协商*** Active CN102761411B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110107526.6A CN102761411B (zh) 2011-04-27 2011-04-27 p元域SM2椭圆曲线密钥协商***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110107526.6A CN102761411B (zh) 2011-04-27 2011-04-27 p元域SM2椭圆曲线密钥协商***

Publications (2)

Publication Number Publication Date
CN102761411A CN102761411A (zh) 2012-10-31
CN102761411B true CN102761411B (zh) 2015-06-10

Family

ID=47055738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110107526.6A Active CN102761411B (zh) 2011-04-27 2011-04-27 p元域SM2椭圆曲线密钥协商***

Country Status (1)

Country Link
CN (1) CN102761411B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104601322A (zh) * 2013-10-31 2015-05-06 上海华虹集成电路有限责任公司 用于密码芯片中三元扩域的蒙哥马利阶梯算法
FR3024808B1 (fr) * 2014-08-05 2016-07-29 Inside Secure Procede de cryptographie sur courbe elliptique comprenant une detection d’erreur
CN108270563A (zh) * 2016-12-30 2018-07-10 航天信息股份有限公司 一种基于sm2加密算法的数据交换方法和***
CN113114462B (zh) * 2021-03-31 2022-10-04 南京航空航天大学 一种应用于ecc安全硬件电路的小面积标量乘电路

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101296072A (zh) * 2007-04-29 2008-10-29 四川虹微技术有限公司 一种椭圆曲线上的共享密钥产生方法
CN101610153A (zh) * 2008-06-20 2009-12-23 航天信息股份有限公司 基于椭圆曲线签名算法的电子签章认证方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101296072A (zh) * 2007-04-29 2008-10-29 四川虹微技术有限公司 一种椭圆曲线上的共享密钥产生方法
CN101610153A (zh) * 2008-06-20 2009-12-23 航天信息股份有限公司 基于椭圆曲线签名算法的电子签章认证方法

Also Published As

Publication number Publication date
CN102761411A (zh) 2012-10-31

Similar Documents

Publication Publication Date Title
CN102761415B (zh) p元域SM2椭圆曲线的数字签名生成、验证及混合***
CN102761413B (zh) p元域SM2椭圆曲线公钥密码算法的实现***
Law et al. An efficient protocol for authenticated key agreement
He et al. A pairing‐free certificateless authenticated key agreement protocol
Jeong et al. One-round protocols for two-party authenticated key exchange
Ohkubo et al. A length-invariant hybrid mix
WO2008151540A1 (fr) Procédé, système et dispositif pour générer une clé de groupe
CN109450640B (zh) 基于sm2的两方签名方法及***
Oliveira et al. Secure-TWS: Authenticating node to multi-user communication in shared sensor networks
Alkady et al. A new security protocol using hybrid cryptography algorithms
CN102761411B (zh) p元域SM2椭圆曲线密钥协商***
CN102761412A (zh) p元域SM2椭圆曲线公钥加密、解密与加解密混合***
Farouk et al. Efficient pairing-free, certificateless two-party authenticated key agreement protocol for grid computing
Jeng et al. An ECC-based blind signature scheme
Zhen et al. A lightweight encryption and authentication scheme for wireless sensor networks
Kumar et al. Anonymous ID-based Group Key Agreement Protocol without Pairing.
Biswas Diffie–Hellman technique: extended to multiple two-party keys and one multi-party key
Sui et al. An improved authenticated key agreement protocol with perfect forward secrecy for wireless mobile communication
Ammayappan et al. An ECC-Based Two-Party Authenticated Key Agreement Protocol for Mobile Ad Hoc Networks.
CN114785508B (zh) 一种异构认证密钥协商方法和***
Wahid et al. Implementation of certificateless signcryption based on elliptic curve using Javascript
WO2012116444A1 (en) Accelerated key agreement with assisted computations
CN114021165A (zh) 一种部分私公钥对构建方法、认证密钥协商方法及***
Swapna et al. An efficient pairing-free certificateless signcryption scheme with public verifiability
US9054861B2 (en) Enhanced key agreement and transport protocol

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant