第05-08讲 分组密码 现代密码学 教学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章 分组密码体制
3.1 分组密码概述 3.2 数据加密标准 3.3 差分密码分析与线性密码分析 3.4 分组密码的运行模式 3.5 IDEA 3.6 AES算法——Rijndael
分组密码的特点
• 与流密码的不同 – 密文每一位值 不是只与相应时刻输入的一位 明文值有关,而是与一组长为n的明文值 有 关
• 在Shannon称之为理想密码的密码系统中,密 文的所有统计特性都与所使用的密钥独立
3.1.2 扩散和混淆
• 扩散:将明文的统计特性散布到密文中去
– 实现方式是使得明文的每一位影响密文中多位的值, 等价于说密文中每一位均受明文中多位影响。
– 例如对英文消息M=m1m2m3…的加密操作
ynchrk ordmnimod26
分组密码的设计要求-2
• 密钥空间设计—防止密钥穷举攻击 – 密钥量要足够大 – 尽可能消除弱密钥 – 使所有密钥同等地好 – 密钥又不能过长,以便于密钥的管理
分组密码的设计要求-3
• 由密钥确定置换的算法要足够复杂 – 充分实现明文与密钥的扩散和混淆 – 能抗击各种已知的攻击,如差分攻击和线性 攻击 – 有高的非线性阶数,实现复杂的密码变换 – 使对手破译时除了用穷举法外,无其它捷径 可循。
分组密码的设计要求-4
• 加密和解密运算简单,易于软硬件高速实现 – 分组长度n的取值 是8的倍数
– 便于软件实现:选用简单的运算,使作用于 子段上的密码运算易于以标准处理器的基本 运算,如加、乘、移位等实现,避免用以软 件难于实现的逐比特置换。
– 便于硬件实现:加密和解密过程之间的差别 应仅在于由秘密密钥所生成的密钥表不同而 已。设计的算法采用规则的模块结构,如多 轮迭代等,以便于软件和VLSI快速实现
• 在相同密钥下,分组密码对长为n的输入明文组 所实施的变换是等同的,所以只需研究对任一 组明文数字的变换规则。
• 实质上是字长为n的数字序列的代换密码
分组密码的分类
• Biblioteka Baidum>n,称为数据扩展的分组密码 • 若m<n,则为有数据压缩的分组密码 • 通常取m=n
分组密码的设计要求-2
• 分组长度n足够大—防止明文穷举攻击法 – 使分组代换字母表中的元素个数2n足够大 – DES、IDEA、FEAL和LOKI等分组密码都 采用n=64,在生日攻击下用232组密文成功概 率为1/2,同时要求232×64b=215MB存贮,故 采用穷举攻击是不现实的。
• Feistel网络是很多分组密码的本质结构 • Feistel提出利用乘积密码可获得简单代换密码
– 顺序地执行两个或多个基本密码系统,最后结果的 密码强度高于每个基本密码系统产生的结果
• Feistel还提出了实现代换和置换的方法。其思 想实际上是Shannon提出的利用乘积密码实现 扩散和混淆思想的具体应用。
i1
– 这时明文的统计特性将被散布到密文中,每一字母 在密文中出现的频率比在明文中出现的频率更接近 相等,双字母及多字母出现的频率也更接近相等。
• 扩散的目的是使明文和密文之间的统计关系变 得尽可能复杂,以使敌手无法得到密钥
3.1.2 扩散和混淆
• 混淆是使密文和密钥之间的统计关系变得尽可 能复杂,以使敌手无法得到密钥。
分组密码的设计要求-5
• 数据扩展尽可能小 – 一般无数据扩展,在采用同态置换和随机化 加密技术时可引入数据扩展
• 差错传播尽可能地小
3.1.1 代换
• 明文分组到密文分组的可逆变换为代换 – 如果明文和密文的分组长都为n比特,则明 文的每一个分组都有2n个可能的取值 – 为使加密运算可逆,明文的每一个分组都应 产生惟一的一个密文分组, – 不同可逆变换的个数有2n!个。
3.1.1 代换
实现代换的困难性
• 代换的加密和解密可以由代换表来定义,代换表 就是密钥
• 当分组长度n太小时,代换等价于古典代换密码 • 当分组长度n太大时,密钥管理不方便 • 实际中常将n分成较小的段,例如可选n=r×n0,
将设计n个变量的代换变为设计r个较小的子代换, 而每个子代换只有n0个输入变量。一般n0都不太 大,称每个子代换为代换盒,简称为S盒
3.轮数:单轮结构远不足以保证安全性,但多轮结 构可提供足够的安全性(一般取16轮)
4.子密钥产生算法:该算法的复杂性越大,则密码 分析的困难性就越大
5.轮函数:轮函数的复杂性越大,密码分析的困难 性也越大
3.1.3 Feistel密码结构
3.1.2 扩散和混淆
• 统计分析
– 敌手知道明文的某些统计特性,如消息中不同字母 出现的频率、可能出现的特定单词或短语,这些统 计特性以某种方式在密文中反映出来,那么敌手就 有可能得出加密密钥或其一部分,或者得出包含加 密密钥的一个可能的密钥集合
• 扩散和混淆是由Shannon提出的设计密码系统 的两个基本方法,目的是抗击敌手对密码系统 的统计分析
Feistel网络示意图
3.1.3 Feistel密码结构
• Feistel网络中每轮结构都相同,每轮中右半数 据被作用于轮函数F后,再与左半数据进行异或 运算,这一过程就是上面介绍的代换,起到扩 散的作用
• 每轮的轮函数的结构都相同,但以不同的子密 钥Ki作为参数。代换过程完成后,再交换左、 右两半数据,这一过程称为置换,起到混淆的 作用
• 这种结构是Shannon提出的代换—置换网络 (Substitution-Permutation Network, SPN)的 特有形式。
3.1.3 Feistel密码结构
Feistel网络的实现与以下参数和特性有关:
1.分组大小:分组越大则安全性越高,但加密速度 就越慢(一般取64bit)
2.密钥大小:密钥越长则安全性越高,但加密速度 就越慢(一般取128bit)
– 即使敌手能得到密文的一些统计关系,由于密钥和 密文之间的统计关系复杂化,敌手也无法得到密钥
– 使用复杂的代换算法可以得到预期的混淆效果,而 简单的线性代换函数得到的混淆效果则不够理想。
• 扩散和混淆成功地实现了分组密码的本质属性, 因而成为设计现代分组密码的基础
3.1.3 Feistel密码结构
3.1 分组密码概述 3.2 数据加密标准 3.3 差分密码分析与线性密码分析 3.4 分组密码的运行模式 3.5 IDEA 3.6 AES算法——Rijndael
分组密码的特点
• 与流密码的不同 – 密文每一位值 不是只与相应时刻输入的一位 明文值有关,而是与一组长为n的明文值 有 关
• 在Shannon称之为理想密码的密码系统中,密 文的所有统计特性都与所使用的密钥独立
3.1.2 扩散和混淆
• 扩散:将明文的统计特性散布到密文中去
– 实现方式是使得明文的每一位影响密文中多位的值, 等价于说密文中每一位均受明文中多位影响。
– 例如对英文消息M=m1m2m3…的加密操作
ynchrk ordmnimod26
分组密码的设计要求-2
• 密钥空间设计—防止密钥穷举攻击 – 密钥量要足够大 – 尽可能消除弱密钥 – 使所有密钥同等地好 – 密钥又不能过长,以便于密钥的管理
分组密码的设计要求-3
• 由密钥确定置换的算法要足够复杂 – 充分实现明文与密钥的扩散和混淆 – 能抗击各种已知的攻击,如差分攻击和线性 攻击 – 有高的非线性阶数,实现复杂的密码变换 – 使对手破译时除了用穷举法外,无其它捷径 可循。
分组密码的设计要求-4
• 加密和解密运算简单,易于软硬件高速实现 – 分组长度n的取值 是8的倍数
– 便于软件实现:选用简单的运算,使作用于 子段上的密码运算易于以标准处理器的基本 运算,如加、乘、移位等实现,避免用以软 件难于实现的逐比特置换。
– 便于硬件实现:加密和解密过程之间的差别 应仅在于由秘密密钥所生成的密钥表不同而 已。设计的算法采用规则的模块结构,如多 轮迭代等,以便于软件和VLSI快速实现
• 在相同密钥下,分组密码对长为n的输入明文组 所实施的变换是等同的,所以只需研究对任一 组明文数字的变换规则。
• 实质上是字长为n的数字序列的代换密码
分组密码的分类
• Biblioteka Baidum>n,称为数据扩展的分组密码 • 若m<n,则为有数据压缩的分组密码 • 通常取m=n
分组密码的设计要求-2
• 分组长度n足够大—防止明文穷举攻击法 – 使分组代换字母表中的元素个数2n足够大 – DES、IDEA、FEAL和LOKI等分组密码都 采用n=64,在生日攻击下用232组密文成功概 率为1/2,同时要求232×64b=215MB存贮,故 采用穷举攻击是不现实的。
• Feistel网络是很多分组密码的本质结构 • Feistel提出利用乘积密码可获得简单代换密码
– 顺序地执行两个或多个基本密码系统,最后结果的 密码强度高于每个基本密码系统产生的结果
• Feistel还提出了实现代换和置换的方法。其思 想实际上是Shannon提出的利用乘积密码实现 扩散和混淆思想的具体应用。
i1
– 这时明文的统计特性将被散布到密文中,每一字母 在密文中出现的频率比在明文中出现的频率更接近 相等,双字母及多字母出现的频率也更接近相等。
• 扩散的目的是使明文和密文之间的统计关系变 得尽可能复杂,以使敌手无法得到密钥
3.1.2 扩散和混淆
• 混淆是使密文和密钥之间的统计关系变得尽可 能复杂,以使敌手无法得到密钥。
分组密码的设计要求-5
• 数据扩展尽可能小 – 一般无数据扩展,在采用同态置换和随机化 加密技术时可引入数据扩展
• 差错传播尽可能地小
3.1.1 代换
• 明文分组到密文分组的可逆变换为代换 – 如果明文和密文的分组长都为n比特,则明 文的每一个分组都有2n个可能的取值 – 为使加密运算可逆,明文的每一个分组都应 产生惟一的一个密文分组, – 不同可逆变换的个数有2n!个。
3.1.1 代换
实现代换的困难性
• 代换的加密和解密可以由代换表来定义,代换表 就是密钥
• 当分组长度n太小时,代换等价于古典代换密码 • 当分组长度n太大时,密钥管理不方便 • 实际中常将n分成较小的段,例如可选n=r×n0,
将设计n个变量的代换变为设计r个较小的子代换, 而每个子代换只有n0个输入变量。一般n0都不太 大,称每个子代换为代换盒,简称为S盒
3.轮数:单轮结构远不足以保证安全性,但多轮结 构可提供足够的安全性(一般取16轮)
4.子密钥产生算法:该算法的复杂性越大,则密码 分析的困难性就越大
5.轮函数:轮函数的复杂性越大,密码分析的困难 性也越大
3.1.3 Feistel密码结构
3.1.2 扩散和混淆
• 统计分析
– 敌手知道明文的某些统计特性,如消息中不同字母 出现的频率、可能出现的特定单词或短语,这些统 计特性以某种方式在密文中反映出来,那么敌手就 有可能得出加密密钥或其一部分,或者得出包含加 密密钥的一个可能的密钥集合
• 扩散和混淆是由Shannon提出的设计密码系统 的两个基本方法,目的是抗击敌手对密码系统 的统计分析
Feistel网络示意图
3.1.3 Feistel密码结构
• Feistel网络中每轮结构都相同,每轮中右半数 据被作用于轮函数F后,再与左半数据进行异或 运算,这一过程就是上面介绍的代换,起到扩 散的作用
• 每轮的轮函数的结构都相同,但以不同的子密 钥Ki作为参数。代换过程完成后,再交换左、 右两半数据,这一过程称为置换,起到混淆的 作用
• 这种结构是Shannon提出的代换—置换网络 (Substitution-Permutation Network, SPN)的 特有形式。
3.1.3 Feistel密码结构
Feistel网络的实现与以下参数和特性有关:
1.分组大小:分组越大则安全性越高,但加密速度 就越慢(一般取64bit)
2.密钥大小:密钥越长则安全性越高,但加密速度 就越慢(一般取128bit)
– 即使敌手能得到密文的一些统计关系,由于密钥和 密文之间的统计关系复杂化,敌手也无法得到密钥
– 使用复杂的代换算法可以得到预期的混淆效果,而 简单的线性代换函数得到的混淆效果则不够理想。
• 扩散和混淆成功地实现了分组密码的本质属性, 因而成为设计现代分组密码的基础
3.1.3 Feistel密码结构