收藏 分享(赏)

分组密码(全).ppt

上传人:精品资料 文档编号:9718434 上传时间:2019-08-27 格式:PPT 页数:154 大小:5MB
下载 相关 举报
分组密码(全).ppt_第1页
第1页 / 共154页
分组密码(全).ppt_第2页
第2页 / 共154页
分组密码(全).ppt_第3页
第3页 / 共154页
分组密码(全).ppt_第4页
第4页 / 共154页
分组密码(全).ppt_第5页
第5页 / 共154页
点击查看更多>>
资源描述

1、第四讲:分组密码,分组密码体制 代换置换网络 DES AES,2,分组密码的定义,分组密码(block cipher)是现代密码学中的重要体制之一,其主要任务是提供数据保密性 分组密码加解密速度较快 (对称密码特点) 现代分组密码发展非常快,技术较成熟(公开测评) ,使用广泛 其他密码算法设计领域有广泛应用,例如:可以用于构造伪随机数生成器、流密码、认证码和哈希函数等,3,所谓分组密码是将明文分成一组一组,在密钥的控制下,经过加密变换生成一组一组的密文。具体而言,分组密码就是将明文消息序列 划分成等长的消息组在密钥 的控制下按固定的加密算法一组一组进行加密,输出一组一组密文,4,分组密码加密解

2、密框图,5,分组密码的思想:将明文消息编码表示后的数字序列划分成长为n的组,各组分别在密钥k控制下变换成等长的输出数字序列。 在相同密钥下,分组密码对长为n的输入明文组所实施的变换是等同的,所以只需研究对任一组明文数字的变换规则。这种密码实质上是字长为n的数字序列的代换密码。,6,分组密码的定义,定义 一个分组密码体制(P, K, C, E, D),其中P=C=0,1l ;K=0,1t.加密变换: E:PKC, 当k K确定时,Ek为P C的一一映射.解密变换: D: CK P, 当k K确定时,Dk为C P的一一映射.Dk Ek=I,7,特点 明文、密文组长度为n,密钥长度为t,密钥量为2t

3、 密文中的任一位数字与该组明文所有的数字均有关 每组明文使用相同密钥加密 本质是0,1,2n-1集合上的自映射或置换,8,分组密码的发展历史,二十世纪之前的密码算法 算法、密钥保密 二十世纪之后的密码算法 Kerckhoffs假设:密码分析者已有密码算法及实现的全部详细资料.Kerckhoff假设蕴涵着密码的安全性完全依赖于密钥.,9,分组密码的发展历史,公开,民用 不存在陷门 足够的安全强度 标准化通信需求,10,分组密码的发展历史,1973年5月美国联邦政府提出征求在传输和存储数据中保护计算机数据的密码算法的建议; 1975年3月,美国国家标准局(NBS) 首次公布IBM公司提出的算法Lu

4、cifer中选; 1977年1月NBS正式向社会公布,采纳IBM公司设计的方案作为非机密数据的数据加密标准 (Data Encryption Standard). DES正式成为美国联邦政府信息处理标准,即FIPS-46标准,同年7月开始生效。 此后,每隔5年美国国家保密局(NSA)对DES作新的评估,并重新审定它是否继续作为联邦加密标准。,11,分组密码的发展历史,理论强度,97年$100000的机器可以在6小时内用穷举法攻破DES. 实际攻破的例子,97年1月提出挑战,有人利用Internet的分布式计算能力,组织志愿军连接了70000多个系统在96天后攻破. 这意味着随着计算能力的增长,

5、必须相应地增加算法密钥的长度。,12,分组密码的发展历史,1997年, 美国标准技术研究所(NIST)对DES进行再次评测并宣布:DES算法的安全强度已经不足以保障联邦政府信息数据的安全性, 所以NIST建议撤销相关标准. 同时, NIST开始征集新的数据加密标准-高级数据加密标准(Advanced Encryption Standard). 新算法的分组长度为128, 支持可变密钥长度128、192、256比特.,13,分组密码的发展历史,1999年,NIST从提交的15个候选草案中选取了5个优良的算法作为AES的候选算法:MARS、RC6、Rijndael、Serpent和Twofish,

