一种双域模逆的硬件实现方法与流程

文档序号:15151615发布日期:2018-08-10 21:09阅读:265来源:国知局

本发明涉及信息安全技术领域,尤其涉及一种双域模逆的硬件实现方法。



背景技术:

随着计算机网络和信息技术的发展,信息安全在各领域发挥着越来越重要的作用,其中密码学已经成为信息安全技术的核心,椭圆曲线密码(ecc)是一种新兴的公钥密码体制。与传统的rsa算法相比,在保持同样的安全强度的条件下,ecc所需的密钥长度更短,存储更少,计算更快捷。ecc的这个技术优势使之得到密码学界和信息安全产业的广泛关注,具有很好的应用前景。

目前国内的ecc算法有sm2算法,ecc(sm2)算法的主要运算是有限域的算术运算,其所涉及的有限域运算包括两种:素数域和二元域。现有关于ecc(sm2)算法的专用集成电路,其中有限域的模逆运算是ecc(sm2)算法中比较重要的一个步骤,硬件模逆可以大幅度的提升ecc(sm2)算法实现的速度,但是实现硬件有限域模逆的芯片较少,尤其是包括素域和二元域两个有限域的双域模逆。



技术实现要素:

本发明的目的在于提供一种双域模逆的硬件实现方法,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明采用的技术方案如下:

一种双域模逆的硬件实现方法,包括如下步骤:

s1,采用硬件描述语言构建模逆控制状态机和基本运算单元,所述基本运算单元包括:移位运算单元、素域和二元域的模加运算单元、素域和二元域的模减运算单元;

s2,所述模逆控制状态机按照素域和二元域模逆算法流程,通过调用素域和二元域的模加、模减和移位运算单元,硬件实现素域和二元域两个有限域的双域模逆运算。

优选地,s1中,所述硬件描述语言为verilog。

优选地,所述素域和二元域模逆算法流程按照如下两个阶段进行实施:

第一阶段:近似的模逆阶段,该阶段以蒙哥马利域域中的元素a2m和模数p为输入,得到中间结果result=a-12k-mmodp和参数k,该阶段通过模逆控制状态机通过调用素域和二元域的模加、模减和移位运算单元硬件实现,其中,a2m为蒙哥马利域中的元素,p为模,m为位数,n为p的最高有效位,m≥n(2n-1≤p≤2n);

第二阶段:校正阶段,该阶段将第一阶段输出的中间结果result=a-12k-mmodp转换成最终结果result=a-12mmodp,该阶段可采用硬件实现,也可采用软件调用模乘实现。

更优选地,所述第一阶段按照如下步骤进行实施:

s201,取变量u、v、x1、x2和k,且变量u的初值为a2m,变量v的初值为p,x1的初值为1,x2得到初值为0,k的初值为0;

s202,对变量v的低三位进行判断:

如果v的最低一位为0,则调用移位运算单元,将v右移一位,x1左移一位,k=k+1;

如果v的最低两位为0,则调用移位运算单元,将v右移两位,x1左移两位,k=k+2;

如果v的最低三位为0,则调用移位运算单元,将v右移三位,x1左移三位,k=k+3;

s203,对u的低三位进行判断:

如果u的最低一位为0,则调用移位运算单元,将u右移一位,x2左移一位,k=k+1;

如果u的最低两位为0,则调用移位运算单元,将u右移两位,x2左移两位,k=k+2;

如果u的最低三位为0,则调用移位运算单元,将u右移三位,x2左移三位,k=k+3;

s204,对当前域进行判断,

如果当前域是素域,则调用素域的模加,模减运算单元计算中间变量:x=v-u,y=u-v,z=x1+x2,并对u,v进行判断:如果v>u,则调用移位运算单元进行移位运算,v=x右移一位,x1=x1左移一位,x2=z,k=k+1;如果u>v,则调用移位运算单元进行移位运算,u=y右移一位,x1=z,x2=x2左移一位,k=k+1;

如果当前域是二元域,则调用二元域的模加、模减运算单元计算中间变量:x=v^u,z=x1^x2,并对deg(v)和deg(u)进行判断,其中,deg(u),deg(v)代表u,v的度:如果deg(v)〉deg(u),则调用移位运算单元进行移位运算,v=x右移一位,x1=x1左移一位,x2=z,k=k+1;如果deg(u)〉deg(v),则调用移位运算单元进行移位运算,u=x右移一位,x1=z,x2=x2左移一位,k=k+1;

s205,如果v不等于0,则返回s202;

s206,对当前域进行判断,

如果当前域是素域,则输出素域模逆的运算结果result和参数k:如果x1>p,则result=x1-p;如果x1<p,则result=x1;

如果当前域是二元域,则调用二元域模加、模减和移位运算单元,计算中间变量:x=p^x1,y=1左移m位,z=(2*p)^x1;并输出二元域模逆的运算结果result和参数k:如果y≥x,则result=x;如果y≥z,则result=z;如果上述条件均不满足,则result=x1。

本发明的有益效果是:本发明实施例提供了一种双域模逆的硬件实现方法,采用硬件描述语言构建一个模逆控制状态机以及两个有限域的模加、模减和移位运算单元,并且通过模逆控制状态机调用两个有限域的模加、模减和移位运算单元,硬件实现了素域和二元域两个有限域的双域模逆运算,所以,采用本发明实施例提供的方法,可以同时融合两种不同有限域的算法结构,使得运算资源高效可复用,极大的节省了硬件资源,提高了运算速度,优化了硬件面积。

附图说明

图1是实现双域模逆运算的硬件结构示意图;

图2是双域模逆控制状态机的实现基本流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明实施例提供了一种双域模逆的硬件实现方法,包括如下步骤:

