寻找高分C#版本的IDEA算法

1和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

结束了!

想法