p元域SM2椭圆曲线公钥密码算法的实现系统技术方案

技术编号:7936721 阅读:343 留言:0更新日期:2012-11-01 07:11
本发明专利技术涉及p元域SM2椭圆曲线公钥密码算法的实现系统。该系统在主控模块的控制下,利用签名控制中心和验证控制中心来控制实现数字签名算法,利用发起方控制中心和响应方控制中心来控制实现密钥交换协议,利用加密方控制中心和解密方控制中心来控制实现公钥加密算法,利用s生成模块、随机数生成模块、倍点运算模块、点加模块、密钥派生模块实现算法中的基本运算,利用上层复选模块来实现模块的复用,从而减少硬件资源的使用。本发明专利技术能用硬件实现p元域SM2椭圆曲线公钥密码算法。

【技术实现步骤摘要】

本专利技术涉及信息安全
,特别是涉及P元域SM2椭圆曲线公钥密码算法的实现系统。
技术介绍
随着通信技术和信息处理技术的发展,信息在传输过程中的安全性越来越受到关注,需要通过信息处理技术来保证信息在通信过程中不被窃听、篡改和仿造。密码技术能很好的解决这方面的要求。自从1976年Diffie和Hellmann提出公钥密码体制的概念以来,出现了 3类公认的安全有效的公钥密码系统,其依赖的数学问题分别为整数因数分解问题(IFP)、离散对数问题(DLP)和椭圆曲线离散对数问题(ECDLP),对应的算法依次是RSA算法、DSA数字签名算法、椭圆曲线算法(ECC)。这三种问题均基于计算复杂性的NPC问题(Non-deterministicPolynomial Complete problem)来保证密钥的安全性的。相对于另外两种算法,ECC的安全性能更高、计算量更小,处理速度更快、在安全性相同的情况下所需要的密钥尺寸更小、对带宽的要求更低,因此,ECC体制具有更为广阔的应用前景。p元域SM2椭圆曲线公钥密码算法是国家密码管理局发布的一种ECC算法,其包括数字签名算法、密钥交换协议和公钥加密算法这三个相互独立的部分。其中,数字签名算法又包括数字签名生成算法和验证算法,适用于商用密码算法中的数字签名与验证,可满足多种密码应用中的身份认证和数据完整性、真实性的安全需求;密钥交换协议适用于商用密码应用中的密钥交换,可满足通信双方经过两次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥(或称会话密钥);公钥加密算法包括加密过程和解密过程,适用于商用密码应用中的信息加解密,加密方利用公钥对消息进行加密,解密方用对应的私钥进行解密,从而获取消息。p元域SM2椭圆曲线公钥密码算法已由国家密码管理局公布,但是,它公布的仅仅是该算法的流程,目前尚未出现任何硬件设备能实现该算法,因而现有技术难以将这种优秀的算法付诸应用。
技术实现思路
本专利技术所要解决的技术问题是提供p元域SM2椭圆曲线公钥密码算法的实现系统,能用硬件实现P元域SM2椭圆曲线公钥密码算法。本专利技术解决上述技术问题的技术方案如下一种p元域SM2椭圆曲线公钥密码算法的实现系统,所述椭圆曲线具有阶n、基G、余因子h ;所述p元域SM2椭圆曲线公钥密码算法中的数字签名算法包括公钥PA和私钥dA构成的公私密钥对;执行所述p元域SM2椭圆曲线公钥密码算法中的密钥交换协议的为发起方和响应方,发起方具有发起方公钥PAl和发起方私钥dAl构成的公私密钥对,响应方具有响应方公钥PBl和响应方私钥dBl构成的公私密钥对;发起方和响应方约定的会话密钥的长度为klen ;所述p元域SM2椭圆曲线公钥密码算法中的公钥加密算法包括公钥PB2和私钥db2构成的公私密钥对;该系统包括王控t旲块、解析t旲块、签名控制中心、验证控制中心、发起方控制中心、响应方控制中心、力口密方控制中心、解密方控制中心、s生成模块、上层复选模块、随机数生成模块、倍点运算模块、点加模块、密钥派生模块;其中,所述主控模块通过所述解析模块与所述签名控制中心、验证控制中心、发起方控制中心、响应方控制中心、加S方控制中心、解S方控制中心通彳目,包括向所述签名控制中心和验证控制中心分别发送数字签名命令和验证签名命令,向所述发起方控制中心和响应方控制中心发送密钥交换命令,向所述加密方控制中心和解密方控制中心分别发送加密命令和解密命令;接收所述签名控制中心输出的数字签名、所述验证控制中心输出的数字签名验证不通过的消息或数字签名验证通过的消息、所述发起方控制中心和响应方控制中心输出的发起方会话密钥、响应方会话密钥、协商成功的消息或协商失败的消息、所述加密方控制中心输出的加密因失败而结束的消息或密文、所述解密方控制中心输出的解密因失败 而结束的消息或明文;所述解析模块用于,解析所述数字签名命令和验证签名命令,并将其分别发送到所述签名控制中心和验证控制中心;解析所述密钥交换命令,并将其分别发送到发起方控制中心和响应方控制中心;解析所述加密命令和解密命令,并将其分别发送到所述加密方控制中心和解S方控制中心;将所述签名控制中心输出的数子签名、所述验证控制中心输出的数字签名验证不通过的消息或数字签名验证通过的消息、所述发起方控制中心和响应方控制中心输出的发起方会话密钥、响应方会话密钥、协商成功的消息或协商失败的消息、所述加密方控制中心输出的加密因失败而结束的消息或密文、所述解密方控制中心输出的解密因失败而结束的消息或明文转发给所述主控模块;所述签名控制中心用于,根据所述数字签名命令,与所述s生成模块、并通过所述上层复选模块与所述随机数生成模块、倍点运算模块交换数据,包括将待签名消息m与签名方杂凑值进行拼接,对得到的拼接消息m’进行密码杂凑运算,生成拼接消息杂凑值e ;通知所述随机数生成模块提供随机数k ;将G和k作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的运算结果(xl, yl);根据r = (e+xl)mod n计算得到r ;将r、k发送到所述s生成模块;在r = 0、r+k = n或s = 0的情况下,通知所述随机数生成模块重新生成并提供k ;将r和s作为m的数字签名输出;所述验证控制中心用于,根据所述验证签名命令,通过所述上层复选模块与所述倍点运算模块、点加模块交换数据,包括将接收的r’和s’作为接收的待验证消息M,的数字签名;判断r’和s’是否均在I与(n-1)之间;将,与签名方杂凑值进行拼接,对得到的验证方拼接消息0进行密码杂凑运算,生成验证方拼接消息杂凑值e’;根据t = (r' +s')mod n确定t,判断t是否为0;将s’和G作为一组倍点运算数据、t和PA作为另一组倍点运算数据分别发送到所述倍点运算模块,将所述倍点运算模块分别返回的点[s' ]G和点[t]PA作为一组点加运算数据发送到所述点加模块,并接收其返回的运算结果(xl',yl');根据R=(e' +xl' )mod n确定R,并判断R是否与r’相等;判断出r’不在I与(n-1)之间、s’不在I与(n-1)之间、t为O、R不等于r’中的任一情况时,输出数字签名验证不通过的消息,上述各情况均不出现时,输出数字签名验证通过的消息;所述发起方控制中心用于,根据所述密钥交换命令,与其他所述实现系统中的响应方控制中心、并通过所述上层复选模块与所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块交换数据,包括通知所述随机数生成模块提供随机数rA ;将rA和G作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的坐标为(xxl,yyl)的点RA,并将RA发送到其他所述实现系统中的响应方控制中心;根据xlO = 2W+ [xxl&(2W-1)]和x20 =2w+[xx2& (2W-1)]分别确定 xlO 和 x20,其中的 w=||(||logl/2)| 卜I ;根据 tA = (dAl+xlO -rA)mod n计算得到tA ;判断RB是否为所述椭圆曲线上的点;将x20和RB作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的点[x20]RB ^fPBl和[x20]RB作为一组点加运算数据发送到所述点加模块,接收其返回的点(PB+[x本文档来自技高网
...

【技术保护点】
一种p元域SM2椭圆曲线公钥密码算法的实现系统,所述椭圆曲线具有阶n、基G、余因子h;所述p元域SM2椭圆曲线公钥密码算法中的数字签名算法包括公钥PA和私钥dA构成的公私密钥对;执行所述p元域SM2椭圆曲线公钥密码算法中的密钥交换协议的为发起方和响应方,发起方具有发起方公钥PA1和发起方私钥dA1构成的公私密钥对,响应方具有响应方公钥PB1和响应方私钥dB1构成的公私密钥对;发起方和响应方约定的会话密钥的长度为klen;所述p元域SM2椭圆曲线公钥密码算法中的公钥加密算法包括公钥PB2和私钥db2构成的公私密钥对;其特征在于,该系统包括:主控模块、解析模块、签名控制中心、验证控制中心、发起方控制中心、响应方控制中心、加密方控制中心、解密方控制中心、s生成模块、上层复选模块、随机数生成模块、倍点运算模块、点加模块、密钥派生模块;其中,所述主控模块通过所述解析模块与所述签名控制中心、验证控制中心、发起方控制中心、响应方控制中心、加密方控制中心、解密方控制中心通信,包括:向所述签名控制中心和验证控制中心分别发送数字签名命令和验证签名命令,向所述发起方控制中心和响应方控制中心发送密钥交换命令,向所述加密方控制中心和解密方控制中心分别发送加密命令和解密命令;接收所述签名控制中心输出的数字签名、所述验证控制中心输出的数字签名验证不通过的消息或数字签名验证通过的消息、所述发起方控制中心和响应方控制中心输出的发起方会话密钥、响应方会话密钥、协商成功的消息或协商失败的消息、所述加密方控制中心输出的加密因失败而结束的消息或密文、所述解密方控制中心输出的解密因失败而结束的消息或明文;所述解析模块用于,解析所述数字签名命令和验证签名命令,并将其分别发送到所述签名控制中心和验证控制中心;解析所述密钥交换命令,并将其分别发送到发起方控制中心和响应方控制中心;解析所述加密命令和解密命令,并将其分别发送到所述加密方控制中心和解密方控制中心;将所述签名控制中心输出的数字签名、所述验证控制中心输出的数字签名验证不通过的消息或数字签名验证通过的消息、所述发起方控制中心和响应方控制中心输出的发起方会话密钥、响应方会话密钥、协商成功的消息或协商失败的消息、所述加密方控制中心输出的加密因失败而结束的消息或密文、所述解密方控制中心输出的解密因失败而结束的消息或明文转发给所述主控模块;所述签名控制中心用于,根据所述数字签名命令,与所述s生成模块、并通过所述 上层复选模块与所述随机数生成模块、倍点运算模块交换数据,包括:将待签名消息m与签名方杂凑值进行拼接,对得到的拼接消息m’进行密码杂凑运算,生成拼接消息杂凑值e;通知所述随机数生成模块提供随机数k;将G和k作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的运算结果(x1,y1);根据r=(e+x1)mod?n计算得到r;将r、k发送到所述s生成模块;在r=0、r+k=n或s=0的情况下,通知所述随机数生成模块重新生成并提供k;将r和s作为m的数字签名输出;所述验证控制中心用于,根据所述验证签名命令,通过所述上层复选模块与所述倍点运算模块、点加模块交换数据,包括:将接收的r’和s’作为接收的待验证消息M’的数字签名;判断r’和s’是否均在1与(n?1)之间;将M’与签名方杂凑值进行拼接,对得到的验证方拼接消息进行密码杂凑运算,生成验证方拼接消息杂凑值e’;根据t=(r′+s′)mod?n确定t,判断t是否为0;将s’和G作为一组倍点运算数据、t和PA作为另一组倍点运算数据分别发送到所述倍点运算模块,将所述倍点运算模块分别返回的点[s′]G和点[t]PA作为一组点加运算数据发送到所述点加模块,并接收其返回的运算结果(x1′,y1′);根据R=(e′+x1′)mod?n确定R,并判断R是否与r’相等;判断出r’不在1与(n?1)之间、s’不在1与(n?1)之间、t为0、R不等于r’中的任一情况时,输出数字签名验证不通过的消息,上述各情况均不出现时,输出数字签名验证通过的消息;所述发起方控制中心用于,根据所述密钥交换命令,与其他所述实现系统中的响应方控制中心、并通过所述上层复选模块与所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块交换数据,包括:通知所述随机数生成模块提供随机数rA;将rA和G作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的坐标为(xx1,yy1)的点RA,并将RA发送到其他所述实现系统中的响应方控制中心;根据x10=2w+[xx1&(2w?1)]和x20=2w+[xx2&(2w?1)]分...

【技术特征摘要】
1.一种P元域SM2椭圆曲线公钥密码算法的实现系统,所述椭圆曲线具有阶n、基G、余因子h ;所述p元域SM2椭圆曲线公钥密码算法中的数字签名算法包括公钥PA和私钥dA构成的公私密钥对;执行所述P元域SM2椭圆曲线公钥密码算法中的密钥交换协议的为发起方和响应方,发起方具有发起方公钥PAl和发起方私钥dAl构成的公私密钥对,响应方具有响应方公钥PBl和响应方私钥dBl构成的公私密钥对;发起方和响应方约定的会话密钥的长度为klen ;所述p元域SM2椭圆曲线公钥密码算法中的公钥加密算法包括公钥PB2和私钥db2构成的公私密钥对;其特征在于,该系统包括主控模块、解析模块、签名控制中心、验证控制中心、发起方控制中心、响应方控制中心、加密方控制中心、解密方控制中心、s生成模块、上层复选模块、随机数生成模块、倍点运算模块、点加模块、密钥派生模块;其中, 所述主控模块通过所述解析模块与所述签名控制中心、验证控制中心、发起方控制中心、响应方控制中心、加密方控制中心、解密方控制中心通信,包括向所述签名控制中心和 验证控制中心分别发送数字签名命令和验证签名命令,向所述发起方控制中心和响应方控制中心发送密钥交换命令,向所述加密方控制中心和解密方控制中心分别发送加密命令和解密命令;接收所述签名控制中心输出的数字签名、所述验证控制中心输出的数字签名验证不通过的消息或数字签名验证通过的消息、所述发起方控制中心和响应方控制中心输出的发起方会话密钥、响应方会话密钥、协商成功的消息或协商失败的消息、所述加密方控制中心输出的加密因失败而结束的消息或密文、所述解密方控制中心输出的解密因失败而结束的消息或明文; 所述解析模块用于,解析所述数字签名命令和验证签名命令,并将其分别发送到所述签名控制中心和验证控制中心;解析所述密钥交换命令,并将其分别发送到发起方控制中心和响应方控制中心;解析所述加密命令和解密命令,并将其分别发送到所述加密方控制中心和解S方控制中心;将所述签名控制中心输出的数子签名、所述验证控制中心输出的数字签名验证不通过的消息或数字签名验证通过的消息、所述发起方控制中心和响应方控制中心输出的发起方会话密钥、响应方会话密钥、协商成功的消息或协商失败的消息、所述加密方控制中心输出的加密因失败而结束的消息或密文、所述解密方控制中心输出的解密因失败而结束的消息或明文转发给所述主控模块; 所述签名控制中心用于,根据所述数字签名命令,与所述s生成模块、并通过所述上层复选模块与所述随机数生成模块、倍点运算模块交换数据,包括将待签名消息m与签名方杂凑值进行拼接,对得到的拼接消息m’进行密码杂凑运算,生成拼接消息杂凑值e ;通知所述随机数生成模块提供随机数k ;将G和k作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的运算结果(xl, yl);根据r = (e+xl)mod n计算得到r ;将r、k发送到所述s生成模块;在r = 0、r+k = n或s = O的情况下,通知所述随机数生成模块重新生成并提供k ;将r和s作为m的数字签名输出; 所述验证控制中心用于,根据所述验证签名命令,通过所述上层复选模块与所述倍点运算模块、点加模块交换数据,包括将接收的r’和s’作为接收的待验证消息M,的数字签名;判断r’和s’是否均在I与(n-1)之间;将,与签名方杂凑值进行拼接,对得到的验证方拼接消息W进行密码杂凑运算,生成验证方拼接消息杂凑值e’;根据t = (r' +s' )modn确定t,判断t是否为O ;将S,和G作为一组倍点运算数据、t和PA作为另一组倍点运算数据分别发送到所述倍点运算模块,将所述倍点运算模块分别返回的点[s' ]G和点[t]PA作为一组点加运算数据发送到所述点加模块,并接收其返回的运算结果(Xl',yl');根据R=(e' +xl' )mod n确定R,并判断R是否与r’相等;判断出r’不在I与(n-1)之间、s’不在I与(n-1)之间、t为O、R不等于r’中的任一情况时,输出数字签名验证不通过的消息,上述各情况均不出现时,输出数字签名验证通过的消息; 所述发起方控制中心用于,根据所述密钥交换命令,与其他所述实现系统中的响应方控制中心、并通过所述上层复选模块与所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块交换数据,包括通知所述随机数生成模块提供随机数rA ;将rA和G作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的坐标为(xxl,yyl)的点RA,并将RA发送到其他所述实现系统中的响应方控制中心;根据xlO = 2w+[xxl&(2w-l)]和x20 =2w+[xx2& (2W-1)]分别确定 xlO 和 x20,其中的 w=||(||logj/2)| 卜I ;根据 tA = (dAl+xlO -rA)mod n计算得到tA ;判断RB是否为所述椭圆曲线上的点;将x20和RB作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的点[x20]RB ^fPBl和[x20]RB作为一组点加运算数据发送到所述点加模块,接收其返回的点(PB+[x20]RB) ^h*tA和(PB+[x20]RB)作为一组倍点运算数据发送到所述倍点运算模块,判断其返回的坐标为(xU,yU)的点U是否 为无穷远点JfxU、yU、发起方杂凑值ZA和响应方杂凑值ZB拼接成的比特串Z与长度klen作为一组密钥派生数据发送到所述密钥派生模块,将其返回的比特串KA作为发起方会话密钥输出,并输出协商成功的消息;在判断出RB不为所述椭圆曲线上的点、U为无穷远点的情况之一时,输出协商失败的消息; 所述响应方控制中心用于,根据所述密钥交换命令,与其他所述实现系统中的发起方控制中心、并通过所述上层复选模块与所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块交换数据,包括通知所述随机数生成模块提供随机数rB ;将rB和G作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的坐标为(xx2,yy2)的点RB ;根据xlO = 2w+[xxl&(2w-l)]和 x20 = 2w+[xx2&(2w-l)]分别计算得到 xlO 和 x20 ;根据 tB =(dBl+x20 rB)mod n计算tB ;判断RA是否为所述椭圆曲线上的点;将xlO和RA作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的点[xlO]RA;将点PAl和点[xlO]RA作为一组点加运算数据发送到所述点加模块,接收其返回的点(PA+[xlO]RA)和(PA+[xlO]RA)作为一组倍点运算数据发送到所述倍点运算模块,判断其返回的坐标为(xV,yV)的点V是否为无穷远点;将xV、yV、发起方杂凑值ZA和响应方杂凑值ZB拼接成的比特串V与长度klen作为一组密钥派生数据发送到所述密钥派生模块,将其返回的比特串KB作为响应方会话密钥输出;将RB发送到其他所述实现系统中的发起方控制中心;在判断出RA不为所述椭圆曲线上的点、V为无穷远点的情况之一时,输出协商失败的消息;所述加密方控制中心用于,根据所述加密命令,通过所述上层复选模块与所述随机数生成模块、倍点运算模块、密钥派生模块交换数据,包括接收长度为klenl比特的待加密消息M ;通知所述随机数生成模块提供随机数k ;将k和点G作为一组倍点运算数据发送到所述倍点运算模块,接收其返回的点Cl ;将点Cl转换为比特串Cl ;将余因子h和点PB作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的点S ;判断S是否为无穷远点,在判断结果为是的情况下输出本次加密因失败而结束的消息和点PB2作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的点的坐标(x2,y2);将12和y2拼接为比特串x2_y2 ;将标量klenl与比特串x2_y2作为一组密钥派生数据发送到所述密钥派生模块,并接收其返回的比特串tl ;判断tl是否为全O比特串,在判断结果为是的情况下,通知所述随机数生成模块重新生成随机数k,在判断结果为否的情况下,对M与tl进行按位异或运算,得到比特串C2 Jfx2、M和y2拼接而成的比特串x2_M-y2进行密码杂凑运算,生成杂凑值C3 ;将比特串C1、C2和C3拼接为新的比特串C1-C2-C3,并将其作为密文C输出;所述解密方控制中心用于,根据所述解密命令,通过所述上层复选模块与所述倍点运算模块、密钥派生模块交换 数据,包括接收形式为由Cl’、C2’、C3’拼接而成的比特串Cl’ -C2’ -C3’的待解密的密文C’,其中的比特串Cl’与所述比特串Cl对应,比特串C2’与所述比特串C2对应且其长度为klenl比特,比特串C3’与所述比特串C3对应;从(’中取出比特串Cl’,并将其转换为点Cl’;判断点Cl’的坐标是否满足所述椭圆曲线的方程,在判断结果为是的情况下,将余因子h和点Cl’作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的点S’ ;判断S’是否为无穷远点,在判断结果为否的情况下,将私钥dB2和点Cl’作为一组倍点运算数据发送到所述倍点运算模块,并接收其返回的点的坐标(x2’,y2’),将x2’、y2’拼接而成的比特串x2’ -y2’与标量klenl作为一组密钥派生数据发送到所述密钥派生模块,并接收其返回的比特串tl’ ;判断tl’是否为全O比特串,在判断结果为否的情况下,从C’中取出比特串C2’;对C2’和tl’进行按位异或运算,得到比特串Ml’;对比特串x2’ -Ml’ -y2’进行密码杂凑运算,得到杂凑值u ;从C’中取出比特串03’;判断11是否与C3’相等,在判断结果为是的情况下,将Ml’作为C’对应的明文输出;在点Cl’的坐标不满足所述椭圆曲线的方程、S’为无穷远点、tl’为全O比特串、u不等于C3’中的任一种情况发生时,输出解密因失败而结束的消息; 所述s生成模块用于,根据s = [(1+dAr1 (k-r dA)]mod n生成s,将生成的s发送到所述签名控制中心; 所述上层复选模块为所述签名控制中心与所述随机数生成模块、倍点运算模块之间,所述验证控制中心与所述倍点运算模块、点加模块之间,所述发起方控制中心与所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块之间,所述响应方控制中心与所述随机数生成模块、倍点运算模块、点加模块、密钥派生模块之间,所述加密方控制中心与所述随机数生成模块、倍点运算模块、密钥派生模块之间,以及所述解密方控制中心与所述倍点运算模块、密钥派生模块之间的数据转发模块; 所述随机数生成模块用于,生成I与(n-1)之间的随机数并通过所述上层复选模块转发; 所述倍点运算模块用于,对倍点运算数据中的点进行其中的标量倍点运算,将运算结果通过所述上层复选模块转发; 所述点加模块用于,对所述点加运算数据中的两个点的坐标进行点加运算,将运算结果通过所述上层复选模块转发; 所述密钥派生模块用于,对密钥派生数据中的比特串进行密钥派生运算,将得到的长度为密钥派生数据中的标量的比特串通过所述上层复选模块转发。2.根据权利要求I所述的系统,其特征在于,该系统还包括w生成模块,用于根据w =II (II log〗 11/2) Il -I计算得到参数W,并将其分别发送到所述发起方控制中心和所述响应方控制中心。3.根据权利要求I所述的系统,其特征在于,所述s生成模块包括s生成控制子模块、域转换子模块、蒙哥马利域乘法子模块、有限域求逆子模块;其中, 所述S生成控制子模块用于,接收所述签名控制中心发送的r和k在有限域的值;将d+dA)在有限域的值发送到所述有限域求逆子模块,接收其返回的(1+dAr1在有限域的值;将r、dA、(1+dAr1和k各自在有限域的值分别发送到所述域转换子模块,接收其返回的r、dA、(1+dAr1和k各自在蒙哥马利域的值;将r和dA各自在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块,用k在蒙哥马利域的值与其返回的(r dA)在蒙哥马利域的值进行减法运算,得到(k-r MA)在蒙哥马利域的值;将(1+dAr1和(k-r MA)各自在蒙哥马利域的值发送到所述蒙哥马利域乘法子模块,将其返回的[(1+dAr1 (k-r-dA)]在仿射坐标系的值与I发送到所述蒙哥马利域乘法子模块,接收其返回的s = [(1+dAr1 (k-r dA)]mod n在有限域的值s ;将s = [ (1+dA) (k-r *dA)]mod n在有限域的值s发送到所述签名控制中心; 所述域转换子模块用于,将输入的有限域的数值转换为其在蒙哥马利域的值,输出到所述s生成控制子模块; 所述蒙哥马利域乘法子模块用于,对输入的两个蒙哥马利域的数值进行蒙哥马利域乘法运算,将得到的运算结果输出到所述s生成控制子模块; 所述有限域求逆子模块用于,对输入的有限域的值进行求逆运算,将得到的运算结果输出到所述S生成控制子模块。4.根据权利要求I所述的系统,其特征在于,所述倍点运算模块包括倍点运算控制子模块、射影系二倍点运算子模块、域转换子模块、蒙哥马利域乘法子模块、有限域求逆子模块、射影系点加子模块;其中, 所述倍点运算控制子模块用于,从所述上层复选模块接收倍点运算数据,所述倍点运算数据包括标量f和点D ;将D在仿射坐标系下的坐标(xd,yd)转换为D在射影坐标系下的坐标(xd2, yd2,1),并将xd2、yd2、l分别发送到所述域转换子模块,接收其返回的xd2、yd2、l在蒙哥马利域的值xd3、yd3、zd3 ;将(xd3, yd3, zd3)作为倍点运算结果[f]D在蒙哥马利域的坐标(xdl, ydl, zdl)的初始值;确定f的二进制比特长度L ;将f的二进制形式中的次高比特位作为其当前比特位的初始值,从所述f 的二进制形式中的次高比特位起,每次降低一个比特位作为当前比特位,直至其最低比特位为止,进行(L-I)次迭代运算;将所述(L-I)次迭代运算的结果坐标(Xdl,ydl,zdl)中的zdl与I发送到所述蒙哥马利域乘法子模块,接收其返回的zdl在有限域的值;将zdl在有限域的值发送到所述有限域求逆子模块,接收其返回的zdl—1在有限域的值;将zdl—1在有限域的值发送到所述域转换子模块,接收其返回的Zdr1在蒙哥马利域的值;将所述(L-I)次迭代运算的结果坐标(xdl,ydl,zdl)中的xdl、ydl分别与zdl—1在蒙哥马利域的值一同发送到所述蒙哥马利域乘法子模块,分别接收其返回的xdl、ydl 二者在仿射坐标系的值;将I与xdl在仿射坐标系的值、I与ydl在仿射坐标系的值分别发送到蒙哥马利域乘法子模块,分别接收其返回的xdl、ydl 二者在有限域的值;将xdl、ydl 二者在有限域的值组成的坐标(xdl,ydl)作为[f]D的运算结果输出到所述上层复选模块转发;其中的一次所述的迭代运算包括将坐标(xdl,ydl, zdl)的当前值发送到所述射影系二倍点运算子模块、在f的当前比特位为二进制I的情况下,将所述射影系二倍点运算子模块返回的输出坐标与坐标(xd3,yd3,zd3)发送到所述射影系点加子模块;所述射影系二倍点运算子模块用于,对输入坐标进行二倍点运算,将运算结果作为输出坐标返回至所述倍点运算控制子模块; 所述域转换子模块用于,将输入的有限域的数值转换为其在蒙哥马利域的值,输出到所述倍点运算控制子模块; 所述蒙哥马利域乘法子模块用于,对输入的两个蒙哥马利域的数值进行蒙哥马利域乘法运算,将得到的运算结果输出到所述倍点运算控制子模块; 所述有限域求逆子模块用于,对输入的有限域的值进行求逆运算,将得到的运算结果输出到所述倍点运算控制子模块; 所述射影系点加子模块用于,对输入的两个点的坐标进行点加运算,将得到的新的坐标返回所述倍点运算控制子模块。5.根据权利要求I所述的系统,其特征在于,所述点加模块包括点加控制子模块、域转换子模块、射影系点加子模块、蒙哥马利域乘法子模块、有限域求逆子模块;其中, 所述点加控制子模块用于,从所述上层复选模块接收点加数据,所述点加数据包括点PPl和点PP2;将点PPl和PP2在仿射坐标系下的坐标(xll’,yir )和(xl2’,yl2’ )分别转换为各自在射影坐标系下的坐标(xir,yll’,l)和(xl2’,yl2’,l),并将xir、yll’、l和xl2’、yl2’、l分别发送到所述域转换子模块,接收其返回的xir、yll’、l和xl2’、yl2’、l各自在蒙哥马利域的值xiir、yiir、ziir 和 xi2i’、yi2r、zi2i’ ;将 xiir、yiir、ziir组成的坐标(xlll,,ylir, Zlir )和 xl21’、yl21’、zl21’ 组成的坐标(xl21,,yl21’,Z12V)发送到所述射影系点加子模块,将其返回的坐标(X13r,yl31’,Z13r)中的Z131’与I发送到所述蒙哥马利域乘法子模块,将其返回的Z131’在有限域的值发送到所述有限域求逆子模块,接收其返回的Z131' -1在有限域的值;将Z131' ―1在有限域的值发送到所述域转换子模块,接收其返回的Z131' ―1在蒙哥马利域的值;将坐标(X13r,yl31’,Z13r)中的X131’、yl31’分别与zl31' ―1在蒙哥马利域的值一起发送到所述蒙哥马利域乘法子模块,接收其返回的xl31’、yl31’ 二者在仿射坐标系的值;将xl31’在仿射坐标系的值与I、yl31’在仿射坐标系的值与I分别发送到所述蒙哥马利域乘法子模块,将其返回的xl31’、yl31’二者在有限域的值组成的坐标(X131’,yl31’)作为PPl和PP2点加运算的结果输出到所述上层复选模块转发; 所述域转换子模块用于,将输入的有限域的数值转换为其在蒙哥马利域的值,输出到所述点加控制子模块; 所述射影系点加子模块用于,对输入的两个点的坐标进行点加运算,将得到的新的坐标返回所述点加控制子模块; 所述蒙哥马利域乘法子模块用于,对输入的两个蒙哥马利域的数值进行蒙哥马利域乘法运算,将得到的运算结果输出到所述点加控制子模块块; 所述有限域求逆子模块用于,对输入的有限域的值进行求逆运算,将得到的运算结果输出到所述点加控制子模块。6.根据权利要求I所述的系统,其特征在于,所述密钥派生模块包括密钥派生控制子模块、输出V比特的杂凑值的密码杂凑子模块;其中, 所述密钥派生控制子模块用于,从所述上层复选模块接收密钥派生数据,所述密钥派生数据包括标量kk和比特串ZZ ;设置32比特的计数变量ct的初始值为16进制表示的·00000001 ;确定大于或等于(kk/v)的最小整数I |kk/v| | ;循环变量i从I起递增至I I kk/v| I,每次增加1,执行I |kk/V| I次密码杂凑运算;在(kk/v)为整数的情况下,置Ha ! |kk/Vl = HaNkk/vM ;在(kk/v)不为整数的情况下,将Ha ! ||kk/v||置为比特串Ha||kk/v||中从最高比特位起的(狀-vxLM/v」)比特,其中的[M/V」为小于或等于(kk/v)的最小整数;将i从I递增至(I kk/v I I I)的Hai以及Ha ! | |kk/v| i顺次拼接,将得到的长度为kk比特的比特串作为对ZZ进行密钥派生运算的结果输出至所述上层复选模块转发;其中,一次所述的密码杂凑运算包括将ct的当前值与ZZ拼接为比特串ZZ-ct ;将ZZ-ct和标量V作为一组密码杂凑数据发送到所述密码杂凑子模块,将其返回的Hv(ZZ-Ct)赋值给Hai ;ct的值增加16进制的 00000001 ; 所述密码杂凑子模块用于,对接收的密码杂凑数据中的比特串进行密码杂凑运算,将输出的长度为密码杂凑数据中的标量比特的杂凑值返回所述密钥派生控制子模块。7.根据权利要求I所述的系统,其特征在于,所述解析模块为译码器。8.—种p元域SM2椭圆曲线公钥密码算法的实现系统,所述椭圆曲线具有阶n、基G、余因子h ;所述p元域SM2椭圆曲线公钥密码算法中的数字签名算法包括公钥PA和私钥dA构成的公私密钥对;执行所述P元域SM2椭圆曲线公钥密码算法中的密钥交换协议的为发起方和响应方,发起方具有发起方公钥PAl和发起方私钥dAl构成的公私密钥对,响应方具有响应方公钥PBl和响应方私钥dBl构成的公私密钥对;发起方和响应方约定的会话密钥的长度为klen ;所述p元域SM2椭圆曲...

【专利技术属性】
技术研发人员:徐树民屈善新刘振王绍麟田心刘建巍
申请(专利权)人:航天信息股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1