《新编密码学》课件第2章 分组密码_第1页
《新编密码学》课件第2章 分组密码_第2页
《新编密码学》课件第2章 分组密码_第3页
《新编密码学》课件第2章 分组密码_第4页
《新编密码学》课件第2章 分组密码_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.1分组密码的设计准则分组密码也叫做块密码(BlockCipher),是指对固定长度的一组明文进行加密的一种加密算法,这一固定长度称之为分组长度。2/149分组密码是对称密码体制分组密码的作用消息加密消息认证和数据完整性保护通过用于构造消息认证码(MAC)来实现构造伪随机数生成器。用于产生性能良好的随机数构造流密码。构成其它密码协议的基本模块如密钥管理协议,身份认证协议等在分组密码中,必须处理一个问题——填充。在分组加密中,要求填充是可逆的假定块长度为8字节,要加密的明文数据长度为9字节。那么消息被切成两个块,第二块只有1个字节,需要填充7个字节。如果把9字节的明文数据记为:F1F2F3F4F5F6F7F8F9(1)Zeros填充算法:需要填充的7个字节全部填充为0,分组结果为:第一个消息分组:F1F2F3F4F5F6F7F8第二个消息分组:F900000000000000Zeros填充算法无法区分第二个消息分组中F9后的0序列是否是明文中的原始序列,因此该填充算法不可逆。(2)X923填充算法:需要填充的7个字节中前6个字节填充0,最后一个字节记录填充的总字节数,分组结果为:第一个消息分组:F1F2F3F4F5F6F7F8第二个消息分组:F900000000000007(3)PKCS7填充算法:需要填充的7个字节中的每一个字节填充需要填充的总字节数,分组结果为:第一个消息分组:F1F2F3F4F5F6F7F8第二个消息分组:F907070707070707

(4)ISO10126填充算法:需要填充的7个字节中前6个字节填充随机字节序列,最后一个字节记录填充的总字节数,分组结果为:第一个消息分组:F1F2F3F4F5F6F7F8第二个消息分组:F97D2A75EFF8EF072.1.1Feistel分组密码的基本结构

Feistel密码结构是基于1949年Shannon提出的交替使用代换和置换方式构造密码体制的设想提出的。在设计密码体制的过程中,Shannon提出了能够破坏对密码系统进行各种统计分析攻击的两个基本操作:扩散(diffusion)和混淆(confusion)。安全性设计原则

1.混淆原则

混淆性:所设计的密码应使得明文、密文、密钥之间的依赖关系相当复杂,以至于这种依赖关系对密码分析者来说是无法利用的。密码分析者利用这种依赖关系的方法非常多,因此混淆性也是一个极为繁杂的概念。2.扩散原则

扩散是指所设计的密码应使得(1)密钥的每一个比特影响密文的每一个比特,以防止对密钥进行逐段破译;(2)明文的每一个比特影响密文的每一个比特,以便最充分地隐蔽明文的统计特性。这一准则强调微小输入改变能够导致输出的多位变化。安全性设计原则明文(2L)密文(2L)R0(L)R1(L)Rn(L)L0(L)L1(L)Ln(L)ff++…K1KnLn-1(L)Rn-1(L)+f…Kn-1Feistel型的分组密码的安全性取决于以下几个方面:(1)明文消息和密文消息的分组大小(2)子密钥的大小(3)循环次数(4)子密钥产生算法(5)轮函数在其它条件相同的情况下,每一轮加密的分组长度越大,加密算法的安全性就越高,而相应的加密速度也越慢,效率越低。目前常用的分组加密算法的分组长度取64位。

算法的安全性随着子密钥长度的增加而提高,但是相应的加密速度会降低,所以设计分组密码时需要在安全性和加密效率之间进行平衡。在实际应用中,一般认为,要保证分组加密算法满足计算安全性,子密钥的长度至少要大于128位。循环越多安全性越高,相应的加密效率也就越低。在初始密钥给定的情况下,产生子密钥的算法越复杂,加密算法的安全性越高。对于轮函数的讨论相对较复杂,一般认为,轮函数越复杂,对应的加密算法的安全性越高。轮函数FS盒:非线性部件,规模较小,局部混淆非线性关系:实现混淆。规模:较小。例如:说8进8出。128比特需要分成16组,分别用16个S盒来处理。局部:多个S盒之间没有关联,混淆是在各个S盒之内进行,是局部的。置换P:线性部件,整体扩散2.1.2函数的设计准则

