[发明专利]一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统在审
申请号: | 201710481583.8 | 申请日: | 2017-06-22 |
公开(公告)号: | CN107425968A | 公开(公告)日: | 2017-12-01 |
发明(设计)人: | 王丽雪;熊晓明 | 申请(专利权)人: | 广东工业大学 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;H04L9/30 |
代理公司: | 广东广信君达律师事务所44329 | 代理人: | 杨晓松 |
地址: | 510062 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统,在SM2控制模块的控制下,通过与加密控制模块和解密控制模块进行通信,并调用随机数生成模块、点乘运算模块、比特串转换模块、密钥派生模块、密码杂凑模块、异或运算模块来实现加密消息和解密密文。本发明的SM2椭圆曲线和算法均是定义在二进制域F2m上的,有利于SM2椭圆曲线加密算法的硬件实现,运行速率较快。本发明中点乘运算为先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法运算,减少了运算时所占用的存储空间,加快了运算速度,增强了系统抵抗时间分析攻击和能量分析攻击的能力,提高了系统的安全性。 | ||
搜索关键词: | 一种 二进制 f2m sm2 椭圆 曲线 加密算法 实现 系统 | ||
【主权项】:
一种二进制域F2m下的SM2椭圆曲线公钥加密算法的实现系统,其特征在于:包括SM2控制模块、加密控制模块、解密控制模块、随机数生成模块、点乘运算模块、比特串转换模块、密钥派生模块、密码杂凑模块、异或运算模块;所述SM2控制模块:用于与加密控制模块和解密控制模块进行通信,向加密控制模块发送进行消息加密的命令,向解密控制模块发送进行消息解密的命令,同时接收加密控制模块加密成功后返回的密文、加密失败后返回的报错信息,接收解密控制模块解密成功后返回的明文,解密失败后返回的报错信息;所述加密控制模块:用于在收到SM2控制模块发送的进行消息加密的命令后,与随机数生成模块、点乘运算模块、比特串转换模块、密钥派生模块、异或运算模块、密码杂凑模块进行通信;用户A接收要进行加密的消息M,M的长度为klen比特;向随机数生成模块发送命令,通知随机数生成模块生成随机数k∈[1,n‑1];通过点乘运算模块,先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法对椭圆曲线的基点G和k进行点乘运算,得到椭圆曲线点C1=[k]G=(x1,y1);通过比特串转换模块将点C1转换为比特串C1;通过点乘运算模块,先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法对基点G的阶n的余因子h和用户B的公钥PB进行点乘运算,得到椭圆曲线点S=[h]PB;检验点S是否为无穷远点,若S为无穷远点,则报错并退出,若S不是无穷远点,则通过点乘运算模块,先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法对随机数k和用户B的公钥PB进行点乘运算,得到椭圆曲线点[k]PB=(x2,y2);通过比特串转换模块将点(x2,y2)转换为比特串;拼接比特串x2和y2,得到比特串x2||y2;将比特串x2||y2和整数klen输入到密钥派生模块,得到长度为klen的密钥数据比特串t;检验t是否为全为0的比特串;若t为全为0的比特串,则通知随机数生成模块重新产生随机数k∈[1,n‑1];若t不是全为0的比特串,则通过异或运算模块计算拼接比特串x2、M和y2,得到比特串x2||M||y2;通过密码杂凑模块对比特串x2||M||y2进行密码杂凑运算,得到杂凑值C3;拼接比特串C1、C2和C3,得到密文C=C1||C2||C3;所述解密控制模块:用于在收到SM2控制模块发送的进行消息解密的命令后,与点乘运算模块、比特串转换模块、密钥派生模块、异或运算模块、密码杂凑模块进行通信:接收用户A加密成功的密文C=C1||C2||C3,从C中取出比特串C1;通过比特串转换模块将比特串C1转换为点C1,检验点C1是否满足椭圆曲线方程;若C1不满足椭圆曲线方程,则报错并退出;若C1满足椭圆曲线方程,则通过点乘运算模块,先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法对基点G的阶n的余因子h和C1进行点乘运算,得到椭圆曲线点S’=[h]C1;检验点S’是否为无穷远点,若S’为无穷远点,则报错并退出,若S’不是无穷远点,则通过点乘运算模块,先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法对用户B的私钥dR和C1进行点乘运算,得到椭圆曲线点[dB]C1=(x2’,y2’);通过比特串转换模块将点(x2’,y2’)转换为比特串;拼接比特串x2’和y2’,得到比特串x2’||y2’;将比特串x2’||y2’和整数klen输入到密钥派生模块,得到长度为klen的密钥数据比特串t’;检验t’是否为全为0的比特串;若t’为全为0的比特串,则报错并退出;若t’不是全为0的比特串,则从密文C中取出比特串C2;通过异或运算模块计算拼接比特串x2’、M’和y2’,得到比特串x2’||M’||y2’;通过密码杂凑模块对比特串x2’||M’||y2’进行密码杂凑运算,得到杂凑值u;从密文C中取出比特串C3;检验u=C3是否成立;若u≠C3,则报错并退出;若u=C3,则输出解密后的明文M’;所述随机数生成模块:用于生成1到(n‑1)范围内的随机数k;所述点乘运算模块:用于计算C1=[k]G=(x1,y1);计算S=[h]PB;计算[k]PB=(x2,y2);计算S’=[h]C1;计算[dB]C1=(x2’,y2’);点乘运算为先将椭圆曲线方程转换为标准投影坐标下的方程,再采用蒙哥马利(Montgomery)点乘算法进行点乘运算;所述比特串转换模块:用于将椭圆曲线上的点转换为与之相对应的比特串,将比特串转换为椭圆曲线上与之相对应的点;所述密钥派生模块:用于对比特串x2||y2和整数klen进行密钥派生运算,得到长度为klen的密钥数据比特串t;对比特串x2’||y2’和整数klen进行密钥派生运算,得到长度为klen的密钥数据比特串t’;所述密码杂凑模块:用于通过使用SM3密码杂凑算法,求得比特串x2||M||y2的杂凑值C3,求得比特串x2’||M’||y2’的杂凑值u;所述异或运算模块:用于计算
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东工业大学,未经广东工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710481583.8/,转载请声明来源钻瓜专利网。