您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 2.分组密码(6) (2)
密码学基础第二章分组密码密码学基础2.1分组密码的设计准则•分组密码也叫做块密码(BlockCipher),是指对固定长度的一组明文进行加密的一种加密算法,这一固定长度称之为分组长度。密码学基础2.1.1Feistel分组密码的基本结构Feistel密码结构是基于1949年Shannon提出的交替使用代换和置换方式构造密码体制的设想提出的。–在设计密码体制的过程中,Shannon提出了能够破坏对密码系统进行各种统计分析攻击的两个基本操作:扩散(diffusion)和混淆(confusion)。密码学基础Diffusion&Confusion•Diffusion:所设计的密码应使得–密钥的每1bit影响密文的每1bit,以防止对密钥进行逐段破译。–明文的每1bit影响密文的每1bit,以便更充分地隐蔽明文。并尽可能做到每比特的贡献一样。即明文和密钥中任一比特值的改变,都会在某种程度上影响到密文的变化,以防止统计分析攻击。•Confusion:–明文、密文、密钥之间的依赖关系相当复杂,以至于这种依赖关系对密码分析者来说是无法利用。密码学基础扩散的举例说明•无扩散技术的加密p1:00000000c1:00000010p2:00000001c2:00000011(只改变对应的位)•有扩散技术的加密p1:00000000c1:01011010p2:00000001c2:11101011密码学基础明文(2L)密文(2L)R0(L)R1(L)Rn(L)L0(L)L1(L)Ln(L)ff++…K1KnLn-1(L)Rn-1(L)+f…Kn-1密码学基础•Feistel型的分组密码的安全性取决于以下几个方面:•(1)明文消息和密文消息的分组大小•(2)子密钥的大小•(3)循环次数•(4)子密钥产生算法•(5)轮函数在其它条件相同的情况下,每一轮加密的分组长度越大,加密算法的安全性就越高,而相应的加密速度也越慢,效率越低。目前常用的分组加密算法的分组长度取64位。算法的安全性随着子密钥长度的增加而提高,但是相应的加密速度会降低,所以设计分组密码时需要在安全性和加密效率之间进行平衡。在实际应用中,一般认为,要保证分组加密算法满足计算安全性,子密钥的长度至少要大于128位。循环越多安全性越高,相应的加密效率也就越低。在初始密钥给定的情况下,产生子密钥的算法越复杂,加密算法的安全性越高。对于轮函数的讨论相对较复杂,一般认为,轮函数越复杂,对应的加密算法的安全性越高。密码学基础Feistel网络定义:变换f称为对合变换(或称为自反变换),如果其反变换还是f。(对任何x满足f(f(x))=x)我们看到:Feistel网络的第(1)步是对合变换Feistel网络的第(2)步也是对合变换Feistel网络本身不是对合变换。(1)计算:F(Li-1,Ri-1)=(Li-1f(Ri-1,ki),Ri-1)=(Li’,Ri’)(2)计算密文:c=T(Li’,Ri’)=(Ri’,Li’)=(Li,Ri)。密码学基础解密Feistel分组密码的解密过程与加密过程是相同的。解密过程将密文作为算法的输入,同时按照与加密过程相反的次序使用子密钥对密文序列进行加密,即第1轮使用nK,第2轮使用1nK,依此类推,最后一轮使用1K,进行相同次数加密,“加密”的结果就得到相应的明文序列。密码学基础2.1.2填充•为什么需要填充?•在分组密码中,必须处理一个问题——填充。–在分组加密中,要求填充是可逆的密码学基础•假定块长度为8字节,要加密的明文数据长度为9字节。那么消息被切成两个块,第二块只有1个字节,需要填充7个字节。如果把9字节的明文数据记为:•F1F2F3F4F5F6F7F8F9密码学基础•(1)Zeros填充算法:需要填充的7个字节全部填充为0,分组结果为:•第一个消息分组:•F1F2F3F4F5F6F7F8•第二个消息分组:•F900000000000000注意:即使消息长度恰好是8的整数倍,仍需填充8字节的全0密码学基础•(2)X923填充算法:需要填充的7个字节中前6个字节填充0,最后一个字节记录填充的总字节数,分组结果为:•第一个消息分组:•F1F2F3F4F5F6F7F8•第二个消息分组:•F900000000000007密码学基础•(3)PKCS7填充算法:需要填充的7个字节中的每一个字节填充需要填充的总字节数,分组结果为:•第一个消息分组:•F1F2F3F4F5F6F7F8•第二个消息分组:•F907070707070707密码学基础•(4)ISO10126填充算法:需要填充的7个字节中前6个字节填充随机字节序列,最后一个字节记录填充的总字节数,分组结果为:•第一个消息分组:•F1F2F3F4F5F6F7F8•第二个消息分组:•F97D2A75EFF8EF07密码学基础2.2数据加密标准----DES•DES是DataEncryptionStandard(数据加密标准)的缩写。它是由IBM公司研制的一种加密算法,二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。•DES是一个分组加密算法,它以64位为分组对数据加密。同时DES也是一个对称算法:加密和解密用的是同一个算法。它的密钥长度是56位(因为每个第8位都用作奇偶校验),密钥可以是任意的56位的数。密码学基础DES算法的颁布引起了学术界和企业界的广泛重视。20多年来,DES已经在世界范围内成为事实上的加密标准,一直作为分组密码设计的标准参照物。学术界对DES密码进行了深入的研究,围绕它的安全性和破译方法展开了激烈的争论,这在一定意义上对密码学的理论研究起了推动作用。DES出色地顶住了年复一年、形形色色的密码分析,其精巧的设计至今仍闪烁着人类思想的精华,其结构和部件仍被后人效仿。密码学基础虽然DES没能长期地作为数据加密标准算法,但它仍是迄今为止得到最广泛应用的一种算法,也是一种最有代表性的分组加密体制。详细地研究这一算法的基本原理、设计思想、安全性分析以及实际应用中的有关问题,对于掌握分组密码理论和当前的实际应用都很有意义。密码学基础2.2.1DES的描述•DES是一个包含16个阶段的“替换--置换”的分组加密算法,它以64位为分组对数据加密。•64位的分组明文序列作为加密算法的输入,经过16轮加密得到64位的密文序列。密码学基础•尽管DES密钥的长度有64位,但用户只提供56位(通常是以转换成ASCII位的7个字母的单词作为密钥),其余的8位由算法提供,分别放在8、16、24、32、40、48、56、64位上,结果是每8位的密钥包含了用户提供的7位和DES算法确定的1位。添加的位是有选择的,使得每个8位的块都含有奇数个奇偶校验位(即1的个数为奇数)。密码学基础明文(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,简称置换)在第一轮运算之前执行。IPIP密码学基础IP置换表58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157(1)58表示:结果中位于第1个位置的值,等于原文中第58个位置的值(2)图中的一格代表1bit,共有64bit,即8字节DES:IP置换密码学基础图2-3一轮DES加密过程Li-1Ri-1密钥Li密钥Ri扩展变换S盒替代P盒置换移位移位压缩变换++密码学基础DES:f的结构(即黑盒变换)R(32bit)EE(R)(48bit)K(48bit)B1B2B3B4B5B6B7B8S1S2S3S4S5S6S7S8C1C2C3C4C5C6C7C8P+(48bit)(32bit)密码学基础•扩展变换:扩展变换(ExpansionPermutation,也被称为E-盒)将64位输入序列的右半部分从32位扩展到48位。3212345456789891011121312131415161716171819202120212223242524252627282928293031321扩展变换•E-盒的真正作用是确保最终的密文与所有的明文位都有关。密码学基础•初始10000000000000000000000000000000•第1阶段01000000000000000000000000000001•第2阶段10100000000000000000000000000010•第3阶段01010000000000000000000000000101•第4阶段10101000000000000000000000000101•第5阶段01010100000000000000000000010101•第6阶段10101111010000000000000010101010•第7阶段01010101111000100101010101010101•第8阶段10101010101111111010111010101010第二次E-盒作用于该单词,初始的影响延伸到了位置1、3和31。第8次该单词通过E-盒后,E-盒对每个位都有影响。第一个E-盒操作将位复制,并将它放在位置2和位置32;3212345456789891011121312131415161716171819202120212223242524252627282928293031321密码学基础•S-盒替换(S-boxesSubstitution)48比特输入32比特输出S-盒1S-盒2S-盒3S-盒4S-盒5S-盒6S-盒7S-盒8密码学基础S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S-盒21518146113497213120510313471528141201106911501441110413158126932151381013154211671205149S-盒31009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S-盒47131430691012851112415138115615034721211014910690121171315131452843150610113894511127214密码学基础S-盒52124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S-盒61211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S-盒74112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S-盒81328461511110931450127115138103741256110149271141912142061013153582114741081315129035611密码学基础S-盒11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S—盒的输出表示设对应S-盒1的输入序列为:行号:11即3列号:0
本文标题:2.分组密码(6) (2)
链接地址:https://www.777doc.com/doc-3772801 .html