寻找高分C#版本的IDEA算法
2.理念设计原则
3、想法加密过程
4.IDEA解密过程
三
idea(international data encryption algorithm)是由瑞士的James Massey,Xuejia Lai等人提出的一种加密算法,属于密码学中分组密码的一类。
IDEA使用长度为128bit的密钥,数据块大小为64bit。从理论上讲,IDEA是一种“强”加密算法,目前为止还没有针对这种算法的有效攻击算法。
1的基本概念。想法
四
早在1990年,薛家来等人就在EuroCrypt'90年会上提出了建议的加密标准(PES)。在EuroCrypt’91年会上,赖学佳等人提出了PES (IPES)的修订版。目前,IPES已经被商业化,改名为IDEA。IDEA已经被瑞士Ascom公司申请了专利,你必须申请许可才能将IDEA算法用于商业目的。
理念的基本概念
五
IDEA是一种分组密码算法,分组长度为64位,密钥长度为128位(比DES强)。同样的算法可以加密和解密。
IDEA可以抵抗差分分析和相关分析;
IDEA似乎没有DES意义上的弱键;
IDEA的“混淆”和“扩散”设计原理来自于三种运算,在软件和硬件上都很容易实现(快速加密)
理念的基本概念
六
异或运算()
整数模块216加(+)
整数模216+1次()(S盒的想法)
扩散由称为MA结构的算法的基本构建块提供。
Z6
第二子代
F1
Z5
G1
G2 Esports电子竞技俱乐部
理念运作
七
实施注意事项
使用子包:16bit子包;
使用简单的操作(易于添加、移位等。)
加密和解密过程是相似的;
规则结构(用于VLSI实现)。
理念运作
八
2.理念设计原则
1密码的强度:主要通过混淆和扩散来实现。
混淆实现方法:
(1)按位异或。表示为
(2)模整数加法,表示为,其输入和输出为
16无符号整数处理。
模整数乘法,表示为,其输入和输出除以16。
所有零都被视为16无符号整数。
九
例如
0000000000000000⊙1000000000000000
=1000000000000001
这是因为216×215 mod(216+1)= 215+1。
理念设计原则
10
表3.6显示了当操作数为2位长时三种运算的运算表。在以下意义上,这三种操作是不相容的:
①三种运算中任意两种不满足分布律,如a+(b⊙c)≦(a+b)⊙(a+c)。
②三个运算中任意两个不满足结合律,如a +(b?c)≨(a+b)?c
+
理念设计原则
11
三种运算的组合可以对算法的输入提供复杂的变换,这使得IDEA的密码分析比仅使用XOR运算的DES更困难。
算法中的扩散是通过一个叫做乘/加,MA)结构的基本单元实现的(见图4.14)。
这个结构的输入是两个16比特子段和两个16比特子密钥,输出也是两个16比特子段。这种结构在算法中重复使用了8次,获得了非常有效的扩散效果。
理念设计原则
12
IDEA算法的扩散主要通过乘加结构的基本单元来实现。
概念结构
13
思想加密的总体方案
第二周期
第八周期
循环1
输出转换
64位密文
64位明文
Z1
Z6
Z7
Z12
Z43
Z48
Z49
Z52
子密钥生成器
128位密钥
Z1
Z52
16
14
IDEA加密总体方案图
15
想法加密过程
回合1
64位明文
X1
X2
X3
X4
第二轮
W11
W12
W13
W14
第8轮
W71
W72
W73
W74
W21
W22
W23
W24
W81
W82
W83
W84
输出转换
Y1
Y2
Y3
Y4
密文
…
Z1
Z6
…
Z7
Z12
…
Z43
Z48
…
Z49
Z52
关键词生成器
128位密钥
Z1
Z52
16
加密过程(如图4.15所示)由八次连续迭代和一次输出转换组成。该算法将64位明文分成4个16位子段,每次迭代以4个16位子段为输入,输出也是4个16位子段。最终的输出转换还产生四个16位的子段,这些子段被连接起来形成一个64位的密文分组。每次迭代需要6个16位的子密钥,最终输出转换需要4个16位的子密钥,所以子密钥总数为52。图4.15的右半部分显示了从初始的128位密钥生成52个子密钥的子密钥生成器。
3.想法加密过程
17
图4.16是IDEA的1轮的结构示意图,后续各轮也是这种结构,只是使用的子键和轮输入不同。从结构图可以看出,IDEA并不是传统的Feistel密码结构。在每一轮的开始,都有一个转变。转换的输入是四个子段和四个子键。转换中的操作是两次乘法和两次加法。四个输出子段进行异或运算,形成16比特的两个子段作为MA结构的输入。MA结构也有两个输入子键,输出是两个16位子段。
理念的车轮结构
18
IDEA wheel 1的车轮结构
19
Y1
Y2
Y3
Y4
1车轮结构
20
最后,将变换的四个输出子段与MA结构的两个输出子段进行异或运算,生成本轮的四个输出子段。注意,W12和W13是在X2生成的输出子段和X3生成的输出子段交换后形成的,目的是为了进一步增加混淆效果,使算法更能抵抗差分密码分析。
想法加密过程
21
在每一轮中,执行的顺序如下:
1.X1乘以第一个子项。
2.添加了X2和第二个子密钥。
3.添加了X3和第三个子密钥。
4.X4和第四个子密钥相乘。
5.区别步骤1和步骤3的结果。
6.比较步骤2和步骤4的结果。
IDEA,每一轮的加密顺序。
22
7.将步骤5的结果乘以第五个子密钥。
8.将第6步和第7步的结果相加。
9.将步骤8的结果乘以第六个子密钥。
10.将第7步和第9步的结果相加。
11.区别步骤1和步骤9或的结果。
12.比较步骤3和步骤9的结果。
13.区别步骤2和步骤10的结果或。
14.区别步骤4和步骤10的结果或。
IDEA,每一轮的加密顺序。
23
算法的第九步是输出转换,如图4.17所示。其结构与每轮开始时的变换结构相同,但不同的是,输出变换的第二个和第三个输入已被首先切换,以便在第八轮输出中取消两个子段的交换。还应该注意的是,在步骤9中只需要4个子密钥,而在前8轮中的每一轮都需要6个子密钥。
IDEA,每一轮的加密顺序。
24
观念的输出转化
25
在加密过程中,由128位的加密密钥生成52个16位的子密钥如下:前8个子密钥Z1,Z2,...,Z8直接取自加密密钥,即Z1取前16位(最高有效位),Z2取后面的65438+。然后将加密密钥循环左移25位,再取后面8个子密钥Z9,Z10,…,Z16,与Z1,Z2,…,Z8相同。重复此过程,直到生成所有52个子密钥。
IDEA子项的生成
26
IDEA子项的生成
生成子密钥的方法。该算法使用52个子密钥(8轮中每轮6个子密钥,另外4个子密钥用于输出转换)。首先,将128位密钥分成八个16位密钥。这些是算法的第一批8个子密钥(第一轮6个,第二轮2个)。然后,密钥向左环移动25位,生成另外8个子密钥,依此类推,直到算法结束。
27
28
29
4.思想的解密过程
加密和解密本质上是一样的,只是使用了不同的密钥;
解密密钥通过以下方式从加密子密钥中获得:
解密周期I的前四个子密钥是从加密周期10-I的前四个子密钥导出的;解密密钥的第1和第4个子密钥对应于第1和第4个加密子密钥的乘法逆元;2,3对应于2,3的加法逆;
对于前八个周期,周期I的最后两个子密钥等于加密周期9-I的最后两个子密钥;
30
解密和加密过程基本相同,只是使用的密钥不同。解密密钥按如下方式生成。
(1)I(I = 1,2,...9)轮解密是从(10-i)轮加密过程的前四个子密钥获得的。第1和第4个解密子密钥作为第一和第四个加密子密钥对应的模乘逆密钥。当轮数为I = 2时,第二和第三子密钥作为相应的第三和第二加密子密钥的模加逆,...,8,并且当i=1和9时,作为相应的第二和第三加密子密钥的模加逆。
思想的解密过程
31
(2)第i(i=1,…,8)轮解密的最后两个子密钥等于第(9-i)轮加密过程的最后两个子密钥。
思想的解密过程
32
加密过程
变化
X1
X2
X3
X4
Z1..Z4
Zijiami
I11
I12
I13
I14
Z5 Z6
变化
W11
W12
W13
W14
Z7..Z10
Zijiami
I21
I22
I23
I24
Z11 Z612
W21
W22
W23
W24
变化
W71
W72
W73
W74
Z43..Z46
Zijiami
I81
I82
I83
I84
Z47 Z48
变化
W81
W82
W83
W84
Z49..Z52
Y1
Y2
Y3
Y4
回合1
第二轮
第8轮
………… ..
33
变化
X1
X2
X3
X4
U49..U52
Zijiami
V81
V82
V83
V84
U47U48
变化
J81
J82
J83
J84
U43…U46
Zijiami
V71
V72
V73
V74
U11U12
V21
V22
V23
V24
变化
J21
J22
J23
J24
U7…U10
Zijiami
V11
V12
V13
V14
U5U6
变化
J11
J12
J13
J14
U1…U4
Y1
Y2
Y3
Y4
第8轮
第二轮
回合1
译
第9轮
………… ..
解密过程
34
表3.7总结了上述关系。其中Zj的模乘216+1的逆为Z-1j,满足(见58页表3.7)。
ZJ⊙Z-1j = 1 mod(216+1)
由于216+1是素数,所以每个不大于216的非零整数都有一个唯一的模乘逆216+1。Zj的模216加法逆为-Zj,满足:
-Zj + Zj=0 mod (216)
思想的解密过程
35
下面的验证解密过程确实可以得到正确的结果。在图4.18中,加密过程在左边,从上到下,解密过程在右边,从下到上。每一轮又进一步分为两步,1步是变换,剩下的是第二步,称为子加密。
思想的解密过程
36
IDEA加密和解密框图
37
现在从下往上想。对于加密过程中的最后一个输出转换,以下关系成立:
y 1 = w 81⊙Z49 Y2 = W83+Z50
Y3=W82 + Z51 Y4=W84⊙Z52
解密过程中1轮的步骤1产生以下关系:
j 11 = y 1⊙u 1j 12 = Y2+U2
J13=Y3 + U3 J14=Y4⊙U4
思想的解密过程
38
解密子密钥由加密子密钥表示,Y1,Y2,Y3,Y4代入以下关系,包括
j 11 = y 1⊙Z-149 = w 81⊙Z49⊙Z-149 = w 81
j 12 = Y2+-Z50 = W83+Z50+-Z50 = W83
j 13 = Y3+-z 51 = W82+z 51+-z 51 = W82
j 14 = Y4⊙Z-152 = W84⊙Z52⊙Z-152 = W84
思想的解密过程
39
可以看出,解密过程的1轮中的步骤1的输出等于加密过程的最后一步中的第二子部分和第三子部分之间交换的值。从图4.16可以得出以下关系:
W81=I81?MAR(I81?I83,I82?I84)
W82=I83?MAR(I81?I83,I82?I84)
W83=I82?MAL(I81?I83,I82?I84)
W84=I84?MAL(I81?I83,I82?I84)
思想的解密过程
40
其中,当MA结构的输入为X和Y时,MAR(X,Y)为右输出,MAL(X,Y)为左输出。规则
v 11 = j 11?MAR(J11?J13,J12?J14)
=W81?MAR(W81?W82,W83?W84)
=I81?MAR(I81?I83,I82?I84) MAR [I81?MAR(I81?I83,I82?I84)?I83?
MAR(I81?I83,I82?I84),I82?
MAL(I81?I83,I82?I84)?I84
?MAL(I81?I83,I82?I84)]
=I81?MAR(I81?I83,I82?I84)
MAR(I81?I83,I82?I84) =I81
思想的解密过程
41
同理,可以有v 12 = i83v 13 = i82v 14 = i84。
因此,解密过程的1轮的第二步的输出等于加密过程的倒数第二个输入中的第二个子部分和第三个子部分之间交换的值。
同理,可以证明图4.18中的每一步都有上述类似的关系,并且这种关系一直到
v 81 = I 11v 82 = I 13v 83 = I 12v 84 = I 14
也就是说,解密过程的输出变换与加密过程的1轮的步骤1的变换完全相同,除了第二子部分和第三子部分的位置被交换。
思想的解密过程
四十二个
因此,解密过程的输出变换与加密过程的1轮的步骤1的变换完全相同,除了第二分段和第三分段的位置被交换。
所以我们最终可以知道,整个解密过程的输出等于整个加密过程的输入。
思想的解密过程
43
IDEA分组密码的特点
可变密钥长度
混合经营
相关数据的循环移位
密钥相关循环移位
从属s盒
冗长密钥调度算法
可变f函数和可变明文/密文长度
可变周期数
在每个周期中对两半数据进行操作。
四十四
想法可以很容易地通过软件和硬件实现。
①软件采用16位分段处理,利用加法、移位等易于编程的运算即可实现算法的三种运算。
(2)硬件加密和解密是类似的,唯一不同的是密钥的使用方式,所以可以用同一台设备实现。此外,算法中规则的模块结构有利于VLSI的实现。
IDEA分组密码的特点
45
结束了!
想法