s1,采用硬件描述语言构建模逆控制状态机和基本运算单元,所述基本运算单元包括:移位运算单元、素域和二元域的模加运算单元、素域和二元域的模减运算单元;

s2,所述模逆控制状态机按照素域和二元域模逆算法流程,通过调用素域和二元域的模加、模减和移位运算单元,硬件实现素域和二元域两个有限域的双域模逆运算。

由于二元域和素域模逆的算法调用的基本运算单元为模加,模减,移位等硬件可实现的基本单元,并且素域和二元域模逆算法的主流程基本一致,因此,本发明实施例中,通过构建一个控制状态机以及素域和二元域的基本运算单元,并通过控制状态机按照素域和二元域两个有限域的算法主流程,调用素域和二元域的模加、模减和移位运算单元,硬件实现了素域和二元域的两个有限域的模逆,这样,不仅能够大幅度提升算法实现的速度,又可以节省逻辑资源,节约面积。

在本发明的一个优选实施例中,s1中,所述硬件描述语言可以为verilog。

由于verilog是硬件设计的基本语言,能够满足目前主流硬件的设计需求,所以,本发明实施例中,采用该硬件描述语言。

如本领域技术人员可以理解的,还可以采用其他的描述语言进行硬件的设计。

在本发明的另一个优选实施例中,所述素域和二元域模逆算法流程可以按照如下两个阶段进行实施:

第一阶段:近似的模逆阶段,该阶段以蒙哥马利域域中的元素a2m和模数p为输入,得到中间结果result=a-12k-mmodp和参数k,该阶段通过模逆控制状态机通过调用素域和二元域的模加、模减和移位运算单元硬件实现,其中,a2m为蒙哥马利域中的元素,p为模,m为位数,n为p的最高有效位,m≥n(2n-1≤p≤2n);

第二阶段:校正阶段,该阶段将第一阶段输出的中间结果result=a-12k-mmodp转换成最终结果result=a-12mmodp,该阶段可采用硬件实现,也可采用软件调用模乘实现。

上述两种有限域模逆算法的第一阶段:采用多bit移位蒙哥马利模逆算法,该算法是从扩展欧几里德算法演变而来,采用了最多一次移动三位的多bit移位技术,该技术中所调用的基本运算只有两种有限域的模加,模减和移位,这三种硬件基本运算单元都可以通过硬件实现。

在本发明的一个优选实施例中,所述第一阶段具体可以按照如下步骤进行实施:

s201,取变量u、v、x1、x2和k,且变量u的初值为a2m,变量v的初值为p,x1的初值为1,x2得到初值为0,k的初值为0;

s202,对变量v的低三位进行判断:

如果v的最低一位为0,则调用移位运算单元,将v右移一位,x1左移一位,k=k+1;

如果v的最低两位为0,则调用移位运算单元,将v右移两位,x1左移两位,k=k+2;

如果v的最低三位为0,则调用移位运算单元,将v右移三位,x1左移三位,k=k+3;

s203,对u的低三位进行判断:

如果u的最低一位为0,则调用移位运算单元,将u右移一位,x2左移一位,k=k+1;

如果u的最低两位为0,则调用移位运算单元,将u右移两位,x2左移两位,k=k+2;

如果u的最低三位为0,则调用移位运算单元,将u右移三位,x2左移三位,k=k+3;

s204,对当前域进行判断,

如果当前域是素域,则调用素域的模加、模减运算单元计算中间变量:x=v-u,y=u-v,z=x1+x2,并对u,v进行判断:如果v>u,则调用移位运算单元进行移位运算,v=x右移一位,x1=x1左移一位,x2=z,k=k+1;如果u>v,则调用移位运算单元进行移位运算,u=y右移一位,x1=z,x2=x2左移一位,k=k+1;

如果当前域是二元域,则调用二元域的模加、模减运算单元计算中间变量:x=v^u,z=x1^x2,并对deg(v)和deg(u)进行判断,其中,deg(u),deg(v)代表u,v的度:如果deg(v)〉deg(u),则调用移位运算单元进行移位运算,v=x右移一位,x1=x1左移一位,x2=z,k=k+1;如果deg(u)〉deg(v),则调用移位运算单元进行移位运算,u=x右移一位,x1=z,x2=x2左移一位,k=k+1;

s205,如果v不等于0,则返回s202;

s206,对当前域进行判断,

如果当前域是素域,则输出素域模逆的运算结果result和参数k:如果x1>p,则result=x1-p;如果x1<p,则result=x1;

如果当前域是二元域,则调用二元域模加,模减和移位运算单元,计算中间变量:x=p^x1,y=1左移m位,z=(2*p)^x1;并输出二元域模逆的运算结果result和参数k:如果y≥x,则result=x;如果y≥z,则result=z;如果上述条件均不满足,则result=x1。

本发明实施例提供的上述方法在具体实现过程中,模逆控制状态机的基本流程可如图2所示,图2中的每个状态的解释可参见下表:

如本领域技术人员可以理解的,在本发明实施例提供的方法的具体实现过程中,模逆控制状态机还可以采用其他的基本流程。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供了一种双域模逆的硬件实现方法,采用硬件描述语言构建了一个模逆控制状态机以及两个有限域的模加、模减和移位运算单元,并且通过模逆控制状态机调用两个有限域的模加、模减和移位运算单元,硬件实现了素域和二元域两个有限域的双域模逆运算,所以,采用本发明实施例提供的方法,可以同时融合两种不同有限域的算法结构,使得运算资源高效可复用,极大的节省了硬件资源,提高了运算速度,优化了硬件面积。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。

上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:ram、rom、磁碟、磁带、光盘、闪存、u盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1