一种基于乘方运算的复合有限域求逆器及其求逆方法与流程

文档序号:16066824发布日期:2018-11-24 12:45阅读:509来源:国知局

本发明涉及一种对有限域的元素进行求逆的装置,特别涉及一种基于乘方运算的复合有限域求逆器及其求逆方法。

背景技术

有限域运算器包括加法器、乘法器、求逆器等,可以分别计算有限域上两个元素的加法、乘法和一个元素的逆元。有限域除法一般使用乘法器和求逆器协同运算。所以,有限域求逆器在有限域运算中被广泛使用。

有限域求逆属于有限域运算,与有限域加法、乘法、除法、平方、乘方等运算一起被密码算法广泛使用。复合有限域属于有限域,常用的复合有限域是gf((2n)2),域的大小是(2n)2,它的子域是gf(2n)。gf((2n)2)的求逆运算一般需要子域gf(2n)的加法、乘法、求逆等运算。因为复合有限域是gf((2n)2)求逆包含子域gf(2n)运算,所以通过优化gf(2n)运算可以提升gf((2n)2)的求逆效率。

现有技术中存在的复合有限域求逆器较少基于乘方运算来实现求逆。在实时和对速度敏感的环境下,使用基于乘方运算的复合有限域求逆器来实现有限域求逆可以提高运算效率。



技术实现要素:

为了克服现有技术的上述缺点与不足,本发明的目的在于提供一种基于乘方运算的复合有限域求逆器,在计算gf((2n)2)的求逆运算相对于现有的有限域求逆器能够提高效率。

本发明的目的通过以下技术方案实现:

一种基于乘方运算的复合有限域求逆器,包括:

输入端口,包括用于输入复合有限域gf((2n)2)的求逆运算数a(x)的端口a、用于输入时钟信号t的端口clk、用于输入复合有限域gf((2n)2)的不可约多项式q(x)的端口q和用于输入子域gf(2n)的不可约多项式p(x)的端口p;

输出端口,包括用于输出复合有限域gf((2n)2)的求逆运算结果b(x)的端口b;

控制器,用于调度与其相连的部件和控制输入输出;

复合域乘法模块,用于计算复合有限域gf((2n)2)乘法;

复合域平方模块,用于计算复合有限域gf((2n)2)平方;

第一子域加法模块,用于计算子域gf(2n)加法;

第一子域乘法模块,用于计算子域gf(2n)乘法;

第一子域平方模块,用于计算子域gf(2n)平方;

第二子域加法模块,用于计算子域gf(2n)加法;

第二子域乘法模块,用于计算子域gf(2n)乘法;

所述复合域平方模块分别与第一子域乘法模块、第一子域乘法模块、第一子域平方模块连接;

所述复合域乘法模块分别与第二子域加法模块、第二子域乘法模块连接;

所述控制器分别与输入端口、输出端口、复合域乘法模块、复合域平方模块连接。

所述输入端口的复合有限域gf((2n)2)的不可约多项式q(x),表示成多项式的形式为:

所述输入端口的运算数a(x)由两个n比特的数ah,al组成,表示成多项式的形式:

a(x)=ahx+al,

ah,al是有限域gf(2n)的元素;

所述输入端口的运算数a(x)表示成系数的形式为:

a(x)=a(ah,al),

ah,al是有限域gf(2n)的元素。

所述输入端口的复合有限域gf((2n)2)的不可约多项式q(x),表示成多项式的形式为:

q(x)=x2+x+e,

e是有限域gf(2n)的常数;

所述输入端口的子域gf(2n)的不可约多项式p(x),表示成多项式的形式为:

p(x)=xn+pn-1xn-1+pn-2xn-2+...+p1x+1,

pn-1,pn-2,...,p1是有限域gf(2)的元素,即二进制数(0)2和(1)2中的数;

所述输出端口的运算数b(x)由两个n比特的数bh,bl组成,表示成多项式的形式为:

b(x)=bhx+bl,

bh,bl是有限域gf(2n)的元素;

所述输出端口的运算数b(x)可以表示成系数的形式:

b(x)=b(bh,bl),

bh,bl是有限域gf(2n)的元素。

所述复合域平方模块计算复合有限域gf((2n)2)的元素表示为a(x)=ahx+al,那么计算a(x)的平方的步骤如下:

首先,调用第一子域平方模块运算s0=ah2,s0,ah是子域gf(2n)的元素;

