一种基于Feistel的线性变换构造方法及系统技术方案

技术编号:37344225 阅读:14 留言:0更新日期:2023-04-22 21:36
本发明专利技术提供了一种基于Feistel的线性变换构造方法及系统,应用于密码算法的扩散层,包括:步骤1、定义分支数为4的线性变换运算A;步骤2、将基于Feistel密码结构的两个输入X0、X1,分别输入线性变换运算A输出得到A(X0)、A(X1),将两个输出进行异或运算得到中间变量T;步骤3、对中间变量T进行循环移位后再与A(X1)异或运算,得到输入X1对应的输出Y1;对输出Y1进行循环移位后与中间变量T异或运算,得到输入X0对应的输出Y0,完成线性变换。本发明专利技术达到了已知公开结果中的最优分支数,且线性变换的结构简洁,运算逻辑均为基本运算,软、硬件实现资源开销低,能够在不同计算平台上高效实现。能够在不同计算平台上高效实现。能够在不同计算平台上高效实现。

【技术实现步骤摘要】
一种基于Feistel的线性变换构造方法及系统


[0001]本专利技术涉及通信加密
,特别涉及一种基于Feistel的线性变换构造方法及系统。

技术介绍

[0002]本专利技术涉及通信加密
,具体涉及一种基于Feistel结构的分支数为6的线性变换构造方法。
[0003]扩散部件的设计是密码算法设计的重要组成部分,为密码算法提供良好的扩散性质,保障密码算法抵抗差分和线性等攻击方法的安全性。在SPN(Substitution Permutation Network)、Feistel等密码结构中,扩散层主要用于将混淆层的局部非线性等密码学特性扩散到更多的整体分组中。线性变换常用于密码算法的扩散层,直接影响密码算法的安全性和效率,构造结构简单且分支数较大的线性变换是密码算法设计中非常重要的环节,采用分支数较大的线性变换可以使密码算法更好地抵抗差分攻击和线性攻击,采用结构简单的扩散部件有利于密码算法的快速实现。
[0004]目前的线性变换主要有MDS矩阵、基于循环移位和异或运算的线性变换、比特置换、二元矩阵等,如AES算法,Twofish算法,SMS4算法、AIRA算法、HIEROCRYPT算法等都采用线性变换作为扩散部件。为了保证密码算法的快速有效实现,线性变换对应的矩阵应具有较少的元素和较小的数值,例如AES算法中使用有限域GF(28)上的MDS矩阵为循环移位矩阵,Twofish算法中使用GF(28)上的MDS矩阵为Hadamard矩阵,AIRA算法中使用GF(2)上的0/1矩阵为对合矩阵等。如何设计有限域GF(2n)上能够快速实现的MDS矩阵一直是人们关心的重要问题,具有较好的理论基础和丰富的研究成果,如基于循环移位矩阵、Cauchy矩阵以及Hadamard矩阵等特殊矩阵来设计MDS矩阵的思想和构造方法,也可以借助计算机程序搜索出大量便于实现的MDS矩阵。但由于有限域GF(2n)上的乘法运算较为复杂,导致有限域上的MDS矩阵无法满足移动互联网、物联网中诸多资源受限应用场景下的密码算法扩散部件的设计要求。
[0005]基于循环移位、异或等简单逻辑运算设计的线性变换具有结构简单、运算快速、计算资源消耗低等轻量化特征,特别适用于移动互联网、物联网等应用场景下的轻量级密码算法设计。通常情形下,衡量一个密码算法部件的资源占用情况可以通过基本运算数目的多少来大致刻画,主要目标是寻找具有最少异或数、最少循环移位数、最优分支数等轻量化特征的最简形式线性变换的设计方法。
[0006]目前,在实际的密码算法方案中,如何实现线性变换分支数(密码学指标)和轻量运算(实现资源开销)之间好的平衡,是线性变换构造方法设计中的关键问题。因此,设计分支数大且便于软硬件实现的线性变换构造方法,对设计安全高效的密码算法方案具有重要意义。

技术实现思路

