无线网络安全技术
第二讲 对称密码学
宋宇波
songyubo@
Page 2
密码学历史——演化的历史
( -1949)一门古老的技巧(Art)
(1949-1975) 一门新兴的科学(Sience)
(1975- )公钥密码学
Page 3
一、引言
Page 4
玛丽女王的故事
沃尔辛厄姆
巴宾顿
Page 5
Page 6
Page 7
Page 8
密码学内容
密码编码学(Cryptography)
–密码编码专家(cryptographer)
–明文(plaintext):原始的消息
–密文(ciphertext):被伪装的消息
–加密(encrypt/encipher):明文转换为密文的过程
–解密(decrypt/decipher):密文还原为明文的过程
–算法(algorithm/cipher):用于加密和解密的数学函数
密码分析学(Cryptanalysis)
–密码分析专家(cryptanalyst)
–穷举攻击(Brute-force attack)
Page 9
密码编码学
加密(Encryption):将明文(Plaintext)变换为密文的过程。把可懂的语言变
换成不可懂的语言(密文,Ciphertext),这里的语言指人类能懂的语言和机器
能懂的语言。
解密(Decryption):加密的逆过程,即由密文恢复出原明文的过程。把不可懂
的语言变换成可懂的语言。
密钥 (Key):一种用于加密过程和解密过程的参数,只有加密者或解密者拥有。
加密和解密算法的操作通常都是在一组密钥的控制下进行的,分别称为加
密密钥(Encryption Key) 和解密密钥(Decryption Key)。
Page 10
密钥数量
–加密密钥=解密密钥:对称密钥/单密钥/私钥
–加密密钥≠解密密钥: 非对称密钥/双钥/公钥
Page 11
Kerchoffs原则(1883):
即使密码系统的任何细节已为人悉知,只
要密钥未泄漏,它也应是安全的。
——算法的安全性只与密钥的安全性相关
Page 12
密码分析
密码分析是研究密钥未知的情况下恢复明文的科
学,成功的密码分析恢复明文或密钥。
–基本假设:算法已知(Kerchoff原则)
–分析目的:
• 恢复明文
• 恢复密钥
–分析方法:
• 穷举分析(Brute Force):将密码进行逐个推算直到找出真正的密
码为止。
• 算法分析:对密码算法结构进行分析,尝试推导出明文或密钥。
Page 13
常见的攻击类型
依据分析者掌握的资源划分:
– 唯密文攻击(cybertext only attack):
• 分析者知道一些消息的密文,尝试恢复明文或推导密钥;
– 已知明文攻击(known plaintext attack):
• 分析者不仅知道一些消息的密文,也知道与之对应的明文,尝试推导
出密钥;
– 选择明文攻击(chosen plaintext attack):
• 分析者可以控制加密机,选择明文进行输入,通过观察对应的输出
(密文),尝试推导出密钥;
– 选择密文攻击(chosen ciphertext attack):
• 分析者可以控制解密机,选择密文进行输入,通过观察对应的输出
(明文),尝试推导出密钥;
– 选择文本攻击(Chosen text):
• 分析者同时拥有加密机和解密机,因此可以选择明文输入观察输出密
文,也可选择密文输入观察输出明文,尝试推导出密钥。
Page 14
密码算法的安全性
Page 15
无条件安全和计算上安全
无条件安全:一次一密。
计算上安全:
–破译的代价超出信息本身的代价。
–破译的时间超出信息自身的生命周期。
Page 16
通信安全模型
巴宾顿
玛丽女王
沃尔辛厄姆
Page 17
通信安全模型
C=E (K,P)发方: P 收方:P
K K
(公共信道)
加密E 解密D
(秘密信道)
密码
分析者 K’
P’
Page 18
安全攻击
阻断 窃听
篡改 伪造
Page 19
密码学提供的服务
机密性(Confidentiality):保证信息为授权者享用而不泄漏给
未经授权者。
完整性(Integrity):
数据完整性,未被未授权篡改或者损坏。
系统完整性,系统未被非授权操纵,按既定的功能运行。
可鉴别性(Authentication):使一定能确认数据的来源就是他。
实体鉴别
数据源鉴别
抗抵赖性(Nonrepudiation):收发双方在事后都不能抵赖进
行了本次通信活动。
可用性(Availability);保证信息和信息系统随时为授权者提
供服务,而不要出现非授权者滥用却对授权者拒绝服务的情况。
Page 20
二、古典密码学
Page 21
古典密码术(Cryptography)
代换
–明文的字母由其他字母或数字或符号代替
置换
–改变明文字母排列顺序
Page 22
置换
Skytle加密法
Page 23
栅栏技术:按照对角线的顺序写入明文,而
按行的顺序读出作为密文。
明文: meet me after the party
写为: m e m a t r h p r y
e t e f e t e a t
密文:mematrhpryetefeteat
Page 24
更复杂的例子:
–密钥: 4 3 1 2 5 6 7
–明文: a t t a c k p
o s t p o n e
d u n t i l t
w o a m x y z
密文:ttnaaptmtsuoaodwcoixknlypetz
Page 25
Page 26
Caesar密码
破译以下密文:
–密文:PHHW PH DIWHO WKH SDUWB
–明文:meet me after the party
字母表:(密码本)
密文:D E F G H I J K L M N O P Q RS T UVWX Y ZABC
明文:a b c d e f g h i j k l m n o p q r s t u v w x y z
i : 0 1 2 3 4 5 6 7 8 9……..
加密算法:C = (P+3)mod(26)
解密算法:P = (C-3)mod(26)
代换
Page 27
安全性分析
设密钥为K:
–加密算法:C=E(K,P)=(P+k)mod(26)
–解密算法:P=D(K,C)=(C-K)mod(26)
25个可能的密钥k, k∈[1,25]
Page 28
单表代换密码
凯撒密码只有25个密钥k,非常不安全;
若有意改变字母的排列顺序,可增大密钥空
间;
–任意置换:26!
Page 29
密码破解者使用的方法
–暴力破解(穷举攻击)
密钥的空间问题
–移位密码:26种可能的密钥
–替换密码:4×1027种可能的密钥
Page 30
密钥的复杂度问题
–过于复杂的密码难以记忆
–过于简单的密码容易猜出
Page 31
替换密码的改进
例如:利用关键词
– Key
• ABCDEFGHIJKLMNOPQRSTUVWXYZ
• keyzabcdfghijlmnopgrstuvwx
– spectacular
• ABCDEFGHIJKLMNOPQRSTUVWXYZ
• spectaculrvwxyzbdfghijkmnoq
–优点:
• 便于记忆,无需记在纸上
• 虽然密钥数量变少,但仍然很庞大
Page 32
频率分析
字母频率统计分析
–起源:阿拉伯文明,神学家需建立古兰经中描 述的
天使造访的年表。
Page 33
《关于破译加密信息的手稿》
–如果我们知道一条加密信息所使用的语言,那么破译这条加
密信息的方法就是找出用同样的语言写的一篇其他文章,大
约一页纸长,然后我们计算其中每个字母的出现频率。我们
将频率最高的字母标为1号,频率排第2的标为2号,第三标
为3号,依次类推,直至数完样品文章中所有字母。
–然后我们观察需要破译的密文,同样分类出所有的字母,找
出频率最高的字毋,并全部用样本文章中最高频 率的字毋替
换。第二高频的字母用样文中2号代替,第三则用3号替换.
直到密文中所有字母均巳被样文中的字母替换。
Page 34
英文中字母的使用频率
0
2
4
6
8
10
12
14
A B C D E F G HI J K L MNOP QR S T U V WX Y Z
频率
E使用最多;
然后是T R N I O A S
其他字母使用较少
最少的是J K Q X Z
Page 35 0
2
4
6
8
10
12
14
A B C D E F G H I J K L MN O P Q R S T U V WX Y Z
频率 密文字母频率
基于语言统计规律的破译
1 密文:
– UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUD
BMETSXAIZVUEPHZHMDZSHZOWSFPAPPDTSVPQU
ZWYMXUZUHSXEPYEPOPDZSZUFPOMBZWPFUPZH
MDJUDTMOHMQ
2 统计字母的相对频率;
3 猜测P Z可能是e和t;
4 统计字母的相对频率-双字母
5 猜测ZW可能是th,因此ZWP可能是the
6 经过反复猜测、分析和处理,明文:
it was disclosed yesterday that serveral informal but
direct contacts have been made with political
representatives of the viet cong in moscow
Page 36
EE ?
---E—E----E—E-
NEVERNEVER
N-V-RN-V-R
福尔摩斯密码
Page 37
密码本
改进的方法:代码
–将每个单词用另外一个单词或符号替代
问题:
灵活性差,对明文中可能出现的单词定义代码是项艰
巨工程。
更换非常麻烦
Page 38
玛丽女王用的密码本
Page 39
Playfair密码
例:秘钥”monarchy”
mm oo n a r
cc hh y b d
e f g i/j k
l p q s t
u v w x z
Page 40
安全性分析
可能的密钥个数
– 26×26=676
双子母组合,字母出现的几率被一定程度均化
了
依然保留了相当多的结构信息,仍可以利用频
率统计进行分析
Page 41
多表代换密码
使用两个或两个以上的密码表
交替使用
Page 42
维基尼亚密码(Vigenere)
以移位代换为基础的周期代换密码;
m个移位代表由m个字母组成密钥
字;
字母a b c d… x y z分别由数字0 1
2 3 …24 25表示;
加密时:明文字母Pi在密钥Ki的作
用下向后移位d(Ki),得到密文
字母Ci。
解密时:密文字母Ci在密钥Ki的作
用下向前移位d(Ki),得到明文
字母Pi。
维基尼亚表:26x26矩阵表示26种
排列组合
Page 43
举例
Standard Vigenere Table
Keyword: FORTUNEFORT(ROW)
Plaintext: MEETMEATSIX(COLUMN)
Page 44
Polyalphabetic Substitution Ciphers
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
Standard Vigenere Table
Ciphertext: RSVMGREYGZQ
Page 45
Page 46
Page 47
维基尼亚密码安全性分析
维基尼亚密码是多表替换体制,分析起来更加困
难。
密钥空间大,可能的密钥字达26m
如果秘钥字的长度是m,明文中的一个字母能够映
射成这m个可能的字母中的一个;
例如,当m=5,密钥空间所含密钥的数量是
>
明文和密文的字母频率分布相同,仍然能使用统
计分析破译
Page 48
Vigenere密码分析
Kasiski 测试
–寻找密钥长度
–频率分析
Vigenere的弱点
–周期性
Page 49
一次一密
Vigenere密码的改进思路
–Vigenere密码的弱点:周期性
–加长密钥长度-〉用一个和明文长度一样长
的密钥
如何破解?利用密钥的语言特性
Page 50
举例
?????????????????????
?????????????????????
v h r mh e u z n f q d e z r w x f i d k
c a n ???b s j ?????y p t ????
t h e ???t h e ?????t h e ????
v h r mh e u z n f q d e z r wx f i d k
Page 51
有ypt结构的单词
– apocalyptic, crypt, egypt
c a n ? ? ? ? ? a p o c a l y p t i c ? ?
t h e ? ? ? ? ? n q c h e o t h e x g ? ?
v h r m h e u z n f q d e z r w x f i d k
c a n ? ? ? ? ? ? ? ? ? c r y p t ? ? ? ?
t h e ? ? ? ? ? ? ? ? ? c i t h e ? ? ? ?
v h r m h e u z n f q d e z r w x f i d k
c a n ? ? ? ? ? ? ? ? ? e g y p t ? ? ? ?
t h e ? ? ? ? ? ? ? ? ? a t t h e ? ? ? ?
v h r m h e u z n f q d e z r w x f i d k
Page 52
c a n a d a ? ? ? ? ? ? e g y p t ? ? ? ?
t h e me e ? ? ? ? ? ? a t t h e ? ? ? ?
v h r mh e u z n f q d e z r wx f i d k
c a n a d a b r a z ? ? e g y p t ? ? ? ?
t h e me e t i n g ? ? a t t h e ? ? ? ?
v h r mh e u z n f q d e z r wx f i d k
Page 53
c a n a d a b r a z i l e g y p t ? ? ? ?
t h e me e t i n g i s a t t h e ? ? ? ?
v h r mh e u z n f q d e z r wx f i d k
c a n a d a b r a z i l e g y p t c u b a
t h e me e t i n g i s a t t h e d o c k
v h r mh e u z n f q d e z r wx f i d k
Page 54
改进办法:使用没有任何解构特征的密钥。
如果每次加密都用与明文一样长的真随机密钥,
将是最安全的。(一次一密)
–无法破解!
–缺点??
Page 55
维吉尼亚密码的机械实现
密码盘
Page 56
Enigma
Page 57
Page 58
属Vigenere的实现
–每个轮子是一个单代替表
–多个轮子组合为多表密码
–可视作Vigenere的一个实现
Page 59
Three-Rotor Machine With Wiring Represented by Numbered Contacts
Page 60
Page 61
Page 62
ENIGMA
Page 63
乘积密码(product cipher)
由于语言的统计特性使得使用替换或置换进行
加密并不安全
可以交替的使用多种加密方式:
–两种替换得到更复杂的替换结果
–两种置换得到更复杂的置换结果
–替换后再进行置换得到的结果相对更复杂!
这种思想是从经典密码到现代密码体制的桥梁!
Page 64
第 1 轮 第 2 轮 第 3 轮 第 4 轮 第 5 轮
第 6 轮 第 7 轮 第 8 轮 第 9 轮 第 1 6轮
Page 65
第 2 4轮 第 4 8轮 第 7 2轮
Page 66
以某种方式连续执行两个
或多个密码
–构造简单
–迭代密码:多次重复执行一个
简单的密码函数(轮函数)
Page 67
Feistel密码结构
多轮迭代
先代换(异或)
后置换(左右两部分交换)。
每轮迭代输入分为两部分Li-1和
Ri-1。
第i轮:
Li = Ri-1
Ri = Li-1 F(Ki, Ri-1)
Page 68
Feistel解密:
–使用相同的结构
–颠倒密钥的使用顺序
– F可以是不可逆函数
Page 69
混淆和扩散
混淆:使密文与明文之间的关系复杂。
–通过使用一个复杂的,非线性的代换操作(S-box)
扩散:扩散增加明文的冗余度。
–增加明文与密文之间的相关性:
一个好算法设计是:改变输入的1位,输出的
一半为数会发生改变(雪崩效应)。
Page 70
S-P网络
两个基本操作:代换,置换
substitution (S-box)
permutation (P-box)
轮流使用
Page 71
Page 72
对称密码算法分类
分组密码 (block cipher)
序列密码 (stream cipher)
Page 73
分组密码 (block cipher):
明文被分为固定长度的块
(即分组),对每个分组用
相同的算法和密钥加解密。
– 分组长度:64/128/256bits
– 密文长度:同明文分组长
度相同
问题:若待加密的明文不
是64/128/256的整数倍,
该如何处理?
解密
加密
Page 74
流密码
每次加密数据流的一位或一字节,连续加
密。
– Ci=Ki⊕Pi
Page 75
DES算法
DES(Data Encryption Standard)算法
–是一种用56位密钥来加密64位数据的方法。
发明人:
– IBM公司 和.
基础:
– 1967年美国Horst Feistel提出的理论;
产生:
–美国国家标准局1973年开始研究除国防部外的其它部门
的计算机系统的数据加密标准,于1973年5月15日和
1974年8月27日先后两次向公众发出了征求加密算法的
公告,1977年最终选定DES。
Page 76
DES的加密
采用分组密码体制;
用56bit密钥来加密64bit数据的方法;
16轮Feistel结构迭代
每轮使用48bit的子密钥
Page 77
DES算法流程
第一步:初始置换(IP)。
– 对给定的64位比特的明文x,首先通过
一个置换IP表来重新排列x,从而构造
出64位比特的x0,x0=IP(x)=L0R0,其中
L0表示x0的前32比特,R0表示x0的后32
位。
第二步:16轮Fiestel结构迭代
– 按照规则迭代。规则为
– Li = Ri-1
– Ri = Li⊕F(Ri-1,Ki) (i=1,2,3…16)
第三步:末尾置换(IP-1)
– 对L16R16利用IP-1作逆置换,就得到了密
文y。
输入64比特明文数据
初始置换IP
在密钥控制下
16轮迭代
初始逆置换IP-1
输出64比特密文数据
交换左右32比特
Page 78
可以看出,DES加密需要三个关键点:
1. IP置换表和IP-1逆置换表;
2. 函数f;
3. 子密钥Ki。
Page 79
初始置换(IP)
初始置换(Initial Permutation, IP)
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1
59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
M=m1m2,……m62m63,m64
M’=m58m50,……m23m15,m7
IP(M)
Page 80
单轮DES
密钥Ki
密钥Ki-1
P-盒置换
S-盒代替
压缩置换E-盒置换
移位 移位
32 bits 32 bits
Ki (48bits)
48
32
Li=Ri-1 Ri=Li-1 f (Ri-1 ,Ki )
f
32 bits 32 bits
Li-1 Ri-1
56 bits
2828
48
32
32
Page 81
扩展置换(E-盒置换)
将Ri从32位扩展到48位
目的:输入的一位影响下一步的两个替换,使得输
出对输入的依赖性传播得更快,密文的每一位都依
赖于明文的每一位。
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
32
48
32 1 2 3 4 5 4 5 6 7 8 9 8 9…. 31 32 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 ……46 47 48输出
输入
Page 82
... efgh ijkl mnop ...
... defghi hijklm lmnopq ...
扩充置换E
Page 83
S-盒置换
将48比特压缩成32比特
E
S1 S2 S3 S4 S5 S6
Ri-1 (32 bits)
Ki ( 48bits)
48 bits
S7 S8
32 bits
6bits
4bits
Page 84
S-盒置换
输入6比特: b1b2b3b4b5b6
输出4比特:S(b1b6 , b2b3b4b5)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
S1
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S2
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
1 . . .. .. .. ..
2
3
S1
b1 b2 b3 b4 b5 b6
举例: S 1( 100110 ) = 1000
Page 85
P-盒置换
P-盒: 32比特输入,32比特输出。
1 2 3 4 5 6 7 8 9 3
0
3
1
3
2
1
6
7 2
0
2
1
2
9
1
2
2
8
1
7
1 1
5
. . .. . . 1
1
4 2
5
B=b1b2,……b30b31,b32
B’=b16b7,……b11b4,b25
P(B)
Page 86
子密钥生成
拆分:56 bits 的密钥分成两部分,Ci , Di,各
28bits。
循环左移:根据迭代的轮数,分别左移一位或两
位。
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
轮数
左移
Page 87
子密钥生成
14 17 11 24 1 5
3 28 15 6 21 10
23 19 12 4 26 8
16 7 27 20 13 2
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
PC-2置换(压缩置换)
从56bits中选择48bits
PC-1
C0 D0
LS1 LS1
C1
LS2 LS2
LS16 LS16
K1
初始密钥 K
28bit 28bit
K2
K16
56bit
固定置换
循环左移
D1
压缩置换
(PC-2)
压缩置换
(PC-2)
压缩置换
(PC-2)
C2 D2
C16 D16
48bits
48bits
48bits
64 bits
Page 88
末置换(IP-1)
初始置换的逆置换
40 8 48 16 56 24 64 32
39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30
37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
M=m1m2,……m62,m63,m
64
M’=m40m8,……m17,m57,m25
IP-1 (M)
Page 89
DES解密过程
DES解密过程与加密过程完全相似,只不过将
16次迭代的子密钥顺序倒过来,即
m = DES-1(c) = IP-1 • T1•T2•.....T15 • T16 • IP(c)
可以证明,
DESDES-1-1 (DES (DES (m) )=m(m) )=m
Page 90
雪崩效应(Avalanche Effect)
雪崩效应:指明文或密
钥的少量变化会引起密
文的很大变化 。
Page 91
DES的强度
密钥长度 = 56比特
强力攻击 = 尝试 次
差分密码分析 = 尝试 次
线性密码分析 = 尝试 次
(但是后两种攻击是不实用的)
1976年,耗资2000万美元的计算机,可以在一天中找到密钥。
1993年,设计100万美元的计算机,小时用穷举法找到密钥。
1998年,EFF宣布破译了DES算法,耗时不到三天时间,使用的是
25万美元的“DES破译机”。
Page 92
DES弱密钥
弱密钥:每轮密钥都是一样。 EKEK = I,DES存在4个弱密钥。
半弱密钥:一个密钥能够解另一密钥加密的密文。 EK1 = EK2,至少
有12个半弱密钥。
弱密钥(带奇偶位) 真实密钥
0101 0101 0101 0101 000000
0
000000
0
1F1F 1F1F 0E0E 0E0E 000000
0
FFFFFF
F
E0E0 E0E0 F1F1 F1F1 FFFFFF
F
000000
0
FEFE FEFE FEFE FEFE FFFFFF
F
FFFFFF
F
Page 93
三重DES(3DES )
三重DES加密,密钥长度为168比特, k=k1k2k3
DES DES-1 DES
m c
k1 k2 k1
DES-1 DES DES-1
mc
k1 k2 k1
双密钥三重DES加密,密钥长度为112比特, k=k1k2
DES DES-1 DES
m c
k1 k2 k3
DES-1 DES DES-1
mc
k3 k2 k1
Page 94
AES算法
有着30年历史的DES算法显然应该退休了
–理论上存在破解它的攻击方法
–已经表明可以用密钥穷举方法破解
1997年,NIST开始征求新的加密标准算法——
AES
1998年,第一轮通过15个候选算法
1999年,第二轮通过5个候选算法
2000年,选择Rijndael算法作为AES
2001年,AES标准正式发布
Page 95
最后的5个候选算法
算法 递交者
MARS IBM
RC6TM RSA Laboratories
Rijndael Joan Daemen, Vincent Rijmen
Serpent Ross Anderson, Eli Biham, Lars Knudsen
Twofish Bruce Schneier, John Kelsey, Doug
Whiting, David Wagner, Chris
Hall,Niels Ferguson
Page 96
AES算法- Rijndael
比利时的Rijmen-Daemen设计
密钥长度:128/192/256 bit
明文长度:128 bit
采用了置换组合结构
–将处理的数据堪称一个4*4的字节矩阵
–每轮所有的数据都参与运算
主要特性:
–可以抵御已知的攻击
–在各种CPU上执行速度快且代码紧凑
–设计简单
Page 97
AES要求
对称密钥分组加密算法
分组长度为128位,密钥长度为128/192/256位
安全性不低于3DES,运算速度要比3DES快
在未来的20-30年内不会被淘汰
要公开所有的设计细节
提供C和JAVA的实现代码
公开和免费许可:公开定义、公开评估、公正公开的
选择
Page 98
AES算法加密
Page 99
工作模式
分组加密只处理固定长度的明文
– DES处理的明文长度为64位
–在现实中我们需要处理任意长度的明文
5种推荐模式
–用于分组加密
–用于流加密
Page 100
ECB模式(Electronic Codebook Book )
Page 101
ECB模式(Electronic Codebook Book )
报文被顺序分割分成b位长度分组
– 每个明文都有密文唯一对应,像密码本一样,名字的来由。
– 各个分组独立加密,与其他分组无关。
Cj = E(K, Pj) j = 1, …, N
Pj = D(K, Cj) j = 1, …, N
– 若明文长度不为b的整数倍,最后一个分组需进行填充。
优点
– 并行加密、随机存取
缺点
– 相同的明文分组对应着相同的密文分组
暴露了统计规律
– 替换、窜改、乱序重排
Page 102
ECB加密有可能保存数据的结构特征
原始图片 使用ECB加密后 利用其他模式加密
Page 103
Page 104
Page 105
CBC模式 (Cipher Block Chaining )
Page 106
CBC模式 (Cipher Block Chaining )
前一个分组的加密结果被反馈到当前分组的加密
明文加密前要与前面的密文进行异或(象链条一样链在
一起,名字来由)。
Cj = E(K, [Pj Cj–1]) j = 2, …, N
Pj = D(K, Cj) Cj–1 j = 2, …, N
初始状态:明文和初始向量IV(initialization vector)
异或
C1 = E(K, [P1 IV])
P1 = D(K, C1) IV
用途:大数据量的明文加密,认证。
Page 107
优点:
–当前的密文跟前面所有的明文都相关
–当前明文的改变将影响后面所有的密文输出
Page 108
CFB模式(Cipher FeedBack)
消息看作比特流,每次
加密长度s位可以比分组
长度b位小。
明文与加密算法的输出
相加
结果被反馈到下一步中,
名字的来由。
用途:流加密,认证 Cj = Pj Ss(E[K, Cj–1])
Pj = Cj Ss(E[K, Cj–1])
Page 109
OFB模式(Output FeedBack)
消息看作比特流,每次加密
长度s位可以比分组长度b位
小。
加密的输出和明文进行相加
上一步的加密输出被反馈到
下一个加密输入中,名字的
来由
反馈过程与明文独立,因此
可以先计算。
在有噪声干扰的信道上进行
流加密。
Cj = Pj Ss(E(K, [Cj–1 Pj–1]))
Pj = Cj Ss(E(K, [Cj–1 Pj–1]))
Page 110
CTR模式(Counter)
Page 111
优点:
–效率高,可以并行加解密。
–可以进行预处理。
–可随机访问特定密文。random access to encrypted
data blocks
–可证明与其他模式的安全性一样
缺点:需确保每次不能使用相同的密钥/计数器
值。
Page 112
流加密(Stream Cipher)
一位一位处理,好像流一样。
算法结构:
–密钥流:伪随机序列
• 伪随机数是使用一个确定性的算法计算出来的,似乎是随机的数序。
因此伪随机数实际上并不随机。
–明文与密钥流逐位XOR
Page 113
流密码特性
设计上的考虑:
–密钥流周期要长。
–统计上随机
–密钥流的随机性与密钥长度有关
如果设计得当,则流密码的安全性与分组密码
相当,且实现简单,运算速度快。
相同密钥不能加密不同明文,即同一密钥不能
用两次。
Page 114
RC4算法
1987年开发
1994年9月,源代码被匿名贴到Cypherpunks
邮件列表中。
RSA仍拥有RC4商标,任何人未经授权不得使
用。
Page 115
RC4算法细节
有一个28的S盒:
S0……S255。
值范围:0-255
1、初始化S盒
for i = 0 to 255 do
S[i] = i
j = 0
for i = 0 to 255 do
j = (j + S[i] + k[i mod
l]) (mod 256)
swap (S[i], S[j])
2、生成任意长的密钥流
i = j = 0
for each message byte Mi
i = (i + 1) (mod
256)
j = (j + S[i]) (mod
256)
swap(S[i], S[j])
t = (S[i] + S[j])
(mod 256)
K=S[t]
3、加密
Ci = Mi XOR Ki
Page 116
Page 117
RC4 的安全性
可以抵御已知的攻击
在WLAN的加密体制中被攻破,主要原因是错
误的使用了RC4算法。
Page 118
课后讨论题
1. 有些古典加密算法加密的内容到今天都无法被破解,为什么我们现在不
再使用这些加密算法?
2. 同音代换法是一种较为复杂的代换方法,其密文通常由数字组成,明文
中的每个字母对应到一群数字(而非单一一个数字)。在加密时,明文
中的每个字母对应的密文从一群候选的数字中随机选出。此类加密法中,
明文中的字母与密文中的数字为一对多的对应关系,这样的设计目的是
什么?它的安全性如何,能否被破解?
字母 代换数字
A 16 29 42 57 66 84 90
E 02 11 17 26 30 39 48 55 63 72 79 85
93
M 18 52 89
N 08 25 38 50 69 73 82 95
O 01 13 23 35 47 60 75 98
T 06 14 22 37 45 59 67 77 86
U 03 44 76
Y 33 91
Page 119
3. 随着处理器运算能力的增加,现有无法破解
的算法是否有可能在未来被破解?
4. 尝试证明DES算法解密算法和加密算法过程
相同
5. DES算法在16轮Feistel结构迭代后需要交换
32位,能否省略掉?
6. 尝试证明AES算法解密过程和加密算法过程
相同
Page 120
7. 在ECB模式中,若密文在传输过程中某一块
发生了错误,则只有相应的明文分组会有影
响。然而,在CBC模式中,这种错误具有扩
散性。若传输C1时发生错误解密时将会影响
明文分组P1和P2。
– P2以后的所有块是否会受到影响?
– 若P1本来就有1位是错误的,则这个错误要扩散至
多少个密文分组?对接收者解密后的结果有什么
影响?
Page 121
8. CBC模式下的IV是否需要保密?
9. 为什么只有三重加密?能不能使用二重加密
?三重加密标准中为什么只适用两个密钥而
不是三个密钥?
10.有没有可能通过密文来判断出所使用的加密
算法?