第3章常规现代加密技术1.常规加密技术的概述2.分组加密的原理3.分组加密算法的工作模式4.DES算法5.多重DES6.其它常规加密算法常规密码体制的安全性取决于加密算法和密钥。算法的强度必须足够高密钥的长度必须足够长;密钥更新的频度必须足够高。算法的强度通常采用两种方法保证:扩散(diffusion)扰乱(confusion)ClaudeShannon早在1949年发表的“秘密系统的通信理论”一文中就提出了扩散和扰乱的概念。后来扩散和扰乱被用来作为常规密码系统的两个基本组成模块。分组密码算法设计要遵循Shannon1949提出的混乱原则和扩散原则。扩散和扰乱已成为现代分组密码设计的基础。扩散的基本方法是让明文和密钥的每个字母影响尽可能多的密文字母的取值(等价于每个密文字母被尽可能多的明文和密钥字母影响),从而使得明文和密钥的统计特征被扩散,明文和密钥中原有的统计特征不再反映在密文中。扰乱机制是使密文的统计特征与明文和加密密钥的关系尽可能复杂化,使得攻击者即使掌握了密文的某些统计特征,也很难从中推测出密钥和明文。扩散和扰乱主要用于对付基于统计分析的密码破译。算法安全性问题:如果一个算法无法抵御仅有密文攻击,则该算法就不是一个好的算法。加密算法应能够抵御已知明文的攻击。如果攻击者无论拥有多少由某一算法所产生的密文,都无法由这些密文中所包含的信息惟一地决定对应的明文,则称此算法是无条件安全的。无条件安全的加密算法通常是不存在的。人们要求算法应保证在计算上是安全的。如果一个加密算法能够满足下列条件中的一个或两个,则称此算法在计算上是安全的:破译该密码的成本超过被加密信息的价值。破译该密码的所需的时间超过该信息的有效生命周期。现代对称加密技术和经典加密技术的比较:相同点:以替代和置换模块作为其基本构件。不同点:现代常规加密技术用计算机对信息进行加密解密处理,因此,加密和解密都是对二进制位进行处理,加密算法的强度大大提高,可以对信息进行反复地替代和置换操作,密钥长度也大大增加。对称密钥系统的弱点密钥分配困难。对称密钥系统不能进行数字签名。对称加密算法难以扩展。密钥必须经常更新。1.常规加密技术的概述2.分组加密的原理3.分组加密算法的工作模式4.DES算法5.多重DES6.其它常规加密算法分组密码的一般设计原理分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。分组密码模型Feistel分组密码Feistel分组密码是当前使用的几乎所有对称加密算法的基础。Feistel密码是一种分组密码,Feistel的安全性与下面几个方面密切相关:分组大小:分组越大,安全性越高,加密/解密处理速度也越慢。密钥大小:密钥长度越长,安全性越高,加密/解密速度也越慢。循环次数:循环次数越多,安全性越高,加密/解密速度也越慢。子密钥产生算法:在Feistel算法的多轮循环中,需要使用不同的子密钥。轮函数:轮函数的扩散和扰乱功能越强,则抵御密码分析的能力就越强。加密过程和解密过程形式化描述分别如下公式所示:加密:Li=Ri-1;Ri=Li-1⊕F(Ri-1,Ki)解密:Ri-1=Li;Li-1=Ri⊕F(Ri-1,Ki)=i⊕F(Li,Ki)Feistel网络的加密过程具有以下特点:明文分组分为左右两个部分L0和R0,数据的这两部分通过n次循环处理后,再结合起来生成密文分组;每i次循环都以上一次循环输出比特串的左右两个部分Li-1和Ri-1,以及K产生的子密钥Ki作为输入。子密钥Ki与主密钥K和其它子密钥都不同,子密钥Ki是用子密钥生成算法从密钥K中生成的;所有循环的结构都相同,置换在数据的左半部分进行,先对数据的右半部分应用循环函数F,然后对函数输出结果和数据的左半部分取异或(XOR);循环函数对每次循环都有相同的通用结构,仅仅是每次循环子密钥Ki不同;在置换之后,执行由数据左右两部分互换构成的交换;核心参数:分组大小密钥长度循环次数子密钥产生算法循环函数加密算法可以描述为:LE0=(P)LW;RE0=(P)RW;fori=1step1tondoLEi=REi-1;REi=LEi-1⊕F(REi-1,Ki);endforLEn+1=REn;REn+1=LEn;C=LEn+1||REn+1;上述描述中,(P)LW表示明文分组长度为w的左半部分,(P)RW为右半部分,||表示拼接。解密算法可以描述为:LD0=(C)LW;RD0=(C)RW;fori=1step1tondoLDi=RDi-1;RDi=LDi-1⊕F(RDi-1,Kn-i+1);endforLDn+1=RDn;RDn+1=LDn;P=LDn+1||RDn+1;Feistel密码的特点是模块化程度高,加密/解密都采用基本模块经过多轮循环而实现;加密过程和解密过程相同,差异仅仅在子密钥的使用顺序上,这一特点非常有利于硬件实现。1.常规加密技术的概述2.分组加密的原理3.分组加密算法的工作模式4.DES算法5.多重DES6.其它常规加密算法分组密码的操作模式为了适应不同的应用需求,分组密码定义了四种操作模式。这四种操作模式是:1.电子密码本ECB(ElectronicCodeBook)2.密码分组链接CBC(CipherBlockChaining)3.密码反馈CFB(CipherFeedback)4.输出反馈OFB(OutputFeedback)1、电子密码本ECB电子密码本是分组密码应用的最基本形式。将明文P划分为长度为w比特的明文分组(P1,P2,…,Pn),最后一个分组一般需要填充。每个明文分组使用同样的密钥K进行加密处理,加密时,明文分组独立于前面的密文分组。w比特的明文分组与w比特的密文分组一一对应。电子密码本模式电子密码本模式的特点:相同的明文分组必然产生相同的密文分组。对于传输大量信息(尤其是结构化程度较高的信息),电子密码本模式的安全性并不是太好。ECB可能受到的主动攻击是信息块被替换、重排、删除、重放。由于电子密码本模式下明文的加密过程与密文无关,所以,可以对明文分组进行并行加密处理,以获得很高的加密速度。ECB不存在误差传递现象,因此ECB工作模式适合于传输短信息。2、密码分组链接CBC密码分组链接模式同电子密码本模式一样将明文进行分组和填充。每个明文分组使用同样的密钥K进行加密处理。加密处理时,明文分组与上一次输出的密文分组进行按位二进制异或操作后,再利用基本分组加密算法进行加密。注意:在对第一个明文分组进行处理时,还没有密文分组可以利用,此时,引入一个初始向量IV与第一个明文分组进行异或。IV必须为发送方和接受方共享,并且应该和密钥一样受到保护。解密处理时,每个密文分组经过基本解密算法解密,然后将此结果与前一个密文分组按位异或以产生明文分组。时刻t=1CBC模式时间展开图加密P1KC1解密KP1时刻t=2加密P2KC2解密KP2时刻t=n加密PnKCn解密KPn……IVCn-1Cn-1IVCBC模式实现示意图加密w位寄存器……解密w位寄存器PiKKPiCiCiCi-1Ci-1解密的简单证明如下:Ci=EK[Pi⊕Ci-1]解密结果=DK(Ci)⊕Ci-1=DK[EK[Pi⊕Ci-1]]⊕Ci-1=[Pi⊕Ci-1]⊕Ci-1根据异或的特性:[A⊕B]⊕C=A⊕[B⊕C]A⊕A=0A⊕0=A可得:解密结果=Pi⊕[Ci-1⊕Ci-1]=Pi⊕0=Pi密码分组链接模式通过将明文分组与前一个密文分组异或,实现了明文模式的隐藏,使得当同一个明文分组重复出现时能够产生不同的密文分组。密码分组链接模式可以用于大量信息和高结构化信息的加密传输。无法对明文进行并行加密,但可以进行并行解密。CBC能隐藏明文的模式信息,相同明文生成不同密文。CBC工作模式所加密的信息块不容易被替换、重排、删除、重放等主动攻击,因此它的安全性好于ECB。容易造成误差传递。3、密码反馈CFB上述两种模式要求在对明文分组时进行填充,这样势必增加加密和传输的开销,这种开销在对大量短小信息进行加密的情况下,尤为明显。密码反馈模式将分组密码转化为序列密码。序列密码不要求信息被填充成整数个分组。密码反馈模式实际上是利用基本分组加密模块来产生密钥流。加密操作:每次处理h位,h位明文与h位伪随机密钥异或后,生成h位密文。将密文移入移位寄存器的低h位。伪随机密钥由基本分组密码模块对移位寄存器的内容加密后选取高端的h位而形成。注意:解密的一方在使用基本分组密码模块时,采用的也是加密操作。密码反馈模式解密的简单证明如下:加密:Ci=Pi⊕Sh(EK[MS])解密结果=Ci⊕Sh(EK[MR])=Pi⊕Sh(EK[MS])⊕Sh(EK[MR])上式中,MS为发送方移位寄存器中的值,MR为接收方移位寄存器中的值。只要保证收发双方移位寄存器中的初始向量IV相等,就能保证MS和MR相等。由于双方采用了相同的加密操作EK和选择函数Sh,从而使得下式成立:Sh(EK[MS])=Sh(EK[MR])根据异或操作的性质可得:解密结果=Pi。密码反馈模式的不足之处:若传输中密文出错,则会造成解密错误。由于错误码在被移出移位寄存器之前被多次使用,因而,一个密文出错,会造成连续w/h个解密明文的错误。4、输出反馈OFB输出反馈模式与密码反馈模式在结构上很接近,不同的是反馈到移位寄存器的不是密文,而是选择函数的输出。输出反馈模式优于密码反馈模式的是传输中的位出错只会影响一次解密,而不会传播。输出反馈模式1.常规加密技术的概述2.分组加密的原理3.分组加密算法的工作模式4.DES算法5.多重DES6.其它常规加密算法DES(DataEncryptionStandard)是数据加密标准的简称。DES起源于20世纪70年代初IBM研制出的LUCIFER算法,LUCIFER是一种Feistel分组密码,分组长度为64比特,密钥长度为128比特。1973年5月和1974年8月美国国家标准局NBS(NationalBureauofStandards)两次发布通告,向社会征集密码算法。结果IBM的LUCIFER算法被选中,1977年被正式公布为数据加密标准DES。DES算法是分组对称加密算法,明文和密文为64位分组长度。DES算法的密钥长度是64位,但由于密钥的每个字节的第8位为奇偶校验位,第8位可忽略,因此实际的密钥长度是56比特。在DES中数据以64比特分组进行加密,加密算法经过一系列的加密变换将64比特的明文输入变换成64比特的密文输出,解密过程使用同样的步骤和同样的密钥。其加密和解密过程除密钥编排不同外,都使用同一算法。DES算法采用混乱和扩散的组合,每个组合先替代后置换,共进行16轮循环。由于算法只使用了标准的算术和逻辑运算,因此易于实现。DES加密DES算法具有严格的Feistel结构。DES由两种基本的加密技术——替代和置换经过细致而复杂的结合而成。DES共使用了16轮替代和置换。DES加密过程分为两条主线:明文分组加密处理和产生子密钥。明文分组加密处理由三个阶段构成:第一个阶段为初始置换(IP)。初始置换按照IP表将输入明文分组的64位二进制数重新排列,产生新的64位输出。初始置换后的输出被分为左右各32位的两部分。第二个阶段为标准的Feistel密码结构,循环次数为16轮,每轮循环使用一个48位的子密钥。经过16轮循环后,再将输出的左右两部分进行对换,并合并为64位的输出。第三个阶段完成逆初始置换(IP-1)。逆初始置换按照IP-1表将64位二进制数进行重新排列,产生的64位输出即为密文。明文信息…64位分组初始置换IPLEi-1扩展置换EKi第1轮第16轮…REi-132替代/选择置换P3232REiLEi…32位对换逆初始置换IP-1484848FLE0RE0LE16RE16置换选择PC-1…Ci-1Di-1循环左移置换选择PC-2