[0007]针对现有技术中存在的问题,提供了一种基于Feistel的线性变换构造方法及系统,通过2个4阶0/1矩阵、2个循环移位和3个异或运算来构造新的线性变换,得到的线性变换达到了已知最优的分支数,在不同计算平台均能高效实现,并给出了该类分支数最优线性变换的计数结果和相应实例,能够为密码算法设计提供大量轻量化且密码性质好的扩散部件
[0008]本专利技术采用的技术方案如下:一种基于Feistel的线性变换构造方法,应用于密码算法的扩散层,包括:
[0009]步骤1、定义分支数为4的线性变换运算A;
[0010]步骤2、将基于Feistel密码结构的两个输入X0、X1,分别输入线性变换运算A输出得到A(X0)、A(X1),将两个输出进行异或运算得到中间变量T;
[0011]步骤3、对中间变量T进行循环移位后再与A(X1)异或运算,得到输入X1对应的输出Y1;对输出Y1进行循环移位后与中间变量T异或运算,得到输入X0对应的输出Y0,完成线性变换。
[0012]进一步的,所述步骤1中,线性变换运算A具体为:
[0013]y=A(x)
[0014]其中,对于输入输出则x
i
∈GF(2
n
),y
i
∈GF(2
n
),x∈GF(2
n
)4,y∈GF(2
n
)4,

表示异或运算。
[0015]进一步的,所述步骤2、步骤3的具体运算过程为:对于输入X0,X0∈GF(28)4、X1,X1∈GF(28)4,X0对应输出为Y0,Y0∈GF(28)4,X1对应输出为Y1,Y1∈GF(28)4,i、j均为循环参数;
[0016](1)计算中间变量T,T=(A(X0)

A(X1));T∈GF(28)4;
[0017](2)计算输出Y1,Y1=A(X1)

(T<<<i);
[0018](3)计算输出Y1,Y0=T

(Y1<<<j)。
[0019]进一步的,所述步骤3中,中间变量的循环移位与输出Y1的循环移位所对应的循环参数根据需求设置。
[0020]本专利技术还提出了一种基于Feistel的线性变换系统,包括两个相同的第一线性变换模块、第二线性变换模块,第一异或模块、第二异或模块、第三异或模块以及第一循环移位运算模块、第二循环移位运算模块;两个输入X0、X1对应输入至第一线性变换模块、第二线性变换模块,第一线性变换模块的输出与第二线性变换模块的输出输入至第一异或模块,第一异或模块的输出分别输入至第三异或模块和第一循环移位运算模块,第一循环移位运算模块的输出输入至第二异或模块,第二线性模块的输出输入至第二异或模块,第二异或模块的输出作为输入X1的线性变换输出Y1;同时第二异或模块的输出经第二循环移位运算模块输入至第三异或模块,第三异或模块的输出作为输入X0的线性变换输出Y0。
[0021]进一步的,所述第一线性变换模块及第二线性变换模块的实现原理为:
[0022]y=A(x)
[0023]其中,线性变换模块的输入为线性变换模块的输出为则x
i
∈GF(2
n
),y
i
∈GF(2
n
),x∈GF(2
n
)4,y∈GF(2
n
)4,

表示异或运算。
[0024]本专利技术还提出了一种电子设备,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如上述的基于Feistel密码结构的线性变换构造方法对应的计算机程序。
[0025]本专利技术还提出了一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时用于实现上述的基于Feistel密码结构的线性变换构造方法对应的过程。
[0026]与现有技术相比,采用上述技术方案的有益效果为:本专利技术设计了一种构造分支数为6的线性变换本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Feistel的线性变换构造方法,其特征在于,应用于密码算法的扩散层,包括:步骤1、定义分支数为4的线性变换运算A;步骤2、将基于Feistel密码结构的两个输入X0、X1,分别输入线性变换运算A输出得到A(X0)、A(X1),将两个输出进行异或运算得到中间变量T;步骤3、对中间变量T进行循环移位后再与A(X1)异或运算,得到输入X1对应的输出Y1;对输出Y1进行循环移位后与中间变量T异或运算,得到输入X0对应的输出Y0,完成线性变换。2.根据权利要求1所述的基于Feistel的线性变换构造方法,其特征在于,所述步骤1中,线性变换运算A具体为:y=A(x)其中,对于输入输出则x
i
∈GF(2
n
),y
i
∈GF(2
n
),x∈GF(2
n
)4,y∈GF(2
n
)4,表示异或运算。3.根据权利要求2所述的基于Feistel的线性变换构造方法,其特征在于,所述步骤2、步骤3的具体运算过程为:对于输入X0,X0∈GF(28)4、X1,X1∈GF(28)4,X0对应输出为Y0,Y0∈GF(28)4,X1对应输出为Y1,Y1∈GF(28)4,i、j均为循环参数;(1)计算中间变量T,T=(A(X0)

A(X1));T∈GF(28)4;(2)计算输出Y1,Y1=A(X1)

(T<<<i);(3)计算输出Y1,Y0=T

(Y1<<<j)。4.根据权利要求3所述的基于Feistel的线性变换构造方法,其...

【专利技术属性】
技术研发人员:董新锋苗旭东李枫张文政吴忧周宇韩羽穆道光胡建勇张福众谭豪
申请(专利权)人:中国电子科技集团公司第三十研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1