6、 综合评价最终确定Rijndael算法为新的数据加密标准,2001年12月正式公布FIPS-197标准。 www.nist.gov/aes,14,分组密码的发展历史,欧洲于2000年1月启动了NESSIE工程, 该工程的目的是评价出包含分组密码, 流密码等在内的一系列安全, 高效和灵活的密码算法. 至2000年9月, 共征集到了17个分组密码算法, 同时将TDES和AES纳入了评估范围,并作为分组密码算法的评测基准. 经过3年2个阶段的筛选,最终确定下列算法为推荐的分组密码算法:MISTY-64、Camllia-128、AES-128和SHACAL-2。,15,分组密码的发展历史,日本政府在2

7、000年成立了密码研究与评估委员会(CRYPTREC)并参考欧洲NESSIE工程的作法对密码算法的安全性和效率等问题进行评估,以备政府使用. 2002年初步拟定了推荐算法的草案, 2003年3月确定了推荐算法名单, 其中分组密码算法包括:(1)分组长度为64比特的算法:CIPHERUNICORN-E、MISTY1和3-key-TDES.(2)分组长度为128比特的算法:Camellia、CIPHERUNICORN-A、Hierocrypt-3、SC2000和Rijndael128.,16,分组密码体制的设计准则一般包括以下内容: 1混乱原则 又称混淆原则,是指明文与密钥以及密文之间的统计关系尽

8、可能复杂化,使破译者无法推导出相互间的依赖关系,从而加强隐蔽性。 2扩散原则 扩散原则是让明文中的每一位(包括密钥中的每一位)直接和间接影响输出密文中的许多位,或者让密文中的每一位受制于输入明文以及密钥中的若干位,以便达到隐蔽明文的统计特性。(明文和密钥中任何一比特值得改变,都会在某种程度上影响到密文值的变化,以防止将密钥分解成若干个孤立的小部分,然后各个击破。)扩散和混淆是由Shannon提出的设计密码系统的两个基本方法,目的是抗击敌手对密码系统的统计分析。,分组密码体制设计准则,17,3迭代结构 选择某个较为简单的密码变换,在密钥控制下以迭代方式多次利用它进行加密变换,就可以实现预期的扩散

9、和混乱效果。,分组密码体制设计准则,18,分组密码算法的基本要求,分组长度足够大防止明文穷举法奏效 密钥量足够大 防止密钥穷举法奏效 密码变换足够复杂使对手除了用穷举法破译外,无其它捷径可走,有效对抗统计破译法,19,问题与对策,分组长度足够大:代换网络十分复杂,难以控制与实现 对策将分组划分为几个小段,分别设计这些小段的代换网络 密钥量足够大:密码系统十分复杂,同样难以控制与实现 对策概率加权法:设计多个子系统,使用时随机抽取乘积密码法:设计多个子系统,对明文多次加密 密码变换足够复杂:抗统计破译法的要求,难以简单实现 对策扩散法:将每1位明文和密钥数字的影响扩散到每1位密文数字混淆法:使密

10、文与明文、密钥的统计特性复杂化,揉面团,乘积密码,置乱主要实现扩散,非线性代换主要实现混淆,20,SP(替换-置换),S变换起到混淆的作用 P变换起到扩散的作用,21,保密系统的安全性分析 及分组密码攻击手段,攻击目的1. 完全破译:破译使用者的密钥例:备用钥匙2. 部分破译:恢复某些密文对应的明文例:猜测出某些特定格式的明文信函开头:DEAR *,22,保密系统的安全性分析 及分组密码攻击手段,攻击种类 被动攻击:守株待兔 1. 唯密文攻击:密码分析者有一个或更多的用同一个密钥加密的密文,通过对这些截获的密文进行分析得出明文或密钥. 2. 已知明文攻击:除待解的密文外,密码分析者有一些明文和

11、用同一个密钥加密这些明文所对应的密文.,23,保密系统的安全性分析 及分组密码攻击手段,主动攻击:主动出击,先发制人3. 选择明文攻击:密码分析者可得到所需要的任何明文所对应的密文,这些密文与待解的密文是用同一个密钥加密得来的.4. 选择密文攻击:密码分析者可得到所需要的任何密文所对应的明文,解密这些密文所使用的密钥与解密待解的密文的密钥是一样的.,24,保密系统的安全性分析 及分组密码攻击手段,攻击手段1. 穷举法:当分组长度n较小时,攻击者可以有效地穷举明文空间,得到密钥。2. 差分分析3. 线性分析4. 相关密钥5. 侧信道攻击 利用一些先验知识(如字典攻击),达到快速攻击的目的;攻击复