Feistel分组密码的核心是轮函数。设计的函数应该满足严格的雪崩准则SAC(StrictAvalancheCriterion)位独立准则BIG(BitIndependenceCriterion)保证的雪崩准则GAC(GuaranteedAvalancheCriterion)对于任意的

,当任何一个输入位

发生改变时,S-盒的任何输出位

的值发生改变的概率为

对于任意的

,当任何一个输入位

发生改变时,输出位

的值应该独立地发生改变。对于输入序列中1位的值发生改变,输出序列中至少有

位的值发生改变。一般要求

的值介于2到5之间。2.2数据加密标准----DES

DES是DataEncryptionStandard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。DES算法的历史过程20世纪70年代中期,美国政府认为需要一个强大的标准加密系统,美国国家标准局提出了开发这种加密算法的请求,最终IBM的Lucifer加密系统胜出。1972年美国商业部所属的美国国家标准局NBS(NationalBureauofStandards)开始实施计算机数据保护标准的开发计划。

1973年5月13日,美国国家标准局NBS发布文告征集在传输和存贮数据中保护计算机数据的密码算法。

1975年3月17日,首次公布DES算法描述,认真地进行公开讨论。

1977年1月15日,正式批准为无密级应用的加密标准(FIPS—46),当年7月1日正式生效。以后每隔5年美国国家安全局对其安全性进行一次评估,以便确定是否继续使用它作为加密标准。在1994年1月的评估后决定1998年12月以后不再将DES作为数据加密标准。DES是一个分组加密算法,它以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8位都用作奇偶校验),密钥可以是任意的56位的数,其中极少量的56位数被认为是弱密钥,为了保证加密的安全性,在加密过程中应该尽量避开使用这些弱密钥。2.2.1DES的描述

DES是一个包含16个阶段的“替换--置换”的分组加密算法,64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。尽管DES密钥的长度有64位,但用户只提供56位,其余的8位由算法提供,分别放在8、16、24、32、40、48、56、64位上,结果是每8位的密钥包含了用户提供的7位和DES算法确定的1位。添加的位是有选择的,使得每个8位的块都含有奇数个奇偶校验位(即1的个数为奇数)。DES加密流程64比特明文64比特密文迭代16轮

初始置换初始逆置换第16轮加密:::第1轮加密:第i轮加密K1(48比特)Ki(48比特)K16(48比特)明文(64bits)IP置换(64bits)L0(32bits)R0(32bits)L1=R0R1=L0f(R0,k1)fki+16轮同样运算…L16+R16=L15f(R15,ki)+IP-1置换(64bits)DES算法结构密文(64bits)DES加密过程中包含的基本操作:初始置换初始置换(InitialPermutation,简称置换)在第一轮运算之前执行。

IP置换表58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157(1)58表示:结果中位于第1个位置的值,等于原文中第58个位置的值(2)图中的一格代表1bit,共有64bit,即8字节DES:IP置换初始逆置换(InverseInitialPermutation)40818165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725初始置换和对应的逆初始置换操作并不会增强DES算法的安全性,它的主要目的是为了更容易地将明文和密文数据以字节大小放入DES芯片中。DES加密流程LiRiLi-1Ri-1FKiR16L16L15R15FK1664比特明文64比特密文迭代16轮

初始置换初始逆置换第16轮加密:::第一轮加密:第i轮加密Li-1Ri-1密钥

Li密钥RiE盒扩展S盒替代P盒置换移位移位压缩变换++一轮DES加密过程DES算法的第

i

(i=1,2,…,15)轮加密结构图缺点:扩散速度慢:轮变换的输入有一半没有改变;左右块的处理不能并行实施。优点:单轮变换的数学描述:

Li=Ri-1Ri=Li-1F(Ri-1,Ki)