然后,调用第一子域平方模块运算s1=al2,s1,al是子域gf(2n)的元素;调用第一子域乘法模块运算s2=s0e,s2,s0,e是子域gf(2n)的元素;

最后,调用第一子域加法模块运算s3=s2+s1,s3,s2,s1是子域gf(2n)的元素;令bh=s0,bl=s3,bh,bl是子域gf(2n)的元素;令b(x)=bhx+bl,b(x)是复合有限域gf((2n)2)的元素,b(x)是a(x)=ahx+al的平方运算结果。

所述复合域乘法模块计算复合有限域gf((2n)2)的两个元素的乘法的步骤如下:

复合有限域gf((2n)2)的两个元素表示为a(x)=ahx+al和b(x)=bhx+bl,那么计算a(x)和b(x)的乘法的步骤如下:

首先,调用第二子域乘法模块运算s0=ahbh,s0,ah,bh是子域gf(2n)的元素;

然后,调用第二子域乘法模块运算s1=ahbl,s1,ah,bl是子域gf(2n)的元素;

接着,调用第二子域乘法模块运算s2=albh,s2,al,bh是子域gf(2n)的元素;

然后,调用第二子域乘法模块运算s3=albl,s3,al,bl是子域gf(2n)的元素;

接着,调用第二子域乘法模块运算s4=s0e,s4,s0,e是子域gf(2n)的元素;

然后,调用第二子域加法模块运算s5=s4+s3,s5,s4,s3是子域gf(2n)的元素;

接着,调用第二子域加法模块运算s6=s0+s1,s6,s0,s1是子域gf(2n)的元素;

最后,调用第二子域加法模块运算s7=s6+s2,s7,s6,s2是子域gf(2n)的元素;令ch=s7,cl=s5,ch,cl是子域gf(2n)的元素;令c(x)=chx+cl,c(x)是复合有限域gf((2n)2)的元素,c(x)是a(x)=ahx+al和b(x)=bhx+bl的乘法运算结果。

所述第一子域加法模块和第二子域加法模块的构造相同,包含n个异或逻辑门,用于计算gf(2n)的两个已知元素f(x),g(x)的加法h(x)=f(x)+g(x),其中,

f(x)=fn-1xn-1+fn-2xn-2+...+f0,

g(x)=gn-1xn-1+gn-2xn-2+...+g0,

h(x)=hn-1xn-1+hn-2xn-2+...+h0,

fn-1,fn-2,...,f0,gn-1,gn-2,...,g0,hn-1,hn-2,...,h0是有限域gf(2)的元素;

所述第一子域加法模块和第二子域加法模块,计算h(x)=f(x)+g(x)的步骤如下:

对于i=0,1,...,n-1,计算hi=fi+gi,其中+是限域gf(2)的加法;是h(x)=f(x)+g(x)的运算结果。

所述第一子域平方模块,用于计算gf(2n)的已知元素c(x)的平方h(x)=f(x)2,其中,

f(x)=fn-1xn-1+fn-2xn-2+...+f0,

h(x)=hn-1xn-1+hn-2xn-2+...+h0,

fn-1,fn-2,...,f0,hn-1,hn-2,...,h0是有限域gf(2)的元素;

所述第一子域平方模块包含的平方查找表的构造如下:

对于有限域gf(2n)的每一个元素,计算平方,假定gf(2n)元素是α,计算β=α2modp(x),mod是模运算,β是gf(2n)元素,则α存在平方查找表的第一列,β存在平方查找表的第二列;

所述第一子域平方模块计算h(x)=f(x)2的步骤如下:

首先,在平方查找表的第一列查找f(x),找到后,其所在行的第二列的元

素就是f(x)的平方运算结果,并存储至h(x),是h(x)=f(x)2的运算结果。

所述第一子域乘法模块和第二子域乘法模块的构造相同,用于计算gf(2n)的两个已知元素f(x),g(x)的乘法h(x)=f(x)×g(x),其中,

f(x)=fn-1xn-1+fn-2xn-2+...+f0,

g(x)=gn-1xn-1+gn-2xn-2+...+g0,

h(x)=hn-1xn-1+hn-2xn-2+...+h0,

fn-1,fn-2,...,f0,gn-1,gn-2,...,g0,hn-1,hn-2,...,h0是有限域gf(2)的元素;

所述第一子域乘法模块和第二子域乘法模块包含的乘法查找表的构造如下:

对于有限域gf(2n)的每两个元素,计算乘法,假定gf(2n)的两个元素是α和β,计算δ=α×βmodp(x),mod是模运算,δ是gf(2n)元素,则α存在乘法查找表的第一列,β存在乘法查找表的第二列,δ存在乘法查找表的第三列;

所述第一子域乘法模块和第二子域乘法模块计算h(x)=f(x)×g(x)的步骤如下:

首先,在乘法查找表的第一列查找f(x),然后在乘法查找表的第二列查找g(x),找到后,其所在行的第三列的元素就是f(x)×g(x)的乘法运算结果,并存储至h(x),是h(x)=f(x)×g(x)的运算结果。

所述控制器监听输入端口a,接收复合有限域gf((2n)2)的求逆运算数a(x);监听输入端口clk,接收时钟信号t;监听输入端口q,接收复合有限域gf((2n)2)的不可约多项式q(x);监听输入端口p,接收子域gf(2n)的不可约多项式p(x)。

所述的基于乘方运算的复合有限域求逆器的复合有限域求逆方法,计算gf((2n)2)的求逆b(x)=a(x)-1步骤如下:

等待时钟信号由低电平转向高电平;

第一个时钟周期,调用复合域平方模块计算a′(x)=a(x)2

第二个时钟周期,令b(x)=a′(x),调用复合域平方模块计算a″(x)=a′(x)2

第三个时钟周期,调用复合域乘法模块计算b(x)=b(x)a″(x),调用复合域平方模块计算a″′(x)=a″(x)2

第四个时钟周期,调用复合域乘法模块计算b(x)=b(x)a″′(x),调用复合域平方模块计算a″″(x)=a″′(x)2

直到第2n个时钟周期完成,计算完成b(x);

计算gf((2n)2)的求逆b(x)=a(x)-1完成后,将b(x)输出至输出端口b;n为正整数。

与现有技术相比,本发明具有以下优点和有益效果:

本发明的基于乘方运算的复合有限域求逆器,通过乘方运算实现了复合有限域的求逆运算,在计算gf((2n)2)的求逆运算相对于现有的有限域求逆器能够提高效率,可以广泛运用于各种工程领域。

附图说明

图1为本发明的实施例的一种基于乘方运算的复合有限域求逆器的结构示意图。

具体实施方式

下面结合实施例,对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例

如图1所示,本发明的一种基于乘方运算的复合有限域求逆器包括控制器、输入端口、输出端口、复合域平方模块、复合域乘法模块、第一子域乘法模块、第一子域加法模块、第一子域平方模块、第二子域乘法模块和第二子域加法模块;所述复合域平方模块分别与第一子域乘法模块、第一子域乘法模块、第一子域平方模块连接;所述复合域乘法模块分别与第二子域加法模块、第二子域乘法模块连接;所述控制器分别与输入端口、输出端口、复合域乘法模块、复合域平方模块连接。

所述输入端口的运算数a(x)由两个n比特的数ah,al组成,可以表示成多项式的形式:

a(x)=ahx+al,

ah,al是有限域gf(2n)的元素;

所述输入端口的运算数a(x)可以表示成系数的形式:

a(x)=a(ah,al),

ah,al是有限域gf(2n)的元素;

所述输入端口的时钟信号t是单比特信号,取值是0或1,代表低电平或高电平;低电平转向高电平代表一个时钟周期的开始;

所述输入端口的复合有限域gf((2n)2)的不可约多项式q(x),可以表示成多项式的形式:

q(x)=x2+x+e,

e是有限域gf(2n)的常数;

所述输入端口的子域gf(2n)的不可约多项式p(x),可以表示成多项式的形式:

p(x)=xn+pn-1xn-1+pn-2xn-2+...+p1x+1,

pn-1,pn-2,...,p1是有限域gf(2)的元素,即二进制数(0)2和(1)2中的一个数;

所述输入端口的子域gf(2n)的元素c(x),可以表示成多项式的形式:

c(x)=cn-1xn-1+cn-2xn-2+...+c0,

cn-1,cn-2,...,c0是有限域gf(2)的元素,即二进制数(0)2和(1)2中的一个数;

所述输入端口的子域gf(2n)的元素c(x),可以表示成系数的形式:

c(x)=c(cn-1,cn-2,...,c0),

cn-1,cn-2,...,c0是有限域gf(2)的元素,即二进制数(0)2和(1)2中的一个数;

