当前位置:首页 >资讯 >Twofish加密算法的基本组件


一般包括以下基本组件的Twofish算法:

(1)Feistelnetwork。通常用于将函数(通常称为F函数)转换为一个排列,表式可以用于非线性函数:

F:{o,1}n/2 X {0,1}m-->{0,1}n/2

Twofish采用16回合Feistelnetwork,采用双射F函数。F函数是一种与密钥相关的64bits的排列运算。它包括三个部分:R0、R1和回合R0R0。通过函数G的运算后,它们变成了T0。R1首先是左旋8bits,然后通过函数G的运算后,它们变成了T1,然后是T0,T1,然后通过PHT的组合运算后,它们变成了T0F的输出值F0。

对Twofish加密算法的基本组件进行分析。

每个回合的核心F函数都是由两个G函数组成的。在整个Twofish中,函数G是最重要的部分。输入X2位的数据分为4个字节。每个字节操作都有自己的S-1boxes。操作完成后,获得的结果将输入4?MOS矩阵4可获得32位输出结果Z0。整个数学表达式如下:

X1=[X/28]mod28i=q..,3。

Y1=s1[x1]i=0,..。

对Twofish加密算法的基本组件进行分析。

MDS矩阵如下所示:

对Twofish加密算法的基本组件进行分析。

(2)S-boxes。是一种可以用表格表示的非线性置换运算。可以通过随机生成不同的S-box,也可以通过特定的算法生成不同的S-box。随着分组密码算法的不同,S-box输入和输出个数也有所不同。Twofish使用两个固定的8x8位置的4个8x8位置的S-boxes,加上密钥数据。

(3)MDS矩阵。它是一种线性映射,在该域上发挥作用。从包含a元素的向量映射到包含b元素的向量,它将产生一个包含a+b元素的合成向量,这个向量具有一个特性:至少有一个b+1个非零向量。换句话说,MDS通常表示它包含在一个。axb元素的矩阵型,而twofish本身使用一个MDSS矩阵作用于GF(28)上的4x4。

(4)PHT。PHT是一种简单的混合操作,可以快速执行。假设给定两个输入a和b,那么32位PHT的定义是:

对Twofish加密算法的基本组件进行分析。

(5)whitening。将密钥数据和分组数据进行XOR的操作是在第一个回合之前和最后一个回合之后。

(6)keyshceduling。shceduling的功能是从源密钥中产生k0...K.39,共40个扩展密钥的长度为4个字节和4组相关的s-boxes。这些S-boxs由g函数使用。twofish定义了三种源密钥的长度:128.192.256,短于256位的输入密钥用O填充到就近的长度。keyshceduling的基本过程是:设置k2n/64,然后源密钥M可以分为2k32位,形成两个长度为k的向量,

M0=(M1,M3,...M2K-1)Me=(M0,M2K-1)

通过下式确定第三个字向量S=(SK-1,SK-2...):

对Twofish加密算法的基本组件进行分析。

每个元素的向量(m0,m1,...m8k-1)由源钥相邻8位构成,RS矩阵定义为:

对Twofish加密算法的基本组件进行分析。

Me.Mo.S是产生扩展密钥的三个要素。通过下面的表达式来确定K0...K39:

对Twofish加密算法的基本组件进行分析。