《现代密码学原理与实践》课件第3章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《现代密码学原理与实践》课件第3章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代密码学原理与实践 现代 密码学 原理 实践 课件
- 资源描述:
-
1、第3章 分组密码第第3 3章章 分组密码分组密码3.1DES 3.2 IDEA373.3 AES41习题习题 3实践练习实践练习 3 第3章 分组密码 分组密码是将明文分成固定长度的一些段落(分组),在密钥作用下逐段进行加密的方法。这样做的好处是处理速度快,可靠性高,软(硬)件都能实现,而且节省资源,容易标准化。因此,分组密码得到了广泛的应用,同时也使分组密码成为许多密码组件的基础,比如MAC(消息认证码)系统。第3章 分组密码3.1DES 美国国家标准局1977年公布了由IBM公司研制的DataEncryptionStandard(DES)作为非机要部门的数据加密标准。它是迄今为止流行最广、
2、时间最长的加密算法,也是现代分组加密技术的典型。原规定使用期10年,然而10年来并未发现有任何攻击能够威胁到它的安全,且比它更好的标准尚未产生,所以直到20世纪90年代,它一直在延期使用。可见它是很成功的。此后产生的许多加密方法都直接或间接地受到了它的启发。第3章 分组密码3.1.1DES加密算法加密算法2 明文分组长64bit,m=m1,m2,,m64。密钥长56bit,加上每7bit一个奇偶校验位,共64bit。加密过程可表达为 DES(m)=IP-1T16T15T2T1IP(m)(3-1)1.置换与逆置换置换与逆置换 IP是初始置换,IP-1是逆置换,分别按表3.1的序号置换数据的bit
3、值。不难验证:IP*IP-1=IP-1*IP=1。第3章 分组密码表表3.1DES加密系统中的加密系统中的IP置换与逆置换表置换与逆置换表 第3章 分组密码 2.迭代加密运算迭代加密运算 将IP置换后的64bit明文分成两半,各32bit,分别进入加密器的左、右两个入口,先后经T1,T2,T16进行16轮迭代加密运算。每轮加密Ti流程如图3.1所示。其中,表示按位模2加;表示扩展与收缩函数 f(Ri-1,ki)。处理后:Li=Ri-1,Ri=Li-1 f(Ri-1,ki)(3-2)值得注意的是,在最后一轮加密后,左、右两半不再交换位置。3.扩展与收缩函数扩展与收缩函数 (Ri-1,ki)函数的
4、具体结构如图3.2所示。第3章 分组密码图3.1 第i轮加密Ti流程图 第3章 分组密码图3.2 扩展与收缩函数(Ri-1,ki)的结构 第3章 分组密码 图3.2中符号的说明如下:(1)E为扩展变换,将32bit扩展为48bit,其方法是将信息的某些bit位重复:234545678989101112131213141516171617181920212021 2223242524252627282928293031321321 (2)表示48bit明文与48bit密钥模2加。(3)经S盒处理,将48bit数据变回32bit。48bit数据被分成8组,每组6bit,第i组为b1b2b3b4b5
5、b6,送入Si处理。Si是一个4行16列的表,6bit输入数据中,b1b6构成的二进制数给出行序号(0,1,2,3),b2b3b4b5构成的二进制数给出列序号(015)。查表得到015的十进制数,化为二进制就是4bit的输出数据(y0y1y2y3)。8个Si分表共输出32bit。S盒的结构如表3.2所示。(4)再经置换P,结束本轮加密,最终结果如表3.3所示。第3章 分组密码表表3.2 DES加密系统中的加密系统中的S盒数据对照表盒数据对照表 第3章 分组密码续表第3章 分组密码表表3.3 f(Ri-1,ki)函数中函数中P置换的重排列次序置换的重排列次序 第3章 分组密码 4.子密钥的产生子
6、密钥的产生 从原始的密钥出发,为16轮加密产生出16个不同的子密钥ki(i=1,2,3,16):(1)除去校验位(8、16、24、32、40、48、56、64位),并按PC-1重排,如表3.4所示。(2)C0,D0是左右各半,分别按图3.3所示的流程进行处理。(3)LSj是循环左移操作,移动位数因子密钥序号j而不同,由表3.5给出。(4)PC-2把左右两路数据合并,同时再次被重排次序,并且从56bit中选出48bit位(取掉了9、18、22、25、35、38、43、54位),作为子密钥输出,如表3.6所示。第3章 分组密码表表3.4 产生各轮子密钥时的产生各轮子密钥时的PC-1重排方式重排方式
7、 第3章 分组密码图3.3产生子密钥的流程图(只画出两个,其余相同)第3章 分组密码表表3.5 产生各轮子密钥时循环左移的位数产生各轮子密钥时循环左移的位数 表表3.6 输出输出48bit子密钥的各子密钥的各bit重排列次序重排列次序 第3章 分组密码 【例1】用密钥program对明文computer加密。解解:密钥和明文的ASCII码为 k=0111000001110010011011101100111011100100110000101101101(共56bit)m=0110001101101111011011010111000001110101011101000110010101110
8、010 明文经IP置换后得:L0=11111111101110000111011001010111 R0=0000000111111110000011010000011 密钥经PC-1分组置换后得:C0=1110110010011001000110111011 D0=1011010001011000100011100110 第3章 分组密码 各左移1位再通过PC-2变换得48bit子密钥:k=00111101100011111100110100110111001111110100100 R0(32bit)经E作用扩展为48bit:R0 =1000000000010111111111101000
9、0000110101000000011 再与k1相异或得:R0 k1 =101111011001100000110011101101111110101101001110 分成8组:101111,011001,100000,110011,101101,111110,101101,001110 第3章 分组密码 通过S盒后输出32bit:01110110001101000010011010100001 再经过P置换,这才得到(R0,k1)的结果:01110110001101000010011010100001然后与L0模2加,赋值给R1,同时原来的R0赋值给L1,完成第1轮加密。得到:L1=000
10、00000111111110000011010000011 R1=10111011100110001110100011001000如此循环加密16次,得到:L16=0101000101010000100000110111000 R16=01101001111111101010111000110011 DES的加密结果,每一比特都是明文m与密钥k的每一比特的复杂函数,明文或密钥每改变一个比特,都会对密文产生巨大影响。第3章 分组密码3.1.2解密算法解密算法 DES的解密十分简单,仍然使用加密一样的模块,次序倒过来就行了。这是因为:DES(m)=IP-1T16T15T2T1IP(m)若取DES-
11、1(c)=IP-1T1T2T15T16IP(c)(3-3)就有 DES-1(c)=DES-1DES(m)=IP-1T1T2T15T16IP IP-1T16T15T2T1IP(m)第3章 分组密码 首先,IPIP-1=1,中间IPIP-1相抵消后,两个T16相连。加密过程的T16处理前是L15R15,处理后 R16=L15 f(R15,k16),L16=R15再经解密过程的T16处理(见图3.4),得 L=R15 R=L15 f(R15,k16)f(R15,k16)=L15 (模2加时,两个相同的处理必抵消)两个T16处理前是L15R15,处理后仍得到L15R15,可见T16T16=1,同理,各
12、个 TiTi=1 i=1,2,3,16最后又是IPIP-1=1,于是 DES-1(DES(m)=m第3章 分组密码图3.4 T16T16=1的证明 第3章 分组密码3.1.3关于关于DES的安全问题的安全问题 1弱密钥 有个别密钥不适合于DES算法,比如使子密钥产生器中C0和D0为全0或全1的密钥,无论怎样循环移位都不变,致使16次迭代所用的子密钥不变,造成 T1=T2=T16,DESk(m)=(m)或写为 DESk(DESk(m)=m安全性就失去了保证。这样的密钥最好不用,它们叫做弱密钥,共4个,用十六进制表示,它们是:0101010101010101,1F1F1F1F1F1F1F1F,E0
13、E0E0E0E0E0E0E0,FEFEFEFEFEFEFEFE,1DESk第3章 分组密码1DESk 还有12个半弱密钥k和k,它们成对使 DESk(m)=(m)它们是:01FE01FE01FE01FE和FE01FE01FE01FE01,1FE01FE00EF10EF1和E01FE01FF10EF10E,01E001E001F101F1和E001E001F101F101,1FFE1FFE0EFE0EFE和FE1FFE1FFE0EFE0E,011F011F010E010E和1F011F010E010E01,E0FEE0FEF1FEF1FE和FEE0FEE0FEF1FEF1第3章 分组密码 2DE
14、S的安全性的安全性 DES由于未遇到敌手而超期服役,直到20世纪90年代,Shamir等人提出“差分分析法”,才对DES构成了理论上的威胁。后来的“线性逼近法”需要已知明文,且需要243=4.3981012对明密文,联合十多台工作站工作十多天才可以搜索到密钥。DES终于完成了它的历史使命,但它的思想还是值得借鉴的。分析表明,DES的薄弱之处不是算法,而是密钥太短,只有56bit,7个英文字符!为遍历法搜索提供了可能。3.1.4DES的变形的变形(改进改进)1三重加密方式三重加密方式 针对DES密钥太短的问题,提出了如图3.5所示的三重加密方式,使它的复杂度增加。第3章 分组密码图3.5两种三重
15、DES加密方式 第3章 分组密码 2密文分组连接方式密文分组连接方式(CBC)原来的做法是将明文分组加密后,把各组密文连接起来,称为电码本方式(ECB)。现改为第一组加密的结果,与第二组明文相加后再加密。一方面将此密文组输出,另一方面与下一组明文相加后再加密,作为下一密文分组,最后将各组加密结果链接,如图3.6(a)所示。3密文反馈方式密文反馈方式(CFB)如图3.6(b)所示,每块(分组)与前块送过来的加密结果相异或后,作为本块输出,并加密后送往下一级作同样的处理。4输出反馈方式输出反馈方式(OFB)如图3.6(c)所示,初始矢量被一次次地加密,分别与每块(分组)数据相异或后,作为本块输出,
16、这样,各块的密文就是相互独立的,不再相互影响。第3章 分组密码图3.6三种改进的DES加密方式(a)CBC方式;(b)CFB方式;(c)OFB方式 第3章 分组密码3.2IDEA 20世纪90年代,出现了很多优秀的加密算法,本节介绍其中三种。3.2.1IDEA算法算法2 IDEA(InternationalDataEncryptionAlgorithm,国际数据加密算法)是由中国学者朱学嘉博士和JamesMassey在1990年合作提出的,1992年完成。它的加解密运算速度都很快,无论是用软件实现,还是用硬件实现都不难,成为替代DES的优选算法之一。IDEA的密钥是128bit,而明文分组仍为
17、64bit,分成四个子块X1X2X3X4,各16bit,进行8轮循环迭代加密运算。每次加密的过程如图3.7所示。第3章 分组密码图3.7IDEA迭代加密运算原理 第3章 分组密码 图3.7中,表示模2加(异或);表示模216+1的乘法;表示模216的加法。是第一轮加密使用的六个子密钥,它们来自128bit密钥的顺序分组(每组16bit,共8组)的前六组。第二轮处理的算法相同,只是所用的子密钥不同,和 是第一轮子密钥取剩下的两个分组,则来自128bit密钥循环左移25位后再分成8组的前四个分组,而后四个分组留给第三轮子密钥的 ,和 则来自128bit钥再次循环左移25位之后的8个分组。如此下去,
18、直到第八轮迭代。第九轮不同于前八轮,不再需要 和 有关的迭代加密过程,实际上只有如图3.8所示的一步。最后将 连接起来即是密文。(1)1Z(1)6Z(2)1Z(2)2Z(2)3Z(2)6Z(3)1Z(3)4Z(3)5Z(3)6Z(9)5Z(9)6Z(9)1X(9)4X第3章 分组密码图3.8IDEA迭代加密的第九轮运算 第3章 分组密码 IDEA解密和加密算法相同,只是子密钥不同。加、解密的密钥如下:第3章 分组密码其中,Z-1是Z的模(216+1)的乘法逆元,-Z是Z的模216的加法逆元。由于IDEA的密钥长度是DES的一倍,所以用同样的方式攻击IDEA,所需工作量是DES的272=4.71
19、021倍。许多科研部门和军事部门对IDEA进行攻击测试,未见成功报道。【例2】密钥为computersecurity,对明文Tsinghua加、解密。解解:密钥和明文的ASCII码为 k=11000110111101101011011000001110(共816=128bit)m=00101010110011101001011001110110(共88=64bit)X1=(0111001101010100)2=29524(注意先输入的为低位,后输入的为高位)第3章 分组密码 =(0110111101100011)2=28515(注意高低位顺序)X1 =X1 mod(216+1)=2952428
20、515mod65537 =54091=(1101001101001111)2 X1 =(0110111001101001)2 (0111000001101101)2 =28265+28781mod65536=57046 =(1101111011010110)2 按算法迭代8次后,得密文:c=11011000001100110110100011010010(共88=64bit)当密钥k改变一位时,所得的密文有29位改变;当明文m改变一位时,所得的密文有31位改变。(1)1Z(1)1Z(1)1Z(1)1Z第3章 分组密码3.2.2NSSU NSSU是前苏联国家标准,密钥为256bit,迭代32次。
21、明文分成左右32bit,第i轮加密钥:Li=Ri-1,Ri=Li-1(Ri-1,ki)(3-4)ki是第i轮的子密钥。第i轮加密流程如图3.9所示。函数 f (Ri-1,ki)的定义是首先Ri-1与ki作模232的加法,即 S(Ri-1 ki)mod 232然后将S分成8组,每组4 bit,输入到8个S盒中。S盒的结构见表3.7。S盒的输入(i1,i2,i3,i4)与输出(j1,j2,j3,j4)的关系为 (j1,j2,j3,j4)=Sk(i1,i2,i3,i4)第3章 分组密码图3.9NSSU的第i次加密流程 第3章 分组密码表表3.7 NSSU的的S盒结构盒结构 第3章 分组密码 例如,第
22、1分组 (i1,i2,i3,i4)=(1001)2=9查S盒的第1行,有 S1(9)=11=(1011)2则 (j1,j2,j3,j4)=1011即 j1=1,j2=0,j3=1,j4=1又如,第7分组 (i1,i2,i3,i4)=(1101)2=13 第3章 分组密码 查S盒的第7行,有 S1(13)=8=(1000)2则输出为 j1=1,j2=0,j3=0,j4=0 S盒的全体输出为32 bit,循环左移11位后再与Li-1作 运算,即得Ri。子密钥的产生异常简单:将256 bit密钥分成8份,每份32bit,称为一个子密钥。每轮所用的密钥按表3.8从这8个子密钥中选取。第3章 分组密码表
23、表3.8 NSSU的子密钥选取的子密钥选取 第3章 分组密码3.2.3TEA TEA由英国剑桥大学的David.W和Roger.N提出,特点是加密速度极快,抗差分攻击能力强。TEA的明文为64bit,密钥为128bit,算法十分简单。它的迭代次数可变,32次很充分,16次足够,8次亦可行。算法如下:S1(初始化)明文分成v(0)和v(1)两部分,各32bit,赋值:yv(0),zv(1),Sum0,Delta9E3779B9 (十六进制数)密钥分成k(0),k(1),k(2),k(3)四部分,各32bit,且 ak(0),bk(1),ck(2),dk(3),n32 第3章 分组密码S2 若n0
展开阅读全文