1、2020/2/10,1,3.5 IDEA,瑞士联邦技术学院来学嘉(X. J. Lai)和J. L. Massey提出的第1版IDEA(international data encryption algorithm,国际数据加密算法)于1990年公布,当时称为PES(proposed encryption standard,建议加密标准)。 1991年,在Biham和Shamir提出差分密码分析之后,设计者推出了改进算法IPES,即改进型建议加密标准。 1992年,设计者又将IPES改名为IDEA,目前已在PGP中采用。,2020/2/10,2,3.5.1 设计原理,算法中明文和密文分组长度都是
2、64比特,密钥长128比特。其设计原理可从强度和实现两方面考虑。 1. 密码强度 算法的强度主要是通过有效的混淆和扩散特性而得以保证。,2020/2/10,3,混淆是通过使用以下3种运算而获得,3种运算都有两个16比特的输入和一个16比特的输出: 逐比特异或,表示为。 模216(即65536)整数加法,表示为,其输入和输出作为16位无符号整数处理。 模216+1(即65537)整数乘法,表示为,其输入、输出中除16位全为0作为216处理外,其余都作为16位无符号整数处理。例如 00000000000000001000000000000000=1000000000000001 这是因为21621
3、5 mod (216+1)= (216+1)215- 215= - 215= 215+1 mod (216+1) 见P58表3-6,+,2020/2/10,4,Efficient computation of ,n=16, 直接计算 ab mod 65537 代价大;Low-high algorithmab mod 2n+1 = (ab mod 2n) (ab div 2n) 如 (ab mod 2n) (ab div 2n) (ab mod 2n) (ab div 2n) +2n+1 如 (ab mod 2n) (ab div 2n) ab mod 2n :ab的n个最低有效位 ab div
4、 2n :ab右移n位 如 48 mod 17= (32 mod 17)=(0010,0000) mod 17)=(32 mod 16)(32 div 16) + 17 = (0000)(0010)+17=15,ab = q(2n+1)+r =q2n +(q+r)=(q+1)2n +(q+r2n),2020/2/10,5,表3.6给出了操作数为2比特长时3种运算的运算表。在以下意义下,3种运算是不兼容的:(见58页表3.6) 3种运算中任意两种都不满足分配律,例如 a + (b c)(a + b ) (a + c ) 3种运算中任意两种都不满足结合律,例如 a +(b c)(a + b ) c
5、,+,3种运算结合,使得对IDEA的密码分析比对仅使用异或运算的DES更为困难。,2020/2/10,6,算法中扩散是由称为乘加(multiplication/addition, MA)结构的基本单元实现的。 该结构的输入是两个16比特的子段和两个16比特的子密钥,输出也为两个16比特的子段。,MA结构,2020/2/10,7,2. 实现 IDEA可方便地通过软件和硬件实现。 软件实现采用16比特子段处理,可通过使用容易编程的加法、移位等运算实现算法的3种运算。 硬件由于加、解密相似,差别仅为使用密钥的方式,因此可用同一器件实现。,加密过程由连续的8轮迭代和1个输出变换组成. 每轮迭代以4个1
6、6比特的子段作为输入,输出也为4个16比特的子段, 链接起来后形成64比特的密文分组。 每轮需使用6个16比特的子密钥,输出变换需使用4个16比特的子密钥,所以子密钥总数为52。,图表示由初始的128比特密钥产生52个子密钥的子密钥产生器。,3.5.2 加密过程,轮结构,每轮开始时有一个变换,该变换的输入是4个子段和4个子密钥,变换中的运算是两个乘法和两个加法,输出的4个子段经过异或运算形成了两个16比特的子段作为MA结构的输入。 MA结构也有两个输入的子密钥,输出是两个16比特的子段。 变换的4个输出子段和MA结构的两个输出子段经过异或运算产生这一轮的4个输出子段。 由X2产生的输出子段和由
7、X3产生的输出子段交换位置后形成W12和W13,目的在于进一步增加混淆效果,使得算法更易抵抗差分密码分析。,输出变换,输出变换的结构和每一轮开始的变换结构一样,不同之处在于输出变换的第2个和第3个输入首先交换了位置,目的在于撤销第8轮输出中两个子段的交换。 第9步仅需4个子密钥,而前面8轮中每轮需要6个子密钥。,轮开始的变换结构,2020/2/10,11,2. 子密钥的产生,前8个子密钥Z1,Z2,Z8直接从加密密钥中取,即Z1取前16比特(最高有效位),Z2取下面的16比特,依次类推。 然后加密密钥循环左移25位,再取下面8个子密钥Z9,Z10,Z16,取法与Z1,Z2,Z8的取法相同。 这
8、一过程重复下去,直到52子密钥都被产生为止。,左边为加密过程,由上至下,右边为解密过程,由下至上。将每一轮进一步分为两步,第1步是变换,其余部分作为第2步,称为子加密。见P61表3-7,3. 解密过程,输出,J11 J12 J13 J14,对加密过程的最后一个输出变换Y1=W81 Z49 Y2=W83 + Z50 Y3=W82 + Z51 Y4=W84Z52解密过程中第1轮的第1步: J11=Y1U1 J12=Y2 + U2 J13=Y3 + U3 J14=Y4U4,J11=Y1Z-149= W81Z49Z-149= W81 J12=Y2 + -Z50=W83 + Z50 + -Z50=W83
9、 J13=Y3 + -Z51=W82 + Z51 + -Z51=W82 J14=Y4Z-152= W84Z52Z-152= W84,解密过程第1轮第1步的输出等于加密过程最后一步输入第2个子段和第3个子段交换。,W81=I81MAR(I81I83,I82I84) W82=I83MAR(I81I83,I82I84) W83=I82MAL(I81I83,I82I84) W84=I84MAL(I81I83,I82I84),V11=J11MAR(J11J13,J12J14)=W81MAR(W81W82,W83W84)=I81MAR(I81I83,I82I84)MAR I81MAR(I81I83,I82
10、I84)I83 MAR(I81 I83,I82I84), I82MAL(I81I83,I82I84) I84MAL(I81I83,I82I84) =I81MAR(I81I83,I82I84)MAR(I81I83,I82I84) =I81,MAR(X,Y) 右边输出 MAL(X,Y) 左边输出。,J11=W81 J12=W83 J13=W82 J14=W84,2020/2/10,16,类似地,V12=I83 V13=I82 V14=I84 同理可证每步都有上述类似关系,这种关系一直到 V81=I11 V82=I13 V83=I12 V84=I14 最后可得知,整个解密过程的输出等于整个加密过程的输入。,