设计容易:轮函数F不要求可逆。FKiLi-1(32位)Ri-1(32位)LiRiFeistel结构

扩展置换E轮密钥加S盒置换P轮函数FDES:f

的结构(即黑盒变换)R(32bit)EE(R)(48bit)K(48bit)B1

B2

B3

B4

B5

B6

B7

B8S1S2S3S4S5S6S7S8C1C2C3C4C5C6C7C8P+(48bit)(32bit)123456789101112131415161718192021222324252627282930313232123

454567898

91011121312131415161716171819202120212223242524252627282928293031321扩展置换E扩展置换E将64位输入序列的右半部分从32位扩展到48位。S-盒替换(S-boxesSubstitution)S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S-盒21518146113497213120510313471528141201106911501441110413158126932151381013154211671205149S-盒31009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S-盒47131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S-盒52124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S-盒61211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S-盒74112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S-盒81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S—盒的输出表示设对应S-盒1的输入序列为:101111行号:11即3列号:0111即70123

012345689101112131415结果为7即01117

迄今为止,有关方面未曾完全公开有关DES的S盒的设计准则。1976年,NSA披露过下述准则:1:S盒的输出都不是其输入的线性或仿射函数。2:改变S盒的一个输入比特,其输出至少有两比特产生变化,即近一半产生变化。3:当S盒的任一输入位保持不变,其它5位输入变化时(共有25=32种情况),输出数字中的0和1的总数近于相等。这三点使DES的S盒能够实现较好的混淆。S盒的设计准则置换PP盒置换是对32比特数据进行比特置换。置换P的输入/输出关系可以用表来表示,变换规则和前面介绍的初始置换相同作用:置换P与S盒互相配合,起到了扩散作用,共同确保DES的安全。置换P(续)(1)P盒的各输入组的4个比特都分配到不同的输出组之中;比如:输入第一组1,2,3,4比特在输出中分别位于第3,5,6,8组。P盒的设计特点(2)P盒的各输出组的4个比特都来自不同的输入组。比如:输出第一组的四个比特分别来自输入的第4组,第2组,第5组,第6组。轮子密钥的生成初始密钥(64比特)D0(28比特)循环移位循环移位密钥置换C0(28比特)压缩置换循环移位循环移位子密钥K1…………57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124

密钥置换轮数12345678910111213141516位数1122222212222221

循环左移位数

