一种基于查找的复合域乘法装置的制作方法

文档序号:14910819发布日期:2018-07-10 23:21阅读:149来源:国知局

本发明涉及一种对复合域的两个元素进行相乘的装置,特别涉及一种基于查找的复合域乘法装置。



背景技术:

复合域是有限域的一种类型,又称复合有限域。有限域由伽罗瓦首先发现,是含有有限个元素的数域,被广泛地运用于通讯、安全、存储等领域。有限域上的运算被称为有限域计算,包括有限域加法、乘法、求逆、除法等。

常用的复合域是GF((2n)2),域的大小是(2n)2,它的子域是GF(2n)。因为复合域是GF((2n)2)的运算包含子域GF(2n)运算,所以通过优化GF(2n)运算可以提升GF((2n)2)的运算效率。复合域乘法是复合域最复杂的运算之一,是密码学中的基础运算,在密码系统和编码技术中起了重要作用。复合域乘法的设计方法一般基于代数方法,即使用代数理论进行乘法运算。基于代数的乘法装置在运算速度方向相对较慢。



技术实现要素:

为了克服现有技术的上述缺点与不足,本发明的目的在于提供一种基于查找的复合域乘法装置,通过查找实现了复合域的乘法运算,在计算GF((2n)2)的乘法运算相对于现有的有限域乘法器更为高效。

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

一种基于查找的复合域乘法装置,包括:

输入端口,包括用于输入复合域GF((2n)2)的第一个运算数a(x)的端口a、用于输入复合域GF((2n)2)的第二个运算数b(x)的端口b、用于输入时钟信号t的端口clk、用于输入复合域GF((2n)2)的不可约多项式q(x)的端口q和用于输入子域GF(2n)的不可约多项式p(x)的端口p;

输出端口,用于输出复合域GF((2n)2)的乘法运算结果c(x),记为端口c;

加法运算模块,包括用于计算GF(2n)的两个已知元素的加法的查找树结构;

乘法运算模块,包括用于计算GF(2n)的两个已知元素的乘法的查找树结构;

控制器,包括用于控制输入输出端口控制电路和用于调度加法运算模块和乘法运算模块计算复合域GF((2n)2)的乘法的控制电路。

所述加法查找树结构包含两颗查找树,每颗树包含n层,最上面一层为根节点所在的层,称为第0层;则最下面一层,即叶子节点所在的层是第n-1层;

扩展层在查找树的叶子节点下的一层,扩展层的每个节点与三个叶子节点相连;

所有树节点除了叶子节点均有左孩子节点和右孩子节点;

左根节点和左孩子节点代表数值0,右根节点和右孩子节点代表数值1;

每一条从根节点到一个叶子节点的路径分别代表一个GF(2n)的元素。

所述加法运算模块的计算过程如下:

对于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)的加法h(x)=f(x)+g(x),并且从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x),从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x),则第n-1层的节点nf和ng与扩展层的节点ns相连;若从第0层到第n-1层的节点nh的路径代表GF(2n)的元素h(x),则第n-1层的节点nh与扩展层的节点ns相连;

计算h(x)=f(x)+g(x)的步骤如下:

首先,对于f(x)=fn-1xn-1+fn-2xn-2+...+f0,判断从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x);

然后,对于g(x)=gn-1xn-1+gn-2xn-2+...+g0,从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x);

若第n-1层的节点nf和ng与扩展层的节点ns相连,并且第n-1层的节点nh与扩展层的节点ns相连,则从第0层到第n-1层的节点nh的路径代表的GF(2n)的元素是h(x)=f(x)+g(x),即是h(x)=f(x)+g(x)的运算结果。

所述乘法查找树结构包含两颗查找树,每颗树包含n层;最上面一层即根节点所在的层,称为第0层;则最下面一层,即叶子节点所在的层是第n-1层;

扩展层在查找树的叶子节点下的一层,扩展层的每个节点与三个叶子节点相连;

所有树节点除了叶子节点均有左孩子节点和右孩子节点;

左根节点和左孩子节点代表数值0,右根节点和右孩子节点代表数值1;

每一条从根节点到一个叶子节点的路径分别代表一个GF(2n)的元素。

所述乘法运算模块的计算过程如下:

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)的乘法h(x)=f(x)×g(x),并且从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x),从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x),则第n-1层的节点nf和ng与扩展层的节点ns相连;若从第0层到第n-1层的节点nh的路径代表GF(2n)的元素h(x),则第n-1层的节点nh与扩展层的节点ns相连;

计算h(x)=f(x)×g(x)的步骤如下:

首先,对于f(x)=fn-1xn-1+fn-2xn-2+...+f0,判断从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x);