12、杂度小于穷举攻击,则理论有效,25,26,DES(Data Encryption Standard)算法一种用56位密钥来加密64位数据的方法。 发明人: IBM公司 W.Tuchman和C.Meyer. 基础: 1967年美国Horst Feistel提出的理论; 产生: 美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告,最终选定DES。,DES算法概述,27,DES技术特点分组加密算法:明文和密文为64位分组长度;对称算法:加密和解密除密钥编排不同外,使用同一算法;DES的安全

13、性不依赖于算法的保密,安全性仅以加密密钥的保密为基础;密钥可为任意的56位数,具有复杂性,使得破译的开销超过可能获得的利益;采用替代和置换的组合,共16轮;只使用了标准的算术和逻辑运算,易于实现,28,DES算法概述,明文和密文分组长度为64比特 算法包含两部分:迭代加解密和密钥编排 Feistel结构(加解密相似):加密和解密除密钥编排不同外, 完全相同(思考:1 为什么解密函数不是逆函数?2 为什么不用逆函数来解密) 密钥长度:56比特(DES的密钥空间:256),每7比特后为一个奇偶校验位(第8位),共64比特 轮函数采用混乱和扩散的组合,共16轮,29,DES算法概述,DES的基本工作

14、原理:用56位的密钥对64位长的数据块进行16轮加密处理由此得到64位长的密文。,30,31,32,DES算法的整体结构Feistel结构 DES算法的轮函数 DES算法的密钥编排算法 DES的解密变换,33,DES算法的整体结构Feistel结构,DES是从1975年被美国联邦政府确定为非敏感信息的加密标准,它利用56比特长度的密钥K来加密长度为64比特的明文,得到64比特长的密文. 1997年,由于计算机技术迅速发展,DES的密钥长度已经太短,NIST建议停止使用DES算法作为标准. 目前,二重DES和三重DES仍然广泛使用.,34,DES算法的整体结构Feistel结构,输 入,I P,

15、16轮迭代,I P-1,输出,密 钥 编 排,K1K16,思考:攻击者可以剥离IP置换和逆置换?,35,DES算法的整体结构Feistel结构,1. 给定明文,通过一个固定的初始置换IP来重排输入明文块P中的比特,得到比特串P0=IP(P)=L0R0,这里L0和R0分别是P0的前32比特和后32比特,初始置换IP,36,DES算法的整体结构Feistel结构,2. 按下述规则进行16次迭代,即1i16这里 是对应比特的模2加,f是一个函数(称为轮函数); 16个长度为48比特的子密钥Ki(1i16)是由密钥k经密钥编排函数计算出来的.,37,DES算法的整体结构Feistel结构,初始置换的逆

16、置换IP,3.对比特串R16L16使用逆置换IP-1得到密文C,即C=IP-1 (R16L16)。(注意L16和R16的相反顺序),38,分组密码的轮函数,函数f以长度为32比特串Ri-1作为第一输入,以长度为48比特串Ki作为第二个输入,产生长度为32比特的输出:,39,分组密码的轮函数,Ri-1,Ki,E (Ri-1),B1,B2,B3,B4,B5,B6,B7,B8,S1,S2,S3,S4,S5,S6,S7,S8,C1,C2,C3,C4,C5,C6,C7,C8,f (Ri-1 ,Ki),+,P,E,E扩展,密钥加,S盒代换,P置换,40,A=R(32 bits),J=K(48 bits),

17、E,E(A)为48 bits,+,B1 B2 B3 B4 B5 B6 B7 B8,S1,S2,S3,S4,S5,S6,S7,S8,C1 C2 C3 C4 C5 C6 C7 C8,P,32 bits F(A,J),B,写成8个6比特串,DES 的F函数,41,分组密码的轮函数,E扩展:Ri-1根据扩展规则扩展为48比特长度的串;,42,分组密码的轮函数,密钥加:计算 ,并将结果写成8个比特串,每个6比特,B=B1B2B3B4B5B6B7B8.,43,分组密码的轮函数,S盒代换:使用8个S盒S1S8. 每个Si是一个固定的4*16阶矩阵,其元素取015之间的整数. 给定长度为6的比特串,如Bj=b