压缩置换1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932DES解密:加密和解密可使用相同的算法,即解密过程是将密文作为输入序列进行相应的DES加密,与加密过程惟一不同之处是解密过程使用的轮密钥与加密过程使用的次序相反。解密过程产生各轮子密钥的算法与加密过程生成轮密钥的算法相同,与加密过程不同的是解密过程产生子密钥时,初始密钥进行循环右移操作,每产生一个子密钥对应的初始密钥移动位数分别为0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。f1K0R1L=16K)bit密文(

64IP逆置换IP置换…明文(64bit)0R(32bit)0L1RÅ=),(0Rf1K15L16RÅ=),(15Rf16Kf…f的扩展变换0R循环左移压缩置换密钥置换fS—盒1Kp—盒0L1RÅ=),(0Rf1K0L(32bit)15R16L=实例演示

取明文M为M=0123456789ABCDEF0000000100100011010001010110011110001001101010111100110111101111写成二进制:1100110000000000110011001111111111110000101010101111000010101010初始置换:L0=11001100000000001100110011111111R0=11110000101010101111000010101010分为左右两部分:L1=R0=11110000101010101111000010101010第一轮迭代:R1=L0+f(R0,K1)f(R0,K1):E-盒、S-盒、P-盒E-盒:E(R0)=011110100001010101010101011110100001010101010101K1=000110110000001011101111111111000111000001110010K1+E(R0)=011000010001011110111010100001100110010100100111S-盒:S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8)=01011100100000101011010110010111P-盒:f=P(S1(B1)S2(B2)…S8(B8))=00100011010010101010100110111011R1=L0+f(R0,K1)=11001100000000001100110011111111+00100011010010101010100110111011=1110111101001010011001010100010016轮迭代之后:L16=01000011010000100011001000110100R16=00001010010011001101100110010101IP-1=1000010111101000000100110101010000001111000010101011010000000101初始逆置换:左右合一起:R16L16=000010100100110011011001100101010100001101000010001100100011010085E813540F0AB40516进制:明文M=0123456789ABCDEF密文C=85E813540F0AB405轮子密钥的生成:K=133457799BBCDFF1K=0001001100110100010101110111100110011011101111001101111111110001写成二进制:密钥置换:56位密钥:K+=11110000110011001010101011110101010101100110011110001111拆分为左右两部分:C0=1111000011001100101010101111D0=0101010101100110011110001111C0=1111000011001100101010101111D0=0101010101100110011110001111C1=1110000110011001010101011111D1=1010101011001100111100011110C2=1100001100110010101010111111D2=0101010110011001111000111101C3=0000110011001010101011111111D3=0101011001100111100011110101C4=0011001100101010101111111100D4=0101100110011110001111010101C5=1100110010101010111111110000D5=0110011001111000111101010101C6=0011001010101011111111000011D6=1001100111100011110101010101C7=1100101010101111111100001100D7=0110011110001111010101010110C8=0010101010111111110000110011D8=1001111000111101010101011001循环移位:C9=0101010101111111100001100110D9=0011110001111010101010110011C10=0101010111111110000110011001D10=1111000111101010101011001100C11=0101011111111000011001100101D11=1100011110101010101100110011C12=0101111111100001100110010101D12=0001111010101010110011001111C13=0111111110000110011001010101D13=0111101010101011001100111100C14=1111111000011001100101010101D14=1110101010101100110011110001C15=1111100001100110010101010111D15=1010101010110011001111000111C16=1111000011001100101010101111D16=0101010101100110011110001111循环移位:K1=000110110000001011101111111111000111000001110010压缩置换:K2=011110011010111011011001110110111100100111100101K3=010101011111110010001010010000101100111110011001K4=011100101010110111010110110110110011010100011101K5=011111001110110000000111111010110101001110101000K6=011000111010010100111110010100000111101100101111K7=111011001000010010110111111101100001100010111100K8=111101111000101000111010110000010011101111111011K9=111000001101101111101011111011011110011110000001K10=101100011111001101000111101110100100011001001111K11=001000010101111111010011110111101101001110000110K12=011101010111000111110101100101000110011111101001K13=100101111100010111010001111110101011101001000001K14=010111110100001110110111111100101110011100111010K15=101111111001000110001101001111010011111100001010K16=110010110011110110001011000011100001011111110101压缩置换:DES的分析

自从DES被采用作为联邦数据加密标准以来,DES遭到了猛烈的批评和怀疑。首先是DES的密钥长度是56位,很多人担心这样的密钥长度不足以抵御穷举式搜索攻击;其次是DES的内部结构即S-盒的设计标准是保密的,这样使用者无法确信DES的内部结构不存在任何潜在的弱点。DES的弱密钥和半弱密钥