然后,对于g(x)=gn-1xn-1+gn-2xn-2+...+g0,从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x);

若第n-1层的节点nf和ng与扩展层的节点ns相连,并且第n-1层的节点nh与扩展层的节点ns相连,则从第0层到第n-1层的节点nh的路径代表的GF(2n)的元素是h(x)=f(x)×g(x),即是h(x)=f(x)×g(x)的运算结果。

所述第一运算数a(x)、第二运算数b(x)、乘法运算结果c(x)的多项式表达式分别为:

a(x)=ahx+al,

b(x)=bhx+bl,

c(x)=chx+cl,

ah,al,bh,bl是有限域GF(2n)的元素;ch,cl是有限域GF(2n)的元素;

所述第一运算数a(x)、第二运算数b(x)、乘法运算结果c(x)的系数形式为:

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

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

c(x)=c(ch,cl),

ah,al,bh,bl是有限域GF(2n)的元素;ch,cl是有限域GF(2n)的元素。

所述调度加法运算模块和乘法运算模块计算GF((2n)2)的乘法c(x)=a(x)×b(x)的步骤如下:

令a(x)=ahx+al和b(x)=bhx+bl,,

等待时钟信号由低电平转向高电平;第一个时钟周期,调用乘法运算模块计算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)的元素;令c(x)=chx+cl,ch=s7,cl=s5,ch,cl是子域GF(2n)的元素,c(x)是复合域GF((2n)2)的元素,c(x)是a(x)=ahx+al和b(x)=bhx+bl的乘法运算结果。

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

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

本发明的加法运算模块、乘法运算模块包含两棵查找树,再由控制器调度加法运算模块和乘法运算模块计算复合域GF((2n)2)的乘法。本发明通过查找实现了复合域的乘法运算,在计算GF((2n)2)的乘法运算相对于现有的有限域乘法器能够提高性能,在计算复合域乘法时的速度更快,可以广泛使用在密码系统和数据通信中,提高加密解密速度以及数据编码解码的速度。

附图说明

图1为本发明的实施例的一种基于查找的复合域乘法装置的结构示意图。

图2为加法运算模块的查找树结构如下图GF(24)。

图3为乘法运算模块的查找树结构如下图GF(24)。

具体实施方式

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

实施例

如图1所示,基于查找的复合域乘法装置,包括:

输入端口,包括用于输入复合域GF((2n)2)的第一个运算数a(x)的端口a、用于输入复合域GF((2n)2)的第二个运算数b(x)的端口b、用于输入时钟信号t的端口clk、用于输入复合域GF((2n)2)的不可约多项式q(x)的端口q和用于输入子域GF(2n)的不可约多项式p(x)的端口p;

输出端口,用于输出复合域GF((2n)2)的乘法运算结果c(x),记为端口c;

控制器,包括用于控制输入输出端口控制电路和用于调度加法运算模块和乘法运算模块计算复合域GF((2n)2)的乘法的控制电路;

加法运算模块,包括用于计算GF(2n)的两个已知元素的加法的查找树结构。

乘法运算模块,包括用于计算GF(2n)的两个已知元素的乘法的查找树结构。

(1)输入端口

所述输入端口包括用于输入复合域GF((2n)2)的第一个运算数a(x)的端口a、用于输入复合域GF((2n)2)的第二个运算数b(x)的端口b、用于输入时钟信号t的端口clk、用于输入复合域GF((2n)2)的不可约多项式q(x)的端口q和用于输入子域GF(2n)的不可约多项式p(x)的端口p;

所述输入端口的第一运算数a(x)和第二运算数b(x),可以表示成多项式的形式:

a(x)=ahx+al,

b(x)=bhx+bl,

ah,al,bh,bl是有限域GF(2n)的元素。

所述输入端口的第一运算数a(x)和第二运算数b(x),可以表示成系数的形式:

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

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

ah,al,bh,bl是有限域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中的一个数。

(2)输出端口

输出端口的复合域GF((2n)2)的乘法运算结果c(x),可以表示成系数的形式:

c(x)=c(ch,cl),

ch,cl是有限域GF(2n)的元素。

(3)加法运算模块

如图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)的元素;

计算h(x)=f(x)+g(x)使用加法查找树结构,描述如下:

查找树结构包含两颗查找树,每颗树包含n层,把最上面一层,即根节点所在的层称为第0层,则最下面一层,即叶子节点所在的层是第n-1层;

扩展层在查找树的叶子节点下的一层,扩展层的每个节点与三个叶子节点相连;

所有树节点除了叶子节点均有左孩子节点和右孩子节点;

左节点(左根节点和左孩子节点)代表数值0,右节点(右根节点和右孩子节点)代表数值1;