18、1b2b3b4b5b6,Sj(Bj)计算如下:1) b1b6两个比特确定了Sj的行r的二进制表示(0r3),2) b2b3b4b5四个比特确定了Sj的列c的二进制表示(0c15),3) Sj(Bj)定义成长度为4的比特串的值Sj(r,c)。由此可以算出Cj=Sj(Bj),1j8.,44,45,分组密码的轮函数,P置换:长度为32比特串C=C1C2C3C4C5C6C7C8, 根据固定置换P(*)进行置换,得到比特串P(C).,46,DES中其它算法都是线性的,而S盒运算则是非线性的,S盒不易于分析,它提供了更好的安全性;所以,S盒是算法的关键所在。 提供了密码算法所必须的混淆作用; 改变S盒的一

19、个输入位至少要引起两位的输出改变;,47,P盒置换:P置换使得一个S盒的输出对下一轮多个S盒产生影响,形成雪崩效应:明文或密钥的一点小的变动都引起密文的较大变化,48,雪崩效应 Avalanche Effect明文或密钥的一比特的变化,引起密文许多比特的改变。如果变化太小,就可能找到一种方法减小有待搜索的明文和密文空间的大小。 如果用同样密钥加密只差一比特的两个明文:00000000000000000000000100000000000000000000003次循环以后密文有21个比特不同;16次循环后有34个比特不同。 如果用只差一比特的两个密钥加密同样明文:3次循环以后密文有14个比特不同

20、,16次循环后有35个比特不同,49,已知主密钥为64位(其中每个字节的第8位作为奇偶校验位)。略去奇偶校验位,DES的密钥由64位减至56位,对这56位密钥进行如下置换(置换选择1,pc-1)经置换后的56位密钥,被分成左右两部分,每部分28位。,子密钥生成,LR,PC1变换表,50,循环左移每轮中,这两部分分别循环左移l位或2位。下表给出了每轮移动的位数。,子密钥生成,51,压缩置换(也称为置换选择2 ,pc-2 ):将56位密钥压缩成48位。置换:例如,原第14位在输出时移到了第1位。压缩:第9、18、22、25以及第35、38、43、54均被略去。,子密钥生成,PC2变换表,52,子密

21、钥生成,53,DES算法的密钥编排算法,根据密钥K 来获得每 轮中所使 用的子密 钥Ki:,K,PC-1,C0,D0,C1,D1,C16,D16,LS1,LS1,LS2,LS16,LS2,LS16,PC-2,PC-2,K1,K16,54,PC-1(Permuted Choice): 负责取出由用户提供的56bits密钥(即去除第8,16,24,32,40,48,56,64位),并置换 将56bits分成左右两半,并分别存到C0和D0中 计算第i个子密钥ki (i=1,2,3,., 16) 将Ci-1和Di-1分别循环左移指定位数,对应的结果分别存到Ci和Di中 将Ci和Di整合后,进行压缩置换

22、(PC-2): 抛弃8位,得到48位的子密钥;并置换,2019/8/27,主讲: 赵洋 课程:信息安全概论,54,55,DES算法的密钥编排算法,1. 给定64比特密钥K,根据固定的置换PC-1来处理K得到PC-1(K)=C0D0,其中C0和D0分别由最前和最后28比特组成,56,DES算法的密钥编排算法,2. 对1i16, DES的每一轮中使用K的56比特中的48个比特,具体选取位置由下表确定,57,58,59,DES算法的密钥编排算法,3. 计算Ci=LSi(Ci-1)和Di=LSi(Di-1),且Ki=PC-2(CiDi),LSi表示循环左移两个或一个位置, 具体地, 如果i=1,2,9

23、,16就移一个位置,否则就移两个位置, PC-2是另一个固定的置换.,60,DES算法的密钥编排算法,61,初始置换IP和逆初始置换IP-1,初始置换IP 将64 bit明文的位置进行置换,得到一个乱序的64 bit明文组 而后分成左右两段,每段为32 bit,以L0和R0表示 逆初始置换IP-1。将16轮迭代后给出的64 bit组进行置换,得到输出的密文组。输出为阵中元素按行读得的结果。,62,初始置换IP和逆初始置换IP-1,IP置换表,IP-1置换表,63,DES的解密变换,DES的解密与加密一样使用相同的算法,它以密文y作为输入,但以相反的顺序使用密钥编排K16,K15,K1, 输出的