如果DES的秘密产生的子密钥满足:则有:这样的密钥称为DES算法的弱密钥。DES的弱密钥有以下4种:如果DES的密钥和满足:则称密钥和是DES算法的一对半弱密钥。半弱密钥只交替的生成两种密钥。DES的半弱密钥有以下6对:针对DES的攻击方法对于DES的攻击,最有意义的方法是差分分析方法(DifferenceAnalysisMethod)。差分分析方法是一种选择明文攻击法,最初是由IBM的设计小组在1974年发现的,所以IBM在设计DES算法的S-盒和换位变换时有意识的避免差分分析攻击,对S-盒在设计阶段进行了优化,使得DES能够抵抗差分分析攻击。对DES攻击的另一种方式是线性分析方法(LinearAnalysisMethod)线性分析方法是一种已知明文攻击法,由MitsuruMatsui在1993年提出的。这种攻击需要大量的已知“明文----密文”对,但比差分分析方法的要少。当将DES用于诸如智能卡等硬件装置时,通过观察硬件的性能特征,可以发现一些加密操作的信息,这种攻击方法叫做旁路攻击法(Side-ChannelAttack)。例如,当处理密钥的“1”位时,要消耗更多的能量,通过监控能量的消耗,可以知道密钥的每个位;还有一种攻击是监控完成一个算法所耗时间的微秒数,所耗时间数也可以反映部分密钥的位。DES加密的轮数对安全性也有较大的影响。如果DES只进行8轮加密过程,则在普通的个人电脑上只需要几分钟就可以破译密码。如果DES加密过程进行16轮,应用差分分析攻击比穷尽搜索攻击稍微有效一些。然而如果DES加密过程进行18轮,则差分分析攻击和穷尽搜索攻击的效率基本一样。如果DES加密过程进行19轮,则穷尽搜索攻击的效率还要优于差分分析攻击的效率。DES算法的几种改进:在以上加密过程中,当明文序列的结构有一定的固定格式时,相应的密文序列也会表现出一定的规律性,从而导致加密算法不安全。对该问题可以采用分组反馈的方法进行改进。密钥DESKDESKDESK++x1x2xny1y2yn……密钥DESK-1DESK-1DESK-1++x1x2xny1y2yn……加密解密改进方法二:由于DES算法的密钥长度只有56位,安全性较差。最简单的改进算法安全性的方法是应用不同的密钥对同一个分组消息进行多次加密,由此产生了多重DES加密算法。2.2.3多重DES

相应的解密过程为:对双重DES加密方法的安全性分析1992年人们证明了由二个不同的密钥组成的二重DES对应的映射不会出现在单重DES定义的映射中,这意味着二重DES不会等价于单重DES。这说明双重DES加密算法的密钥空间要大于DES算法,所以其安全性优于DES算法。双重DES加密算法不能抵抗中间点匹配攻击法(Meet-in-the-MiddleAttack)。加密解密内存明文密钥1密文密钥2用Ki加密的结果用Kj解密匹配查找图2-12三重DES加密流程解密过程首先使用第一个密钥进行DES解密,然后使用第二个密钥对第一次的结果进行DES加密,最后再使用第一个密钥对第二次的结果进行DES解密。图2-13三重DES解密流程以上这种加密模式称为“加密-解密-加密(EDE)模式”。DES算法的密钥长度是56位,所以三重DES算法的密钥长度是112位。使用两个密钥的三重DES是一种较受欢迎的改进算法,目前三重DES已经被用于密钥管理标准ANSX9.17和ISO8732中。2.3高级数据加密标准----AES

1997年7月,借助于互联网上的14000多台计算机,花费了90天时间破解了DES密钥。6个月后,用这种方法破解DES所花费的时间减少了39天。1998年7月,一台特殊构造的计算机(名为DeepCrack)只用了56个小时就破解了一个DES密钥。显然,DES不再是一个可靠的加密系统。为此,美国国家标准局提出了一项取代DES的投标计划,这就是高级加密标准AES(AdvancedEncryptionStandard)。对于DES算法的改进工作从1997年开始公开进行。1997年4月15日,美国国家标准技术研究所(NIST)发起了征集DES的替代算法AES(AdvancedEncryptionStandard)算法的活动,希望能够找到一种非保密的、可以公开和免费使用的新的分组密码算法,使其成为21世纪秘密和公开部门的数据加密标准。1997年9月12日,发布了征集算法的正式公告和具体细节,其要求如下:(1)应是对称分组加密,具有可变长度的的密钥(128、192或256位),具有128位的分组长度;(2)应比三重DES快、至少与三重DES一样安全;(3)应可应用于公共领域并能够在全世界范围内免费使用;(4)应至少在30年内是安全的。1998年8月20日,NIST在“第一次AES候选大会”上公布了满足条件的来自10个不同国家的15个AES的候选算法。在确定最终算法之前,这些算法先经受了一个很长的公开分析过程。在第二次会议之后,NIST从这15个候选算法中选出了5个AES的候选算法,分别是:IBM提交的MARS;RSA实验室提交的RC6;Daemen和Rijmen提交的Rijndael;Anderson、Biham和Knudsen提交的Serpent;Schneier、Whiting、Wagner、Hall和Ferguson提交的Twofish。这五个候选的算法都经受了6个月的考验,又经过6个月的测试后,到2000年10月2日,NIST正式宣布Rijndael胜出,被选择为高级数据加密标准,该算法是由两位比利时人Daemen和Rijmen提出的。Rijndael能够胜出,除了在软件实现时速度和子密钥生成时间上的优势外,另一部分原因是它能用硬件有效的实现。加密速度和硬件实现的特性也是评估加密算法优劣的重要因素。AES的描述

