分组密码算法中混淆层的实现方法转让专利

申请号 : CN201010521246.5

文献号 : CN101969374B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郑志明张筱高莹王钊邱望洁王文华李洪革姜鑫

申请人 : 北京航空航天大学

摘要 :

本发明提供了一种分组密码算法中混淆层的实现方法。该方法实现了一种基于GF(216)求逆的S盒的新的实现方法,通过有限域GF(216)与复合域GF((28)2)的转化,降低传统查表方法带来的存储量和计算量,节省硬件实现开销,提高基于GF(216)求逆的S盒的运算效率。该方法包括:先把需要进行GF(216)上求逆运算的数据进行初始化,再选择GF(28)上的本原多项式求解有限域GF(216)与复合域GF((28)2)的转化矩阵,利用转化矩阵把初始化后GF(216)中的元素在GF(28)中表示出来,并在GF(28)中进行求逆运算,最后把运算结果通过转化矩阵转化成GF(216)中的元素形式输出。与现有的查表算法相比,本发明提供的方案存储面积仅为原有技术的1/512,在硬件实现面积上至少节省了98.57%,而在速度上提高了32.96%。

权利要求 :

1.一种分组密码算法中混淆层的实现方法,其特征在于,所述方法包含如下步骤:A.接收输入数据块,所述数据块包括加密数据块和密钥数据块;

B.对接收到的数据进行初始化,方法为:根据加密算法分组长度和密钥长度,在加密T数据块和密钥数据块中读取相应长度的数据进行异或,结果存入向量P=(p0,p1,p2…p15)

2 15 16

中,其中pi∈GF(2),表示该元素以基底{1,α,α…,α }展开的系数,所述α为GF(2 )

16 12 3

中本原多项式p(x)=x +x +x+x+1的一个根;

2 15 16

C.用基于共轭的复合域算法,计算以{1,α,α…,α }为基底的GF(2 )与复合域

8 2

GF((2))的转化矩阵M;

D.计算M×P,将输出结果记作向量 pji∈GF(2),生成向量

8

E.定义向量b0={b00,b01,…,b07},b1={b10,b11,…,b17},在GF(2)中计算:其中γ=αc,c=(216-1)/(28-1),T -1

F.生成向量b=(b00,b01,…,b07,b10,b11,…b17),计算M ×b;

G.输出所处理的数据块。

2.如权利要求1所述的实现方法,其特征在于,所述步骤A中,对于首轮运算,所述加密数据块的输入为待加密的明文;对第二轮至末轮运算,所述加密数据块的输入为前一轮的运算结果。

3.如权利要求1所述的实现方法,其特征在于,所述密钥数据块的数据由密钥扩展算法产生,根据不同的运算轮数,得到相应的密钥数据。

4.如权利要求1所述的实现方法,其特征在于,所述加密数据块的输入介质为通用计算机或专用加解密器的输入设备。

5.如权利要求1所述的实现方法,其特征在于,所述加密数据块的输入方式为数据存储介质输入或者用户手动输入。

说明书 :

分组密码算法中混淆层的实现方法

技术领域

[0001] 本发明涉及分组密码加密解密算法,具体涉及分组密码算法中混淆层的实现方法。

背景技术

[0002] 随机混淆层是数据加解密算法实现加密数据的混淆和扩散的核心运算层,在分组密码算法中通常使用S盒实现随机混淆层的非线性置换。为满足现代信息安全的需要,密码设计尽可能使用大规模的随机混淆层,确保数据加密的安全性和灵活性。其中,基于16
GF(2 )求逆运算的S盒在军事通信、卫星数据链路、下一代带互联网络安全等领域中有广泛的应用和重要的作用。因此,对此类S盒的研究和高效实现具有很强的现实意义。
[0003] 由于加密算法在每一次轮函数运算时都要通过S盒进行有限域运算,S盒运算的16
高效实现很大程度上决定着整个加密系统的性能。然而,基于GF(2 )求逆运算的S盒虽然在安全性方面性能优秀,但涉及大规模存储和计算,在实现效率上大打折扣。实现求逆运算
16
的一般操作是预先计算GF(2 )求逆对应每一个输入的输出结果,生成一张包含65536个
16比特数据的查找表,存放在只读存储器(ROM)中,运算时将输入值连接到ROM的地址总线上。此方法实现占用大量存储和计算资源,特别是硬件实现时占用存储面积庞大,且会造成固定的延时影响实现效率。
[0004] 工程上通常牺牲硬件代价换取实现效率,有限域理论的数学方法,特别是复合域8
算法,则可以通过优化逻辑函数有效地降低硬件开销。复合域算法对AES算法的基于GF(2)
8
求逆的S盒的实现已相对成熟:针对AES的S盒,Atri Rudra等实现了其GF(2)中元素与
4 2
GF((2))元素的映射,并分析了代表元选取对转化效率的影响;C.Jutla等实现了AES在复
4 2 8 2 2 2
合域GF((2))上的全部运算。A.Satoh等将AES在GF(2)中的元素映射到GF(((2)))中进行计算,进一步缩小查表规模;Xinmiao Zhang等应用复合域方法实现了AES算法FPGA
16
仿真21.56Gbps的吞吐率。而针对GF(2 )求逆S盒的分析方法和高效实现技术研究尚不多见。

发明内容

