第 3 章 对称密码体制

100
第3第 第第第第

description

第 3 章 对称密码体制. 主要内容. 3.1 分组密码 3.2 数据加密标准 DES 3.3 高级加密标准 AES 3.4 序列密码 3.5 其他对称加密算法. 概述. 对称密码体制就是在加密和解密是用到的密钥相同,或者加密密钥和解密密钥之间存在着确定的转换关系。 对称密码体制又有两种不同的实现方式,即分组密码和序列密码(或称流密码)。. 流密码与分组密码. 流密码每次加密数据流中的一位或一个字节。 分组密码,就是先把明文划分为许多分组,每个明文分组被当作一个整体来产生一个等长(通常)的密文分组。通常使用的是 64 位或 128 位分组大小。 - PowerPoint PPT Presentation

Transcript of 第 3 章 对称密码体制

Page 1: 第 3 章     对称密码体制

第 3 章 对称密码体制

Page 2: 第 3 章     对称密码体制

3.1分组密码3.2数据加密标准 DES3.3高级加密标准 AES3.4序列密码3.5其他对称加密算法

主要内容

Page 3: 第 3 章     对称密码体制

对称密码体制就是在加密和解密是用到的密钥相同,或者加密密钥和解密密钥之间存在着确定的转换关系。

对称密码体制又有两种不同的实现方式,即分组密码和序列密码(或称流密码)。

概述

Page 4: 第 3 章     对称密码体制

流密码每次加密数据流中的一位或一个字节。 分组密码,就是先把明文划分为许多分组,每个明文

分组被当作一个整体来产生一个等长(通常)的密文分组。通常使用的是 64 位或 128 位分组大小。

分组密码的实质,是设计一种算法,能在密钥控制下,把 n 比特明文简单而又迅速地置换成唯一 n 比特密文,并且这种变换是可逆的(解密)。

流密码与分组密码

Page 5: 第 3 章     对称密码体制

分组密码算法实际上就是在密钥的控制下,简单而迅速地找到一个置换,用来对明文分组进行加密变换,一般情况下对密码算法的要求是: 分组长度 m 足够大( 64~128 比特) 密钥空间足够大(密钥长度 64~128 比特) 密码变换必须足够复杂(包括子密钥产生算法)

3.1 分组密码

Page 6: 第 3 章     对称密码体制

扩散 (diffusion) 将明文及密钥的影响尽可能迅速地散布到较多个输出的

密文中。产生扩散的最简单方法是通过“置换(Permutation)” (比如:重新排列字符)。

混淆 (confusion) 其目的在于使作用于明文的密钥和密文之间的关系复杂

化,是明文和密文之间、密文和密钥之间的统计相关特性极小化,从而使统计分析攻击不能奏效。通常的方法是“代换( Substitution)” (回忆恺撒密码)。

分组密码的设计思想

Page 7: 第 3 章     对称密码体制

美国国家标准局 NBS于 1973年 5 月发出通告,公开征求一种标准算法用于对计算机数据在传输和存储期间实现加密保护的密码算法。

1975 年美国国家标准局接受了美国国际商业机器公司 IBM 推荐的一种密码算法并向全国公布,征求对采用该算法作为美国信息加密标准的意见。

经过两年的激烈争论,美国国家标准局于 1977年 7 月正式采用该算法作为美国数据加密标准。 1980年 12 月美国国家标准协会正式采用这个算法作为美国的商用加密算法。

3.2 DES(Data Encryption Standard)

Page 8: 第 3 章     对称密码体制

DES 是一种对称密码体制,它所使用的加密和解密密钥是相同的,是一种典型的按分组方式工作的密码。其基本思想是将二进制序列的明文分成每 64bit 一组,用长为64bit(56bit) 的密钥对其进行 16 轮代换和置换加密,最后形成密文。

DES 的实质

Page 9: 第 3 章     对称密码体制

Simplified DES 方案,简称 S-DES 方案。它是一个供教学而非安全的加密算法,它与 DES 的特性和结构类似,但参数小。

注: 1.* 加密算法涉及五个函数:(1) 初始置换 IP(initial permutation)(2) 复合函数 fk1 ,它是由密钥 K 确定的,具有置换和代换的运算。

(3) 置换函数 SW(4) 复合函数 fk2

(5) 初始置换 IP 的逆置换 IP-1

3.2.1 简化的 DES

Page 10: 第 3 章     对称密码体制

(2) DES 算法的主要过程

① 初始置换:

② 子密钥生成:

③ 乘积变换:

④ 末置换:

初始置换 (IP)

乘积变换 子密钥生成

输入 64 位明文 ( 密文 )

64 位密钥组

末置换 (IP-1)

输 出 64 位 密 文 ( 明文 )

Page 11: 第 3 章     对称密码体制

加密10bit 密钥

解密

8bit 明文 P10 8bit 明文

IP 移位 IP-1

P8fk1 fk1

SW SW移位

P8fk2 fk2

IPIP-1

