Lecture05_对称密码体制_第1页
Lecture05_对称密码体制_第2页
Lecture05_对称密码体制_第3页
Lecture05_对称密码体制_第4页
Lecture05_对称密码体制_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、l学习要点:学习要点:理解对称密码体制的基本概念理解对称密码体制的基本概念理解分组密码原理理解分组密码原理掌握分组密码操作模式掌握分组密码操作模式掌握掌握DES和和AES两种典型的对称密码算法两种典型的对称密码算法l分组密码模型分组密码模型)(mFckl分组长度足够大分组长度足够大弱化明文的统计信息弱化明文的统计信息l密钥量足够大密钥量足够大 密钥确定置换的规模密钥确定置换的规模l密码变换足够复杂密码变换足够复杂 使攻击者除了采用穷举外,没有其他快捷破使攻击者除了采用穷举外,没有其他快捷破译方法译方法l扩散扩散就是将每一位明文的影响尽可能迅速地作用到较多就是将每一位明文的影响尽可能迅速地作用到

2、较多的输出密文位中去,以便隐藏明文的统计特性。的输出密文位中去,以便隐藏明文的统计特性。 l混乱混乱是指密文和明文之间的统计特性关系尽可能地复杂是指密文和明文之间的统计特性关系尽可能地复杂化。化。 l乘积密码乘积密码指依次使用两个或两个以上的基本密码,所得结果指依次使用两个或两个以上的基本密码,所得结果的密码强度将强于所有单个密码的强度的密码强度将强于所有单个密码的强度 是扩散和混乱两种基本密码操作的组合变换是扩散和混乱两种基本密码操作的组合变换l雪崩效应雪崩效应:输入(明文:输入(明文或密钥)即使只有很小或密钥)即使只有很小的变化,也会导致输出的变化,也会导致输出发生巨大变化的现象发生巨大变

3、化的现象l输入位有很少的变化,输入位有很少的变化,经过多轮变换以后导致经过多轮变换以后导致多位发生变化。即明文多位发生变化。即明文的一个比特的变化应该的一个比特的变化应该引起密文许多比特的改引起密文许多比特的改变变1(1,2, )iiLRin11(,)(1,2, )iiiiRLF RKinl分组长度分组长度分组越长,安全性越高分组越长,安全性越高l密钥长度密钥长度密钥越长,安全性越高密钥越长,安全性越高l迭代轮数迭代轮数多轮可取得很高的安全性,一般选取多轮可取得很高的安全性,一般选取16轮轮l子密钥生成算法子密钥生成算法子密钥生成算法越复杂,密码分析越困难子密钥生成算法越复杂,密码分析越困难l

4、轮函数轮函数 轮函数越复杂,抗攻击的能力就越强轮函数越复杂,抗攻击的能力就越强l电子密码本(电子密码本(ECB, Electronic Code Book Mode)模式模式l密码分组链接(密码分组链接(CBC, Cipher Block Chaining Mode)模式)模式l计数器(计数器(CRT, Counter Mode)模式)模式l输出反馈(输出反馈(OFB, Output Feedback Mode)模式)模式l密码反馈(密码反馈(CFB, Cipher Feedback Mode)模式)模式l模式操作简单模式操作简单l明文中的重复内容将在密文中表现出来,明文中的重复内容将在密文中

5、表现出来,特别对于图像数据和明文变化较少的数特别对于图像数据和明文变化较少的数据据l适于短报文的加密传递适于短报文的加密传递l同同一个一个明文明文分组重复出现时产生分组重复出现时产生不同不同的的密文密文分组分组加密函数的输入是当前的明文分组和前一个加密函数的输入是当前的明文分组和前一个密文分组的异或;对每个分组密文分组的异或;对每个分组使用相同的密使用相同的密钥钥。将明文分组序列的处理连接起来了。每个明将明文分组序列的处理连接起来了。每个明文分组的加密函数的输入与明文分组之间不文分组的加密函数的输入与明文分组之间不再有固定的关系再有固定的关系l有助于将有助于将CBC模式用于模式用于加密长消息加

6、密长消息 l使用与明文分组规模相同的计数器长度使用与明文分组规模相同的计数器长度 l处理效率高(并行处理)处理效率高(并行处理)l预处理可以极大地提高吞吐量预处理可以极大地提高吞吐量l可以随机地对任意一个密文分组进行解可以随机地对任意一个密文分组进行解密处理,对该密文分组的处理与其它密密处理,对该密文分组的处理与其它密文无关文无关l实现的简单性实现的简单性l适于对实时性和速度要求较高的场合适于对实时性和速度要求较高的场合l安全性安全性抵抗攻击的能力、安全防护能力和密文的随机抵抗攻击的能力、安全防护能力和密文的随机性性l高效性高效性调用分组加密的次数、并行处理能力、存储空调用分组加密的次数、并行

7、处理能力、存储空间要求、初始化所需要的时间和预处理的能力间要求、初始化所需要的时间和预处理的能力l所能实现的功能所能实现的功能安全服务、灵活性、实现方面的脆弱性安全服务、灵活性、实现方面的脆弱性 l起源起源1973年美国国家标准局年美国国家标准局NBS征求国家密码标准征求国家密码标准方案,要求有以下几点:方案,要求有以下几点:安全安全公开(有完整的算法说明、容易理解、能为所公开(有完整的算法说明、容易理解、能为所有用户使用)有用户使用)能够经济有效的硬件实现能够经济有效的硬件实现能够得到批准能够得到批准可出口可出口1iiRL),(11iiiiKRFLR1615RR16151516(,)LLF

8、RK轮轮序序12345678910111213141516移移位位数数1122222212222221l优点:优点:密钥长度增加到密钥长度增加到112位或位或168位,可以有效克服穷举位,可以有效克服穷举搜索攻击;搜索攻击;相对于相对于DES,增强了抗差分分析和线性分析的能力;,增强了抗差分分析和线性分析的能力;具备继续使用现有的具备继续使用现有的DES实现的可能。实现的可能。l缺点:缺点:处理速度相对较慢,特别是对于软件实现。处理速度相对较慢,特别是对于软件实现。明文分组的长度仍为明文分组的长度仍为64位,就效率和安全性而言,位,就效率和安全性而言,与密钥的增长不相匹配。与密钥的增长不相匹配

9、。l19971997年年9 9 月月1212日:美国日:美国NISTNIST提出征集该算法的提出征集该算法的公告公告l1998 1998 年年8 8 月月20 20 日:日:NIST NIST 召开了第一次候选大召开了第一次候选大会,并公布了会,并公布了15 15 个候选算法个候选算法l19991999年年3 3月月2222日:日:NISTNIST从从1515个候选算法中公布个候选算法中公布了了5 5个进入第二轮选择:个进入第二轮选择:MARSMARS,RC6RC6,RijndaelRijndael,SERPENTSERPENT和和TwofishTwofishl20002000年年1010月月

10、2 2日:以安全性、性能、大小、实日:以安全性、性能、大小、实现特性为标准而最终选定了现特性为标准而最终选定了RijndaelRijndael算法算法l20012001年:正式发布年:正式发布AESAES标准标准 lRijndael 算法是由两位算法是由两位比利比利时的密码时的密码专家专家发明发明的,它很的,它很快快而且所而且所需需的内的内存存不多,这个算法非不多,这个算法非常可常可靠靠lRijndael 算法的算法的设设计计策略策略是是宽轨迹策略宽轨迹策略, 是是针针对对差差分分分分析析和线性分和线性分析提析提出来的,是一个分组出来的,是一个分组迭迭代密码,代密码,具具有可变的分组长度和密钥

11、长度有可变的分组长度和密钥长度l Rijndael 汇聚汇聚了安全性能、效了安全性能、效率、率、可实现性和可实现性和灵灵活活性等性等优点优点l字节代替SubBytesl列混淆MixColumnsl轮密钥加AddRoundKeyl行移位ShiftRows“三代替、一换位”l加法“+”:字节的按位异或运算l()+()()l其中,i0,1,7。01234567aaaaaaaa01234567bbbbbbbb01234567cccccccciciaibl是普通多项式乘法,但系数运算可看作比特的是普通多项式乘法,但系数运算可看作比特的乘法和异或运算,即看作域乘法和异或运算,即看作域0,1上的运算上的运算

12、 )(mod)()()()()(xmxbxaxbxaxc01223344556677)(axaxaxaxaxaxaxaxa01223344556677)(bxbxbxbxbxbxbxbxb01223344556677)(cxcxcxcxcxcxcxcxc1)(348xxxxxml(01110011)(10010101)l所以,(01110011)(10010101)(01110000) ) 1(1)(247456xxxxxxx1222232345678910111213xxxxxxxxxxxxx1238910111213xxxxxxxxx)() 1)(1(4563482345xxxxxxxxx

13、xx1)() 1mod()(mod34834888xxxxxmxxxxxxmx)()(01223344556677axaxaxaxaxaxaxaxxax)(mod)(021324354657687xmxaxaxaxaxaxaxaxa07axaxaxaxaxaxaxaxax0213243546576)(.)0()(0123456aaaaaaaxax17a1)()(mod)(mod348887xxxxxmxmxxmxa)(xax) 1(34xxx)(0213243546576xaxaxaxaxaxaxa(00011011)(xax)0(0123456aaaaaaaF(01110011)(10010

14、101)()(01110000),即(),即(73)(95)()(70) F(01110011)(10010101)(00000001)+(00000010)+(00010000)+(00100000)+(01000000) (10010101)F(00000001) (10010101) (00000010) (10010101) (00010000) (10010101) (00100000) (10010101) (01000000) (10010101)F(10010101) (00101010) (00011011) (00010000) (10010101) (00100000)

15、(10010101) (01000000) (10010101)F(10010101) (00110001) (10001000) (00011011) (00100000) (10010101) (01000000) (10010101)F(10010101) (00110001) (10010011) (00100110) (00011011) (01000000) (10010101)F(10010101) (00110001) (10010011) (00111101) (01111010)F(01110000)F(70)l查对数表:73=03(15),95=03 (16)则7395=

16、03 (15)03 (16)03(15)(16)03(2B) l查反对数表:03 (2B) 表示的域元素为70 说明739570 L(xy)y0123456789abcdefx000190132021ac64bc71b6833eedf0316404e00e348d81ef4c7108c8f8691cc127dc21db5f9b9276a4de4a6729ac909783652f8a05210fe12412f082453593da8e4968fdbbd36d0ce94135cd2f140468338566ddfd30bf068b62b325e2982288911067e6e48c3a3b61e4

17、23a6b2854fa853dba72b790a159b9f5eca4ed4ace5f373a7578af58a850f4ead6744faee9d5e7e6ade892cd7757aeb160bf559cb5fb09ca951a0a7f0cf66f17c449ecd8431f2da4767bb7bccbb3e5afb60b1863b52a16caa55299dc97b2879061bedcfcbc95cfcd373f5bd1d5339843c41a26d47142a9e5d56f2d3abe441192d923202e89b47cb8267799e3a5f674aeddec531fe180d

18、638c80c0f77007E(xy)y0123456789abcdefx00103050f113355ff1a2e7296a1f8133515fe13848d87395a4f702060a1e2266aa2e5345ce43759eb266abed97090abe631353f5040c143c44cc4fd168b8d36eb2cd44cd467a9e03b4dd762a6f108182878885839eb9d06bbddc7f8198b3ce49db769a6b5c457f9103050f00b1d2769bbd661a37fe192b7d8792adec2f7193aee92060a

19、08fb163a4ed26db7c25de73256fa153f419c35ee23d47c940c05bed2c749cbfda75a9fbad564acef2a7e829dbcdf7a8e8980b9bb6c158e82365afea256fb1c843c554cfc1f2163a5f407091b2d7799b0cb46cad45cf4ade798b8691a8e33e42c651f30ee12365aee297b8d8c8f8a8594a7f20d17f394bdd7c8497a2fd1c246cb4c752f601l方法:l除了00外所有的域元素都有逆ll如果,则,或用十六进制表示为

20、: ga 2551ga)()(1ffga 01255gl查对数表:95=03 (16)l其逆为:95-1=03 (ff)-(16)=03 (e9)l查反对数表:03 (e9) 8a 故95的逆为8a l是一个基于是一个基于S盒的非线性置换盒的非线性置换l映射方法:把输入字节的高映射方法:把输入字节的高4位作为位作为S盒的行值,低盒的行值,低4位位作为列值,然后取出作为列值,然后取出S盒中对应行和列的元素作为输出盒中对应行和列的元素作为输出 l步一:把S盒中的每个字节映射为它在有限域GF(28)中的乘法逆 l步二:01100011111110000111110000111110000111111

21、00011111100011111100011111100017654321076543210bbbbbbbbbbbbbbbbl“95”的乘法逆为“8a”,二进制表示为“10001010”l结果为“00101010”,十六进制表示为“2a” 0010101001100011010010010110001110001010111110000111110000111110000111111000111111000111111000111111000176543210bbbbbbbblInvCipher(byte in4*Nb, byte out4*Nb, word wNb*(Nr+1)lbegin

22、lbyte state4,Nblstate = inlAddRoundKey(state, wNr*Nb, (Nr+1)*Nb-1) lfor round = Nr-1 step -1 downto 1lInvShiftRows(state) lInvSubBytes(state) lAddRoundKey(state, wround*Nb, (round+1)*Nb-1)lInvMixColumns(state) lend forlInvShiftRows(state)lInvSubBytes(state)lAddRoundKey(state, w0, Nb-1)lout = statele

23、nd逆S盒y0123456789abcdefx052096ad53036a538bf40a39e81f3d7fb17ce339829b2fff87348e4344c4dee9cb2547b9432a6c2233dee4c950b42fac34e3082ea16628d924b2765ba2496d8bd125472f8f66486689816d4a45ccc5d65b69256c704850fdedb9da5e154657a78d9d84690d8ab008cbcd30af7e45805b8b345067d02c1e8fca3f0f02c1afbd0301138a6b83a9111414f67

24、dcea97f2cfcef0b4e673996ac7422e7ad3585e2f937e81c75df6ea47f11a711d29c5896fb7620eaa18be1bbfc563e4bc6d279209adbc0fe78cd5af4c1fdda8338807c731b11210592780ec5fd60517fa919b54a0d2de57a9f93c99cefea0e03b4dae2af5b0c8ebbb3c83539961f172b047eba77d626e169146355210c7d0011223344556677001001011100100100010010011101001

25、000010100100001010010100101000010010100bbbbbbbbbbbbbbbb l输入:输入:“2a” ,二进制表示,二进制表示“00101010”l仿射结果为仿射结果为“10001010”,十六进制表示为,十六进制表示为“8a”l再计算乘法逆:再计算乘法逆:“8a”在在GF(28)中的乘法逆)中的乘法逆为为“95” 100010100000010100101010010100100010100110010100010010100010010110010010010010011010010076543210bbbbbbbbl与行移位相反,逆行移位将态与行移位相反

26、,逆行移位将态State的后的后三行按相反的方向进行移位操作三行按相反的方向进行移位操作 lSSccccccccssssEDBBEDDBEDBEssss, 3, 2, 1, 0, 3, 2, 1, 0009000009000009090000E 47=(00001110)(01000111)(00000010) (00000100) (00001000) (01000111)l=(00000010) (01000111) (00000100) (01000111) (00001000) 01000111)l=(10001110) (00011100) (00011011) (00001000)

27、 (01000111)l=(10001110) (00000111) (00001110)l=(10000111)0B 37=(00001011) (00110111)=(00000001) (00000010) (00001000) (00110111)l=(00110111) (01101110) (10111000) (00011011)l=(11111010)0D 94=(00001101) (10010100)=(0000001) (00000100) (00001000) (10010100)l=(10010100) (01100110) (11001100)l=(00111110)09 ED=(00001001) (11101101)=(00000001) (00001000) (11101101

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论