[0005] 本发明的目的是提供一种基于GF(216)求逆的S盒的新的实现方法,通过有限域16 8 2
GF(2 )与复合域GF((2))的转化,降低传统查表方法带来的存储量和计算量,节省硬件实
16
现开销,提高基于GF(2 )求逆的S盒的运算效率。
[0006] 本发明的原理是:先把需要进行GF(216)上求逆运算的数据进行初始化,再选择8 16 8 2
GF(2)上的本原多项式求解有限域GF(2 )与复合域GF((2))的转化矩阵,利用转化矩阵
16 8 8
把初始化后GF(2 )中的元素在GF(2)中表示出来,并在GF(2)中进行求逆运算,最后把运
16
算结果通过转化矩阵转化成GF(2 )中的元素形式输出。
[0007] 本发明对应的流程图如图1所示,详细技术方案如下:
[0008] 一种分组密码算法中混淆层的实现方法,其特征在于,所述方法包含如下步骤:
[0009] A.接收输入数据块,所述数据块包括加密数据块和密钥数据块;
[0010] 对于首轮运算,所述加密数据块的输入为待加密的明文;对第二轮至末轮运算,所述加密数据块的输入为前一轮的运算结果。所述密钥数据块的数据由密钥扩展算法产生,根据不同的运算轮数,得到相应的密钥数据。所述加密数据块的输入介质可以采用通用计算机或专用加解密器的输入设备。所述加密数据块的输入方式可以采用多种形式,包括数据存储介质、用户手动输入等。
[0011] B.对接收到的数据进行初始化,方法为:根据加密算法分组长度和密钥长度,在加密数据块和密钥数据块中读取相应长度的数据进行异或,结果存入向量P=(p0,p1,p2…T 2 15p15) 中,其中pi∈GF(2)(i=0…15),表示该元素以基底{1,α,α…,α }展开的系数,
16 16 12 3
所述α为GF(2 )中本原多项式p(x)=x +x +x+x+1的一个根;
[0012] C.用基于共轭的复合域算法,计算以{1,α,α2…,α15}为基底的GF(216)与复合8 2
域GF((2))的转化矩阵M,得到
[0013]
[0014] D.计算T×P,将输出结果记作向量 pji∈GF(2),生成向量
[0015] E.定义向量b0={b00,b01,…,b07},b1={b10,b11,…,b17},在GF(28)中计算:c 16 8
其中γ=α,c=(2 -1)/(2-1),
T -1
[0016] F.生成向量b=(b00,b01,…,b07,b10,b11,…b17),计算M ×b,其中[0017]
[0018] G.输出所处理的数据块。
[0019] 本发明的有益效果:本发明实现了基于GF(216)求逆的S盒作为加解密算法的随机混淆层,与现有的查表算法相比,本发明提供的方案存储面积仅为原有技术的1/512,在硬件实现面积上至少节省了98.57%,而在速度上提高了32.96%。本发明适用于诸如智能卡、掌上机、移动设备等对面积要求比较严格的场合。

附图说明

[0020] 图1为本发明对应的流程图;
[0021] 图2为本发明的硬件仿真结构图。

具体实施方式

[0022] 下面通过FPGA仿真的硬件实现过程对本发明作进一步说明,在不脱离本发明及所附权利要求的精神和范围内,硬件实现的具体方法是可以替换和修改的。
[0023] 采用本发明方案进行的硬件仿真的电路结构如图2所示,其中模块200为GF(216)8 2 16 8 2 8
到GF(2) 的同构映射,模块201为GF(2 )到GF(2) 的同构逆映射,模块202为GF(2)上
8 8
的加法运算,模块203为GF(2)上的元素与常量C的乘法,模块204为GF(2)上的元素与
8 8
常量D的乘法,模块205为GF(2)上的平方运算,模块206为GF(2)上的求逆运算,模块
8
207为GF(2)上的乘法运算。接入数据输入模块后进行数据初始化,将数据存入向量P=T
(p0,p1,p2…p15),输入开发板。
[0024] 将转化矩阵M写入仿真开发板的同构映射模块200,通过该模块计算,将输入向量8
P转化为两个GF(2)中数据的形式,存入向量p′0、p′1。将p′1模块分别输入模块203和模块205进行常数乘法和平方运算,205模块的输出结果输入204模块进行常数乘法,这
192
里D取值为γ,如发明内容步骤E所示。在模块203中,常数C取值为γ 。模块203的计算结果与p′0异或后与p′0相乘,结果与模块204的结果一同输入模块202进行加法,之
8
后进入模块206实现8位2进制数求逆运算,此时求逆运算在GF(2)中进行,可以通过查表进行运算。将p′0与模块203结果相加后的结果与模块206求逆后的结果相乘,得到8bit数据b0。将p′1与模块206求逆后的结果相乘,得到8bit数据b1。将b0、b1作为输入,通
16
过模块201进行计算,得到输入数据在GF(2 )中的求逆结果,将所得结果数据块输出。
[0025] 以传统的GF(216)上的查表方法进行运算,硬件实现面积为16420Slice LUTs,最大路径延时为16.448ns。本发明提供的方案在硬件仿真条件相同的情况下,可以达到实现面积为235Slice LUTs,最大路径延时为12.357ns,实现面积上至少节省了98.57%,而在速度上提高了32.96%。