24、是明文x,为什么?,64,在经过所有的替代、置换、异或和循环移动之后,获得了这样一个非常有用的性质:加密和解密可使用相同的算法。 DES解密结构与其加密结构是对称相似的,使得能用相同的函数来加密或解密每个分组。二者的唯一不同之处是密钥的次序相反。这就是说,如果各轮的加密密钥分别是K1,K2,K3,K16,那么解密密钥就是K16,K15,K14,K1。为各轮产生密钥的算法也是循环的。密钥向右移动,每次移动位数为0,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1。,DES的解密变换,65,DES的解密变换,66,子密钥,子密钥,子密钥,IP,IP,子密钥,子密钥,子密钥,子密钥,DES

25、的解密变换,67,已知明文m=computer,密钥k=program,用ASCII码表示为:m=01100011 01101111 01101101 0111000001110101 01110100 01100101 01110010k=01110000 01110010 01101111 0110011101110010 01100001 01101101因为k只有56位,必须插入第8,16,24,32,40,48,56,64位奇偶校验位,合成64位。而这8位对加密过程没有影响。,DES举例,68,m经过IP置换后得到L0= 11111111 10111000 01110110 0101

26、0111R0= 00000000 11111111 00000110 10000011 密钥k通过PC-1得到C0= 11101100 10011001 00011011 1011D0= 10110100 01011000 10001110 0110 再各自左移一位,通过PC-2得到48位k1=00111101 10001111 11001101 00110111 00111111 00000110 R0(32位)经E作用扩展为48位,10000000 00010111 11111110 10000000 11010100 00000110,DES举例,69,再和k1作异或运算得到(分成8组)

27、101111 011001 100000 110011 101101 111110 101101 001110 通过S盒后输出位32比特,01110110 00110100 00100110 10100001 S盒的输出又经过P置换得到01000100 00100000 10011110 10011111 计算L1和R1结果是: 00000000 11111111 00000110 1000001110111011 10011000 11101000 11001000 迭代16次以后,得到密文:01011000 10101000 01000001 10111000 01101001 11111

28、110 10101110 00110011,DES举例,70,高级加密标准AES,美国国家标准和技术协会(NIST)征集并进行了几轮评估、筛选,才产生了高级加密标准(Advanced Encryption Standard,简称AES)。 1997年4月,NIST向全世界发起征集AES的活动,对AES的基本要求是:强度相当于三重DES、但应该比三重DES更有效、数据分组长度为128bit、密钥长度为128/192/256bit,而且能在全世界范围内免费使用 2000年10月,Rijndael算法最终被选择作为高级加密标准AES。Rijndael算法是由比利时的密码学家Joan Daemen和V

29、incent Rijmen设计的,算法的原型是Square算法。,71,1997年4月15日,美国ANSI发起征集AES(advanced encryption standard)的活动,并为此成立了AES工作小组。此次活动的目的是确定一个非保密的、可以公开技术细节的、全球免费使用的分组密码算法,以作为新的数据加密标准。1997年9月12日,美国联邦登记处公布了正式征集AES候选算法的通告。对AES的基本要求是: 比三重DES快、至少与三重DES一样安全、数据分组长度为128比特、密钥长度为128/192/256比特。,72,1998年8月12日,在首届AES候选会议(first AES ca

30、ndidate conference)上公布了AES的15个候选算法,任由全世界各机构和个人攻击和评论,这15个候选算法是CAST256、CRYPTON、E2、DEAL、FROG、SAFER+、RC6、MAGENTA、LOKI97、SERPENT、MARS、Rijndael、DFC、Twofish、HPC。1999年3月,在第2届AES候选会议(second AES candidate conference)上经过对全球各密码机构和个人对候选算法分析结果的讨论,从15个候选算法中选出了5个。,73,这5个是RC6、Rijndael、SERPENT、Twofish和MARS。2000年4月13日

31、至14日,召开了第3届AES候选会议(third AES candidate conference),继续对最后5个候选算法进行讨论。2000年10月2日,NIST宣布Rijndael作为新的AES。至此,经过3年多的讨论,Rijndael终于脱颖而出。(以安全性、性能、大小、实现特性为标准) 2001年:正式发布AES标准Rijndael 由比利时的Joan Daemen和Vincent Rijmen设计,算法的原型是Square算法。,74,75,76,77,Rijndael 算法是由两位比利时的密码专家发明的,它很快而且所需的内存不多,且算法非常可靠 Rijndael 算法的设计策略是针