8bit 密文 8bit 密文

K2 K2

K1K1

S-DES 方案示意图

(1) 初始置换 IP(initial permutation)

(2) 复合函数 fk1 ,它是由密钥 K 确定的,具有置换和代换的运算。

(3) 置换函数 SW

(4) 复合函数 fk2

(5) 初始置换 IP 的逆置换 IP-1

Page 12: 第 3 章     对称密码体制

2*. 加密算法的数学表示:IP-1*fk2*SW*fk1*IP也可写为密文 =IP-1( fk2(SW(fk1(IP( 明文 )))))其中 K1=P8( 移位 (P10( 密钥 K)))

试写出 K2 的表达式 试写出解密算法的数学表示

试证明加密算法的正确性

Page 13: 第 3 章     对称密码体制

( 1 ) S-DES 的密钥生成:设 10bit 的密钥为( k1,k2,…,k10 )几个重要的定义:

P10(k1,k2,…,k10)=(k3,k5,k2,k7,k4,k10,k1,k9,k8,k6)

P8= (k1,k2,…,k10)=(k6,k3,k7,k4,k8,k5,k10,k9 )

对 S-DES 的深入描述

P10

3 5 2 7 4 10 1 9 8 6

P8

6 3 7 4 8 5 10 9

Page 14: 第 3 章     对称密码体制

LS-1 为循环左移 1 位: abcdebcdeaLS-2 为循环左移 2位 : abcdecdeab

对 S-DES 的深入描述

Page 15: 第 3 章     对称密码体制

10-bit 密钥

S-DES 的密钥生成

K2

P10

LS-1 LS-1

LS-2 LS-2

P8

P8

K1

8

5 5

55

8

P10 : 3 5 2 7 4 10 1 9 8 6

P8 : 6 3 7 4 8 5 10 9

按照上述条件 , 若 K 选为(1010000010), 产生的两个子密钥分别为:K1=(1 0 1 0 0 1 0 0)K2=(0 1 0 0 0 0 1 1)

Page 16: 第 3 章     对称密码体制

--趁热打铁

若输入密钥 K 为 (1001001010),问产生的两个子密钥分别为:? K1=( )

? K2=( )

对 S-DES 的深入描述

Page 17: 第 3 章     对称密码体制

(2) S-DES 的加密运算 :

初始置换用 IP 函数 : IP= 1 2 3 4 5 6 7 8

2 6 3 1 4 8 5 7

末端算法的置换为 IP 的逆置换 :

IP-1= 1 2 3 4 5 6 7 8 4 1 3 5 7 2 8 6

Page 18: 第 3 章     对称密码体制

(2)S-DES 的加密运算 :

试举例证明: IP-1是 IP 的逆置换

Page 19: 第 3 章     对称密码体制

8-bit 明文 (n)

S-DES 加密图

IP

E/P

+

S0 S1

P4

+

L R

4

K1

844

fk

F

4

fk(L,R)=(LF(R,SK),R)

E/P 4 1 2 3 2 3 4 1

8-bit 子密钥:

K1=k11,k12,k13,k14,

k15,k16,k17,k18,

与 E/P 的结果异或得:

n4+k11 n1+k12 n2+k13 n3+k14

n2+k15 n3+k16 n4+k17 n1+k18

第一行输入进 S-盒 S0 ,第二行的 4位输入进 S盒 S1 ,分别产生 2- 位的输出。

Page 20: 第 3 章     对称密码体制

S-DES 加密图 ( 续 )

fkE/P

+

S0 S1

8K2

P4

+

IP-1

8-bit 密文

4

8

44

F4 4

2 2

8

SW

Page 21: 第 3 章     对称密码体制

两个 S 盒按如下定义:

2313

3120

0123

2301

3

2

1

03210

0S

3012

0103

3102

3210

3

2

1

03210

1S

E/P

+

S0 S1

8K2

P4

+

IP-1

8-bit 密文

4

8

44

F4 4

2 2

8

SW

Page 22: 第 3 章     对称密码体制

S 盒按下述规则运算:将第 1 和第 4 的输入比特做为 2- bit 数,指示为 S 盒的一个行;将第2 和第 3 的输入比特做为 S 盒的一个列。如此确定为 S 盒矩阵的( i,

j )数。例如:( P0,0, P0,3)=(00), 并且 (P0,1,P0,2)=(1 0)

确定了 S0 中的第 0 行 2 列( 0 , 2 )的系数为 3 ,记为( 1 1 )输出。

由 S0, S1 输出 4-bit 经置换

P4

2 4 3 1

它的输出就是 F 函数的输出。

Page 23: 第 3 章     对称密码体制

加密前,先将明文分成64bit 的分组,然后将64bit 二进制码输入到密码器中,密码器对输入的 64 位码首先进行初始置换,然后在64bit 主密钥产生的 16个子密钥控制下进行 16 轮乘积变换,接着再进行末置换就得到 64 位已加密的密文。

3.2.2 DES 的基本加密流程

Page 24: 第 3 章     对称密码体制

DES 算法的一般描述

Page 25: 第 3 章     对称密码体制

0. 子密钥产生器 密钥( 64bit )

除去第 8, 16,… , 64 位,共 8 个校验位

置换选择 1( PC-1 )

Ci( 28bit ) Di( 28bit )

循环左移 ti+1 位 循环左移 ti+1 位

置换选择 2( PC-2 )

Ki( 48bit )

Page 26: 第 3 章     对称密码体制

置换选择 1

Page 27: 第 3 章     对称密码体制

移位次数表 第 i次迭代 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

循环左移次数

1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

若 C1= c1c2…c28, D1= d1d2…d28

则 C2= c2c3…c28 c1 , D2= d2d3…d28 d1 。

Page 28: 第 3 章     对称密码体制

置换选择 PC-2将 C中第 9 18 22 25 位和 D 中第 7 9 15 26位删去,并将其余数字置换位置后送出 48bit 数字作为第 i次迭代时所用的子密钥 ki

置换选择 2

Ci Di= b1b2…b56 ,则 ki= b14 b17 b11 b24…b36 b29 b32

Page 29: 第 3 章     对称密码体制

将 64 个明文比特的位置进行置换,得到一个乱序的 64bit明文组,然后分成左右两段,每段为32bit 以 L和 R 表示。

1. 初始置换

Page 30: 第 3 章     对称密码体制

2. 乘积变换Li-1(32 比特 ) Ri-1(32 比特 )

选择扩展运算 E

48 比特寄存器

子密钥 Ki(48 比特 )

48 比特寄存器

选择压缩运算 S

32 比特寄存器

置换运算 P

Li(32 比特 ) Ri(32 比特 )

Li=Ri-1 Ri=Li-1 F(Ri-1,Ki)

Page 31: 第 3 章     对称密码体制

对原第 32 1 4 5 8 9 12 13 16 17 20 21 24 25 28 29 各位重复一次得到数据扩展。

选择扩展运算 E 1, 2,…… …… 32

32 1 2 3 4 54 5 6 7 8 9

8 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1

1, 2,…… …… 48

选择扩展运算结果 (48bit)

E 的输入 (32bit)

Page 32: 第 3 章     对称密码体制

将前面送来的 48bit 数据自左至右分成 8组,每组 6bit 。然后并行送入 8 个 S盒,每个 S 盒为一非线性代换网络,有4 个输出。

选择压缩运算 S

Page 33: 第 3 章     对称密码体制

S盒的内部结构

Page 34: 第 3 章     对称密码体制

若输入为 b1b2b3b4b5b6 其中 b1b6 两位二进制数表达了 0 至 3 之间的数。 b2b3b4b5 为四位二进制数,表达0 至 15 之间的某个数。

在 S1表中的 b1b6行 b2b3b4b5 列找到一数 m( 0≤m≤15 ),若用二进制表示为m1m2m3m4 ,则m1m2m3m4便是它的 4bit输出。

例如,输入为001111, b1b6=01=1, b2b3b4b5 =0111=7 ,即在 S1盒中的第1 行第 7 列求得数1 ,所以它的 4bit 输出为 0001 。

S 盒的内部计算

Page 35: 第 3 章     对称密码体制

S 盒是 DES 的核心,也是 DES 算法最敏感的部分,其设计原理至今仍讳莫如深,显得非常神秘。所有的替换都是固定的,但是又没有明显的理由说明为什么要这样,有许多密码学家担心美国国家安全局设计 S 盒时隐藏了某些陷门,使得只有他们才可以破译算法,但研究中并没有找到弱点。

关于 S 盒

Page 36: 第 3 章     对称密码体制

对 S1至 S8盒输出的32bit 数据进行坐标变换

置换 P输出的 32bit 数据与左边 32bit即 Ri-1诸位模 2 相加所得到的 32bit作为下一轮迭代用的右边的数字段,并将 Ri-1 并行送到左边的寄存器作为下一轮迭代用的左边的数字段。

置换运算 P

Page 37: 第 3 章     对称密码体制

将 16 轮迭代后给出的 64bit 组进行置换得到输出的密文组

3. 逆初始置换IP-1 1, 2,…… ……

64

40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 25

1, 2,…… ……64

密文 (64bit)

置换码组 (64bit)

Page 38: 第 3 章     对称密码体制
Page 39: 第 3 章     对称密码体制

解密算法与加密算法相同,只是子密钥的使用次序相反。

3.2.3 DES 的解密

Page 40: 第 3 章     对称密码体制

DES在 20 多年的应用实践中,没有发现严重的安全缺陷,在世界范围内得到了广泛的应用,为确保信息安全做出了不可磨灭的贡献。

存在的安全弱点: 密钥较短: 56 位密钥空间约为 7.2*1016。 1997年 6 月

Rocke Verser 小组通过因特网利用数万台微机历时 4 个月破译了 DES; 1998年 7 月, EFF 用一台 25万美元的机器,历时 56 小时破译 DES 。

存在弱密钥:有的密钥产生的 16 个子密钥中有重复者。 互补对称性: C=DES(M,K),则 C’=DES(M’,K’) ,其中,

M’,C’,K’是M,C,K 的非。

3.2.4 DES 的安全性

Page 41: 第 3 章     对称密码体制

雪崩效应:明文或密钥的微小改变将对密文产生很大的影响。特别地,明文或密钥的某一位发生变化,会导致密文的很多位发生变化。

DES显示了很强的雪崩效应 两条仅有一位不同的明文,使用相同的密钥,仅经过 3 轮迭代,所得两段准密文就有 21位不同。

一条明文,使用两个仅一位不同的密钥加密,经过数轮变换之后,有半数的位都不相同。

DES具有良好的雪崩效应

Page 42: 第 3 章     对称密码体制

DES 在穷举攻击下相对比较脆弱,因此需要用某种算法来替代它,有两种解决方法: 设计全新的算法; 用 DES 进行多次加密,且使用多个密钥,即多重 DES 。

这种方法能够保护用于 DES 加密的已有软件和硬件继续使用。

3.2.5 多重 DES

Page 43: 第 3 章     对称密码体制

二重 DES为了提高 DES 的安全性,并利用实现 DES 的现有软硬件,可将 DES 算

法在多密钥下多重使用。二重 DES 是多重使用 DES 时最简单的形式,如图 3.8 所示。其中明文为

P ,两个加密密钥为 K1 和 K2 ,密文为:

解密时,以相反顺序使用两个密钥:2 1[ [ ]]K KC E E P

1 2[ [ ]]K KP D D C

Page 44: 第 3 章     对称密码体制

图 3.8 二重 DES

Page 45: 第 3 章     对称密码体制

因此,二重 DES 所用密钥长度为 112 比特,强度极大地增加。然而,假设对任意两个密钥 K1 和 K2 ,能够找出另一密钥 K3 ,使得

2 1 3[ [ ]] [ ]K K KE E P E P

Page 46: 第 3 章     对称密码体制

那么,二重 DES 以及多重 DES 都没有意义,因为它们与 56 比特密钥的单重 DES 等价,好在这种假设对 DES 并不成立。将 DES 加密过程 64 比特分组到 64 比特分组的映射看作一个置换,如果考虑 264 个所有可能的输入分组,则密钥给定后, DES 的加密将把每个输入分组映射到一个惟一的输出分组。否则,如果有两个输入分组被映射到同一分组,则解密过程就无法实施。对 264 个输入分组,总映射个数为 。

2064 102 ! 10

Page 47: 第 3 章     对称密码体制

另一方面,对每个不同的密钥, DES 都定义了一个映射,总映射数为256<1017 。

因此,可假定用两个不同的密钥两次使用 DES ,可得一个新映射,而且这一新映射不出现在单重 DES 定义的映射中。这一假定已于 1992 年被证明。所以使用二重 DES 产生的映射不会等价于单重 DES 加密。但对二重 DES 有以下一种称为中途相遇攻击的攻击方案,这种攻击不依赖于DES 的任何特性,因而可用于攻击任何分组密码。其基本思想如下:

Page 48: 第 3 章     对称密码体制

如果有

那么(见图 3.8 )2 1[ [ ]]K KC E E P

1 2[ ] [ ]K KX E P D C

Page 49: 第 3 章     对称密码体制

如果已知一个明文密文对 (P,C) ,攻击的实施可如下进行:首先,用 256 个所有可能的 K1 对 P 加密,将加密结果存入一表并对表按 X 排序,然后用 256 个所有可能的 K2 对 C 解密,在上述表中查找与 C 解密结果相匹配的项,如果找到,则记下相应的 K1 和 K2 。最后再用一新的明文密文对 (P′,C′) 检验上面找到的 K1 和 K2 ,用 K1 和 K2 对 P′ 两次加密,若结果等于 C′ ,就可确定 K1 和 K2 是所要找的密钥。

Page 50: 第 3 章     对称密码体制

对已知的明文 P ,二重 DES 能产生 264 个可能的密文 , 而可能的密钥个数为 2112 ,所以平均来说,对一个已知的明文,有 2112/264=248 个密钥可产生已知的密文。而再经过另外一对明文密文的检验,误报率将下降到248-64=2-16 。所以在实施中途相遇攻击时,如果已知两个明文密文对,则找到正确密钥的概率为 1-2-16 。

Page 51: 第 3 章     对称密码体制

两个密钥的三重 DES抵抗中途相遇攻击的一种方法是使用 3 个不同的密钥做 3 次加密,从

而可使已知明文攻击的代价增加到 2112 。然而,这样又会使密钥长度增加到 56×3=168 比特,因而过于笨重。一种实用的方法是仅使用两个密钥

做 3 次加密,实现方式为加密 \| 解密 \| 加密,简记为EDE( encrypt decrypt encrypt) ,见图 3.9 ,即:

1 2 1[ [ [ ]]]K K KC E D E P

Page 52: 第 3 章     对称密码体制

图 3.9 两个密钥的三重 DES

此方案已在密钥管理标准 ANS X.917和 ISO 8732 中被采用。

Page 53: 第 3 章     对称密码体制

三个密钥的三重 DES三个密钥的三重 DES 密钥长度为 168 比特,加密方式为

令 K3=K2 或 K1=K2 ,则变为一重 DES。

三个密钥的三重 DES 已在因特网的许多应用(如 PGP和 S/MIME )中被采用。

3 2 1[ [ [ ]]]K K KC E D E P

Page 54: 第 3 章     对称密码体制

分组密码的运行模式分组密码在加密时 , 明文分组的长度是固定的,而实际应用中待加密消

息的数据量是不定的,数据格式可能是多种多样的。为了能在各种应用场合使用 DES ,美国在 FIPS PUS 74 和 81 中定义了 DES 的 4 种运行模式: ECB,CBC,CFB,OFB.

Page 55: 第 3 章     对称密码体制

电码本( ECB )模式ECB(electronic codebook) 模式是最简单的运行模式,它一次对

一个 64 比特长的明文分组加密,而且每次的加密密钥都相同,如图 3.10所示。当密钥取定时,对明文的每一个分组,都有一个惟一的密文与之对应。因此形象地说,可以认为有一个非常大的电码本,对任意一个可能的明文分组,电码本中都有一项对应于它的密文。

Page 56: 第 3 章     对称密码体制

图 3.10 ECB 模式示意图

Page 57: 第 3 章     对称密码体制

如果消息长于 64 比特,则将其分为长为 64 比特的分组,最后一个分组如果不够 64 比特,则需要填充。解密过程也是一次对一个分组解密,而且每次解密都使用同一密钥。图 3.10 中,明文是由分组长为 64 比特的分组序列 P1, P2 …, , PN 构成,相应的密文分组序列是 C1, C2,…, CN。

Page 58: 第 3 章     对称密码体制

ECB 在用于短数据(如加密密钥)时非常理想,因此如果需要安全地传递 DES 密钥, ECB 是最合适的模式。

ECB 的最大特性是同一明文分组在消息中重复出现的话,产生的密文分组也相同。

ECB 用于长消息时可能不够安全,如果消息有固定结构,密码分析者有可能找出这种关系。例如,如果已知消息总是以某个预定义字段开始,那么分析者就可能得到很多明文 -- 密文对。如果消息有重复的元素而重复的周期是 64 的倍数,那么密码分析者就能够识别这些元素。以上这些特性都有助于密码分析者,有可能为其提供对分组的代换或重排的机会。

Page 59: 第 3 章     对称密码体制

密码分组链接( CBC )模式为了解决 ECB 的安全缺陷,可以让重复的明文分组产生不同的密文分

组, CBC( cipher block chaining )模式就可满足这一要求。图 3.11是 CBC 模式示意图,它一次对一个明文分组加密,每次加密

使用同一密钥 , 加密算法的输入是当前明文分组和前一次密文分组的异或,因此加密算法的输入不会显示出与这次的明文分组之间的固定关系,所以重复的明文分组不会在密文中暴露出这种重复关系。

Page 60: 第 3 章     对称密码体制

图 3.11 CBC 模式示意图

Page 61: 第 3 章     对称密码体制

解密时,每一个密文分组被解密后,再与前一个密文分组异或,即

因而产生出明文分组。

1 1 1 1 1K n n K K n n n n n n nD C C D E C P C C P C P

1n K n nC E C P

Page 62: 第 3 章     对称密码体制

在产生第 1 个密文分组时,需要有一个初始向量 IV 与第 1 个明文分组异或。解密时, IV 和解密算法对第 1 个密文分组的输出进行异或以恢复第 1 个明文分组。

IV 对于收发双方都应是已知的,为使安全性最高, IV 应像密钥一样被保护,可使用 ECB 加密模式来发送 IV 。保护 IV 的原因如下: 如果敌手能欺骗接收方使用不同的 IV 值,敌手就能够在明文的第 1 个分组中插入自己选择的比特值,这是因为:

1 1

1 1

K

K

C E IV P

P IV D C

Page 63: 第 3 章     对称密码体制

用 X(i) 表示 64 比特分组 X 的第 i 个比特,那么

由异或的性质得

其中撇号表示比特补。上式意味着如果敌手篡改 IV 中的某些比特,则接收方收到的 P1 中相应的比特也发生了变化。

1 1KP i IV i D C i

1 1KP i IV i D C i

Page 64: 第 3 章     对称密码体制

由于 CBC 模式的链接机制, CBC 模式对加密长于 64 比特的消息非常合适。

CBC 模式除能够获得保密性外,还能用于认证。

Page 65: 第 3 章     对称密码体制

密码反馈( CFB )模式如上所述, DES 是分组长为 64 比特的分组密码,但利用

CFB( cipher feedback )模式或 OFB 模式可将 DES 转换为流密码。流密码不需要对消息填充,而且运行是实时的。因此如果传送字母流,可使用流密码对每个字母直接加密并传送。

流密码具有密文和明文一样长这一性质,因此,如果需要发送的每个字符长为 8 比特,就应使用 8 比特密钥来加密每个字符。如果密钥长超过 8比特,则造成浪费。

Page 66: 第 3 章     对称密码体制

图 3.12是 CFB 模式示意图,设传送的每个单元(如一个字符)是 j 比特长,通常取 j=8 ,与 CBC 模式一样,明文单元被链接在一起,使得密文是前面所有明文的函数。

Page 67: 第 3 章     对称密码体制

图 3.12 CFB 模式示意图

Page 68: 第 3 章     对称密码体制

加密时,加密算法的输入是 64 比特移位寄存器,其初值为某个初始向量 IV 。加密算法输出的最左(最高有效位) j 比特与明文的第一个单元P1 进行异或,产生出密文的第 1 个单元 C1 ,并传送该单元。然后将移位寄存器的内容左移 j 位并将 C1 送入移位寄存器最右边(最低有效位) j位。这一过程继续到明文的所有单元都被加密为止。

Page 69: 第 3 章     对称密码体制

解密时,将收到的密文单元与加密函数的输出进行异或。注意这时仍然使用加密算法而不是解密算法,原因如下: 设 Sj(X)是 X 的 j 个最高有效位,那么

因此

可证明以后各步也有类似的这种关系。CFB 模式除能获得保密性外,还能用于认证。

1 1 jC P S E IV

1 1 jP C S E IV

Page 70: 第 3 章     对称密码体制

输出反馈 (OFB) 模式OFB( output feedback )模式的结构类似于 CFB ,见图 3.13 。

不同之处如下: OFB 模式是将加密算法的输出反馈到移位寄存器,而CFB 模式中是将密文单元反馈到移位寄存器。

Page 71: 第 3 章     对称密码体制

图 3.13 OFB 模式示意图

Page 72: 第 3 章     对称密码体制

OFB( output feedback )模式的结构类似于 CFB ,见图 3.13 。不同之处如下: OFB 模式是将加密算法的输出反馈到移位寄存器,而CFB 模式中是将密文单元反馈到移位寄存器。

Page 73: 第 3 章     对称密码体制

OFB 模式的优点是传输过程中的比特错误不会被传播。例如 C1 中出现 1 比特错误,在解密结果中只有 P1 受到影响,以后各明文单元则不受影响。而在 CFB 中, C1 也作为移位寄存器的输入,因此它的 1 比特错误会影响解密结果中各明文单元的值。

Page 74: 第 3 章     对称密码体制

OFB 的缺点是它比 CFB 模式更易受到对消息流的篡改攻击,比如在密文中取 1 比特的补,那么在恢复的明文中相应位置的比特也为原比特的补。因此使得敌手有可能通过对消息校验部分的篡改和对数据部分的篡改,而以纠错码不能检测的方式篡改密文。

Page 75: 第 3 章     对称密码体制

DES 加密模式比较模式 技术特点 应用

ECB 一组一密 加密短数据

CBC 当前明文与前密文为输入 加密分组数据,认证

CFB J 比特流加密,密文反馈输入

数据流加密,认证

OFB 前次加密算法输出为本次加密算法输入

数据流加密(信道质量差)

Page 76: 第 3 章     对称密码体制

1997年 1 月,美国国家标准局 NIST 向全世界密码学界 发 出 征 集 21 世 纪 高 级 加 密 标 准 ( AES——Advanced Encryption Standard )算法的公告,并成立了 AES 标准工作研究室, 1997年 4月 15 日的例会制定了对 AES 的评估标准。

3.3 高级加密标准 AES

Page 77: 第 3 章     对称密码体制

( 1) AES 是公开的;( 2) AES 为单钥体制分组密码;( 3) AES 的密钥长度可变,可按需要增大;( 4) AES 适于用软件和硬件实现;( 5) AES 可以自由地使用,或按符合美国国家标准( ANST )策略的条件使用;

AES 的要求

Page 78: 第 3 章     对称密码体制

满足以上要求的 AES 算法,需按下述条件判断优劣 a. 安全性 b. 计算效率 c. 内存要求 d. 使用简便性 e. 灵活性。

算法衡量条件

Page 79: 第 3 章     对称密码体制

1998 年 4 月 15 日全面征集 AES 算法的工作结束。 1998年 8 月 20 日举行了首届 AES 讨论会,对涉及 14 个国家的密码学家所提出的候选 AES 算法进行了评估和测试,初选并公布了 15 个被选方案,供大家公开讨论。

CAST-256 , RC-6 , CRYPTON-128 , DEAL-128 , FROG , DFC , LOKI-97 , MAGENTA , MARS , HPC, RIJNDAEL , SAFER+ , SERPENT , E-2 , TWOFISH 。 这些算法设计思想新颖,技术水平先进,算法的强度都超

过 3-DES ,实现速度快于 3-DES 。

AES 的评审

Page 80: 第 3 章     对称密码体制

1999 年 8 月 9 日 NIST 宣布第二轮筛选出的 5 个候选算法为:

MARS(C.Burwick等 ,IBM ), RC6TM( R. Rivest等 ,RSA Lab.) , RIJNDEAL(J. Daemen, 比 ) , SERPENT(R. Anderson 等,英、以、挪

威 ) , TWOFISH(B. Schiener) 。 2000 年 10 月 2 日, NIST 宣布 Rijndael 作为新的

AES

AES 的评审

Page 81: 第 3 章     对称密码体制

群 :是一个代数系统,它由一个非空集合组成,在集合上定义了一个二元运算,其满足: 封闭性:对任意的 , ; 结合律:对任何的 ,有 ; 单位元:存在一个元素 (称为单位元 ),对任意元素有:

; 逆元:对任意 ,存在一个元素 (称为逆元 ),使得 。

记作:

AES 加密数学基础

,a b G a b G , ,a b c G

( ) ( )a b c a b c a b c 1 G

1 1a a a a G 1a G

1 1 1a a a a ,G

Page 82: 第 3 章     对称密码体制

若群还满足交换律,即对任何 ,有: ,

则称为交换群 (或加法群,阿贝尔群等 )。 若集合G 中只含有有限多个元素,则我们称 为有限群,此时,把集合G 中元素的个数称为有限群的阶。

交换群与有限群

,a b Ga b b a

,G

Page 83: 第 3 章     对称密码体制

群中的单位元是惟一的; 消去律成立,即对任意的 :

如果 ,则 如果 ,则

群中的每一元素的逆元是惟一的。

群的性质

, ,a b c G

ab acb cba cab c

Page 84: 第 3 章     对称密码体制

域是一个代数系统,它由一个 ( 至少包含两个元素的 ) 非空集合 F组成,在集合 F上定义有两个二元运算:加法与乘法,并满足下面条件: F的元素关于加法成交换群,记其单位元为“ 0”( 称为域的零元 )

F关于乘法成交换群,记其单位元为“ 1”( 称其为域的单位元 ) 乘法在加法上满足分配律,即

记为

( )a b c ab ac ( )a b c ac bc

, ,F

Page 85: 第 3 章     对称密码体制

( )nGF P

若集合 F只包含有限个元素,则称这个域 F为有限域。有限域中元素的个数称为该有限域的阶。

若有一任意的素数 P和正整数 ,存在 阶有限域,这个有限域记为 。当 n=1时,有限域

称为素域。

有限域

n Z nP

( )GF P

Page 86: 第 3 章     对称密码体制

一个字节的 元素的二进制展开成的多项式系数为:

例如, 上的“ 37”( 为十六进制 ),其二进制为“ 00110111” ,对应多项式为:

GF(28) 域上的多项式表示及运算

8(2 )GF

7 6 5 4 3 2 1 0b b b b b b b b8(2 )GF

5 4 2 1 1x x x x

Page 87: 第 3 章     对称密码体制

一个四个字节的字 (有 32 比特位 )可以看作是域 上的多项式,每个字对应于一个次数小于 4 的多项式。

两个 域上的元素相加时,将这两个元素对应多项式系数相加即得到结果,相加时采用比特异或来实现。

两个 域上的元素相乘时,要将结果对一个特定的多项式取模,以使相乘后的结果还是一个 4 字节的向量。

GF(28)4域上的多项式表示及运算 8 4(2 )GF

8 4(2 )GF

8 4(2 )GF

Page 88: 第 3 章     对称密码体制

AES每轮要经过四次变换,分别是 字节代换运算 (SubByte ()) ShiftRows()(行移位 )变换 MixColumns()(列混合)变换 AddRoundKey() (轮密钥的混合 )变换

我们用的 128bit 的密钥(循环次数为 10),那么每次加密的分组长为 128bit , 16 个字节,每次从明文中按顺序取出 16个字节假设为 a0a1a2a3a4a5a6a7a8a9a10a11a12a13a14a15 ,这 16个字节在

进行变换前先放到一个 4×4的矩阵中。如下页图所示:

AES 加密算法的具体实现

Page 89: 第 3 章     对称密码体制

a0 a4 a8 a12

a1 a5 a9 a13

a2 a6 a10 a14

a3 a7 a11 a15

这个矩阵称为状态这个矩阵称为状态(( statestate ))

以后所有的变换都是基于这个矩阵进行的,到此,准备工作已经完成。现在按照前面的顺序进行加密变换,首先开始第一次循环的第一个变换:字节代换 (SubByte ()) 。

Page 90: 第 3 章     对称密码体制

字节代换 (SubByte ())

a0 a4 a8 a12

a1 a5 a9 a13

a2 a6 a10 a14

a3 a7 a11 a15

s00 s01 s02 s03

s10 s11 s12 s13

s20 s21 s22 s23

