CN110493003B - 一种基于四基二进制底层模运算的快速加密系统 - Google Patents

一种基于四基二进制底层模运算的快速加密系统 Download PDF

Info

Publication number
CN110493003B
CN110493003B CN201910548928.6A CN201910548928A CN110493003B CN 110493003 B CN110493003 B CN 110493003B CN 201910548928 A CN201910548928 A CN 201910548928A CN 110493003 B CN110493003 B CN 110493003B
Authority
CN
China
Prior art keywords
reg
modular
module
scalar multiplication
random number
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
CN201910548928.6A
Other languages
English (en)
Other versions
CN110493003A (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.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
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 Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN201910548928.6A priority Critical patent/CN110493003B/zh
Publication of CN110493003A publication Critical patent/CN110493003A/zh
Application granted granted Critical
Publication of CN110493003B publication Critical patent/CN110493003B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/126Applying verification of the received information the source of the received data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations

Abstract

本发明公开了一种基于四基二进制底层模运算的快速加密系统,包括用于实现系统的签名验签和加解密功能的协议层,以及用于实现曲线域算术和素数域模运算的运算层,其中:所述的运算层包括标量乘模块,标量乘模块上连接有用于进行杂凑运算的SM3模块、用于产生随机数的随机数发生器,标量乘模块包括点加模块和倍点模块,用于实现模逆、模乘和模加减运算;本方案通过改进椭圆曲线加密系统的底层模运算,实现了基于四基二进制底层模运算的快速加密系统,本专利的主要创新点在于将四基二进制快速模运算引入椭圆曲线加密系统,进而提升加密系统的运算效率。

Description

一种基于四基二进制底层模运算的快速加密系统
技术领域
本发明涉及集成电路中加密通信技术领域,具体涉及一种对芯片内部数据加密、解密和数据签名、验签的快速加密系统。
背景技术
近十年间,信息技术飞速发展,计算机网络和移动终端大大普及,信息传输量骤然增加。其中包涵了大量有关军事、政治、经济、个人的重要的信息,如果在信息的传播和共享的过程中遭到窃听、篡改、截取或者破坏,将会造成不可估量的损失。因此,信息安全问题成为了越来越重要的课题,人们也对信息安全提出了更高的要求。密码技术是解决信息安全问题的重要组成部分,数据加密算法是其中的核心和关键。
椭圆曲线加密算法是目前国际上研究比较热门的加密方法,比起RSA算法,椭圆曲线加密算法具有破解难度高,密钥短的特点,是未来实现数据签名验签的主流算法之一。但是,普通的椭圆曲线加密算法需要多个运算模块(模加减、模逆、模乘、点加、倍点、标量乘、协议层)的配合调用,其运算复杂度较高,如果不加处理,普通的椭圆曲线加密系统将耗费巨大的运算时间和运算资源,造成数据源加解密以及签名验签的延时特别严重,这大大限制了椭圆曲线加密算法的应用场景,甚至危及加密系统的时序环境,造成加密芯片内部功能紊乱等一系列设计问题。
发明内容
针对现有椭圆曲线加密技术的缺点与不足,本发明的目的是提供一种适用于片上系统(Soc)的基于四基二进制底层模运算的快速加密系统,保障数据加密通信的时效性;该系统在满足芯片低功耗和面积的前提下,能对通信内容进行签名验签,数据加解密。
为了实现上述任务,本发明采用以下技术方案:
一种基于四基二进制底层模运算的快速加密系统,包括用于实现系统的签名验签和加解密功能的协议层,以及用于实现曲线域算术和素数域模运算的运算层,其中:所述的运算层包括标量乘模块,标量乘模块上连接有用于进行杂凑运算的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,则继续下次循环。
进一步地,所述的标量乘模块在进行四基二进制模运算的模逆运算中,采用四个寄存器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,若是则继续以上操作,若不是则利用DAFS_1计算REG_U和REG_V中的差值,将结果寄存在REG_G1中,判断REG_G1中的数据是否小于0,若是,则通过DAFS_2对REG_G1进行加P操作,若否,则通过DAFS_2计算寄存器REG_G1,REG_G2内容的差值,并将逆值存放于寄存器REG_G1中,返回结束信号,完成模逆运算。
本发明具有以下技术特点:
1.本方案底层模运算模块能实现快速运算,进而使得整个加密系统能够实现快速加解密和数据签名验签功能。传统意义上的模逆和模乘模块是一位一位对数据进行操作,本发明的底层模运算基于四基二进制模逆、模乘算法,可以实现以两位为一个操作元进行数据处理。
2.本方案采用新的模逆操作单元,实现快速求模逆运算;采用新的模乘操作单元,实现快速求模乘运算;采用新的运算调度过程,将标量乘模块与杂凑模块独立开来,实现并行运算,节省运算时间。
3.由于本发明运算周期缩短,在实现签名验签功能的前提下仍可实现较大程度的加解密运算。
附图说明
图1为本发明系统的模块构架图;
图2为加密系统发送方的工作流程图;
图3为加密系统接收方的工作流程图;
图4为四基二进制模乘硬件结构图;
图5为四基二进制模逆硬件结构图。
具体实施方式
本系统整体上由协议层和运算层构成,协议层属于功能模块,负责实现整个系统的签名验签和加解密功能;运算层主要进行的是曲线域算术和素数域模运算。协议层的各项运算都由运算层完成,然后数据传回协议层。其中模逆、模乘和模加减运算构成点加和倍点运算,点加和倍点运算又构成标量乘运算。
协议层需要用到的杂凑运算由SM3模块完成,随机数发生器负责产生随机数构成私钥和产生运算过程中需要用到的的操作数。另外,系统输入输出的缓存模块由FPGA中的FIFO模块完成,主要是完成输入输出数据的暂存功能。数据分流用于将输入的数据分类处理,判断输入的数据是要进行何种操作;数据合并将处理完的数据整合成发送数据的格式。
一、对于发送方
发送方通过系统的数据分流模块选择需要使用的功能,如发送方选择对数据通信进行签名,则执行步骤10;如发送方选择对通信数据进行加密,则执行步骤20。
选择签名方式的流程如下:
步骤10,发送方将私钥和待签名消息输入系统,输入完毕后,执行以下步骤:
步骤11,系统调用随机数发生器产生256位的随机数K;
步骤12,检测随机数K是否符合加密要求,即判断K是否满足1≤K≤n-1;如不满足则通过随机数发生器重新产生随机数K;其中,n表示椭圆曲线基点G的阶,本实施例中选择n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123。
步骤13,将符合加密要求的随机数K发送给标量乘模块,标量乘模块内置椭圆曲线基点参数,用以计算标量乘[K]G;其中G表示椭圆曲线的基点,[K]G表示随机数K与基点G相乘;同时,发送方需要签名的消息传递至SM3模块进行杂凑运算,SM3模块用于将任意长度的消息转化为256位比特串;
标量乘模块运算完毕后返回的结果是一个点的坐标,记为(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表示发送方的私钥;底层模运算执行完毕后,将置完成信号finish为1,所以判断finish的状态即可判断模运算是否执行完毕;
步骤16,判断s是否为0,如果为0则随机数K仍然不符合要求,重新生成随机数K并执行步骤12至步骤16;如果s不为0,则表明签名计算正确,得到签名数据(r,s)并将签名数据发送给接收方用于数据验证。
选择加密方式的流程如下:
步骤20,发送方将公钥和待加密的消息输入系统,输入完毕后,执行以下步骤:
步骤21,系统调用随机数发生器产生256位的随机K;
步骤22,检测随机数K是否符合加密要求,即判断K是否满足1≤K≤n-1;如不满足则通过随机数发生器重新产生随机数K;其中,n表示椭圆曲线基点G的阶;
步骤23,将符合加密要求的随机数K发送给标量乘模块,标量乘模块内置椭圆曲线基点参数,用以计算标量乘[K]G;其中G表示椭圆曲线的基点,[K]G表示随机数K与基点G相乘;标量乘计算完毕后得到结果C1=(x1,y1),然后继续计算标量乘[K]PB,其中PB表示公钥;标量乘[K]PB的结果为一个点的坐标,记为s=(x2,y2);
步骤24,计算C2=M异或x2,其中M表示待加密的消息;然后将(C1,C2)作为密文发送给接收方。
二、对于接收方
接收方与发送方均采用本系统;接收方通过系统的数据分流模块选择需要使用的功能,如接收方选择对通信数据进行验证,则执行步骤30,如接收方选择对通信数据进行解密,则执行步骤40。
选择验证模式的流程如下:
步骤30,接收方将公钥PA、来自于发送方的签名数据(r,s)、消息M输入到系统中,输入完毕后执行以下步骤:
步骤31,系统判断签名数据(r,s)是否合法,即是否满足1≤r≤n-1,1≤s≤n-1;如r或s任意一个不满足,则判断签名不能通过,并发出错误警告:“此消息被破坏,或者来自未知的第三方”;如签名合法,则进行下一步;其中n表示椭圆曲线基点G的阶;
步骤32,将M传递给SM3模块计算杂凑值,同时利用标量乘模块计算s的逆;计算完成后,得到杂凑值e和逆值u,然后分别计算e*u得到结果t1,计算r*u得到结果t2;
步骤33,将t1、t2传递给标量乘模块,计算标量乘[t1]G和标量乘[t2]PA,其中G表示椭圆曲线基点,PA表示公钥;利用点加模块将两个标量乘的结果相加得到结果(x1,y1),判断(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所示,在图4中,1为256位加法器,2为移位寄存器,3为256位寄存器,4为0-1选择器,5为非门,6为多路选择器,7为或门。在四基二进制模运算的模乘运算中,本方案采用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,则继续下次循环。
如图5所示,为四基二进制模逆硬件结构图,在图中,8为选择器,9为控制寄存器,10为减法寄存器,11为中间寄存器。在四基二进制模运算的模逆运算中,主要由3个部分组成:一个是用来存储操作数以及中间和最终结果的寄存器堆,两个加/减法器计算单元(DAFS),以及控制整个模逆的计算流程控制单元(Controller)。模逆运算初始化时,寄存器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的最低位是否为0,若是则将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中,返回结束信号,完成模逆运算。

Claims (2)

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中,返回结束信号,完成模逆运算。
CN201910548928.6A 2019-06-24 2019-06-24 一种基于四基二进制底层模运算的快速加密系统 Active CN110493003B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910548928.6A CN110493003B (zh) 2019-06-24 2019-06-24 一种基于四基二进制底层模运算的快速加密系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910548928.6A CN110493003B (zh) 2019-06-24 2019-06-24 一种基于四基二进制底层模运算的快速加密系统

Publications (2)

Publication Number Publication Date
CN110493003A CN110493003A (zh) 2019-11-22
CN110493003B true CN110493003B (zh) 2021-08-17

Family

ID=68546342

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910548928.6A Active CN110493003B (zh) 2019-06-24 2019-06-24 一种基于四基二进制底层模运算的快速加密系统

Country Status (1)

Country Link
CN (1) CN110493003B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685758B (zh) * 2020-12-31 2024-02-06 南方电网科学研究院有限责任公司 基于椭圆曲线加密算法的数据加密系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2037357A2 (en) * 2003-04-25 2009-03-18 Samsung Electronics Co., Ltd. Montgomery modular multiplier and method thereof using carry save addition
CN102646033A (zh) * 2011-02-21 2012-08-22 中国科学院研究生院 模乘运算的实现方法和装置
CN103427997A (zh) * 2013-08-16 2013-12-04 西安西电捷通无线网络通信股份有限公司 一种生成数字签名的方法及装置
US8868910B2 (en) * 2012-02-09 2014-10-21 Hewlett-Packard Development Company, L.P. Elliptic curve cryptographic signature
CN105577372A (zh) * 2015-12-11 2016-05-11 杭州朔天科技有限公司 模逆算法的无符号处理方法及模逆加速器
CN109214195A (zh) * 2018-07-26 2019-01-15 广东工业大学 一种抗差分功耗攻击的sm2椭圆曲线签名验签硬件系统及方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2037357A2 (en) * 2003-04-25 2009-03-18 Samsung Electronics Co., Ltd. Montgomery modular multiplier and method thereof using carry save addition
CN102646033A (zh) * 2011-02-21 2012-08-22 中国科学院研究生院 模乘运算的实现方法和装置
US8868910B2 (en) * 2012-02-09 2014-10-21 Hewlett-Packard Development Company, L.P. Elliptic curve cryptographic signature
CN103427997A (zh) * 2013-08-16 2013-12-04 西安西电捷通无线网络通信股份有限公司 一种生成数字签名的方法及装置
CN105577372A (zh) * 2015-12-11 2016-05-11 杭州朔天科技有限公司 模逆算法的无符号处理方法及模逆加速器
CN109214195A (zh) * 2018-07-26 2019-01-15 广东工业大学 一种抗差分功耗攻击的sm2椭圆曲线签名验签硬件系统及方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
An efficient and scalable modular inversion/division for public key cryptosystems;Amine Mrabet;《2017 International Conference on Engineering & MIS (ICEMIS)》;20180201;第1-6页 *
Serial and parallel interleaved modular multipliers on FPGA platform;Khalid Javeed;《2015 25th International Conference on Field Programmable Logic and Applications (FPL)》;20151008;第1-4页 *
双有限域模乘和模逆算法及其硬件实现;陈光化;《电子与信息学报》;20100915;第32卷(第9期);第2095-2100页 *
椭圆曲线密码算法的FPGA设计与实现;韩炼冰;《中国优秀硕士学位论文全文数据库信息科技辑》;20180815;第1-70页 *

Also Published As

Publication number Publication date
CN110493003A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
CN106921487B (zh) 可重构s盒电路结构
EP3468147B1 (en) Method for constructing secure hash functions from bit-mixers
US11546135B2 (en) Key sequence generation for cryptographic operations
US9571270B2 (en) Construction and uses of variable-input-length tweakable ciphers
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
CN105099672A (zh) 混合加密方法及实现该方法的装置
Cheon et al. Ghostshell: Secure biometric authentication using integrity-based homomorphic evaluations
CN111464308A (zh) 一种实现多种哈希算法可重构的方法和系统
CN112187461A (zh) 一种基于加密算法的武器装备数据混合加密方法
KR100800468B1 (ko) 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
CN110049013B (zh) 一种基于sm2和rsa加密算法的加解密系统及工作方法
Golic Techniques for random masking in hardware
CN114697095A (zh) 一种混合加解密方法、系统、装置及介质
CN113193962B (zh) 基于轻量级模乘的sm2数字签名生成与验证器
CN115314211A (zh) 基于异构计算的隐私保护机器学习训练与推理方法及系统
CN110493003B (zh) 一种基于四基二进制底层模运算的快速加密系统
CN111835516B (zh) 一种公钥可否认加密方法及系统
CN101515853A (zh) 信息终端及其信息安全装置
Ghosh et al. A robust GF (p) parallel arithmetic unit for public key cryptography
Wang et al. An ultra compact block cipher for serialized architecture implementations
Sundararajan et al. A comprehensive survey on lightweight asymmetric key cryptographic algorithm for resource constrained devices
JP2004078053A (ja) 暗号化装置
CN101567783A (zh) 一种基于ⅱ型高斯基域的椭圆曲线加解密方法和装置
CN113849831A (zh) 一种基于sm2算法的两方协同签名和解密方法及系统
CN116915405B (zh) 基于隐私保护的数据处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant