第三章对称密码体制
5
两个基本设计方法
Shannon称之为理想密码系统,密文的所有统计特性 都与所使用的密钥独立。 • 扩散(Diffusion):明文的统计结构被扩散消失到 密文的统计特性中,使得明文和密文之间的统计关系 尽量复杂。使得明文的每个比特影响到密文许多比特 的取值,即每个密文比特被许多明文比特影响。 • 混乱(confusion):使得密文的统计特性与密钥的 取值之间的关系尽量复杂。 •扩散和混淆的目的都是为了挫败推出密钥的尝试, 从而抗统计分析。
= Ri⊕F(Li,Ki)
7
2. SP网络结构是分组密码的另一种重要结构, AES等重要算法采用的是此结构。
8
DES(Data Encryption Standard )是迄今为止使用最为广泛的加 密算法。 DES的产生-i • 1973年5月13日, NBS(美国国家标准局)开始公开征集标准加密算 法,并公布了它的设计要求: (1)算法必须提供高度的安全性; (2)算法必须有详细的说明,并易于理解; (3)算法的安全性取决于密钥,不依赖于算法;
• 1976年,NBS指派了两个小组进行评价
• 1976年11月23日,采纳为联邦标准,批准用于非军 事场合的各种政府机构 • 1977年1月15日,被正式批准为美国联邦信息处理标 准,即FIPS PUB 46,同年7月15日开始生效。
10
DES的应用
• 1979年,美国银行协会批准使用 • 1980年,美国国家标准局赞同DES作为私人使用的标 准,称之为DEA(ANSI X.392) • 1983年,国际化标准组织ISO赞同DES作为国际标准, 称之为DEA-1 • 该标准规定每五年审查一次,计划十年后采用新标准
AES背景-ii
• 1998年8月12日,在首届AES会议上指定了15 个候选算法。
• 1999年3月22日第二次AES会议上,将候选名 单减少为5 个, 这5 个算法是RC6 , Rijndael , SERPENT,Twofish和MARS。 • 2000年4月13日,第三次AES会议上,对这5 个候选算法的各种分析结果进行了讨论。 • 2000年10月2日,NIST宣布了获胜者— Rijndael算法, 2001 年11 月出版了最终标准 33 FIPSPUB197。
x1 xm
分组密码
k
无记忆元件
y1
x1
k
…
内部记忆元件
y1
ym
流密码
2
分组密码对不同的组采用同样的密钥k进 行加/解密。设密文组为y=y1y2•••ym,则对明 文组x=x1x2 ••• xm用密钥k加密可得到 y=ek(x1)ek(x2) ••• ek(xm)。
流密码的基本思想是利用密钥k产生一个 密钥流z=z0z1 •••,并使用如下规则加密明文 串x=x0 x1 x2 ••• ,y=y0y1y2•••= ez0(x0)ez1(x1) ez2(x2)••• 。密钥流由密钥流发生器f产生。 分组密码与流密码的区别就在于记忆性。
12
13
1.初始置换IP和初始逆置换IP—1
14
2. 迭代变换
15
迭代变换是DES算法的核心部分,每 轮开始时将输入的64bit数据分成左、右 长度相等的两部分,右半部分原封不动地 作为本轮输出的64bit数据的左半部分, 同时对右半部分进行一系列的变换,即用 轮函数F作用右半部分,然后将所得结果 与输入数据的左半部分进行逐位异或,最 后将所得数据作为本轮输出的64bit数据 的右半部分。 轮函数F由选择扩展运算E、与子密钥 的异或运算、选择压缩运算S和置换P组成。
3
3.1.1
分组密码设计原理
分组密码是将明文消息编码表示后的数字(简 称明文数字)序列x0,x1,… ,划分成长度为n的组 x=(x0,x1,…,xn-1),每组分别在密钥 k=(k0,k1,…,km-1) 的控制下变换成等长的输出数字(简称密文数字) 序列y=(y0,y1,…,yn-1) 。
4
分组密码的算法应满足如下安全性和软/硬件实现的 要求: (1)分组长度足够大,防止明文被穷举攻击。如 n=64bit (DES) ,新的标准n=128bit (AES) (2)密钥空间足够大,从而防止穷举密钥攻击。同时, 密钥又不能太长,以利于密钥管理,DES采用56bit 有效密钥,现在不够长,今后采用128bit是足够安 全的。 (3)由密钥确定的算法要足够复杂,充分实现明文与 密文的扩散和混淆,没有简单的关系可循。 (4)软件实现的要求:尽量使用适合编程的子块和简 单的运算 (5)硬件实现的要求:加密和解密应具有相似性。
双重DES易 受中途攻击
P=DK1(DK2(C))
30
2.三重DES(以被广泛采用)
优点:能对付中途攻击。密钥长度为168bit
31
3.3 高级加密标准AES
AES背景-i
• 1997年4月15日,(美国)国家标准技术研究所 ( NIST ) 发起征集高级加密标准( Advanced Encryption Standard)AES的活动,活动目的是确定一 个非保密的、可以公开技术细节的、全球免费使用的分 组密码算法,作为新的数据加密标准。 • 1997年9月12日,美国联邦登记处公布了正式征集AES 候选算法的通告。作为进入AES候选过程的一个条件,开 发者承诺放弃被选中算法的知识产权。 对AES的基本要求是:比三重DES快、至少与三重DES一样 安全、数据分组长度为128比特、密钥长度为 32 128/192/256比特。
16
17
(1) 选择扩展运算
将输入的32bit数据扩展为48bit的输出数据,变换表如 下:
可以看出1、4、5、8、9、12、13、16、17、20、21、 18 24、25、28、29、32这16个位置上的数据被读了两次。
(2)与子密钥的异或运算
与子密钥的异或运算:将选择扩展运算的48 bit数据与子密钥Ki(48 bit)进行异或运算。 (后面详述)
23
(4)置换P
24
25
26
3.2.2 DES问题讨论
1.S盒的安全问题
有人认为s盒可能存在陷门,但至今没有迹象表明s盒中 存在陷门。
2.密钥长度
• 关于DES算法的另一个最有争议的问题就是担心实际 56比特的密钥长度不足以抵御穷举式攻击,因为密钥量 只有256≈1017个。 • 早在1977年,Diffie和Hellman已建议制造一个每秒能 测试100万个密钥的VLSI芯片。每秒测试100万个密钥 的机器大约需要一天就可以搜索整个密钥空间。他们估 计制造这样的机器大约需要2000万美元。 27
40
3.4.1 电码本模式(ECB)
电子密码本ECB
Ci = EK (Pi ) Pi = DK (Ci )
41
ECB的特点
ECB用于短数据(如加密密钥)是非常理想,长消息不够安全
简单、有效 可以并行实现 不能隐藏明文的模式信息
第三章
3.1 3.2 3.3
对称密码体制
分组密码原理 数据加密标准(DES) 高级加密标准(AES)
3.4
分组密码的工作模式
1
3.1
分组密码原理
对称密码体制根据对明文加密方式的不同分为 分组密码和流密码。 分组密码:按一定长度(如64bit,128bit)对 明文进行分组,然后以组为单位采用同样的密 钥进行加/解密; 流密码:不进行分组,而是按位进行加/解密
分组密码的工作模式:就是以该分组密码为基础构造 的一个密码系统。
电子密码本 密码分组链接 密码反馈 输出反馈
ECB (electronic codebook mode) CBC (cipher block chaining) CFB (cipher feedback) OFB (output feedback)
• 1998年7月电子前沿基金会(EFF)使用一 台25万美元的电脑在56小时内破译了56比特密 钥的DES。 • 1999年1月RSA数据安全会议期间,电子前 沿基金会用22小时15分钟就宣告破解了一个 DES的密钥。
29
3.2.3 DES的变形 1.两重DES
双重DES 密钥长度 为112bit, 密码强度 似乎增强 了一倍, 但问题并 非如此。 C=EK2(EK1(P))
6
3.1.2
分组密码的一般结构
分组密码的一般结构可以分为两种:Feistel网络 结构和SP网络结构。 1. Feistel网络结构 Feistel网络结构如图所示:DES采用的是Feistel网络 结构
加密: Li = Ri-1; Ri = Li-1⊕F(Ri-1,Ki) •解密: Ri-1 = Li,Li-1 = Ri⊕F(Ri-1,Ki)
Nk=6 Nk=8
12 14
12 14
14 14
35
SP网络结构
在这种密码的每一轮中,轮输入首先被一个由子密钥控 制的可逆函数S作用,然后再对所得结果用置换(或可逆 线性变换)P作用。S和P分别被称为混乱层和扩散层,主 要起混乱和扩散作用。
36
AES算法结构-i
• AES算法的轮变换中没有Feistel结构,轮变换是由三
19
(3)选择压缩运算
将输入的48bit数据从左至右分成8组,每组6bit。然后输入8个S 盒,每个S盒为一非线性代换,有4bit输出,如图所示:
20
21
22
S-Box
• 对每个盒,6比特输入中的第1和第6比特组成
的二进制数确定的行,中间4位二进制数用来 确定的列。相应行、列位置的十进制数的4位 二进制数表示作为输出。例如的输入为101001, 则行数和列数的二进制表示分别是11和0100, 即表中3行和表中4列,表中3行和表中4列的十 进制数为3,用4位二进制数表示为0011,所以 的输出为0011。
3.2