每一条从根节点到一个叶子节点的路径分别代表一个GF(2n)的元素;例如,由左根节点开始,包括左根节点的左孩子节点、左根节点的左孩子节点的左孩子节点等节点,直到最左边的叶子节点结束(第n-1层的最左边的节点)的路径代表GF(2n)的元素(00...00)2;

若GF(2n)的加法h(x)=f(x)+g(x),并且从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x),从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x),则第n-1层的节点nf和ng与扩展层的节点ns相连;若从第0层到第n-1层的节点nh的路径代表GF(2n)的元素h(x),则第n-1层的节点nh与扩展层的节点ns相连;

计算h(x)=f(x)+g(x)的步骤如下:

首先,对于f(x)=fn-1xn-1+fn-2xn-2+...+f0,判断从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x);

然后,对于g(x)=gn-1xn-1+gn-2xn-2+...+g0,从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x);

若第n-1层的节点nf和ng与扩展层的节点ns相连,并且第n-1层的节点nh与扩展层的节点ns相连,则从第0层到第n-1层的节点nh的路径代表的GF(2n)的元素是h(x)=f(x)+g(x),即是h(x)=f(x)+g(x)的运算结果。

(4)乘法运算模块

如图3所示,所述乘法运算模块,包含乘法查找树结构,用于计算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)使用乘法查找树结构,描述如下:

查找树结构包含两颗查找树,每颗树包含n层,把最上面一层,即根节点所在的层称为第0层,则最下面一层,即叶子节点所在的层是第n-1层;

扩展层在查找树的叶子节点下的一层,扩展层的每个节点与三个叶子节点相连;

所有树节点除了叶子节点均有左孩子节点和右孩子节点;

左节点(左根节点和左孩子节点)代表数值0,右节点(右根节点和右孩子节点)代表数值1;

每一条从根节点到一个叶子节点的路径分别代表一个GF(2n)的元素;例如,由左根节点开始,包括左根节点的左孩子节点、左根节点的左孩子节点的左孩子节点等节点,直到最左边的叶子节点结束(第n-1层的最左边的节点)的路径代表GF(2n)的元素(00...00)2;

若GF(2n)的乘法h(x)=f(x)×g(x),并且从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x),从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x),则第n-1层的节点nf和ng与扩展层的节点ns相连;若从第0层到第n-1层的节点nh的路径代表GF(2n)的元素h(x),则第n-1层的节点nh与扩展层的节点ns相连;

计算h(x)=f(x)×g(x)的步骤如下:

首先,对于f(x)=fn-1xn-1+fn-2xn-2+...+f0,判断从第0层到第n-1层的节点nf的路径代表GF(2n)的元素f(x);

然后,对于g(x)=gn-1xn-1+gn-2xn-2+...+g0,从第0层到第n-1层的节点ng的路径代表GF(2n)的元素g(x);

若第n-1层的节点nf和ng与扩展层的节点ns相连,并且第n-1层的节点nh与扩展层的节点ns相连,则从第0层到第n-1层的节点nh的路径代表的GF(2n)的元素是h(x)=f(x)×g(x),即是h(x)=f(x)×g(x)的运算结果。

(5)控制器

所述控制器与输入端口相连,监听输入端口a,接收复合有限域GF((2n)2)的第一运算数a(x)的端口a;监听输入端口b,接收复合有限域GF((2n)2)的第二运算数b(x)的端口b;监听输入端口clk,接收时钟信号t;监听输入端口q,接收复合有限域GF((2n)2)的不可约多项式q(x);监听输入端口p,接收子域GF(2n)的不可约多项式p(x)。所述控制器与加法运算模块、乘法运算模块相连,所述控制器与输出端口相连,计算GF((2n)2)的乘法c(x)=a(x)×b(x)完成后,将c(x)输出至输出端口c。

令a(x)=ahx+al和b(x)=bhx+bl,计算GF((2n)2)的乘法c(x)=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)的元素;

令c(x)=chx+cl,ch=s7,cl=s5,ch,cl是子域GF(2n)的元素,c(x)是复合域GF((2n)2)的元素,c(x)是a(x)=ahx+al和b(x)=bhx+bl的乘法运算结果。

本实施例以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)的元素;

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

c(x)=chx+cl,

ch,cl是有限域GF(24)的元素;

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

控制器计算GF((24)2)的乘法c(x)=a(x)×b(x)步骤如下:

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

第一个时钟周期,调用乘法运算模块计算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)的元素;

令c(x)=chx+cl,ch=s7,cl=s5,ch,cl是子域GF(24)的元素,c(x)是复合域GF((24)2)的元素,c(x)是a(x)=ahx+al和b(x)=bhx+bl的乘法运算结果;控制器将c(x)输出至输出端口c。

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

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