您好,欢迎访问三七文档
第3章对称密码算法分组密码:DES,3-DES,IDEA,AES序列密码:RC4对称密码体制学习要点了解对称密码体制的基本概念了解分组密码原理了解分组密码操作模式了解DES和AES两种典型的对称密码算法分组密码加密算法解密算法明文分组密文分组明文分组图5-1分组密码原理框图),,,,(1210Lmmmmm),,,,(1210Lccccc),,,,(1210tkkkkk),,,,(1210tkkkkk),,,,(1210Lmmmmm对分组密码算法的要求分组长度足够大密钥量足够大密码变换足够复杂分组密码中两个基本变换S变换(代替)和P变换(换位)SP网络-就是由多重S变换(代替)和P变换(换位)组合成的变换网络.分组密码原理扩散和混乱是分组密码的最本质的操作扩散就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中去,以便隐藏明文的统计特性---依赖P变换(换位)。混乱是指密文和明文之间的统计特性关系尽可能地复杂化----以来S变换(替代)。乘积密码乘积密码-指依次使用两个或两个以上的基本密码,所得结果的密码强度将强于所有单个密码的强度.乘积密码有助于实现扩散和混乱乘积密码是扩散和混乱这两种基本密码操作的组合变换.这样产生的密码系统比各自单独使用更强大.这种迭代方法在现代密码中叫Feistel结构.Feistel结构Fw位w位XORK1L0R0L1R1FXORLiRiFXORLnRnKnKiLn+1Rn+1w位w位密文明文第1轮第i轮第n轮图5-6 Feistel密码结构1(1,2,,)iiLRin11(,)(1,2,,)iiiiRLFRKinFeistel结构:数据分组的一半被用来修改数据分组的另一半,然后交换这两部分,每轮迭代结构相同,但每轮子密钥不同.S变换(代替)在数据的右半部分左右数据交换实现P变换(换位)Feistel结构的实现依赖于参数:分组长度:分组越长,安全性越高,但效率降低,一般64或128密钥长度:密钥越长,安全性越高,目前一般是128迭代轮数:多轮加密可取得很高安全性.子密钥生成算法:子密钥生成越复杂,安全性越高.轮函数:轮函数越复杂,抗攻击就越强.数据加密标准DES(DataEncryptionStandard)20世纪60年代末,IBM研发了一个密码算法lucifer,其分组长度为64bit,密钥128bit。DES的历史1973年,美国标准局NBS征求国家密码标准方案IBM提交该算法并被选中,经过修改1977被颁布作为加密标准算法DES。DES是应用最广泛的数据加密算法,也是密码史上第一个公开的加密算法。它的核心思想是让所有的秘密寓于密钥中。NIST预言DES使用的寿命将在90年代末期结束,但作为加密标准一直超期服役到2000年高级加密标准AES的出现,并在民用方面仍在使用.DES算法的基本特点DES加密DES加密DES加密64bit明文密文64bitkkkDES的加密处理略图明文处理的经过了3个阶段:阶段1:64bit的明文经过初始置换IP进行比特重排,不使用密钥。阶段2:16次的与密钥相关的密运算,置换,替代,也叫乘积变换。阶段3:最后一次循环的结果64bit经过逆初始置换IP-1,这一变换过程也不使用密钥。K1K2..56bit密钥置换选择1Co28bitDo28bit循环左移1位循环左移1位C1D1置换选择2左移1位左移1位C2C2置换选择2第一轮变换第16轮变换。。。初始置换IP64bit明文逆初始置换IP-164bit密文二DES算法的主要结构输入初始置换逆初始置换IP-1输出L15=R14R15=L14+F(R14,K15)L2=R1L1=R0R2=L1+F(R1,K2)R16=L15+F(R15,K16)R1=L0+F(R0,K1)L16=R15L0R0+F+F+F+FK1K2KnK16图5-15 DES的加密计算明文二进制的转换abcdefgh97989901100001在算法中对比特位进行编号。1234加密时将其打乱重排。01100001明文的处理1初始置换IP,进行比特重排每个64bit明文分组按比特位每位编号1234567891011121314151617。。。24。。。。。。57。。。64一初始置换IP明文原58位换到第1位,原第50位换到第2位1234567891011121314151617。。。24。。。。。。57。。。641输入(64位)输出(64位)图5-16 初始置换(IP)58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157逆初始置换输入(64位)输出(64位)图5-17 逆初始置换(IP-1)40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725为什么要置换?置换是分组密码设计的一种扩散法(diffusion)是基于如何挫败统计分析的密码破译问题,即怎样让明文统计特性消失多个明文bit1影响。一个密文比特n分组密码设计的另一种方法是(confusion),在DES中用S盒子实现。扰乱16次乘积变换乘积变换是DES的核心,一共进行16次输入初始置换逆初始置换IP-1输出L15=R14R15=L14+F(R14,K15)L2=R1L1=R0R2=L1+F(R1,K2)R16=L15+F(R15,K16)R1=L0+F(R0,K1)L16=R15L0R0+F+F+F+FK1K2KnK16图5-15 DES的加密计算•每次乘积变换的过程f扩展置换左32bit右32bit左32bit右32bit进入下次循环a替代S盒子XOR扩展置换E置换PLi-1(32位)Ri-1(32位)Ri(32位)Li(32位)扩展变换E选择压缩变换S盒代替置换运算P密钥产生器++F变换48位48位48位32位32位Ki图5-18 DES算法的一轮迭代处理过程1iiRL),(11iiiiKRFLR扩展变换E3212345456789891011121312131415161716171819202120212223242524252627282928293031321输入(32位)输出(48位)图5-19 扩展变换E复用16位为什么要扩展置换?1)32——48以便与Ki进行异或2)安全性——扩散法diffusion多个明文bit影响一个密文bita明文统计特征消失一部分b扩展了输出时输入的依赖性比如:输入有一位差异输出的密文产生相当大的差异,从而设置了密码分析的障碍——即“雪崩效应”bS盒子替代替代由8个代替盒32(substitutionbox)扩展s盒子完成48Ki每个s盒子6位输入6*8=48S盒子4位输出4*8=3232位每个S盒子不同XOR图5-21 F(Ri-1,Ki)函数的计算Ri-1(32位)48位S1S8S7S6S5S4S3S2E+P密钥Ki(48位)32位Ki48bit48bit分成8组,每组6位。。。32bit每个Si盒子都是已经定义好的替代函数(选择)S1S2S8XORS1盒的定义S11441312151183106125907015741421311061211953841148136211151297310501512824917511314100613实例1,设输入为101100输入的第一位和最后一位对应替代函数矩阵行的指示数。输入的中间位对应列的指示数。10110010列数6行数20123457891011121314150144131215118310612590710157414213110612119538411481362111512973105031512824917511314100613转接成2进制0010S1的输出其他的S盒子见参考书,(S盒子的设计愿望并未公开——DES受到怀疑的原因之一,可能含有陷门)替代函数S162图5-22 使用S盒的一个例子01234567891011121314150144131215118310612590710157414213110612119538241148136211151297310503151282491751131410061310110010(2)首尾两位22输出(4位):0010S1中间四位P置换矩阵输入(32位,来自于S盒)输出(32位)图5-20 P变换1672021291228171152326518311028241432273919133062211425将S盒代替后的32进行置换:32-----32密钥的生成密钥表计算产生12345678加密和解密所需910111213141516要的16个子密钥17。。。2324K1,K2。。。25。。。313216的过程,64位33。。。3839密钥从1到64编号41。。。4748起作用的有56位49。。。555657。。。6364为奇偶校验位密码表的计算框图设C1=c1c2。。。c28D1=d1d2。。。d28循环左移一位c2c3。。。c28c1d2d3。。。d28d164位密文置换选择1Co28bit循环左移D128bitC128bit循环左移循环左移Do28bit循环左移C1628bitD1628bit置换选择2K148bit置换选择2K1648bit64位密钥置换选择1图5-23 DES的轮密钥生成D0(28位)C0(28位)循环左移D1(28位)C1(28位)Di(28位)Ci(28位)循环左移循环左移循环左移置换选择2置换选择2(56位)(56位)(48位)(48位)kik1置换选择1:将56bit密钥分成两个28bit64bit密钥(56bit有效)574941332517963554739312315Do28bit1585042342618Co28bit1025951433527191136052443621135282012414661534537297625446383022置换选择2相当于从56bit中选出48(6*8)bit做为子密钥28bit28bit48bitCiDi1417112415328156211046425036293223191242681672720132444939563453415231374755304051453348密钥(56位)CO(28位)图5-24 置换选择157494133251791585042342618102595143352719113605244366355473931331576254463830221466153453729211352820124DO(28位)密钥(48位)Ci-1(28位)图5-25 置换选择2Di-1(28位)1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932循环左移循环左移循环左移位轮序12345678910111213141516移位数1122222212222221DES的解密DES的解密使用与加密相同的算法,但子密钥的使用次序相反.Fw位w位XORK1L0R0L1R1FXORLiRiFXORL16R16K16KiR16L16w位w位输出(密文)输入(明文)第1轮第i轮第16轮图5-8 Feistel的加密、解密Fw位w位XORL15R15FXORLi-1Ri-1FXORL0R0L0R0w位w位输入(密文)第16轮第i轮第1轮R16L16输出(明文)(a)加密(b)解密存在争议的地方密钥的问题算法的性质1,关于密钥56bit的密钥太短密钥空间为7.2E6若1微妙完成1次DES加密约1
本文标题:DES-加密
链接地址:https://www.777doc.com/doc-2909824 .html