32、对差分和线性分析提出来的,是一个分组迭代密码,具有可变的分组长度和密钥长度 Rijndael 汇聚了安全性能、效率、可实现性和灵活性等优点,78,破译时间,宇宙年龄1011年,79,AES的算法结构,采用Square结构,10/12/14轮迭代,80,AES的数据结构,按列填充,81,基本运算 字节代换SubBytes 行移位ShiftRows 列混合MixColumns 轮密钥加AddRoundKey,Square结构 (方形结构),有10/12/14轮迭代,AES的算法结构,82,采用乘积密码迭代,实现扩散与混淆。 每一轮都使用代换和混淆技术并行地处理整个数据分组。 无论是加密还是解密,除

33、了最后一轮少了列混合运算外,其它各轮都是按照相同顺序依次执行四种基本运算(解密时为四种基本运算的逆运算)。 解密算法完全是加密算法的倒推,加、解密原理清晰,便于理解。 和其它分组密码相同,轮密钥在解密时颠倒顺序使用。,AES结构特点,83,AES的加密过程,1AES的加密算法描述在AES中,将明文和密文长度固定为128bit,密钥长度可以使用128、192和256bit三者中的任意一种。明文及加密过程的中间结果都称为状态State,状态State被表示成矩阵,矩阵的每个元素是一个字节,并看成是有限域GF(28)中的一个元素,矩阵的行数为4,列数为Nb。密钥被表示成4行Nk列的矩阵,Nk等于密钥

34、长度比特数除以32,加密的轮数用Nr表示。当Nk等于4时,整个算法由10轮组成。每轮由4个变换模块组成,分别是:字节代换(ByteSub)、行移位(ShiftRow)、列混合(MixColumn)、密钥加(AddRoundKey),最后一轮略有不同,没有列混合。加密框图如图所示,84,AES加密算法框图,85,加密过程描述如下:,(1) 初始轮密钥加。给定一个明文M和种子密钥K0,将它们以矩阵排列并进行异或加法运算; (2) Nr-1轮迭代。对前Nr-1轮中的每一轮,用S盒进行一次字节代换操作(ByteSub);对代换的结果做行移位操作(ShiftRow);接着做列混合变换(MixColumn

35、);再进行AddRoundKey操作。轮迭代中的密钥Ki由种子密钥K0通过密钥扩展算法产生; (3) 最后一轮变换。在最后一轮中与前面各轮稍有不同,依次进行ByteSub、ShiftRow和AddRoundKey操作。,86,2加密轮变换,(1) 字节代换(ByteSub)字节代换ByteSub (State)是一个关于字节的非线性变换,可以使用S盒查表得到输出。AES定义了一个S盒,是由1616个字节组成的方形表,包含了8位值所能表示的256种可能的变换。对于已知的某一字节作为S盒的输入,把该字节的高4位作为行号,低4位作为列号,查表取出S盒中对应行列交叉点的元素作为输出。 例如,S(8C)

36、=64,S(B3)=6D。,87,字节代换示意图,88,利用S盒将中间态s中的每个字节非线性变换为另一个字节。 实现每个字节数据中各位的混淆。,89,90,【例】设当前的State为计算ByteSub (State)。 查表知S(51)=D1,S(67)=85,依次类推,所有字节查表完成可得,91,(2) 行移位(ShiftRow)在行移位变换中,状态矩阵State中的每一行将以字节为单位,循环左移不同的位移量。State的第一行保持不变,第二行循环左移一个字节,第三行循环左移两个字节,第四行循环左移三个字节。,92,行移位示意图,93,行移位运算ShiftRows,中间态s中各行的循环左移

37、第0行不移位 第1行循环左移1个字节 第2行循环左移2个字节 第3行循环左移3个字节。,行移位运算打乱了中间态s中各字节的位置关系,在功能上相当于置乱操作,可以实现扩散效果。,94,【例】设当前的State为计算ShiftRow (State) 按行移位变换方法可得,95,3) 列混合(MixColumn)列混合变换将State乘以一个固定的矩阵A,对State逐列进行变换,每一列中的每个字节被变换成一个新值,直到4列都变换完毕。相乘后得到的乘积矩阵,其中每个元素均是一行和一列中所对应元素的乘积之和。这里的乘法和加法都是定义在有限域GF(28)上的。,96,列混合运算示意图,97,【例】设当前