所述输出端口的运算数b(x)由两个n比特的数bh,bl组成,可以表示成多项式的形式:

b(x)=bhx+bl,

bh,bl是有限域gf(2n)的元素;

所述输出端口的运算数b(x)可以表示成系数的形式:

b(x)=b(bh,bl),

bh,bl是有限域gf(2n)的元素;

所述控制器与输入端口相连,监听输入端口a,接收复合有限域gf((2n)2)的求逆运算数a(x)的端口a;监听输入端口clk,接收时钟信号t;监听输入端口q,接收复合有限域gf((2n)2)的不可约多项式q(x);监听输入端口p,接收子域gf(2n)的不可约多项式p(x);

所述控制器与复合域乘法模块、复合域平方模块相连,计算gf((2n)2)的求逆b(x)=a(x)-1的步骤如下:

等待时钟信号由低电平转向高电平;

第一个时钟周期,调用复合域平方模块计算a′(x)=a(x)2

第二个时钟周期,令b(x)=a′(x),调用复合域平方模块计算a″(x)=a′(x)2

第三个时钟周期,调用复合域乘法模块计算b(x)=b(x)a″(x),调用复合域平方模块计算a″′(x)=a″(x)2

第四个时钟周期,调用复合域乘法模块计算b(x)=b(x)a″′(x),调用复合域平方模块计算a″″(x)=a″′(x)2

直到第2n个时钟周期完成,计算完成b(x);

所述控制器与输出端口相连,计算gf((2n)2)的求逆b(x)=a(x)-1完成后,将b(x)输出至输出端口b;n为正整数。

所述复合域平方模块与第一子域加法模块、第一子域乘法模块、第一子域平方模块相连,计算复合有限域gf((2n)2)的元素的平方;

所述复合域平方模块计算复合有限域gf((2n)2)的元素可以表示为a(x)=ahx+al,那么计算a(x)的平方的步骤如下:

首先,调用第一子域平方模块运算s0=ah2,s0,ah是子域gf(2n)的元素;

然后,调用第一子域平方模块运算s1=al2,s1,al是子域gf(2n)的元素;调用第一子域乘法模块运算s2=s0e,s2,s0,e是子域gf(2n)的元素;

最后,调用第一子域加法模块运算s3=s2+s1,s3,s2,s1是子域gf(2n)的元素;令bh=s0,bl=s3,bh,bl是子域gf(2n)的元素;令b(x)=bhx+bl,b(x)是复合有限域gf((2n)2)的元素,b(x)是a(x)=ahx+al的平方运算结果。

所述复合域乘法模块与第二子域加法模块、第二子域乘法模块相连,计算复合有限域gf((2n)2)的两个元素的乘法;

所述复合域乘法模块计算复合有限域gf((2n)2)的两个元素可以表示为a(x)=ahx+al和b(x)=bhx+bl,那么计算a(x)和b(x)的乘法的步骤如下:

首先,调用第二子域乘法模块运算s0=ahbh,s0,ah,bh是子域gf(2n)的元素;

然后,调用第二子域乘法模块运算s1=ahbl,s1,ah,bl是子域gf(2n)的元素;

接着,调用第二子域乘法模块运算s2=albh,s2,al,bh是子域gf(2n)的元素;

然后,调用第二子域乘法模块运算s3=albl,s3,al,bl是子域gf(2n)的元素;

接着,调用第二子域乘法模块运算s4=s0e,s4,s0,e是子域gf(2n)的元素;

然后,调用第二子域加法模块运算s5=s4+s3,s5,s4,s3是子域gf(2n)的元素;

接着,调用第二子域加法模块运算s6=s0+s1,s6,s0,s1是子域gf(2n)的元素;

最后,调用第二子域加法模块运算s7=s6+s2,s7,s6,s2是子域gf(2n)的元素;令ch=s7,cl=s5,ch,cl是子域gf(2n)的元素;令c(x)=chx+cl,c(x)是复合有限域gf((2n)2)的元素,c(x)是a(x)=ahx+al和b(x)=bhx+bl的乘法运算结果。

所述第一子域加法模块和第二子域加法模块的构造相同,包含n个异或逻辑门,用于计算gf(2n)的两个已知元素f(x),g(x)的加法h(x)=f(x)+g(x),其中,

f(x)=fn-1xn-1+fn-2xn-2+...+f0,

