首页 理论教育 IDEA加密解密过程详解

IDEA加密解密过程详解

时间:2023-07-02 理论教育 版权反馈
【摘要】:IDEA加密过程的初始输入是64bit的明文分组X和128bit的种子密钥Z,64bit的明文分组X被分成4个16bit的子段X1,X2,X3,X4作为输入。IDEA的加密过程由连续的8轮迭代和一个输出变换组成,每轮迭代以4个16bit的子段作为输入,输出也为4个16bit的子段。 假设IDEA的初始密钥试确定由初始密钥产生的子密钥。IDEA算法要求由初始密钥Z产生52个加密子密钥,每个16bit。

IDEA加密解密过程详解

IDEA加密过程的初始输入是64bit的明文分组X和128bit的种子密钥Z,64bit的明文分组X被分成4个16bit的子段X1X2X3X4作为输入。IDEA的加密过程由连续的8轮迭代和一个输出变换组成,每轮迭代以4个16bit的子段作为输入,输出也为4个16bit的子段。最后的输出变换也产生4个16bit的子段Y1Y2Y3Y4,连接起来后形成64bit的密文分组,如图4-10所示。每轮迭代还需使用6个16bit的子密钥,最后的输出变换需使用4个16bit的子密钥,所以子密钥总数为52。图4-10的右半部分表示由初始的128bit种子密钥生成52个子密钥的子密钥生成器。

978-7-111-37285-1-Chapter04-34.jpg

图4-10 IDEA整体加密过程结构框图

1.IDEA加密过程

图4-11的上半部分是IDEA第1轮细化后的结构示意图,以后各轮也都是这种结构,但所用的子密钥和轮输入不同,图的下半部分是最后的输出变换,与其他8轮相比,没有使用MA结构。从结构图可见,IDEA没有采用Feistel结构。每轮开始是两个乘法和两个加法运算,输出的4个子段两两异或得到的两个16bit子段作为MA结构的输入,MA结构也有两个输入的子密钥,输出是两个16bit的子段。具体运算过程如下:

1)由Z形成52个长度为16bit子密钥Z(1)1,…,Z(1)6,…,Z(8)1,…,Z(8)6Z(9)1,…,Z(9)4。64bit明文X从左到右分成4个16bit的子段X1X2X3X4

2)第1轮的运算过程如下,其他2~8轮类似。

978-7-111-37285-1-Chapter04-35.jpg

3)输出变换。

978-7-111-37285-1-Chapter04-36.jpg

输出X的密文(Y1Y2Y3Y4),其中Yi(1≤i≤4)均为16bit的子段。

978-7-111-37285-1-Chapter04-37.jpg

图4-11 IDEA加密算法轮结构

注意,由X2产生的输出子段和由X3产生的输出子段交换位置后形成W12W13,目的在于进一步增加混淆效果,使得算法更易抵抗差分密码分析。

2.子密钥的产生

加密过程中52个16bit的子密钥是由128bit的种子密钥按如下方式产生的:前8个子密钥Z(1)1Z(1)2,…,Z(1)6Z(2)1Z(2)2直接从加密密钥中取,即Z(1)1取前16bit(最高有效位),Z(1)2取下面的16bit,依此类推。然后加密密钥循环左移25bit,再依次取8个子密钥得到Z(2)3,…,Z(2)6Z(3)1,…,Z(3)4,取法与Z(1)1Z(1)2,…,Z(1)6Z(2)1Z(2)2的取法相同。这一过程重复下去,直到52个子密钥都产生为止。

【例4-10】 假设IDEA的初始密钥

978-7-111-37285-1-Chapter04-38.jpg(www.xing528.com)

试确定由初始密钥产生的子密钥。

IDEA算法要求由初始密钥Z产生52个加密子密钥,每个16bit。前8个子密钥如下:

978-7-111-37285-1-Chapter04-39.jpg

978-7-111-37285-1-Chapter04-40.jpg

接下来将Z向左循环左移25bit,然后依次按16bit为一组进行选取,分别得到:

978-7-111-37285-1-Chapter04-41.jpg

再将Z继续循环左移25bit,还是每次按16bit为一组进行选取,产生8个子密钥;如此重复,每次循环左移25bit,产生8个子密钥,直至产生出所需的52个16bit的子密钥。

3.IDEA解密过程

解密过程和加密过程基本相同,但子密钥的选取不同。解密子密钥K1K2,…,K52由加密子密钥按如下方式得到(将加密过程最后一步的输出变换当做第9轮):

978-7-111-37285-1-Chapter04-42.jpg

其中,K(i)j是解密子密钥;Z(i)j是加密子密钥;Z(i)j的模216+1乘法逆元为(Z(i)j)-1,满足

Z(i)j☉(Z(i)j)-1≡1mod(216+1)

因216+1是一素数,所以每一个不大于216的非0整数都有一个唯一的模216+1乘法逆元。

Z(i)j的模216加法逆元为-Z(i)j,满足

978-7-111-37285-1-Chapter04-43.jpg

在解密过程中,输入4个16bit的密文子段Y1Y2Y3Y4,解密子密钥K(i)j按如上方式选取,经过9轮变换,得到4个16bit的明文子段X1X2X3X4,输出明文X=X1X2X3X4。由此可以得知,整个解密过程的输出等于整个加密过程的输入。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