s30 s31 s32 s33

out0 out4 out8 out12

out1 out5 out9 out13

out2 out6 out10 out14

out3 out7 out11 out15

查表查表

Page 91: 第 3 章     对称密码体制

字节代换 -S盒变换 ( 查表 )

SS1212={53},={53},则则 X=5, Y=3, outX=5, Y=3, out99=ed=ed

Page 92: 第 3 章     对称密码体制

ShiftRows()(行移位 )变换

s00 s01 s02 s03

s10 s11 s12 s13

s20 s21 s22 s23

s30 s31 s32 s33

s00 s01 s02 s03

s11 s12 s13 s10

s22 s23 s20 s21

s33 s30 s31 s32

行变换示意图行变换示意图

SS S′S′

Page 93: 第 3 章     对称密码体制

MixColumns() (列混合)变换

S’S’0c0c

S’S’1c1c

S’S’2c2c

S’S’3c3c

SS0c0c

SS1c1c

SS2c2c

SS3c3c

0202 0303 0101 0101

0101 0202 0303 0101

0101 0101 0202 0303

0303 0101 0101 0202

S’0c= ({02} ● S0c) ({03} ⊕ ● S1c) ⊕ S2c⊕S3c ,但这个结果可能会超出一个字节的存储范围,所以实际上还要对结果进行处理。

Page 94: 第 3 章     对称密码体制

“ 一次一密”密码在理论上是不可攻破的。流密码则由“一次一密”密码启发而来。

流密码目前的理论已经比较成熟,工程实现也比较容易,加密效率高,在许多重要领域得到应用。

“ 一次一密”密码使用的密钥是和明文一样长的随机序列,密钥越长越安全,但长密钥的存储、分配都很困难。

3.4 序列密码 (流密码 )

Page 95: 第 3 章     对称密码体制

流密码的关键就是产生密钥流的算法,该算法必须能够产生可变长的、随机的、不可预测的密钥流。

保持通信双方的精确同步是流密码实际应用中的关键技术。由于通信双方必须能够产生相同的密钥流,所以这种密钥流不可能是真随机序列,只能是伪随机流。

流密码的密钥流

明文流 密文流

密钥流

Page 96: 第 3 章     对称密码体制

典型的流密码每次加密一位或一个字节明文。 将初始密钥 (种子 )输入到发生器,输出一个随机数 (密钥 )。

流密码的结构

伪随机字节发生器

( 密钥流发生器 )

明文字节流

M

密文字节流

C

密钥 K

k

异或加密

伪随机字节发生器

( 密钥流发生器 )

密钥 K

k

异或解密

明文字节流

M

11001100 明文01101100 密钥流10100000 密文

Page 97: 第 3 章     对称密码体制

密钥流的周期要长。伪随机数发生器产生的并非完全随机的序列,它是一个产生确定的比特流的函数,该比特流最终将产生重复。重复的周期越长,相当于密钥越长,密码分析也就越困难。

密钥流应尽可能地接近于一个真正的随机数流的特征。例如 1 和 0 的个数应大致相同。密钥流越随机,加密所得的密文也越随机,分析就越困难。

伪随机数发生器的输出取决于输入的密钥的值。

设计流密码需要考虑的因素

Page 98: 第 3 章     对称密码体制

RC4是 Ron Rivest为 RSA 公司在 1987 年设计的一种流密码。

它是一种可变密钥长度、面向字节操作的流密码。 RC4 可能是应用最广泛的流密码

用于 SSL/TLS(安全套接字 /传输层安全协议 ) 用于 IEEE802.1无线局域网中的 WEP 协议。

RC4 流密码

Page 99: 第 3 章     对称密码体制

输入:一个 256 个字节的表示 0---255 的状态矢量S、密钥 K( 长度为 kenlen)

输出:密钥字节流

*初始化 *For i=0 to 255 do

S[i]=i;T[i]=K[i mod keylen]; //临时矢量 T(256 字节 )

*置换 *j=0;For i=0 to 255 do

j=(j+S[i]+T[i]) mod 256;Swap(S[i], S[j]); //S仍然包含所有值为 0 到 255 的元素

RC4 算法

Page 100: 第 3 章     对称密码体制

IDEA 由旅居瑞士的华人来学嘉和他的导师 J.L. Massey共同开发的。 IDEA

使用 128 位密钥,明文和密文分组长度为 64 位。已被用在多种商业产品中。

CLIPPER 密码 采用 SKIPJACK 算法,明文和密文分组长度为 64 位,密钥长度为 80 位。

Blowfish Blowfish允许使用最长为 448 位的不同长度的密钥,并针对在 32 位处理器上的执行进行了优化。

Twofish Twofish 使用 128 位分组,可以使用 128、 192或 256 位密钥。

CAST-128 CAST-128 使用 128 位密钥。它在更新版本的 PGP 中使用。

GOST GOST 是为了回应 DES 而开发的俄罗斯标准,它使用 256 位密钥。

其他对称密码