g(x)=gn-1xn-1+gn-2xn-2+...+g0,

h(x)=hn-1xn-1+hn-2xn-2+...+h0,

fn-1,fn-2,...,f0,gn-1,gn-2,...,g0,hn-1,hn-2,...,h0是有限域gf(2)的元素;

所述第一子域加法模块和第二子域加法模块,计算h(x)=f(x)+g(x)的步骤如下:

对于i=0,1,...,n-1,计算hi=fi+gi,其中+是限域gf(2)的加法;是h(x)=f(x)+g(x)的运算结果;

所述第一子域平方模块,用于计算gf(2n)的已知元素c(x)的平方h(x)=f(x)2,其中,

f(x)=fn-1xn-1+fn-2xn-2+...+f0,

h(x)=hn-1xn-1+hn-2xn-2+...+h0,

fn-1,fn-2,...,f0,hn-1,hn-2,...,h0是有限域gf(2)的元素;

所述第一子域平方模块包含的平方查找表的构造如下:

对于有限域gf(2n)的每一个元素,计算平方,假定gf(2n)元素是α,计算β=α2modp(x),mod是模运算,β是gf(2n)元素,则α存在平方查找表的第一列,β存在平方查找表的第二列;

所述第一子域平方模块计算h(x)=f(x)2的步骤如下:

首先,在平方查找表的第一列查找f(x),找到后,其所在行的第二列的元素就是f(x)的平方运算结果,并存储至h(x),是h(x)=f(x)2的运算结果;

所述第一子域乘法模块和第二子域乘法模块的构造相同,用于计算gf(2n)的两个已知元素f(x),g(x)的乘法h(x)=f(x)×g(x),其中,

f(x)=fn-1xn-1+fn-2xn-2+...+f0,

g(x)=gn-1xn-1+gn-2xn-2+...+g0,

h(x)=hn-1xn-1+hn-2xn-2+...+h0,

fn-1,fn-2,...,f0,gn-1,gn-2,...,g0,hn-1,hn-2,...,h0是有限域gf(2)的元素;

所述第一子域乘法模块和第二子域乘法模块包含的乘法查找表的构造如下:

对于有限域gf(2n)的每两个元素,计算乘法,假定gf(2n)的两个元素是α和β,计算δ=α×βmodp(x),mod是模运算,δ是gf(2n)元素,则α存在乘法查找表的第一列,β存在乘法查找表的第二列,δ存在乘法查找表的第三列;

所述第一子域乘法模块和第二子域乘法模块计算h(x)=f(x)×g(x)的步骤如下:

首先,在乘法查找表的第一列查找f(x),然后在乘法查找表的第二列查找g(x),找到后,其所在行的第三列的元素就是f(x)×g(x)的乘法运算结果,并存储至h(x),是h(x)=f(x)×g(x)的运算结果。

所述有限域gf(2)的加法使用异或逻辑门,有限域gf(2)的乘法使用与逻辑门。

下面以n=4为例说明本发明计算求逆的工作过程。

输入端口的运算数a(x)是复合有限域gf((24)2)的元素,可以表示成多项式的形式:

a(x)=ahx+al,

ah,al是有限域gf(24)的元素;

输出端口的运算数b(x)是复合有限域gf((24)2)的元素,可以表示成多项式的形式:

b(x)=bhx+bl,

bh,bl是有限域gf(24)的元素;

输入端口的时钟信号clk是单比特信号,时钟周期是25纳秒;

控制器计算gf((24)2)的b(x)=a(x)-1的求逆,步骤如下:

控制器接收输入运算数a(x)、时钟信号、gf((24)2)的不可约多项式q(x)=x2+x+9,gf(24)的不可约多项式p(x)=x4+x+1,等待时钟信号由低电平转向高电平;

第一个时钟周期,调用复合域平方模块计算a′(x)=a(x)2

第二个时钟周期,令b(x)=a′(x),调用复合域平方模块计算a″(x)=a′(x)2

第三个时钟周期,调用复合域乘法模块计算b(x)=b(x)a″(x),调用复合域平方模块计算a″′(x)=a″(x)2

第四个时钟周期,调用复合域乘法模块计算b(x)=b(x)a″′(x),调用复合域平方模块计算a″″(x)=a″′(x)2

直到第2n个时钟周期完成,计算完成b(x);b(x)=bhx+bl是a(x)=ahx+al的逆元,被控制器输出至输出端口。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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