38、的State为计算MixColumn (State),98,99,100,(4) 密钥加(AddRoundKey) 密钥加是将轮密钥Ki简单地与状态State进行逐比特异或。【例】列混合后的结果Ai-1与轮密钥Ki分别为,求轮密钥加后的结果Ci。,101,密钥加运算示意图,102,3密钥扩展算法 由密钥扩展算法将种子密钥扩展成为扩展密钥的计算过程如下当种子密钥长度为128bit时,这里的Nk4,其中: temp=SubByte (RotByte (Wi-1) Rconi RotByte ( )表示循环左移一个字节,如W=(a0,a1,a2,a3),则RotByte (W)= (a1,a2,a3

39、,a0); SubByte( )是S盒的字节代换; Rconi为轮常数,103,【例】在AES加密算法中,假定种子密钥K0长度为128bit,它的值为 K0= 06 07 08 09 0A 0B 0C 0D 0E 0F 00 01 02 03 04 05 计算第一轮的子密钥K1的值。,其中 W0 = 06 07 08 09 W1 = 0A 0B 0C 0D W2 = 0E 0F 00 01 W3 = 02 03 04 05,104,根据密钥扩展算法可计算出 W4 = SubByte (RotByte (W3) Rcon1 W0 = SubByte(03 04 05 02) Rcon1 W0 =

40、 (7B F2 6B 77) (01 00 00 00) (06 07 08 09) = 7C F5 63 7EW5 = W1 W4 = (0A 0B 0C 0D) (7C F5 63 7E) = 76 FE 6F 73W6 = W2 W5 = (0E 0F 00 01) (76 FE 6F 73) = 78 F1 6F 72W7 = W3 W6 = (02 03 04 05) ( 78 F1 6F 72) = 7A F2 6B 77,105,AES算法的整个解密过程与加密过程类似,要依次完成:初始密钥加,Nr-1轮解密逆变换,最后一轮逆变换操作。解密轮变换使用前面加密轮变换的逆变换函数,解密

41、算法中的一轮与加密算法的一轮有类似的结构,依次进行逆字节代换,逆行移位,逆列混合和密钥加。 AES的解密算法完全由加密算法倒推而来。 与加密算法相比,主要的不同之处有两点。 四种基本运算用它们的逆运算取代。 轮密钥颠倒顺序使用。,AES的解密过程,106,InvByteSub ( )是ByteSub ()的逆变换,通过查表4-12逆S盒来实现。 InvShifRow( )是ShifRow()的逆变换,对State的各行进行一定量的循环移位(Nb=4)。 第0行不移位; 第1行循环右移1个字节; 第2行循环右移2个字节; 第3行循环右移3个字节。 InvMixColumn( )是MixColum

42、n( )的逆变换,可由如下矩阵乘法定义,107,AES算法举例,设明文分组长度和密钥长度均为128比特,则Nb=Nk=4,Nr=10。已知用16进制表示的输入信息和种子密钥信息分别如下:B32 43 f6 ad 88 5a 30 8d 31 31 98 a2 e0 37 07 34 K2b 7e 15 16 28 ae d2 a6 ab f7 15 88 09 cf 4f 3c1. 首先计算子密钥。 2. 求第一轮加密结果。其它各轮的加密结果可以依照上述方法计算。经10轮加密,最后得到密文,108,1) 该算法对密钥的选择没有任何限制,还没有发现弱密钥和半弱密钥的存在。 2) 可抗击穷举密钥的

43、攻击。因为AES的密钥长度可变,针对128/192/256bit的密钥,密钥量为2128/2192/2256,足以抵抗穷举搜索攻击。 3) 可抗击线性攻击,经4轮变换后,线性分析就无能为力了。 4) 可抗击差分攻击,经8轮变换后,差分攻击就无从着手了。 5) 目前尚未出现对完整Rijndael算法的成功攻击,只提出了几种针对简化算法的攻击方法,最有效攻击仍是密码设计者自己提出的Square攻击。,AES的安全性,109,110,AES算法算法概述,分组加密算法:明文(128/256比特)和密文分组(128/192/256比特)可变长度。 SPN结构:轮函数包含代换层-置换层-密钥混合层。 密钥