AES也是一个典型的迭代型分组密码,分组长度:128比特,密钥长度:128位、192位、256位,分别记为AES-128、AES-192、

AES-256。加密轮数依赖于所选择的子密钥长度。对于128位的密钥长度,加密的轮数为10;对于192位的密钥长度,加密的轮数为12;对于256位的密钥长度,加密的轮数为14。Rijndael实际上有三个版本:AES-128、AES-192、AES-256。Rijndael不像DES那样在每个循环上使用“替换和置换”操作,而是进行多重循环的“替换、列混合密钥加”操作。明文M

第1轮加密第i轮加密第10轮加密密文CAES加密流程字节代替行移位列混合密钥加字节代替行移位密钥加状态矩阵将128比特状态数据依次分为16个字节数据单元:比特,字节和字高级加密标准(AES)

数学基础字节的运算加法乘法字的运算加法乘法AES数学基础f(x)为系数在GF(2)上任意次数的多项式m(x)为系数在GF(2)上的8次不可约多项式其中m(x)=x8

x4

x3

x

1AES中的字节运算定义在如下构造的GF(28)中字的表示字节b7b6b5b4b3b2b1b0↔

b7x7

b6x6

b5x5

b4x4

b3x3

b2x2

b1x

b0bi

GF(2)字a3a2a1a0↔a3x3

a2x2

a1x

a0=a(x)

ai

GF(28)例:D3640F00+E32381AB=?(16进制表示)

11010011001000110000111100000000←D3640F00+11100011011001001000000110101011←E32381AB=00110000010001111000111010101011←30478EAB字的乘法乘法:两个字对应字多项式的乘积,规定该乘法必须要取模多项式x41多项式形式AES算法加密过程中用到的相关操作AES中的操作都是以字节为对象的,操作所用到的变量是由一定数量的字节构成。输入的明文消息长度是128位,将其表示为16个字节,初始化消息矩阵State如下:函数ByteSubs(State)对消息矩阵State中的每个元素(每个元素对应每一个字节)进行一个非线性替换,任一个非零元素(即由不可约的8次多项式生成的伽罗瓦域)被下面的变换所代替:其中:b0b7AESS-盒算法设x=00001001转换为16进制09行列查询S盒AES算法的“S-盒”

16BB54B00F2D99416842E6BF0D89A18CFDF2855CEE9871E9B948ED9691198F8E1E9E1DC186B95735610EF6034866B53E70D8A8BBD481F74DDE8C6B4A61C2E2578BAC08AE7A65EAF4566CA94ED58D6D37C8E7B79E4959162ACD3C25C2406490A3A32E0ADB0B5EDE14B8EE4688902A22DC4F8160973195D643D7EA7C41744975FEC130CCD8D2F3FF1021DAB6BCF5389D928F40A3517A89F3C507F02F94585334D43FBAAEFD06CF584C4A39BECB6A5BB1FC20ED00D1535842FE329B3D63B52A05A6E1B1A2C8309475B227EBE28012079A059618C323C70431531D871F1E5A534CCF73F362693FDB72C072A49CAFA2D4ADF04759FA7DC982CA176ABD7FE2B670130C56F6BF27B777C630FEDCBA9876543210y返回AESS-盒算法设x=00001001转换为16进制09所以y=01。这个对应关系如果按书中公式(2-1)计算可得出同样结果。行列查询S盒函数ShiftRows(State)在消息矩阵State的每行上进行操作S00S01S02S03不移位S10S11S12S13左移一位S20S21S22S23左移两位S30S31S32S33左移三位函数MixColumns(State)对State的每一列进行操作。首先取当前的消息矩阵State中的一列,定义为:把这一列表示成一个三次多项式:其中的系数是字节,所以多项式定义在上。矩阵形式函数AddRoundkey(State,Roundkey)将Roundkey和State中的元素逐字节、逐位地进行异或运算。其中Roundkey使用一个固定的密钥编排方案产生,每一轮的Roundkey是不同的。AES一轮操作示例假设第i轮消息表示成十六进制:426f62206c6f6f6b

