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