44、长度:128比特(AES的密钥空间:2128) 128比特:10轮.,111,无限局域网密码算法-SMS4,中国政府颁布的C0标准算法 分组加密算法:明文和密文分组长度128比特 结构:类似于hash的结构,基本操作单位32比特,112,DES算法只解决了如何对一个64比特的明文分组进行加密保护的问题,对于比特数不等于64的明文如何加密,并不关心。这个问题,就由分组密码的工作模式解决。,分组密码工作模式,114,分组密码工作模式,1. 电码本模式(ECB模式)2. 密码反馈模式(CFB模式)3. 密码分组链接模式(CBC模式)4. 输出反馈模式(OFB模式)5. 计数模式(CRT模式)6.技术

45、密码分组链接模式(CCM模式),分组密码的“工作模式”是指以某个分组密码算法为基础,解决对任意长度的明文的加密问题的方法。上述工作模式适用于不同的应用需求.,115,1电码本(ECB-Electronic Code Book)模式,ECB模式是将明文的各个分组独立地使用同一密钥k加密,如下图所示。,ECB模式的加、脱密框图,116,如果消息长于64比特,则将其分为长为64比特的分组,最后一个分组如果不够64比特,则需要填充。解密过程也是一次对一个分组解密,而且每次解密都使用同一密钥。如上图中,明文是由分组长为64比特的分组序列P1,P2,PN构成,相应的密文分组序列是C1,C2,CN。 ECB

46、的最大特性是同一明文分组在消息中重复出现的话,产生的密文分组也相同。 ECB用于长消息时可能不够安全,如果消息有固定结构,密码分析者有可能找出这种关系。 ECB在用于短数据(如加密密钥)时非常理想,因此如果需要安全地传递DES密钥,ECB是最合适的模式。,117,直接利用加密算法分别对分组数据组加密。 在给定的密钥下同一明文组总产生同样的密文组。这会暴露明文数据的格式和统计特征。明文数据都有固定的格式,需要以协议的形式定义,重要的数据常常在同一位置上出现,使密码分析者可以对其进行统计分析、重传和代换攻击。,118,典型应用:(1)用于随机数的加密保护;(2)用于单分组明文的加密。,优点:(1)

47、 实现简单;(2) 不同明文分组的加密可并行实施,尤其是硬件实现时速度很快. 缺点:不同的明文分组之间的加密独立进行,故保留了单表代替缺点,造成相同明文分组对应相同密文分组,因而不能隐蔽明文分组的统计规律和结构规律,不能抵抗替换攻击.,ECB模式的优、缺点和应用,119,敌手C通过截收从A到B的加密消息,只要将第5至第12分组替换为自己的姓名和帐号相对应的密文,即可将别人的存款存入自己的帐号。,例: 假设银行A和银行B之间的资金转帐系统所使用报文模式如下:,120,为了克服ECB的安全性缺陷,我们希望设计一个工作模式,可以使得当同一个明文分组重复出现时产生不同的密文分组。一个简单的方法是密码分

48、组链接,从而使输出不仅与当前输入有关,而且与以前输入和输出有关。,121,2密码分组链接(CBC-Cipher Block Chaining)模式,在CBC模式下,加密算法的输入是当前明文组与前一密文组的异或。记初始化向量IV为c0,则加密过程可表示为,CBC模式加密框图,解密时:每一个密文分组被解密后,再与前一个密文分组异或得明文,加密时:输入是当前明文分组和前一次密文分组的异或,122,每个明文组xi加密之前,先与反馈至输入端的前一组密文yi-1按位模2求和后,再送至加密算法加密。 各密文组yi不仅与当前明文组xi有关,而且通过反馈作用还与以前的明文组x1, x2, xi-1,有关。 从而使明文的统计规律在密文中得到了较好的隐蔽。,123,124,初始矢量IV,初始矢量IV(Initial Vector):第一组明文xi加密时尚无反馈密文,为此需要在寄存器中预先置入一个。收发双方必须选用同一个IV。 可为每个消息选择不同的IV,那么即使两个消息使用相同的密钥,也将有不同的密文。在CBC模式下,最好是每发一个消息,都改变IV,比如将其值加一。 同时,IV的安全性问题。使用ECB加密模式。,125,密码分组链接CBC模式,126,1. 明文块的统计特性得到了隐蔽。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报