[发明专利]一种基于四基二进制底层模运算的快速加密系统有效
申请号: | 201910548928.6 | 申请日: | 2019-06-24 |
公开(公告)号: | CN110493003B | 公开(公告)日: | 2021-08-17 |
发明(设计)人: | 胡恩;熊晓明;黄宏敏;张明森 | 申请(专利权)人: | 广东工业大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L29/06 |
代理公司: | 广东广信君达律师事务所 44329 | 代理人: | 杨晓松 |
地址: | 510062 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 二进制 底层 运算 快速 加密 系统 | ||
1.一种基于四基二进制底层模运算的快速加密系统,其特征在于,包括用于实现系统的签名验签和加解密功能的协议层,以及用于实现曲线域算术和素数域模运算的运算层,其中:所述的运算层包括标量乘模块,标量乘模块上连接有用于进行杂凑运算的SM3模块、用于产生随机数的随机数发生器,标量乘模块包括点加模块和倍点模块,用于实现模逆、模乘和模加减运算;所述的系统工作方式如下:
(1)对于发送方
发送选择需要使用的功能,如选择对数据通信进行签名,则执行步骤10;如选择对通信数据进行加密,则执行步骤20:
选择签名方式的流程如下:
步骤10,发送方将私钥和待签名消息输入系统;
步骤11,系统调用随机数发生器产生256位的随机数K;
步骤12,检测随机数K是否符合加密要求,即判断K是否满足
1≤K≤n-1;如不满足则通过随机数发生器重新产生随机数K;其中,n表示椭圆曲线基点G的阶;
步骤13,将符合加密要求的随机数K发送给标量乘模块,计算标量乘
[K]G;其中G表示椭圆曲线的基点;同时,发送方需要签名的消息传递至SM3模块进行杂凑运算;
标量乘模块运算完毕后返回的结果是一个点的坐标,记为(x1,y1);SM3模块运算后返回的是一个比特串u;
步骤14,计算r=x1 mod n,然后判断r是否为0,如果为0,则说明随机数K不符合要求,则重新生成随机数K并执行步骤12至步骤14;如果r不为0,则说明签名计算正确;
步骤15,通过标量乘模块计算s=K*(u+r*dA)mod n,其中dA表示发送方的私钥;
步骤16,判断s是否为0,如果为0则随机数K仍然不符合要求,重新生成随机数K并执行步骤12至步骤16;如果s不为0,则表明签名计算正确,得到签名数据(r,s)并将签名数据发送给接收方用于数据验证;
选择加密方式的流程如下:
步骤20,发送方将公钥和待加密的消息输入系统;
步骤21、步骤22同步骤11、步骤12;
步骤23,将符合加密要求的随机数K发送给标量乘模块计算标量乘[K]G;其中G表示椭圆曲线的基点,标量乘计算完毕后得到结果C1=(x1,y1),然后继续计算标量乘[K]PB,其中PB表示公钥;标量乘[K]PB的结果为一个点的坐标,记为s=(x2,y2);
步骤24,计算C2=M异或x2,其中M表示待加密的消息;然后将(C1,C2)作为密文发送给接收方;
(2)对于接收方
接收方选择需要使用的功能,如选择对通信数据进行验证,则执行步骤30,如选择对通信数据进行解密,则执行步骤40:
选择验证模式的流程如下:
步骤30,接收方将公钥PA、来自于发送方的签名数据(r,s)、消息M输入到系统中;
步骤31,系统判断签名数据(r,s)是否合法,即是否满足1≤r≤n-1,1≤s≤n-1;如r或s任意一个不满足,则判断签名不能通过,并发出错误警告;如签名合法,则进行下一步;
步骤32,将M传递给SM3模块计算杂凑值,同时利用标量乘模块计算s的逆;计算完成后,得到杂凑值e和逆值u,然后分别计算e*u得到结果t1,计算r*u得到结果t2;
步骤33,将t1、t2传递给标量乘模块,计算标量乘[t1]G和标量乘[t2]PA;将两个标量乘的结果相加得到结果(x1,y1),判断(x1,y1)是否为0,若是,则验证不通过,发出错误警告;若否,则进行下一步;
步骤34,计算R=x1 mod n,并判断R与r是否相等,是则验证通过,系统给出提示“此消息来自目标发送方”;否则验证失败,即发出错误警告“此消息被破坏,或者来自未知的第三方”;
选择解密模式的流程如下:
步骤40,接收方将来自于发送方的密文(C1,C2)以及私钥dB输入系统;
步骤41,将私钥dB传递给标量乘模块,计算标量乘[dB]C1,计算结果为一个坐标(x,y);
步骤42,判断x,y是否同时为0,如果是则发出提示信息:“解密失败”,如果否,则计算C2异或x,得到的结果即消息M,将消息M输出;
所述的标量乘模块在进行四基二进制模运算的模乘运算中,采用4个256位加法器,两个移位寄存器,以及若干选择器;
当计算a*b开始时,乘数b存入寄存器s1中,s1向左移动两位,通过加法器和选择器的配合求得2*s1 mod p,p为素数;继续将结果左移两位,并且再次通过加法器和选择器的组合求得4*s1 mod p;通过判断b,即s1的最高两位是00,01,10,或者11来确定接下来的加数是0,a,a1或者a2,其中a1=2a mod p,a2=3a mod p;得到加法结果后判断乘数b是否已全部移出寄存器s1,是则返回此时的加法结果,此结果即为a*b的模乘结果,乘法运算完毕;若乘数b仍未完全移出寄存器s1,则继续下次循环。
2.如权利要求1所述的基于四基二进制底层模运算的快速加密系统,其特征在于,所述的标量乘模块在进行四基二进制模运算的模逆运算中,采用四个寄存器REG_U,REG_V,REG_G1,REG_G2,两个加/减法器计算单元DFAS_1、DFAS_2以及控制整个模逆的计算流程控制单元;
模逆运算初始化时,寄存器REG_U,REG_V,REG_G1,REG_G2,分别被赋值操作数A,模数P,0,1,加/减法器DFAS_1主要是用来完成寄存器REG_U和寄存器REG_V内容的减法操作和REG_V内容的取反操作;而DFAS_2主要用来完成寄存器REG_G1,REG_G2内容的减法操作和寄存器REG_G2内容的取模运算;
当控制寄存器响应复位信号时,模数P和操作数A将通过选择器寄存到寄存器REG_U、REG_V中,寄存器REG_G1和REG_G2将通过选择器寄存0、1;当控制寄存器响应启动信号时,首先通过判断REG_V中的A值是否为偶数,若是则将REG_V向右移动一位,REG_G2向右移动两位,否则只将REG_G2向右移动一位;继续判断REG_V中的值的最低位是否为0,若是则继续将REG_V向右移动一位,REG_G2向右移动两位,若不是则利用DAFS_1计算REG_U和REG_V中的差值,将结果寄存在REG_G1中,判断REG_G1中的数据是否小于0,若是,则通过DAFS_2对REG_G1进行加P操作,若否,则通过DAFS_2计算寄存器REG_G1,REG_G2内容的差值,并将逆值存放于寄存器REG_G1中,返回结束信号,完成模逆运算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东工业大学,未经广东工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910548928.6/1.html,转载请声明来源钻瓜专利网。