20617420

74686973写成消息矩阵形式为:42

6c

20

746f

6f

61

68626f74

6920

6b

20

73在“S-盒”中查找出与每个输入元素对应的元素,从而生成如下的输出矩阵:2c50b792a8a8ef45aaa892f9b77fb78f42

6c

20

746f

6f

61

68626f74

6920

6b

20

73S盒替代接下来的一个阶段是旋转各行:2c50b792a8ef45a892f9aaa88fb77fb72c50b792

a8a8ef45

aaa892f9

b77fb78f行移位接下来的一个阶段进行乘法操作。对于第一列进行如下的转换:根据以上运算过程,可以计算出消息矩阵与固定矩阵相乘的结果矩阵为:a619664b45d1be919cd0d0074b462374接下来要用到子密钥,将上式和子密钥

01a39012e1442011cc7304a9590630b4进行异或运算,得到a7baf359a4959e8050a0d4a6124013c0将得到的第一轮输出与初始输入进行比较,转换成二进制,可以发现在全部的128位中有76位发生了改变,而这仅仅是一轮。经过循环迭代加密过程的运算,将得到最终的加密消息。2.3.2AES的密钥生成

(1)初始化函数:w0w1w2w3w4w5w6w7……

w40w41w42w43

K0K1K11图2-15AES的子密钥生成过程w(i+1)w(i+2)w(i+3)w(i+4)w(i+5)w(i+6)w(i+7)S-盒RotWordRCon[i/4]++++w(i)+与DES算法相同的是,AES算法的解密也是加密的逆过程,由于AES算法的内部函数都是可逆的,所以解密过程仅仅是将密文作为初始输入,按照轮子密钥相反的方向对输入的密文再进行加密的过程,该过程加密的最终结果就可以恢复出相应的明文。AES算法加密动画演示2.3.3AES的分析

在AES算法中,每一轮加密常数的不同可以消除可能产生的轮密钥的对称性,同时,轮密钥生成算法的非线性特性消除了产生相同轮密钥的可能性。加/解密过程中使用不同的变换可以避免出现类似DES算法中出现的弱密钥和半弱密钥的可能。经过验证,目前采用的AES加/解密算法能够有效抵御已知的针对DES的所有攻击方法。如部分差分攻击、相关密钥攻击等。到目前为止,公开报道中对于AES算法所能采取的最有效的攻击方法只能是穷尽密钥搜索攻击,所以AES算法是安全的。尽管如此,已经出现了一些攻击方法能够破解轮数较少的AES。这些攻击法是差分分析法和现行分析法的变体。不可能差分(ImpossibleDifferential)攻击法已经成功破解了6轮的AES-128,平方(Square)攻击法已成功破解了7轮的AES-128和AES-192,冲突(Collision)攻击法也已成功破解了7轮的AES-128和AES-192。所有这些攻击方法对于全部10轮的AES-128都失败了,但这表明AES可能存在有待发现的弱点。2.4IDEA算法

