《应用密码学第11讲--IDEA算法课件.ppt》由会员分享,可在线阅读,更多相关《应用密码学第11讲--IDEA算法课件.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、IDEA分组密码算法分组密码算法IDEAIDEAIDEAIDEA分组密码算法概述分组密码算法概述分组密码算法概述分组密码算法概述 Xuejia Lai Xuejia Lai和和和和James MasseyJames Massey于于于于19901990年年提提出出了了年年提提出出了了PES PES(Proposed Encryption StandardProposed Encryption Standard,推推荐荐加加密密标标准准)分分,推推荐荐加加密密标标准准)分分组组密密码码算算法法。为为了了抗抗击击差差分分密密码码分分析析,设设计计者者于于组组密密码码算算法法。为为了了抗抗击击差差分
2、分密密码码分分析析,设设计计者者于于19911991年年 对对年年 对对P E SP E S作作 了了 改改 进进,并并 将将 改改 进进 后后 的的 算算 法法 称称 为为作作 了了 改改 进进,并并 将将 改改 进进 后后 的的 算算 法法 称称 为为IPESIPES(Improved Proposed Encryption StandardImproved Proposed Encryption Standard,改改,改改进进 型型 推推 荐荐 加加 密密 标标 准准)。进进 型型 推推 荐荐 加加 密密 标标 准准)。IPESIPES于于于于 19921992年年 改改 名名 为为年
3、年 改改 名名 为为IDEAIDEA(International Data Encryption AlgorithmInternational Data Encryption Algorithm,国国,国国际际数数际际数数 据加密标准)。据加密标准)。据加密标准)。据加密标准)。算法的描述算法的描述分组长度:分组长度:分组长度:分组长度:6464比特比特比特比特密钥长度:密钥长度:密钥长度:密钥长度:128128比特比特比特比特迭代圈数:迭代圈数:迭代圈数:迭代圈数:8 8圈(每圈圈(每圈圈(每圈圈(每圈6 6个子密钥),附加一个输出变换(个子密钥),附加一个输出变换(个子密钥),附加一个输出
4、变换(个子密钥),附加一个输出变换(4 4 个子密钥)。个子密钥)。个子密钥)。个子密钥)。子密钥长度:子密钥长度:子密钥长度:子密钥长度:1616比特。比特。比特。比特。5252个子密钥由个子密钥由个子密钥由个子密钥由128128比特初始密钥通过比特初始密钥通过比特初始密钥通过比特初始密钥通过 密钥生成算法生成。密钥生成算法生成。密钥生成算法生成。密钥生成算法生成。使用的三种基本运算:使用的三种基本运算:使用的三种基本运算:使用的三种基本运算:按位模按位模按位模按位模2 2加;模加;模加;模加;模2 21616加法,模加法,模加法,模加法,模2 21616+1+1乘法。乘法。乘法。乘法。整个
5、运算过程全部在整个运算过程全部在整个运算过程全部在整个运算过程全部在1616位子分组上进行,因此该算法对位子分组上进行,因此该算法对位子分组上进行,因此该算法对位子分组上进行,因此该算法对1616位处理器尤其有效。位处理器尤其有效。位处理器尤其有效。位处理器尤其有效。将将将将待待待待加加加加密密密密的的的的6464比比比比特特特特明明明明文文文文数数数数据据据据X X分分分分成成成成4 4个个个个1616位位位位子子子子块块块块 ,作作作作为为为为算算算算法法法法第第第第一一一一圈圈圈圈的的的的输输输输入入入入,每每每每圈圈圈圈有有有有6 6个个个个1616比比比比特特特特圈圈圈圈子子子子密密
6、密密钥钥钥钥参参参参与与与与变变变变换换换换,经经经经过过过过8 8圈圈圈圈迭迭迭迭代代代代后后后后得得得得4 4个个个个1616比比比比特特特特子子子子块块块块,再再再再通通通通过过过过一一一一个个个个输输输输出出出出变变变变换换换换得得得得算算算算法法法法的的的的输输输输出出出出 ,级连起来即为密文,级连起来即为密文,级连起来即为密文,级连起来即为密文Y Y。(一)加密算法(一)加密算法(一)加密算法(一)加密算法64bit64bit明文明文明文明文X X循环循环循环循环2 2输出变换输出变换输出变换输出变换循环循环循环循环8 8循环循环循环循环1 164bit64bit密文密文密文密文Y
7、 Y子密钥生成算法子密钥生成算法子密钥生成算法子密钥生成算法128bit128bit密钥密钥密钥密钥Z Z IDEA IDEA加密总加密总加密总加密总体方案流程图体方案流程图体方案流程图体方案流程图IDEA第一圈的细节Fz5,z6(二)子密钥生成算法(二)子密钥生成算法 首先将首先将首先将首先将128128比特初始密钥从左到右分成比特初始密钥从左到右分成比特初始密钥从左到右分成比特初始密钥从左到右分成8 8个个个个1616比特子块,并将所得的比特子块,并将所得的比特子块,并将所得的比特子块,并将所得的 8 8 个子块直接作为加密算个子块直接作为加密算个子块直接作为加密算个子块直接作为加密算法中
8、最前面的法中最前面的法中最前面的法中最前面的8 8个子密钥,然后将上述个子密钥,然后将上述个子密钥,然后将上述个子密钥,然后将上述128128比特密比特密比特密比特密钥循环左移钥循环左移钥循环左移钥循环左移2525位,将其从左到右分成位,将其从左到右分成位,将其从左到右分成位,将其从左到右分成8 8个个个个1616比特子比特子比特子比特子块,得到随后的块,得到随后的块,得到随后的块,得到随后的8 8个子密钥,重复这个过程,直到个子密钥,重复这个过程,直到个子密钥,重复这个过程,直到个子密钥,重复这个过程,直到产生产生产生产生5252个个个个1616比特子密钥为止。比特子密钥为止。比特子密钥为止
9、。比特子密钥为止。(三)脱密算法(三)脱密算法(三)脱密算法(三)脱密算法这里这里这里这里z z-1-1表示表示表示表示z z的模的模的模的模2 21616+1+1乘法逆,乘法逆,乘法逆,乘法逆,-z-z表示表示表示表示 z z的模的模的模的模2 21616加法逆。加法逆。加法逆。加法逆。脱密密钥脱密密钥脱密密钥脱密密钥 与加密密钥与加密密钥与加密密钥与加密密钥 的对应关系为:的对应关系为:的对应关系为:的对应关系为:脱密算法与加密算法是相同的,只是在脱脱密算法与加密算法是相同的,只是在脱脱密算法与加密算法是相同的,只是在脱脱密算法与加密算法是相同的,只是在脱密过程中使用脱密密钥。密过程中使用
10、脱密密钥。密过程中使用脱密密钥。密过程中使用脱密密钥。64bit64bit明文明文明文明文X X子加密过程子加密过程子加密过程子加密过程输出变换输出变换输出变换输出变换循环循环循环循环8 8变变变变 换换换换64bit64bit密文密文密文密文Y Y循环循环循环循环1 1循环循环循环循环1 1子加密过程子加密过程子加密过程子加密过程变变变变 换换换换循环循环循环循环8 8输出变换输出变换输出变换输出变换(四)(四)IDEAIDEA加、脱密变换的相似性加、脱密变换的相似性 图示的变换是图示的变换是图示的变换是图示的变换是IDEAIDEA的圈变换中的一部分,称为共处的圈变换中的一部分,称为共处的圈
11、变换中的一部分,称为共处的圈变换中的一部分,称为共处理变换。理变换。理变换。理变换。设该变换的输入为:设该变换的输入为:设该变换的输入为:设该变换的输入为:输出为:输出为:输出为:输出为:要证明要证明要证明要证明IDEAIDEA加、脱密算法的相似性,只需证明共处加、脱密算法的相似性,只需证明共处加、脱密算法的相似性,只需证明共处加、脱密算法的相似性,只需证明共处理变换的理变换的理变换的理变换的4 4个输入子块经过两次共处理变换后的输出个输入子块经过两次共处理变换后的输出个输入子块经过两次共处理变换后的输出个输入子块经过两次共处理变换后的输出仍然是它本身即可。仍然是它本身即可。仍然是它本身即可。
12、仍然是它本身即可。若记乘加结构输出的左若记乘加结构输出的左若记乘加结构输出的左若记乘加结构输出的左1616比特为比特为比特为比特为LMALMA,右,右,右,右1616比特比特比特比特为为为为RMARMA,则有下面,则有下面,则有下面,则有下面4 4个式子:个式子:个式子:个式子:二、二、IDEA算法的设计原理算法的设计原理 IDEA IDEA是一种使用是一种使用是一种使用是一种使用128128比特密钥以比特密钥以比特密钥以比特密钥以6464比特分组为比特分组为比特分组为比特分组为单位加密数据的分组密码,其设计目标可以归结单位加密数据的分组密码,其设计目标可以归结单位加密数据的分组密码,其设计目
13、标可以归结单位加密数据的分组密码,其设计目标可以归结为两方面:一方面与密码强度有关,另一方面与为两方面:一方面与密码强度有关,另一方面与为两方面:一方面与密码强度有关,另一方面与为两方面:一方面与密码强度有关,另一方面与使用的方便性有关。使用的方便性有关。使用的方便性有关。使用的方便性有关。(一)密码强度(一)密码强度IDEAIDEA的下列特性与其密码强度有关:的下列特性与其密码强度有关:的下列特性与其密码强度有关:的下列特性与其密码强度有关:分分分分组组组组长长长长度度度度:分分分分组组组组长长长长度度度度应应应应足足足足够够够够大大大大,以以以以抵抵抵抵抗抗抗抗统统统统计计计计分分分分析析
14、析析。使使使使用用用用6464比比比比特特特特的的的的分分分分组组组组大大大大小小小小通通通通常常常常认认认认为为为为已已已已经经经经足足足足够够够够强强强强,另另另另外外外外使使使使用用用用密密密密码码码码反反反反馈馈馈馈操操操操作作作作方方方方式式式式可可可可以以以以进进进进一一一一步步步步加加加加强强强强算算算算法法法法这这这这方方方方面面面面的强度。的强度。的强度。的强度。密密密密钥钥钥钥长长长长度度度度:密密密密钥钥钥钥长长长长度度度度应应应应足足足足够够够够长长长长,以以以以抵抵抵抵抗抗抗抗密密密密钥钥钥钥穷穷穷穷尽尽尽尽攻攻攻攻击击击击,通通通通过过过过使使使使用用用用12812
15、8比比比比特特特特的的的的长长长长度度度度,在在在在将将将将来来来来的的的的很很很很长长长长时时时时间间间间里里里里IDEAIDEA似乎在这方面都是安全的。似乎在这方面都是安全的。似乎在这方面都是安全的。似乎在这方面都是安全的。关于混乱:关于混乱:关于混乱:关于混乱:密文应以一种复杂的方式依赖于明文和密钥,密文应以一种复杂的方式依赖于明文和密钥,密文应以一种复杂的方式依赖于明文和密钥,密文应以一种复杂的方式依赖于明文和密钥,这样做的目的是使确定密文的统计特性和明文的统这样做的目的是使确定密文的统计特性和明文的统这样做的目的是使确定密文的统计特性和明文的统这样做的目的是使确定密文的统计特性和明文
16、的统计特性的依赖关系非常复杂。计特性的依赖关系非常复杂。计特性的依赖关系非常复杂。计特性的依赖关系非常复杂。IDEAIDEA通过使用三种不通过使用三种不通过使用三种不通过使用三种不同的操作达到该目的,而同的操作达到该目的,而同的操作达到该目的,而同的操作达到该目的,而DESDES主要靠异或运算及小主要靠异或运算及小主要靠异或运算及小主要靠异或运算及小的非线性的非线性的非线性的非线性S S盒代替来实现。盒代替来实现。盒代替来实现。盒代替来实现。关于扩散:关于扩散:关于扩散:关于扩散:每个明文比特都应该影响每个密文比特,并且,每个明文比特都应该影响每个密文比特,并且,每个明文比特都应该影响每个密文
17、比特,并且,每个明文比特都应该影响每个密文比特,并且,每个密钥比特都应该影响每个密文比特。单个明文每个密钥比特都应该影响每个密文比特。单个明文每个密钥比特都应该影响每个密文比特。单个明文每个密钥比特都应该影响每个密文比特。单个明文比特应扩散到许多密文比特才能隐藏明文的统计特比特应扩散到许多密文比特才能隐藏明文的统计特比特应扩散到许多密文比特才能隐藏明文的统计特比特应扩散到许多密文比特才能隐藏明文的统计特性。性。性。性。在在在在IDEAIDEA中,扩散是由乘加结构(中,扩散是由乘加结构(中,扩散是由乘加结构(中,扩散是由乘加结构(MAMA)实现的。)实现的。)实现的。)实现的。MAMA的输入有两
18、部分,一部分是由明文导出的两个的输入有两部分,一部分是由明文导出的两个的输入有两部分,一部分是由明文导出的两个的输入有两部分,一部分是由明文导出的两个1616比特数值,另一部分是两个比特数值,另一部分是两个比特数值,另一部分是两个比特数值,另一部分是两个1616比特子密钥。计算机比特子密钥。计算机比特子密钥。计算机比特子密钥。计算机进行的彻底检查证明,第一圈输出的每一比特依赖进行的彻底检查证明,第一圈输出的每一比特依赖进行的彻底检查证明,第一圈输出的每一比特依赖进行的彻底检查证明,第一圈输出的每一比特依赖于输入(明文部分和密钥部分)的每一比特。经于输入(明文部分和密钥部分)的每一比特。经于输入
19、(明文部分和密钥部分)的每一比特。经于输入(明文部分和密钥部分)的每一比特。经8 8圈圈圈圈循环之后,可提供非常有效的扩散。循环之后,可提供非常有效的扩散。循环之后,可提供非常有效的扩散。循环之后,可提供非常有效的扩散。(二)实现方面的考虑(二)实现方面的考虑(二)实现方面的考虑(二)实现方面的考虑 IDEAIDEA的的的的设设设设计计计计考考考考虑虑虑虑到到到到了了了了方方方方便便便便硬硬硬硬件件件件和和和和软软软软件件件件实实实实现现现现。通通通通常常常常由由由由超超超超大大大大规规规规模模模模集集集集成成成成电电电电路路路路进进进进行行行行的的的的硬硬硬硬件件件件实实实实现现现现的的的的
20、设设设设计计计计目目目目标标标标是取得高速度,而软件实现则有灵活和低价的优点。是取得高速度,而软件实现则有灵活和低价的优点。是取得高速度,而软件实现则有灵活和低价的优点。是取得高速度,而软件实现则有灵活和低价的优点。使用子分组使用子分组使用子分组使用子分组:密码操作应该在对于软件来说很自:密码操作应该在对于软件来说很自:密码操作应该在对于软件来说很自:密码操作应该在对于软件来说很自然的子分组上进行,具有这种特性的子分组包括然的子分组上进行,具有这种特性的子分组包括然的子分组上进行,具有这种特性的子分组包括然的子分组上进行,具有这种特性的子分组包括8 8,1616或或或或3232比特,比特,比特
21、,比特,IDEAIDEA使用使用使用使用1616比特子分组。比特子分组。比特子分组。比特子分组。使用简单操作使用简单操作使用简单操作使用简单操作:密码操作应该容易使用加法、移:密码操作应该容易使用加法、移:密码操作应该容易使用加法、移:密码操作应该容易使用加法、移位等基本操作编程实现。位等基本操作编程实现。位等基本操作编程实现。位等基本操作编程实现。IDEAIDEA的三种操作符合该的三种操作符合该的三种操作符合该的三种操作符合该要求,其中最困难的模乘法也可以容易地用简单要求,其中最困难的模乘法也可以容易地用简单要求,其中最困难的模乘法也可以容易地用简单要求,其中最困难的模乘法也可以容易地用简单
22、的基本操作构成。的基本操作构成。的基本操作构成。的基本操作构成。1 1、便于软件实现的原则:、便于软件实现的原则:、便于软件实现的原则:、便于软件实现的原则:则则则则其中其中其中其中加密和解密过程类似加密和解密过程类似加密和解密过程类似加密和解密过程类似:加密和解密应该只在使用:加密和解密应该只在使用:加密和解密应该只在使用:加密和解密应该只在使用密钥的方式上有所不同,以便于同一个设备既可密钥的方式上有所不同,以便于同一个设备既可密钥的方式上有所不同,以便于同一个设备既可密钥的方式上有所不同,以便于同一个设备既可用于加密又可用于解密。和用于加密又可用于解密。和用于加密又可用于解密。和用于加密又
23、可用于解密。和DESDES一样,一样,一样,一样,IDEAIDEA具具具具有满足该要求的结构。有满足该要求的结构。有满足该要求的结构。有满足该要求的结构。规则的结构规则的结构规则的结构规则的结构:为便于:为便于:为便于:为便于VLSIVLSI(very large scale very large scale integrationintegration,超大规模集成)实现,密码应该具,超大规模集成)实现,密码应该具,超大规模集成)实现,密码应该具,超大规模集成)实现,密码应该具有一种模块化结构。有一种模块化结构。有一种模块化结构。有一种模块化结构。IDEAIDEA是由重复使用两种基是由重复使用两种基是由重复使用两种基是由重复使用两种基本的模块化(变换子块和加密子块)构件而构成本的模块化(变换子块和加密子块)构件而构成本的模块化(变换子块和加密子块)构件而构成本的模块化(变换子块和加密子块)构件而构成的。的。的。的。2 2、便于硬件实现的设计原则:、便于硬件实现的设计原则:、便于硬件实现的设计原则:、便于硬件实现的设计原则:下节内容下节内容分组密码小结分组密码小结分组密码小结分组密码小结
限制150内