2020/1/23应用密码学12008-2009年度济南大学网络工程专业本科班课程应用密码学第六讲分组密码工作模式贾忠田办公电话:82767529电子信箱:jiazht@163.com办公地点:新信息楼806室2020/1/23应用密码学2回顾:1、分组密码的基本概念。2、DES加密算法。)32(0bitL)32(0bitREs-盒置换48bit1k(48bit))32(1bitR)32(1bitL2020/1/23应用密码学3分组密码的运行模式电子本ECB(electroniccodebook)密码反馈CFB(cipherfeedback)密码分组链接CBC(cipherblockchaining)输出反馈OFB(outputfeedback)美国NSB在[FIPSPUS74和81]中定义了DES的4种运行模式。----这些模式也可以用于其它分组密码。下面以DES算法为例来介绍这四种模式。2020/1/23应用密码学4一、电子本ECB模式图3-10ECB模式示意图2020/1/23应用密码学5电子本ECB模式的特点:一次对64比特的分组加密,且每次加密密钥都相同;每一个明文分组都有一个密文分组与之对应----可以认为有一个非常大的电码本,对任意可能的明文分组,电码本中都有一个对应的密文;最后一个分组长度不够64比特,则要填充;相同的明文分组产生相同的密文分组;适用于短数据的加密;2020/1/23应用密码学6二、密码分组链接(CBC)模式DES加密KDES加密K1P2P第1次第2次IV1C2C(a)加密DES加密KNP第N次NC1NCDES加密KDES加密KIV1C2C1P2PDES加密KNC1NCNP(b)解密图3-11CBC模式示意图2020/1/23应用密码学7解密时每个密文分组被解密后,再与前一个密文分组分组异或。111][[][nnnKKnnKCPCEDCCDnnnnPCPC11][1nnknPCEC设:下面证明这种解密结构的确能够获得明文。[证毕]2020/1/23应用密码学8CBC的特点每次加密使用相同的密钥;重复的明文分组产生不同的密文分组;需要一个初始向量和第一个明文分组异或;--初始向量需要像密钥一样保密,因为][11PIVECK][11CDIVPK,用)(iX表示64比特分组的第i个比特,那么算法的输入是当前明文分组与前一次密文分组的异或;2020/1/23应用密码学9)]([)()(11iCDiIViPK由异或特性知)]([)()(1''1iCDiIViPK撇号表示比特补。如果敌手能够欺骗接收方使用不同的初始向量,则敌手能够在明文的第一个分组中插入自己选择的比特值。CBC模式对加密长于64比特的消息非常合适。CBC模式除了能够获得保密性外,还能够用于认证2020/1/23应用密码学10三、密码反馈(CFB)模式DES是分组长为64的分组密码,但利用CFB或OFB模式可将DES转换为流密码。流密码不需要填充,且运行是实时的。弃bit选bitj64j1P1C(a)加密)(移位寄存器IVbitbitj64jDES加密kbitbitj64jDES加密弃bit选bitj64j2P2Ckbitbitj64jDES加密弃bit选bitj64jMPMC1MCk2020/1/23应用密码学11(b)解密图3-12CFB模式示意图bitbitj64jDES加密弃bit选bitj64j1P1CIVkbitbitj64jDES加密弃bit选bitj64j2P2Ckbitbitj64jDES加密弃bit选bitj64jMPMC1MCk2020/1/23应用密码学12解密时仍然使用加密算法,这是因为:设)(XSj是X的j个最高有效位,那么))((11IVESPCj所以))((11IVESCPj当1i时:))||)(((164ijjiiCXSESPC所以))||)(((164ijjiiCXSESCP2020/1/23应用密码学13密码反馈(CFB)模式的特点:每个分组使用相同的密钥;与CFB模式一样明文被链接在一起,密文是前面所有明文分组的函数;每次实际被加密的分组长为j,一般是8;CFB模式除了加密外,还用于认证。2020/1/23应用密码学14四、输出反馈(OFB)模式(a)加密)(移位寄存器IVbitbitj64jDES加密弃bit选bitj64j1P1Ckbitbitj64jDES加密弃bit选bitj64j2P2Ckbitbitj64jDES加密弃bit选bitj64jMPMCk2020/1/23应用密码学15(b)解密图3-12OFB模式示意图bitbitj64jDES加密弃bit选bitj64j1P1C)(移位寄存器IVkbitbitj64jDES加密弃bit选bitj64j2P2Ckbitbitj64jDES加密弃bit选bitj64jMPMCk2020/1/23应用密码学16OFB的特点传输过程中的比特错误不会被传播;??比CFB更易受到对消息流的篡改攻击。??每个分组都使用相同的密钥;将加密算法输出的最高j位反馈到移位寄存器;2020/1/23应用密码学17IDEA算法一、设计原理明文:64比特,密文:64比特,密钥:128比特1、密码强度算法的强度主要通过有效的混淆和扩散来实现。混淆的3种运算(两个16比特输入,一个16比特输出)逐比特异或,表示为模162即(65536)整数加法,表示为,其输入和输出作为16位无符号位来处理。模1216(即65537)整数乘法,表示为,其输入,输出除16位全为0作为162处理外,都作为16位无符号数处理。。2020/1/23应用密码学18例如:000000000000000010000000000000001000000000000001这是因为12)12mod(1516151622这3种运算的任意两种都不满足分配率,例如abc()(ab)()bc这3种运算的任意两种都不满足结合率,例如abc()(ab)c这3中运算结合起来使用可对算法的输入提供复杂的变换,从而使得对IDEA的密码分析比仅使用异或运算的DES更安全。2020/1/23应用密码学19XYXYXYXY000000000101000210000311101000101101101210101311210000210101210210210311311000311101311210311311表3-6IDEA中的3种运算(2比特数)模模?2020/1/23应用密码学201F2F5Z6Z1G2G图3-14MA结构2、实现软件软件采用16比特子段处理,可通过使用容易编程的加法、移位等运算实现3种运算。硬件由于加解密相似,差别仅为密钥的使用方式,因此可使用同一器件实现。算法的模块结构可方便VLSI的实现。扩散由乘加(MA)结构实现,如图3-14所示。该结构的输入是两个16比特的子段和两个16比特的子密钥,输出也是两个16比特的子段。这一结构在算法中重复使用了8次。2020/1/23应用密码学21补充:集成电路IC,集成电路IC(InterrgratedCircuit),是将晶体管、电阻、电容、二极管等电子组件整合装至一芯片(chip)上,由于集成电路的体积极小,使电子运动的距离大幅缩小,因此速度极快且可靠性高,集成电路的种类一般是以内含晶体管等电子组件的数量来分类。•SSI(小型集成电路),晶体管数10~100•MSI(中型集成电路),晶体管数100~1,000•LSI(大规模集成电路),晶体管数1,000~10,0000•VLSI(超大规模集成电路),晶体管数100,000~2020/1/23应用密码学22二、加密过程加密过程(如图3.15所示)由连续的8轮迭代和一个输出变换组成。①算法将64比特的明文分组分成4个16比特的子段,每轮迭代以4个16比特的子段作为输入,输出也为4个16比特的子段。②最后的输出变换也产生4个16比特的子段,链接起来后形成64比特的密文分组。③每轮迭代还需使用6个16比特的子密钥,最后的输出变换需使用4个16比特的子密钥,所以子密钥总数为52。图3.15的右半部分表示由初始的128比特密钥产生52个子密钥的子密钥产生器。2020/1/23应用密码学23图3.15IDEA的加密框图2020/1/23应用密码学241.轮结构图3.16是IDEA第1轮的结构示意图,以后各轮也都是这种结构,但所用的子密钥和轮输入不同。从结构图可见,IDEA不是传统的Feistel密码结构。每轮开始时有一个变换,该变换的输入是4个子段和4个子密钥,变换中的运算是两个乘法和两个加法,输出的4个子段经过异或运算形成了两个16比特的子段作为MA结构的输入。MA结构也有两个输入的子密钥,输出是两个16比特的子段。2020/1/23应用密码学25图3.16IDEA第1轮的轮结构2020/1/23应用密码学26最后,变换的4个输出子段和MA结构的两个输出子段经过异或运算产生这一轮的4个输出子段。注意,由X2产生的输出子段和由X3产生的输出子段交换位置后形成W12和W13,目的在于进一步增加混淆效果,使得算法更易抵抗差分密码分析。2020/1/23应用密码学27算法的第9步是一个输出变换,如图3.17所示。它的结构和每一轮开始的变换结构一样,不同之处在于输出变换的第2个和第3个输入首先交换了位置,目的在于撤销第8轮输出中两个子段的交换。还需注意,第9步仅需4个子密钥,而前面8轮中每轮需要6个子密钥。2020/1/23应用密码学28图3.17IDEA的输出变换2020/1/23应用密码学292.子密钥的产生加密过程中52个16比特的子密钥是由128比特的加密密钥按如下方式产生的:①前8个子密钥Z1,Z2,…,Z8直接从加密密钥中取,即Z1取前16比特(最高有效位),Z2取下面的16比特,依次类推。②加密密钥循环左移25位,再取下面8个子密钥Z9,Z10,…,Z16,取法与Z1,Z2,…,Z8的取法相同。③这一过程重复下去,直到52子密钥都被产生为止。2020/1/23应用密码学303.解密过程解密过程和加密过程基本相同,但子密钥的选取不同。解密子密钥U1,U2,…,U52是由加密子密钥按如下方式得到(将加密过程最后一步的输出变换当作第9轮):2020/1/23应用密码学311.第i(i=1,…,9)轮解密的前4个子密钥由加密过程第(10-i)轮的前4个子密钥得出:①其中第1和第4个解密子密钥取为相应的第1和第4个加密子密钥的模216+1乘法逆元。②第2和第3个子密钥的取法为:当轮数i=2,…,8时,取为相应的第3个和第2个加密子密钥的模216加法逆元。i=1和9时,取为相应的第2个和第3个加密子密钥的模216加法逆元。2.第i(i=1,…,8)轮解密的后两个子密钥等于加密过程第(9-i)轮的后两个子密钥。2020/1/23应用密码学32图3.18IDEA加密和解密框图2020/1/23应用密码学33小结:1、分组密码的四种工作模式ECBCBCCFCOFB2、IDEA设计原理加密、加密子密钥的生成解密、解密子密钥的生成复习思考题:p74第6题#本次课完#