《分组密码体制》PPT课件.ppt
《《分组密码体制》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《分组密码体制》PPT课件.ppt(197页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第第3章章 分组密码体制分组密码体制3.1 分组密码概述分组密码概述3.2 数据加密标准数据加密标准3.3 差分密码分析与线性密码分析差分密码分析与线性密码分析3.4 分组密码的运行模式分组密码的运行模式3.5 IDEA3.6 AES算法算法Rijndael习题习题在许多密码系统中,单钥分组密码是系统安全的一个在许多密码系统中,单钥分组密码是系统安全的一个重要组成部分,用分组密码易于构造伪随机数生成器、重要组成部分,用分组密码易于构造伪随机数生成器、流密码、消息认证码(流密码、消息认证码(MAC)和杂凑函数等,还可和杂凑函数等,还可进而成为消息认证技术、数据完整性机制、实体认证进而成为消息认证
2、技术、数据完整性机制、实体认证协议以及单钥数字签字体制的核心组成部分。实际应协议以及单钥数字签字体制的核心组成部分。实际应用中对于分组密码可能提出多方面的要求,除了安全用中对于分组密码可能提出多方面的要求,除了安全性外,还有运行速度、存储量(程序的长度、数据分性外,还有运行速度、存储量(程序的长度、数据分组长度、高速缓存大小)、实现平台(硬件、软件、组长度、高速缓存大小)、实现平台(硬件、软件、芯片)、运行模式等限制条件。这些都需要与安全性芯片)、运行模式等限制条件。这些都需要与安全性要求之间进行适当的折中选择。要求之间进行适当的折中选择。3.1分组密码概述分组密码概述分组密码是将明文消息编码
3、表示后的数字序列分组密码是将明文消息编码表示后的数字序列x0,x1,xi,划分成长为划分成长为n的组的组x=(x0,x1,xn-1),各组各组(长为(长为n的矢量)分别在密钥的矢量)分别在密钥k=(k0,k1,kt-1)控制下控制下变换成等长的输出数字序列变换成等长的输出数字序列y=(y0,y1,ym-1)(长为长为m的矢量),其加密函数的矢量),其加密函数E:VnKVm,Vn和和Vm分别分别是是n维和维和m维矢量空间,维矢量空间,K为密钥空间,如图为密钥空间,如图3.1所示。所示。它与流密码不同之处在于输出的每一位数字不是只与它与流密码不同之处在于输出的每一位数字不是只与相应时刻输入的明文数
4、字有关,而是与一组长为相应时刻输入的明文数字有关,而是与一组长为n的的明文数字有关。在相同密钥下,分组密码对长为明文数字有关。在相同密钥下,分组密码对长为n的的输入明文组所实施的变换是等同的,所以只需研究对输入明文组所实施的变换是等同的,所以只需研究对任一组明文数字的变换规则。这种密码实质上是字长任一组明文数字的变换规则。这种密码实质上是字长为为n的数字序列的代换密码。的数字序列的代换密码。图图3.1 分组密码框图分组密码框图通常取通常取m=n。若若mn,则为有数据扩展的分组密码;则为有数据扩展的分组密码;若若mn,则为有数据压缩的分组密码。在二元情况下,则为有数据压缩的分组密码。在二元情况下
5、,x和和y均为二元数字序列,它们的每个分量均为二元数字序列,它们的每个分量xi,yiGF(2)。本节将主要讨论二元情况。设计的算法本节将主要讨论二元情况。设计的算法应满足下述要求:应满足下述要求:分组长度分组长度n要足够大,使分组代换字母表中的元素要足够大,使分组代换字母表中的元素个数个数2n足够大,防止明文穷举攻击法奏效。足够大,防止明文穷举攻击法奏效。DES、IDEA、FEAL和和LOKI等分组密码都采用等分组密码都采用n=64,在生在生日攻击下用日攻击下用232组密文成功概率为组密文成功概率为1/2,同时要求,同时要求23264b=215MB存贮,故采用穷举攻击是不现实的。存贮,故采用穷
6、举攻击是不现实的。密钥量要足够大(即置换子集中的元素足够多),密钥量要足够大(即置换子集中的元素足够多),尽可能消除弱密钥并使所有密钥同等地好,以防止密尽可能消除弱密钥并使所有密钥同等地好,以防止密钥穷举攻击奏效。但密钥又不能过长,以便于密钥的钥穷举攻击奏效。但密钥又不能过长,以便于密钥的管理。管理。DES采用采用56比特密钥,看来太短了,比特密钥,看来太短了,IDEA采采用用128比特密钥,据估计,在今后比特密钥,据估计,在今后3040年内采用年内采用80 比特密钥是足够安全的。比特密钥是足够安全的。由密钥确定置换的算法要足够复杂,充分实现明由密钥确定置换的算法要足够复杂,充分实现明文与密钥
7、的扩散和混淆,没有简单的关系可循,能抗文与密钥的扩散和混淆,没有简单的关系可循,能抗击各种已知的攻击,如差分攻击和线性攻击;有高的击各种已知的攻击,如差分攻击和线性攻击;有高的非线性阶数,实现复杂的密码变换;使对手破译时除非线性阶数,实现复杂的密码变换;使对手破译时除了用穷举法外,无其它捷径可循。了用穷举法外,无其它捷径可循。加密和解密运算简单,易于软件和硬件高速实现。加密和解密运算简单,易于软件和硬件高速实现。如将分组如将分组n化分为子段,每段长为化分为子段,每段长为8、16或者或者32。在以。在以软件实现时,应选用简单的运算,使作用于子段上的软件实现时,应选用简单的运算,使作用于子段上的密
8、码运算易于以标准处理器的基本运算,如加、乘、密码运算易于以标准处理器的基本运算,如加、乘、移位等实现,避免用以软件难于实现的逐比特置换。移位等实现,避免用以软件难于实现的逐比特置换。为了便于硬件实现,加密和解密过程之间的差别应仅为了便于硬件实现,加密和解密过程之间的差别应仅在于由秘密密钥所生成的密钥表不同而已。这样,加在于由秘密密钥所生成的密钥表不同而已。这样,加密和解密就可用同一器件实现。设计的算法采用规则密和解密就可用同一器件实现。设计的算法采用规则的模块结构,如多轮迭代等,以便于软件和的模块结构,如多轮迭代等,以便于软件和VLSI快快速实现。此外,差错传播和数据扩展要尽可能地小。速实现。
9、此外,差错传播和数据扩展要尽可能地小。数据扩展。一般无数据扩展,在采用同态置换和数据扩展。一般无数据扩展,在采用同态置换和随机化加密技术时可引入数据扩展。随机化加密技术时可引入数据扩展。差错传播尽可能地小。差错传播尽可能地小。要实现上述几点要求并不容易。首先,要在理论上研要实现上述几点要求并不容易。首先,要在理论上研究有效而可靠的设计方法,而后进行严格的安全性检究有效而可靠的设计方法,而后进行严格的安全性检验,并且要易于实现。验,并且要易于实现。下面介绍设计分组密码时的一些常用方法。下面介绍设计分组密码时的一些常用方法。如果明文和密文的分组长都为如果明文和密文的分组长都为n比特,则明文的每一比
10、特,则明文的每一个分组都有个分组都有2n个可能的取值。为使加密运算可逆(使个可能的取值。为使加密运算可逆(使解密运算可行),明文的每一个分组都应产生惟一的解密运算可行),明文的每一个分组都应产生惟一的一个密文分组,这样的变换是可逆的,称明文分组到一个密文分组,这样的变换是可逆的,称明文分组到密文分组的可逆变换为代换。不同可逆变换的个数有密文分组的可逆变换为代换。不同可逆变换的个数有2n!个。个。3.1.1 代换代换图图3.2表示表示n=4的代换密码的一般结构,的代换密码的一般结构,4比特输入产比特输入产生生16个可能输入状态中的一个,由代换结构将这一状个可能输入状态中的一个,由代换结构将这一状
11、态映射为态映射为16个可能输出状态中的一个,每一输出状态个可能输出状态中的一个,每一输出状态由由4个密文比特表示。加密映射和解密映射可由代换个密文比特表示。加密映射和解密映射可由代换表来定义,如表表来定义,如表3.1所示。这种定义法是分组密码最所示。这种定义法是分组密码最常用的形式,能用于定义明文和密文之间的任何可逆常用的形式,能用于定义明文和密文之间的任何可逆映射。(见映射。(见33页表页表3.1)图图3.2 代换结构代换结构但这种代换结构在实用中还有一些问题需考虑。如果但这种代换结构在实用中还有一些问题需考虑。如果分组长度太小,如分组长度太小,如n=4,系统则等价于古典的代换密系统则等价于
12、古典的代换密码,容易通过对明文的统计分析而被攻破。这个弱点码,容易通过对明文的统计分析而被攻破。这个弱点不是代换结构固有的,只是因为分组长度太小。如果不是代换结构固有的,只是因为分组长度太小。如果分组长度分组长度n足够大,而且从明文到密文可有任意可逆足够大,而且从明文到密文可有任意可逆的代换,那么明文的统计特性将被隐藏而使以上的攻的代换,那么明文的统计特性将被隐藏而使以上的攻击不能奏效。击不能奏效。然而,从实现的角度来看,分组长度很大的可逆代换然而,从实现的角度来看,分组长度很大的可逆代换结构是不实际的。仍以表结构是不实际的。仍以表3.1为例,该表定义了为例,该表定义了n=4时时从明文到密文的
13、一个可逆映射,其中第从明文到密文的一个可逆映射,其中第2列是每个明列是每个明文分组对应的密文分组的值,可用来定义这个可逆映文分组对应的密文分组的值,可用来定义这个可逆映射。因此从本质上来说,第射。因此从本质上来说,第2列是从所有可能映射中列是从所有可能映射中决定某一特定映射的密钥。这个例子中,密钥需要决定某一特定映射的密钥。这个例子中,密钥需要64比特。一般地,对比特。一般地,对n比特的代换结构,密钥的大小是比特的代换结构,密钥的大小是n2n比特。如对比特。如对64比特的分组,密钥大小应是比特的分组,密钥大小应是64264=2701021比特,因此难以处理。比特,因此难以处理。实际中常将实际中
14、常将n分成较小的段,例如可选分成较小的段,例如可选n=rn0,其中其中r和和n0都是正整数,将设计都是正整数,将设计n个变量的代换变为设计个变量的代换变为设计r个个较小的子代换,而每个子代换只有较小的子代换,而每个子代换只有n0个输入变量。一个输入变量。一般般n0都不太大,称每个子代换为代换盒,简称为都不太大,称每个子代换为代换盒,简称为S盒。盒。例如例如DES中将输入为中将输入为48比特、输出为比特、输出为32比特的代换用比特的代换用8个个S盒来实现,每个盒来实现,每个S盒的输入端数仅为盒的输入端数仅为6比特,输比特,输出端数仅为出端数仅为4比特。比特。扩散和混淆是由扩散和混淆是由Shann
15、on提出的设计密码系统的两个提出的设计密码系统的两个基本方法,目的是抗击敌手对密码系统的统计分析。基本方法,目的是抗击敌手对密码系统的统计分析。如果敌手知道明文的某些统计特性,如消息中不同字如果敌手知道明文的某些统计特性,如消息中不同字母出现的频率、可能出现的特定单词或短语,而且这母出现的频率、可能出现的特定单词或短语,而且这些统计特性以某种方式在密文中反映出来,那么敌手些统计特性以某种方式在密文中反映出来,那么敌手就有可能得出加密密钥或其一部分,或者得出包含加就有可能得出加密密钥或其一部分,或者得出包含加密密钥的一个可能的密钥集合。在密密钥的一个可能的密钥集合。在Shannon称之为理称之为
16、理想密码的密码系统中,密文的所有统计特性都与所使想密码的密码系统中,密文的所有统计特性都与所使用的密钥独立。图用的密钥独立。图3.2讨论的代换密码就是这样的一讨论的代换密码就是这样的一个密码系统,然而它是不实用的。个密码系统,然而它是不实用的。3.1.2 扩散和混淆扩散和混淆所谓扩散所谓扩散,就是将明文的统计特性散布到密文中去,就是将明文的统计特性散布到密文中去,实现方式是使得明文的每一位影响密文中多位的值,实现方式是使得明文的每一位影响密文中多位的值,等价于说密文中每一位均受明文中多位影响。例如对等价于说密文中每一位均受明文中多位影响。例如对英文消息英文消息M=m1m2m3的加密操作的加密操
17、作其中其中ord(mi)是求字母是求字母mi对应的序号,对应的序号,chr(i)是求序号是求序号i对应的字母。这时明文的统计特性将被散布到密文中,对应的字母。这时明文的统计特性将被散布到密文中,因而每一字母在密文中出现的频率比在明文中出现的因而每一字母在密文中出现的频率比在明文中出现的频率更接近于相等,双字母及多字母出现的频率也更频率更接近于相等,双字母及多字母出现的频率也更接近于相等。在二元分组密码中,可对数据重复执行接近于相等。在二元分组密码中,可对数据重复执行某个置换,再对这一置换作用于一函数,可获得扩散。某个置换,再对这一置换作用于一函数,可获得扩散。分组密码在将明文分组依靠密钥变换到
18、密文分组时,分组密码在将明文分组依靠密钥变换到密文分组时,扩散的目的是使明文和密文之间的统计关系变得尽可扩散的目的是使明文和密文之间的统计关系变得尽可能复杂,以使敌手无法得到密钥;能复杂,以使敌手无法得到密钥;混淆是混淆是使密文和密使密文和密钥之间的统计关系变得尽可能复杂,以使敌手无法得钥之间的统计关系变得尽可能复杂,以使敌手无法得到密钥。因此即使敌手能得到密文的一些统计关系,到密钥。因此即使敌手能得到密文的一些统计关系,由于密钥和密文之间的统计关系复杂化,敌手也无法由于密钥和密文之间的统计关系复杂化,敌手也无法得到密钥。使用复杂的代换算法可以得到预期的混淆得到密钥。使用复杂的代换算法可以得到
19、预期的混淆效果,而简单的线性代换函数得到的混淆效果则不够效果,而简单的线性代换函数得到的混淆效果则不够理想。理想。扩散和混淆成功地实现了分组密码的本质属性,因而扩散和混淆成功地实现了分组密码的本质属性,因而成为设计现代分组密码的基础。成为设计现代分组密码的基础。很多分组密码的结构从本质上说都是基于一个称为很多分组密码的结构从本质上说都是基于一个称为Feistel网络的结构。网络的结构。Feistel提出利用乘积密码可获得提出利用乘积密码可获得简单的代换密码,乘积密码指顺序地执行两个或多个简单的代换密码,乘积密码指顺序地执行两个或多个基本密码系统,使得最后结果的密码强度高于每个基基本密码系统,使
20、得最后结果的密码强度高于每个基本密码系统产生的结果,本密码系统产生的结果,Feistel还提出了实现代换和还提出了实现代换和置换的方法。其思想实际上是置换的方法。其思想实际上是Shannon提出的利用乘提出的利用乘积密码实现混淆和扩散思想的具体应用。积密码实现混淆和扩散思想的具体应用。3.1.3 Feistel密码结构密码结构1.Feistel加密结构加密结构图图3.3是是Feistel网络示意图,加密算法的输入是分组长网络示意图,加密算法的输入是分组长为为2w的明文和一个密钥的明文和一个密钥K。将每组明文分成左右两半将每组明文分成左右两半L0和和R0,在进行完在进行完n轮迭代后,左右两半再合
21、并到一轮迭代后,左右两半再合并到一起以产生密文分组。其第起以产生密文分组。其第i轮迭代的输入为前一轮输轮迭代的输入为前一轮输出的函数:出的函数:其中其中Ki是第是第i轮用的子密钥,由加密密钥轮用的子密钥,由加密密钥K得到。一般得到。一般地,各轮子密钥彼此不同而且与地,各轮子密钥彼此不同而且与K也不同。也不同。图图3.3 Feistel网络示意图网络示意图Feistel网络中每轮结构都相同,每轮中右半数据被作网络中每轮结构都相同,每轮中右半数据被作用于轮函数用于轮函数F后,再与左半数据进行异或运算,这一后,再与左半数据进行异或运算,这一过程就是上面介绍的代换。每轮的轮函数的结构都相过程就是上面介
22、绍的代换。每轮的轮函数的结构都相同,但以不同的子密钥同,但以不同的子密钥Ki作为参数。代换过程完成后,作为参数。代换过程完成后,再交换左、右两半数据,这一过程称为置换。这种结再交换左、右两半数据,这一过程称为置换。这种结构是构是Shannon提出的代换提出的代换置换网络置换网络(substitution-permutation network,SPN)的特有形的特有形式。式。Feistel网络的实现与以下参数和特性有关:网络的实现与以下参数和特性有关:分组大小分组越大则安全性越高,但加密速度就分组大小分组越大则安全性越高,但加密速度就越慢。分组密码设计中最为普遍使用的分组大小是越慢。分组密码设
23、计中最为普遍使用的分组大小是64比特。比特。密钥大小密钥越长则安全性越高,但加密速度就密钥大小密钥越长则安全性越高,但加密速度就越慢。现在普遍认为越慢。现在普遍认为64比特或更短的密钥长度是不安比特或更短的密钥长度是不安全的,通常使用全的,通常使用128比特的密钥长度。比特的密钥长度。轮数单轮结构远不足以保证安全性,但多轮结构轮数单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。典型地,轮数取为可提供足够的安全性。典型地,轮数取为16。子密钥产生算法该算法的复杂性越大,则密码分子密钥产生算法该算法的复杂性越大,则密码分析的困难性就越大。析的困难性就越大。轮函数轮函数的复杂性越大,密码分
24、析的困难性轮函数轮函数的复杂性越大,密码分析的困难性也越大。也越大。在设计在设计Feistel网络时,还有以下两个方面需要考虑:网络时,还有以下两个方面需要考虑:快速的软件实现在很多情况中,算法是被镶嵌在快速的软件实现在很多情况中,算法是被镶嵌在应用程序中,因而无法用硬件实现。此时算法的执行应用程序中,因而无法用硬件实现。此时算法的执行速度是考虑的关键。速度是考虑的关键。算法容易分析如果算法能被无疑义地解释清楚,算法容易分析如果算法能被无疑义地解释清楚,就可容易地分析算法抵抗攻击的能力,有助于设计高就可容易地分析算法抵抗攻击的能力,有助于设计高强度的算法。强度的算法。2.Feistel解密结构
25、解密结构Feistel解密过程本质上和加密过程是一样的,算法使解密过程本质上和加密过程是一样的,算法使用密文作为输入,但使用子密钥用密文作为输入,但使用子密钥Ki的次序与加密过程的次序与加密过程相反,即第相反,即第1轮使用轮使用Kn,第第2轮使用轮使用Kn-1,最后最后一轮使用一轮使用K1。这一特性保证了解密和加密可采用同这一特性保证了解密和加密可采用同一算法。一算法。图图3.4的左边表示的左边表示16轮轮Feistel网络的加密过程,右边表网络的加密过程,右边表示解密过程,加密过程由上而下,解密过程由下而上。示解密过程,加密过程由上而下,解密过程由下而上。为清楚起见,加密算法每轮的左右两半用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分组密码体制 分组 密码 体制 PPT 课件
限制150内