分组密码的工作模式王滨2005年3月21日2主要内容分组密码的工作模式短块处理方法3DES算法只解决了如何对一个64比特的明文分组进行加密保护的问题,对于比特数不等于64的明文如何加密,并不关心。这个问题,就由分组密码的工作模式解决。4分组密码的工作模式分组密码的“工作模式”是指以某个分组密码算法为基础,解决对任意长度的明文的加密问题的方法。1.电码本(ECB)模式2.密码分组链接(CBC)模式3.密码反馈(CFB)模式4.输出反馈(OFB)模式5.计数器模式这五种工作模式适用于不同的应用需求.分组密码的工作模式主要有:51.电码本(ECB-ElectronicCodeBook)模式ECB模式是将明文的各个分组独立地使用同一密钥k加密,如下图所示。ECB模式的加、脱密框图)(xEk)(xEk)(xEk)(xEk…4m1m3m2m4c1c3c2c……6典型应用:(1)用于随机数的加密保护;(2)用于单分组明文的加密。优点:(1)实现简单;(2)不同明文分组的加密可并行实施,尤其是硬件实现时速度很快.缺点:不同的明文分组之间的加密独立进行,故保留了单表代替缺点,造成相同明文分组对应相同密文分组,因而不能隐蔽明文分组的统计规律和结构规律,不能抵抗替换攻击.ECB模式的优、缺点和应用712345678910111213时间标记发送银行接收银行储户姓名1储户帐号1存款金额12345678910111213时间标记发送银行接收银行储户姓名2储户帐号2存款金额敌手C通过截收从A到B的加密消息,只要将第5至第12分组替换为自己的姓名和帐号相对应的密文,即可将别人的存款存入自己的帐号。例:假设银行A和银行B之间的资金转帐系统所使用报文模式如下:8为了克服ECB的安全性缺陷,我们希望设计一个工作模式,可以使得当同一个明文分组重复出现时产生不同的密文分组。一个简单的方法是密码分组链接,从而使输出不仅与当前输入有关,而且与以前输入和输出有关。92.密码分组链接(CBC-CipherBlockChaining)模式在CBC模式下,加密算法的输入是当前明文组与前一密文组的异或。记初始化向量IV为c0,则加密过程可表示为CBC模式加密框图1(),1,2,3,ikiicEmci3m)(xEk4m4c)(xEk1m1c)(xEk3c)(xEk2m2c………1nm1ncIV)(xEk10CBC模式脱密框图CBC模式的脱密过程为11(),1,2,3,ikiimEcci1E1E1EIVkkk1m2m3m1c2c3c111E1E1EIVkkk1m2m3m1c2c3c)(xEk4m4c)(xEk1m1c)(xEk3c)(xEk2m2c………1nm1ncIV)(xEk3m121.明文块的统计特性得到了隐蔽。CBC模式的特点:由于在密文CBC模式中,各密文块不仅与当前明文块有关,而且还与以前的明文块及初始化向量有关,从而使明文的统计规律在密文中得到了较好的隐蔽。2.具有有限的(两步)错误传播特性。一个密文块的错误将导致两个密文块不能正确脱密.3.具有自同步功能密文出现丢块和错块不影响后续密文块的脱密.若从第t块起密文块正确,则第t+1个明文块就能正确求出.13典型应用:(1)数据加密;(2)完整性认证和身份认证;完整性认证的含义完整性认证是一个“用户”检验它收到的文件是否遭到第三方有意或无意的篡改。因此,完整性认证:•不需检验文件的制造者是否造假;•文件的制造者和检验者利益一致,不需互相欺骗和抵赖。14利用CBC模式可实现报文的完整性认证目的:检查文件在(直接或加密)传输和存储中是否遭到有意或无意的篡改.关键技术:(1)文件的制造者和检验者共享一个密钥(2)文件的明文必须具有检验者预先知道的冗余度(3)文件的制造者用共享密钥对具有约定冗余度的明文用CBC模式加密(4)文件的检验者用共享密钥对密文脱密,并检验约定冗余度是否正确.15报文完整性认证的具体实现技术(1)文件的制造者和检验者共享一个密钥;(2)文件的明文m产生一个奇偶校验码r的分组;(3)采用分组密码的CBC模式,对附带校验码的已扩充的明文(m,r)进行加密,得到的最后一个密文分组就是认证码;16…n分组明文,校验码为1(,,)nmmm11nnrmmmCn+1为认证码。(1)仅需对明文认证,而不需加密时,传送明文m和认证码Cn+1,此时也可仅保留Cn+1的t个比特作为认证码;(2)既需对明文认证,又需要加密时,传送密文C和认证码Cn+1)(xEk)(xEk)(xEk)(xEk……)(xEk4c1c3c2c4m1m3m2m1nmr1nc)(xEknmnc17()kEx4m4c()kEx1m1c()kEx3m3c()kEx2m2c………()kEx1nm1nc检验方法:(1)仅需对明文认证而不需加密时,此时验证者仅收到明文m和认证码Cn+1,他需要:Step2利用共享密钥使用CBC模式对(m,r)加密,将得到的最后一个密文分组与接受到的认证码Cn+1比较,二者一致时判定接收的明文无错;二者不一致时判定明文出错。11nnrmmmStep1产生明文m的校验码18例:电脑彩票的防伪技术----彩票中心检查兑奖的电脑彩票是否是自己发行的问题:如何防止电脑彩票的伪造问题。方法:(1)选择一个分组密码算法和一个认证密钥,将他们存于售票机内;(2)将电脑彩票上的重要信息,如彩票期号、彩票号码、彩票股量、售票单位代号等重要信息按某个约定的规则作为彩票资料明文;(3)对彩票资料明文扩展一个校验码分组后,利用认证密钥和分组密码算法对之加密,并将得到的最后一个分组密文作为认证码打印于彩票上面;认证过程:执行(3),并将计算出的认证码与彩票上的认证码比较,二者一致时判定该彩票是真彩票,否则判定该彩票是假彩票。193.密码反馈(CFB-CipherFeedback)模式若待加密消息需按字符、字节或比特处理时,可采用CFB模式。并称待加密消息按j比特处理的CFB模式为j比特CFB模式。适用范围:适用于每次处理j比特明文块的特定需求的加密情形,能灵活适应数据各格式的需要.例如,数据库加密要求加密时不能改变明文的字节长度,这时就要以明文字节为单位进行加密.20j比特CFB模式加密框图21(())iijkiliicmleftEccc若记IV=c-l+1…c-1c0,|ci|=j,则加密过程可表示为:1,2,i移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特IV移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特1c64641m6464kjjjj2m2c移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特6464nmj1ncnckkk21密文反馈模式的解密移位寄存器64-j比特j比特DES加密算法选择丢弃j比特|64-j比特IV1c64641mjj移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特2c64642mjjkk移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特nc64641mjk22优点:(1)适用于每次处理j比特明文块的特定需求的加密情形;(2)具有有限步的错误传播,可用于认证;(3)可实现自同步功能:该工作模式本质上是将分组密码当作序列密码使用的一种方式,但乱数与明文和密文有关!该模式适应于数据库加密、无线通信加密等对数据格式有特殊要求或密文信号容易丢失或出错的应用环境。缺点:加密效率低。234.输出反馈(OFB-OutputFeedback)模式OFB模式在结构上类似于CFB模式,但反馈的内容是DES输出的乱数而不是密文!这一点从图中可以看到。j比特OFB模式加密框图移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特IV移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特1c64641m6464jjjjj2m2c移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特6464nmj1ncnckkkj24OFB模式加密框图移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特IV1c64641mjj移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特2c64642mjjkk移位寄存器64-j比特|j比特DES加密算法选择丢弃j比特|64-j比特nc6464jkj……nm25优点:(1)这是将分组密码当作序列密码使用的一种方式,但乱数与明文和密文无关!(2)不具有错误传播特性!只要密文在传输过程中不丢信号,即使信道不好,也能将明文的大部分信号正常恢复。适用范围:(1)明文的冗余度特别大,信道不好但不易丢信号,明文错些信号也不影响效果的情形。如图象加密,语音加密等。缺点:(1)不能实现报文的完整性认证。(2)乱数序列的周期可能有短周期现象。26总评:(1)ECB模式简单、高速,但最弱,易受重发和替换攻击,一般不采用。(2)CBC,CFC,OFB模式的选用取决于实际的特殊需求。(3)明文不易丢信号,对明文的格式没有特殊要求的环境可选用CBC模式。需要完整性认证功能时也可选用该模式。(4)容易丢信号的环境,或对明文格式有特殊要求的环境,可选用CFB模式。(2)不易丢信号,但信号特别容易错,但明文冗余特别多,可选用OFB模式。275.计数器模式利用固定密钥k对自然数序列1,2,3,…,n,…加密,将得到的密文分组序列看作乱数序列,按加减密码的方式与明文分组逐位模2加的一种方式.这也是人们普遍认可的一种方式.利用这种方式可以产生伪随机数序列,其伪随机特性远比计算机产生的随机数的性质好,至少我们对它的产生过程是很明了的,很放心的.28短块处理方法----直接扩充法在电码本模式和密文链接模式中,都要求明文长度是明文分组规模的整数被倍.否则就会出现最后一个明文分组是短块的情形.这时应如何处理呢?方法1:对明文扩充,使最后一个分组不是短块,但需在文件头或最后一个明文分组中指明文件所含的字节数.(A)添充全0比特或其它固定比特,或计算机内存中自然存放的数据.(B)添充随机数.相对而言,方法(A)简单,易实现,但安全性没有第二种方法好.29短块处理方法----密文挪用方法在有些应用中,如数据库加密,磁盘信息加密等,不允许密文的长度比明文的长度大,这时如何解决短块问题?这就用到密文挪用方法.30密文挪用方法EN-nnxnnEKK1nynynx1nx31下节内容IDEA算法