发明名称 p元域SM2椭圆曲线密钥协商系统
摘要 本发明涉及一种p元域SM2椭圆曲线密钥协商系统。该系统包括:由控制本子系统内其他模块的工作时序、数据调用、判断密钥协商成功与否的发起方控制中心、生成随机数的发起方随机数生成模块、实现倍点运算的发起方倍点运算模块、实现点加运算的发起方点加模块、具有密钥派生功能的发起方密钥派生模块构成的发起方子系统;由控制本子系统内其他模块的工作时序、数据调用、判断密钥协商成功与否的响应方控制中心、生成随机数的响应方随机数生成模块、实现倍点运算的响应方倍点运算模块、实现点加运算的响应方点加模块、具有密钥派生功能的响应方密钥派生模块构成的响应方子系统。本发明能用硬件实现SM2椭圆曲线公钥密码算法中的密钥交换协议。
申请公布号 CN102761411A 申请公布日期 2012.10.31
申请号 CN201110107526.6 申请日期 2011.04.27
申请人 航天信息股份有限公司 发明人 徐树民;屈善新;刘振;王绍麟;田心;刘建巍
分类号 H04L9/30(2006.01)I;H04L9/08(2006.01)I 主分类号 H04L9/30(2006.01)I
代理机构 北京科龙寰宇知识产权代理有限责任公司 11139 代理人 孙皓晨
主权项 一种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为求模运算符。
地址 100195 北京市海淀区杏石口路甲18号