1、现代密码学理论与实践第 3章 分组密码和数据加密标准 Fourth Edition by William StallingsSlides by 杨寿保http:/ 9月* Cryptography and Network Security - 3第 3章 分组密码和数据加密标准l 分组密码是一种加密解密算法,将输入明文分组当做一个整体处理,输出一个等长的密文分组。l 许多分组密码都采用 Feistel结构,这样的结构由许多相同的轮函数组成。每一轮里,对输入数据的一半进行代换,接着用一个置换来交换数据的两个部分,扩展初始的密钥使得每一轮使用不同的子密钥。l DES是应用最为广泛的分组密码,它扩展
2、了经典的Feistel结构。 DES的分组和密钥分别是 64位和 56位。l 差分分析和线性分析是两种重要的密码分析方法。DES对这两种攻击有一定的免疫性。Date 2Cryptography and Network Security - 33.1 分组密码的原理l 流密码 (Stream Cipher)和分组密码 (Block Cipher)如果密文不仅与最初给定的算法和密钥有关,同时也与明文位置有关 (是所处位置的函数 ),则称为流密码体制。加密以明文比特为单位,以伪随机序列与明文序列模 2加后,作为密文序列,一次一比特 /字节如果经过加密所得到的密文仅与给定的密码算法和密钥有关,与被处理
3、的明文数据在整个明文中的位置无关,则称为分组密码体制。通常以大于等于 64位的数据块为单位,加密得相同长度的密文。Date 3Cryptography and Network Security - 3乘积密码的设计思想l 1949年, Claude Shannon引进了 Substitution-Permutation (S-P) Networks的思想,即现代的乘积加密器,形成了现代分组加密的基础。 S-P Networks 是基于替代和置换这两个基本操作的 .l 乘积加密 提供了对明文信息处理所做的confusion (扰乱 )和 diffusion (扩散 )l Shannon认为,为了
4、对付基于统计分析的密码破译,必须对明文作 confusion(扰乱 )和 diffusion(扩散 )处理,以减少密文的统计特性,为统计分析制造障碍 。l diffusion 扩散,明文统计结构扩散消失到大批密文统计特性中,使明文和密文之间统计关系尽量复杂;l confusion 扰乱,使密文和加密密钥之间的关系尽量复杂 。Date 4Cryptography and Network Security - 33.1.2 Feistel密码结构的设计动机l 分组密码l 大多数分组密码基于 Feistel Cipher Structurel 分组加密器本质上就是一个巨大的替换器l 64位的分组就有
5、 264种输入l 采用了乘积加密器的思想,即轮流使用替代和置换l Feistel密码结构的设计动机l 分组密码对 n比特的明文分组进行操作,产生一个 n比特的密文分组,共有 2n个不同的明文分组,每一种都必须产生一个唯一的密文分组,这种变换称为可逆的或非奇异的。可逆映射 不可逆映射00 11 00 1101 10 01 1010 00 10 0111 01 11 01 Date 5Cryptography and Network Security - 3n = 4时的一个普通代换密码的结构Date 6Cryptography and Network Security - 3Date 7Cryp
6、tography and Network Security - 33.1.3 Feistel密码结构l 1973年, Horst Feistel提出了基于可逆乘积加密器概念的Feistel Cipher:l 将输入分组分成左右两部分,实施 Shannons的 substitution-permutation network 概念l 对左半部数据实施多回合的替代操作 (substitution)l 对右半部数据和子密钥应用轮函数 F,其输出与左一半做异或l 将这两部分进行互换(permutation swapping) Date 8Cryptography and Network Securit
7、y - 3l 分组长度:分组越长则安全性越高,但加 /解密速度越低,分组长度为 64位是一个合理的折衷l 密钥长度:密钥越长越安全,但加 /解密速度越低, 64位长的密钥已被证明是不安全的, 128位是常用的长度l 迭代次数:迭代越多越安全,通常为 16次迭代l 子密钥产生算法:越复杂则密码分析越困难l 轮循环函数:越复杂则抗密码分析的能力越强l 快速的软件加密 /解密:算法的执行速度很重要l 简化分析难度:算法简洁清楚,易于分析弱点,发现问题l Feistel解密算法:以密文作为算法的输入,以相反的次序使用密钥 Ki, Kn、 Kn 1、 .、 K0.Feistel加密器设计原则Date 9Cryptography and Network Security - 3Feistel Cipher Encryption and DecryptionDate 10Cryptography and Network Security - 3