第3章分组密码和数据加密标准 分组密码是一种加密解密算法,将输入明文分组当做 一个整体处理,输出一个等长的密文分组。 ●许多分组密码都采用Feistel结构,这样的结构由许多 相同的轮函数组成。每一轮里,对输入数据的一半进 行代换,接着用一个置换来交换数据的两个部分,扩 展初始的密钥使得每一轮使用不同的子密钥。 DES是应用最为广泛的分组密码,它扩展了经典的 Feistel结构。DES的分组和密钥分别是64位和56位。 差分分析和线性分析是两种重要的密码分析方法。 DES对这两种攻击有一定的免疫性。 2022/10/9 Cryptography and Network Security-3 2/35
2022/10/9 Cryptography and Network Security - 3 2/35 第3章 分组密码和数据加密标准 ⚫ 分组密码是一种加密解密算法,将输入明文分组当做 一个整体处理,输出一个等长的密文分组。 ⚫ 许多分组密码都采用Feistel结构,这样的结构由许多 相同的轮函数组成。每一轮里,对输入数据的一半进 行代换,接着用一个置换来交换数据的两个部分,扩 展初始的密钥使得每一轮使用不同的子密钥。 ⚫ DES是应用最为广泛的分组密码,它扩展了经典的 Feistel结构。DES的分组和密钥分别是64位和56位。 ⚫ 差分分析和线性分析是两种重要的密码分析方法。 DES对这两种攻击有一定的免疫性
3.1分组密码的原理 15 流密码(Stream Cipher)和分组密码(Block Cipher) 如果密文不仅与最初给定的算法和密钥有关,同 时也与明文位置有关(是所处位置的函数),则称为流 密码体制。加密以明文比特为单位,以伪随机序列与 明文序列模2加后,作为密文序列,一次一比特/字节 如果经过加密所得到的密文仅与给定的密码算法 和密钥有关,与被处理的明文数据在整个明文中的位 置无关,则称为分组密码体制。通常以大于等于64位 的数据块为单位,加密得相同长度的密文。 】 2022/10/9 Cryptography and Network Security-3 3/35
2022/10/9 Cryptography and Network Security - 3 3/35 3.1 分组密码的原理 ⚫ 流密码(Stream Cipher)和分组密码(Block Cipher) 如果密文不仅与最初给定的算法和密钥有关,同 时也与明文位置有关(是所处位置的函数),则称为流 密码体制。加密以明文比特为单位,以伪随机序列与 明文序列模2加后,作为密文序列,一次一比特/字节 如果经过加密所得到的密文仅与给定的密码算法 和密钥有关,与被处理的明文数据在整个明文中的位 置无关,则称为分组密码体制。通常以大于等于64位 的数据块为单位,加密得相同长度的密文
乘积密码的设计思想 15 。1949年,Claude Shannon进了Substitution- Permutation(S-P)Networks的思想,即现代的 乘积加密器,形成了现代分组加密的基础。S-P Networks是基于替代和置换这两个基本操作的. 乘积加密提供了对明文信息处理所做的 confusion(扰乱)和diffusion(扩散) Shannon认为,为了对付基于统计分析的密码破译, 必须对明文作confusion(扰乱)和diffusion(扩散)处理, 以减少密文的统计特性,为统计分析制造障碍。 diffusion-扩散,明文统计结构扩散消失到大批密文 统计特性中,使明文和密文之间统计关系尽量复杂; confusion-扰乱,使密文和加密密钥之间的关系尽 量复杂。 道道■ 2022/10/9 Cryptography and Network Security-3 4/35
2022/10/9 Cryptography and Network Security - 3 4/35 乘积密码的设计思想 ⚫ 1949年,Claude Shannon引进了SubstitutionPermutation (S-P) Networks的思想,即现代的 乘积加密器,形成了现代分组加密的基础。S-P Networks 是基于替代和置换这两个基本操作的. ⚫ 乘积加密提供了对明文信息处理所做的 confusion (扰乱)和diffusion (扩散) ⚫ Shannon认为,为了对付基于统计分析的密码破译, 必须对明文作confusion(扰乱)和diffusion(扩散)处理, 以减少密文的统计特性,为统计分析制造障碍。 ⚫ diffusion –扩散,明文统计结构扩散消失到大批密文 统计特性中,使明文和密文之间统计关系尽量复杂; ⚫ confusion –扰乱,使密文和加密密钥之间的关系尽 量复杂
3.1.2 FEISTEL密码结构的设计动机 ·分组密码 大多数分组密码基于Feistel Cipher Structure 分组加密器本质上就是一个巨大的替换器 64位的分组就有264种输入 采用了乘积加密器的思想,即轮流使用替代和置换 ·Feistel密码结构的设计动机 分组密码对比特的明文分组进行操作,产生一个n比特的密 文分组,.共有2个不同的明文分组,每一种都必须产生一个 唯一的密文分组,这种变换称为可逆的或非奇异的。 可逆映射 不可逆映射 00 11 00 11 01 10 01 10 10 00 10 01 11 01 11 01 评四 2022/10/9 Cryptography and Network Security-3 5/35
2022/10/9 Cryptography and Network Security - 3 5/35 3.1.2 Feistel密码结构的设计动机 ⚫ 分组密码 ⚫ 大多数分组密码基于 Feistel Cipher Structure ⚫ 分组加密器本质上就是一个巨大的替换器 ⚫ 64位的分组就有 2 64种输入 ⚫ 采用了乘积加密器的思想,即轮流使用替代和置换 ⚫ Feistel密码结构的设计动机 ⚫ 分组密码对n比特的明文分组进行操作,产生一个n比特的密 文分组,共有2 n个不同的明文分组,每一种都必须产生一个 唯一的密文分组,这种变换称为可逆的或非奇异的。 可逆映射 不可逆映射 00 11 00 11 01 10 01 10 10 00 10 01 11 01 11 01
海秦黄家米 N=4时的一个普通代换密码的结构 1950 4-Bit Input 4 to 16 Decoder 0 1 2345678 9101112131415 0123456789101112131415 16 to 4 Encoder 4-Bit Output Figure 3.1 General n-bit-n-bit Block Substitution (shown with n=4) 2022/10/9 Cryptography and Network Security -3 6/35
2022/10/9 Cryptography and Network Security - 3 6/35 n = 4时的一个普通代换密码的结构
Table 3.1 Encryption and Decryption Tables for Substitution Cipher of Figure 3.4 加国海存8黑大 1050 Plaintext Ciphertext Ciphertext Plaintext 0000 1110 0000 1110 0001 0100 0001 0011 0010 1101 0010 0100 0011 0001 0011 1000 0100 0010 0100 0001 0101 1111 0101 1100 0110 1011 0110 1010 0111 1000 0111 1111 1000 0011 1000 0111 1001 1010 1001 1101 1010 0110 1010 1001 1011 1100 1011 0110 1100 0101 1100 1011 1101 1001 1101 0010 1110 0000 1110 0000 1111 0111 1111 0101 ¥四, 道道性 2022/10/9 Cryptography and Network Security -3 7/35
2022/10/9 Cryptography and Network Security - 3 7/35
Plaintext (2w bits) 3.1.3FE1sTEL密码结构 Round 1 w bits Ro 1973年,Horst Feistel提出了 基于可逆乘积加密器概念的 Feistel Cipher: Roundi 将输入分组分成左右两部分, 实施Shannon's的substitution- permutation network概念 对左半部数据实施多回合的替 Round n 代操作(substitution) ● 对右半部数据和子密钥应用轮 函数F,其输出与左一半做异或 将这两部分进行互换 (permutation swapping) Ciphertext (2w bits) 甲风=可 Figure 3.5 Classical Feistel Network 2022/10/9 Cryptography and Network Security-3 8/35
2022/10/9 Cryptography and Network Security - 3 8/35 3.1.3 Feistel密码结构 ⚫ 1973年,Horst Feistel提出了 基于可逆乘积加密器概念的 Feistel Cipher : ⚫ 将输入分组分成左右两部分, 实施Shannon’s 的substitution - permutation network 概念 ⚫ 对左半部数据实施多回合的替 代操作(substitution) ⚫ 对右半部数据和子密钥应用轮 函数 F,其输出与左一半做异或 ⚫ 将这两部分进行互换 (permutation swapping )
FEISTEL加密器设计原则 15 分组长度:分组越长则安全性越高,但加/解密速度越 低,分组长度为64位是一个合理的折衷 密钥长度:密钥越长越安全,但加/解密速度越低,64 位长的密钥已被证明是不安全的,128位是常用的长度 迭代次数:迭代越多越安全,通常为16次迭代 子密钥产生算法:越复杂则密码分析越困难 ● 轮循环函数:越复杂则抗密码分析的能力越强 快速的软件加密解密:算法的执行速度很重要 简化分析难度:算法简洁清楚,易于分析弱点,发现 问题 Feistel解密算法:以密文作为算法的输入,以相反的次 序使用密钥K,Kn、Kn-1、.、Ko 道道道 2022/10/9 Cryptography and Network Security-3 9/35
2022/10/9 Cryptography and Network Security - 3 9/35 ⚫ 分组长度:分组越长则安全性越高,但加/解密速度越 低,分组长度为64位是一个合理的折衷 ⚫ 密钥长度:密钥越长越安全,但加/解密速度越低,64 位长的密钥已被证明是不安全的,128位是常用的长度 ⚫ 迭代次数:迭代越多越安全,通常为16次迭代 ⚫ 子密钥产生算法:越复杂则密码分析越困难 ⚫ 轮循环函数:越复杂则抗密码分析的能力越强 ⚫ 快速的软件加密/解密:算法的执行速度很重要 ⚫ 简化分析难度:算法简洁清楚,易于分析弱点,发现 问题 ⚫ Feistel解密算法:以密文作为算法的输入,以相反的次 序使用密钥Ki,Kn、Kn-1、...、K0 . Feistel加密器设计原则
FEISTEL CIPHER ENCRYPTION AND DECRYPTION Output(plaintext) 1950 Input (plaintext) RD16=LEo LD16=REG LE REo LD16=REo RDI6=LE RE LE RDjs=LEl LDIs=RE RE LD14=RE:RD14=LE: K RE14 LD:=REI4 RD2=LE RDI=LE]sT LDI=REjs K15 E LDo=RE1s RDo=LE16 K16 RE16 LE16 Input (ciphertext) 2022/10/9 Output(ciphertext) 10/35 Figure 3.3 Feistel Eneryption and Decryption
2022/10/9 Cryptography and Network Security - 3 10/35 Feistel Cipher Encryption and Decryption
3.2数据加密标准DES 15 ·历史的回顾 IBM公司在1971年由Horst Feistels领导开发了 Lucifer Cipher,使用128位密钥加密64位的分组 Tuchman-Mayer2在此基础上开发了一个商用密码, 使用56位密钥加密64位分组,容易在单个芯片上 硬件实现 ● 1973美国国家标准局NBS全面征集加密方案,作 为国家密码标准 IBM提交了经过修改的Lucifer加密器,并最终在 1976年被接受,公布为数据加密标准DES ·DES加密 道置道9 2022/10/9 Cryptography and Network Security-3 11/35
2022/10/9 Cryptography and Network Security - 3 11/35 ⚫ 历史的回顾 ⚫ IBM公司在1971年由Horst Feistel领导开发了 Lucifer Cipher,使用128位密钥加密64位的分组 ⚫ Tuchman-Mayer在此基础上开发了一个商用密码, 使用56位密钥加密64位分组,容易在单个芯片上 硬件实现 ⚫ 1973美国国家标准局NBS全面征集加密方案,作 为国家密码标准 ⚫ IBM提交了经过修改的Lucifer加密器,并最终在 1976年被接受,公布为数据加密标准DES ⚫ DES加密 3.2 数据加密标准DES