第三章对称密钥体制
密钥Ki(48bit)的生成算法
DES的破解
DES的实际密钥长度为56-bit,就目前计算机的计 算机能力而言,DES不能抵抗对密钥的穷举搜索攻击。 1997年1月28日,RSA数据安全公司在RSA安全年 会上悬赏10000美金破解DES,克罗拉多州的程序员 Verser在Inrernet上数万名志愿者的协作下用96天的时 间找到了密钥长度为40-bit和48-bit的DES密钥。 1998年7月电子边境基金会(EFF)使用一台价值25 万美元的计算机在56小时之内破译了56-bit的DES。 1999年1月电子边境基金会(EFF)通过互联网上的 10万台计算机合作,仅用22小时15分就破解了56-bit 的DES。 不过这些破译的前提是, 不过这些破译的前提是,破译者能识别出破译的结 果确实是明文,也即破译的结果必须容易辩认。 果确实是明文,也即破译的结果必须容易辩认。如果 明文加密之前经过压缩等处理,辩认工作就比较困难。 明文加密之前经过压缩等处理,辩认工作就比较困难。
一种是对DES进行复合,强化它的抗攻击 能力;另一种是开辟新的方法,即象DES那样 加解密速度快,又具有抗差分攻击和其他方式 攻击的能力。
现代常规分组加密算法
• • • • • •
1. Triple DES 2. IDEA 3. RC5 4. RC6 5. AES 其他一些较实用的算法,如Blowfish, CAST,以及RC2。
DES算法的一次迭代过程图
DES算法描述(续)
扩展置换为:
32 1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1
CBC特点
没有已知的并行实现算法 能隐藏明文的模式信息 – 需要共同的初始化向量IV – 相同明文 不同密文 – 初始化向量IV可以用来改变第一块 • 对明文的主动攻击是不容易的 – 信息块不容易被替换、重排、删除、重放 – 误差传递:密文块损坏 两明文块损坏 安全性好于ECB 适合于传输长度大于64位的报文,还可以进行 用户鉴别,是大多系统的标准如 SSL、IPSec
分组密码是指将处理的明文按照固定长度进行 分组,加解密的处理在固定长度密钥的控制下, 以一个分组为单位独立进行,得出一个固定长 度的对应于明文分组的结果 。属于对称密码体 制的范畴 。
基本概念(续)
在分组密码的设计中用代替、置换手段实现扩 散和混淆功能 。 混淆 指加密算法的密文与明文及密钥关系十分复杂, 无法从数学上描述,或从统计上去分析。 扩散 指明文中的任一位以及密钥中的任一位,对全 体密文位有影响。经由此种扩散作用,可以隐 藏许多明文在统计上的特性,增加密码的安全
1 . TRIPLE DES
•
由于已经证明DES不能成为群,见 DES不能成为群, K.W.Campbell and M.J.Wiener Proof that DES is not a group In Advances in Cryptology——Crpto’92. Springer-Verlag , New York,1993. 于是多重DES,尤其是三重DES还在普遍使用。
电子密码本ECB (electronic codebook mode) 密码分组链接CBC (cipher block chaining) 密码反馈CFB (cipher feedback) 输出反馈OFB (output feedback)
电子密码本(ECB)
Ci = EK(Pi) ⇔ Pi = DK(Ci)
DES算法描述
为二进制编码数据设计的,可以对计算机数据进行密 码保护的数学运算。 DES使用56位密钥对64位的数据块进行加密,并对64 位的数据块进行16轮编码。在每轮编码时,一个48位 的“每轮”密钥值由56位的“种子”密钥得出来。 56 DES算法的入口参数有三个:Key、Data和Mode。
第三章 对称密码体制
对称加密技术
基本概念 标准算法的介绍
DES算法 AES算法
分组密码的分析方法 分组密码的工作模式
基本概念
密码学中常见的有两种体制:
对称密码体制(单钥密码体制) 如果一个加密系统的加密密钥和解密密钥相同,或 者虽然不相同,但是由其中的任意一个可以很容易 地推导出另一个,即密钥是双方共享的,则该系统所 采用的就是对称密码体制。 非对称密码体制(公钥密码体制)
• •
密码反馈CFB
•
CFB:分组密码 流密码 Si 为移位寄存器,j为流单元宽度 加密: Ci =Pi⊕(EK(Si)的高j位) Si+1=(Si<<j)|Ci 解密: Pi=Ci⊕(EK(Si)的高j位) Si+1=(Si<<j)|Ci
CFB加密示意图 加密示意图
Ci =Pi⊕(EK(Si)的高 位) ; Si+1=(Si<<j)|Ci 的高j位 的高
ECB特点
• 简单和有效 • 可以并行实现 • 不能隐藏明文的模式信息 – 相同明文 相同密文 – 同样信息多次出现造成泄漏 • 对明文的主动攻击是可能的 – 信息块可被替换、重排、删除、重放 • 误差传递:密文块损坏 仅对应明文块损坏
适合于传输短信息
密码分组链接CBC
•
Ci=EK(Ci-1⊕Pi) ⇔ Pi=EK(Ci )⊕ Ci-1
DES加密算法的背景
美国国家安全局(NSA, National Security Agency)参与了美国国家标准局制定数据加密 标准的过程。NBS接受了NSA的某些建议,对 算法做了修改,并将密钥长度从LUCIFER方案 中的128位压缩到56位。 1979年,美国银行协会批准使用DES。 1980年,DES成为美国标准化协会(ANSI)标准。 1984年2月,ISO成立的数据加密技术委员会 (SC20)在DES基础上制定数据加密的国际标准 工作。
•
OFB:分组密码 流密码 Si 为移位寄存器,j为流单元宽度 加密: Ci =Pi⊕(EK(Si)的高j位) Si+1=(Si<<j)|(EK(Si)的高j位) 解密: Pi=Ci⊕(EK(Si)的高j位) Si+1=(Si<<j)|(EK(Si)的高j位)
OFB加密示意图 加密示意图
Ci =Pi⊕(EK(Si)的高 位);Si+1=(Si<<j)|(EK(Si)的高 位) 的高j位 的高j位 的高 的高
对称加密技术
基本概念 标准算法的介绍
DES算法 国际数据加密算法(IDEA) AES算法
分组密码的分析方法 分组密码的工作模式
DES加密算法的背景
发明人 美国IBM公司W. Tuchman 和 C. Meyer 1971-1972年 研制成功。 基础 1967年美国Horst Feistel提出的理论 产生 美国国家标准局(NBS)1973年5月到1974年8月两次 发布通告,公开征求用于电子计算机的加密算法。经 评选从一大批算法中采纳了IBM的LUCIFER方案。 标准化 DES算法1975年3月公开发表,1977年1月15日由美 国国家标准局颁布为数据加密标准(Data Encryption Standard),于1977年7月15日生效。
对称加密技术
基本概念 标准算法的介绍
DES算法 AES算法
分组密码的工作模式 分组密码的分析方法
分组密码的分析方法
根据攻击者所掌握的信息,可将分组密码的攻击分为以 下几类: – 唯密文攻击 – 已知明文攻击 – 选择明文攻击 攻击的复杂度 – 数据复杂度:实施该攻击所需输入的数据量 – 处理复杂度:处理这些数据所需要的计算量
OFB解密示意图 解密示意图
Pi=Ci⊕(EK(Si)的高 位); Si+1=(Si<<j)|(EK(Si)的高 位) 的高j位 的高j位 的高 的高
OFB特点
OFB:分组密码 流密码
• •
没有已知的并行实现算法 隐藏了明文模式
需要共同的移位寄存器初始值IV 误差传递:一个单元损坏只影响对应单元 • 对明文的主动攻击是可能的 – 信息块可被替换、重排、删除、重放 • 安全性较CFB差
CFB解密示意图 解密示意图
Pi=Ci⊕(EK(Si)的高 位); Si+1=(Si<<j)ቤተ መጻሕፍቲ ባይዱCi 的高j位 的高
CFB特点
•
• •
•
分组密码 流密码 没有已知的并行实现算法 隐藏了明文模式 需要共同的移位寄存器初始值IV 对于不同的消息,IV必须唯一 误差传递:一个单元损坏影响多个单元
输出反馈OFB
唯密文,2k 已知(选择)明文, 2k, k-密钥长度
字典攻击:
明密文对编成字典, 2n,n-分组长度
查表攻击:
选择明文攻击, 给定明文,用所有的2k个密钥,预计算密文, k-密 钥长度
时间存储权衡攻击:
选择明文攻击,由穷尽密钥搜索和查表攻击混合而成,它在选择 明文攻击中以时间换取空间
现代常规分组加密算法
Key为8个字节共64位,是DES算法的工作密钥; Data也为8个字节64位,是要被加密或被解密的数据; Mode为DES的工作方式,有两种:加密或解密
64位明文变换到64位密文,密钥64位,实际可用密钥 长度为56位。
DES算法描述(续)
初始换位的功能是把输入的64位数据块按位重新组合, 并把输出分为L0、R0两部分,每部分各长32位,其置 换规则见下表: 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 例:设置换前的输入值为D1D2D3......D64,则经过初 始置换后的结果为:L0=D58D50...D8; R0=D57D49...D7。