IDEA(InternationalDataEncryptionAlgorithm:国际数据加密标准)是由瑞士联邦技术学院的中国学者来学嘉博士和著名密码学家JamesMassey于1990年提出的一种对称分组密码,后经修改于1992年最后完成。这是近年来提出的各种分组密码中一个很成功的方案,目前它的主要用途是作为内置于PGP(PrettyGoodPrivacy)中的一种加密算法。IDEA的优点是解密和加密相同,只是密钥各异,加/解密速度都非常快,能够方便的用软件和硬件实现。IDEA算法的强度主要是由有效的混淆和扩散特性保证的,算法中的扩散是由乘加结构(MA盒)的基本单元实现的。图2-16MA盒基本结构+⊙+⊙输入输入子密钥子密钥输出输出该结构的输入是两个16位的子段和两个16位的子密钥,输出也是两个16比特的子段。这一结构在算法中重复使用了8次,获得了非常有效的扩散效果。这使得IDEA可以抵抗差分分析法和线性分析法的攻击。IDEA加密流程·+·+·+·+++·+·+++++…………Z1(9)Z1(1)Z2(1)Z3(1)Z4(1)Z2(9)Z3(9)Z4(9)X1X2X3X4Y1Y2Y3Y4Z5(1)Z6(1)·++异或运算模216+1乘模216加IDEA加密算法中每一轮需要6个子密钥,最后输出过程需要4个子密钥,所以进行加密所需的子密钥共52个。对于子密钥的产生,给定加密算法的一个128位的初始密钥,将其分成8个子密钥,每一个子密钥的长度都是16位;将初始密钥分组产生的这8个子密钥作为第一轮加密所需的6个子密钥和第二轮加密的前两个子密钥

表2-10 IDEA算法加密子密钥和相应的解密子密钥轮数加密子密钥解密子密钥12345678输出变换2.6分组密码的安全性及工作模式

2.6.1分组密码的安全性

随着密码分析技术的发展,安全性成为分组密码设计必须考虑的重要因素。前面在介绍分组密码体制DES、AES和IDEA时,对其安全性已经作了初步的分析。目前,对于分组密码的分析技术主要有以下几种:穷尽搜索攻击;差分密码分析攻击;线性密码分析攻击;相关的密钥密码分析攻击。在以上4种攻击方法中,线性密码分析攻击和差分密码分析攻击是两个被人们所熟的分组密码分析方法。线性密码分析是对迭代密码的一种已知明文攻击,最早由MitsuruMatsui在1993年提出,这种攻击方法使用线性近似值来描述分组密码。鉴于分组密码的非线性结构是加密安全的主要源泉,线性分析方法试图发现这些结构中的一些弱点,其实现途径是通过查找非线性的线性近似来实现。差分密码分析是对迭代密码的一种选择明文攻击,由EliBiham和AdiShamir于1990年提出,可以攻击很多分组密码。这种攻击方法通过对那些明文有特殊差值关系的密文对进行比较分析来攻击相应的分组密码算法。2.6.2分组密码的工作模式分组密码的“工作模式”是指以某个分组密码算法为基础,解决对任意长度的明文的加密问题的方法。分组密码的明文分组长度是固定的,而实际应用中待加密消息的数据量是不定的,数据格式可能是多种多样的。为了能在各种应用场合使用DES,1980年12月,美国在FIPS74和81中定义了DES算法的4种工作模式,这些工作模式也适用于任何的分组密码算法。

4种常用的工作模式为:电码本模式(Electronic-CodebookMode,ECB模式)密码反馈模式(Cipher-FeedbackMode,CFB模式)密码分组链接模式(Cipher-Block-Chaining,CBC模式)输出反馈模式(Output-FeedbackMode,OFB模式)除了上面的4种工作模式外,一种比较新的工作模式为:计数器模式(CounterMode,CTR模式)CTR模式已被采纳为NIST标准之一。ECB模式

(ElectricCodeBook)DES加密第1次P1C1KDES加密第2次P2C2KDES加密第N次PNCNKDES解密PNCNK…DES解密P2C2KDES解密P1C1K…

典型应用:(1)用于随机数的加密保护;(2)用于单分组明文的加密。优点:(1)实现简单;(2)不同明文分组的加密可并行实施,尤其是硬件实现时速度很快.缺点:不同的明文分组之间的加密独立进行,故保

留了单表代替缺点,造成相同明文分组对应相同密文分组,因而不能隐蔽明文分组的统计规律和结构规律,不能抵抗替换攻击.ECB模式的优、缺点和应用CBC模式

(CipherBlockChaining)DES加密+第1次第2次第N次P1KIVC1DES加密+P2KC2DES加密+PN-1KCN-1+PN-1CN-1DES解密KCN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论