资源预览内容
第1页 / 共59页
第2页 / 共59页
第3页 / 共59页
第4页 / 共59页
第5页 / 共59页
第6页 / 共59页
第7页 / 共59页
第8页 / 共59页
第9页 / 共59页
第10页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
安全程序设计方法密码算法设计与实现,黄玉划,问题,点加/解密,可生成一个新文件(有默认目录和名称,可更改)。 如果消息校验失败,则输出解密失败信息,不会生成新文件。,问题分析加密,我们用EA、 DA和AA分别表示加密算法、解密算法和数据认证算法,则加密过程如图所示,可表示为: (1)校验值ICV = AA (P, Ka, IV); (2)密文C = EA (K, IV, P | ICV),问题分析加密(续),上图中,IV一般为计数器,功能是抗重放攻击,对于相同的明文和密钥,每次可以加密成不同的密文。数据认证算法AA的功能是检测密文是否被篡改,保证数据的完整性,即消息的接收者能够验证在传送过程中消息没有被修改,入侵者不能用假消息代替合法消息。认证密钥Ka与加密密钥K可相同,也可不相同。,问题分析解密,解密过程根据加密套件选择相应的解密算法,如图所示,可表示为:(1)P | ICV = DA (K, IV, C); (2)认证码MAC = AA (P, Ka, IV); (3)MAC = ICV ?,密码算法选择,(1)加密算法(流密码算法、分组密码算法、公钥密码算法)实现保密性; (2)数据认证算法(分组密码算法的认证模式、CRC 、单向Hash函数、数字签名算法)保证完整性(消息真实性)。,密码算法具体选用,1分组密码算法:AES、SHACAL2、DES、IDEA、MISTY1、Camellia、RC6 2分组密码模式:CBC+PXOR(或CRC)、ECB(或CTR或OFB)+CBC-MAC、OCB、PMAC、RMAC、XCBC 3流密码算法和PRNG(与CBC-MAC结合):RC4、SEAL、A5、ANSI X9.17(基于3DES)、G-SHA-1 4CRC-32 5单向Hash函数(备用):SHA1、SHA256、Whirlpool、RIPEMD160、SHA384、SHA512、HMAC、UMAC、T-T-MAC、MD5,1分组密码算法,1.0概述 1.1DES(数据加密标准)算法 1.2IDEA(国际数据加密算法) 1.3AES(Rijndael)算法 1.4NESSIE候选分组密码算法,1.0 分组密码算法概述,美国的第一代分组密码算法标准是DES算法,也是一个早期的国际标准;第二代标准是AES算法。欧洲的第一代分组密码算法标准是IDEA算法,新标准是日本人Eisaku Takeda设计的MISTY1算法、Shiho Moriai和Mitsuru Matsui设计的Camellia算法、以及法国人Helena Handschuh和David Naccache设计的SHACAL2算法。 日本在分组密码算法领域的研究非常活跃,向NESSIE提交了5个分组密码算法,是递交数量最多的国家。Camellia算法也是日本的分组密码算法标准,据说某些性能超过了AES 算法。第三代移动通信系统3GPP的标准加密算法KASUMI是MISTY1算法的变种。 巴西在分组密码算法领域的研究也比较活跃,向NESSIE提交了3个分组密码算法,其中,Paulo S. L. M. Barreto和比利时人Vincen t Rijmen合作设计的Khazad算法是入围欧洲决赛的算法。在美国和欧洲新标准征集过程中,俄罗斯、加拿大、澳大利亚和韩国也提交了几个分组密码算法。 国内科研人员提出了几个分组密码算法,性能还不错。,1.1DES算法有陷门?,DES的半公开性:S盒的设计原理至今未公布,可能隐含有陷门(Hidden trapdoors)。 有趣的是,DES算法是由IBM公司设计的;当时的美国国家标准局(NSA)修改了S-盒设计,以确保IBM没有在算法中嵌入陷门,因为NSA没有理由相信IBM的研究成果,而他们不能绝对确定DES算法没有陷门,如果有陷门,将是他们失职,所以只好修改S-盒;而人们又怀疑NSA在DES算法中强加了弱点。,1.2 IDEA(国际数据加密算法),IDEA算法是欧洲的第一代分组密码算法标准,是由我国旅欧学者来学嘉和他的导师James Massey设计的,也是PGP的标准之一。该算法的设计原则是“来自于3个不同代数群的混合运算”,即异或、模216加、模216+1乘,这就使得IDEA算法易于软硬件实现。 在代数结构上,IDEA算法也不是一个群。该算法的软件实现速度是DES算法的2倍。Bruce Schneier认为,在早期的分组密码算法中,IDEA算法是最好和最安全的。,1.3 AES(Rijndael)算法,DES算法的安全强度越来越满足不了技术发展的需要。为此,美国NIST于1997年开始制定AES(高级加密标准)算法以满足新时代的信息安全需求。1999年,NIST宣布已从15个候选算法中选出5个较好的算法:MARS,RC6,Rijndael,Serpent,Twofish。2000年底,NIST最终确定采纳Rijndael算法作为AES算法。AES算法是由比利时的Joan Daemen和Vincent Rijmen设计的,经过全世界密码学者3年多的密集评估,被认为是安全的。由于评估过程公开,AES算法会有陷门的可能性很小。,1.3 AES(高级加密标准)算法设计思路,通常,分组密码算法的结构是Feistel结构,不过AES算法使用了一种称为宽轨迹策略(WTS)的方法。 该算法有3条设计准则:抗所有已知的攻击;在多个平台上快速简洁地实现;设计简单。其分组长度为128位 (Rijndael算法本身的分组长度可以是128、192或256位),密钥长度可以是128、192或256位,分别记为AES-128、AES-192和AES-256。对于AES-128,迭代轮数r =10+1;对于AES-192, r =12+1;对于AES-256, r = 14+1。AES算法过程可分为轮密钥编排和加密过程两个独立的部分。,1.3 AES算法加密全过程,加密全过程包括:轮密钥编排(扩展);轮密钥异或,前(r -1)轮迭代,一个结尾轮。即 Rijndael (State, CipherKey) KeyExpansion (CipherKey, ExpandedKey); AddRoundKey (State, ExpandedKey); for (i=1; i r ; i +) Round (State, ExpandedKey+Nb* i); FinalRound (State, ExpandedKey+Nb*Nr); ,1.3 AES算法加密流程,明文X,r轮迭代,密文Y,子密钥K0,Xi-1,字节代换,行移位,列混合,Ki-1,Xi,AES算法框图,一轮AES结构图,1.3 AES算法加密过程,其加密过程可分为三个步骤,用伪码表示为: 将轮密钥RoundKey与明文State异或 AddRoundKey(State,RoundKey); 对前r1轮中的每一轮进行相同的变换 Round(State,RoundKey) SubBytes(State);(用S盒对State的字节进行非线性变换) ShiftRow(State);MixColumn(State)(列线性混合); AddRoundKey(State,RoundKey);(轮密钥异或) 最后一轮变换:FinalRound(State,RoundKey) SubBytes(State);ShiftRow(State)(行循环移位); AddRoundKey(State,RoundKey); 最后的State即为密文。解密过程把加密过程完全反过来即可。,1.4NESSIE候选分组密码算法,共有17个分组密码算法参与NESSIE评选。2003年2月NESSIE公布了最终决选结果:过渡型的标准是日本人Eisaku Takeda设计的MISTY1算法,普通型的标准是AES算法和日本人Shiho Moriai与Mitsuru Matsui设计的Camellia算法,高级型的标准是法国人Helena Handschuh和David Naccache设计的SHACAL2算法。,1.4NESSIE分组密码算法(续),MISTY1:MISTY1算法公布6年来得到了广泛的研究,到目前为止尚未发现安全缺陷。该算法的性能很好且密钥编排算法非常快,其主要优点是具有抵抗差分和线性密码分析的能力,其主要缺点是比较复杂。 Camellia:Camellia算法在各个平台上的性能与AES相当。 SHACAL2:SHACAL2算法基于散列函数SHA-2,其分组长度为32 B,密钥长度为64 B。 RC6:值得一提的是,瑞典人Jakob Jonsson和美国人Burt Kaliski设计的RC6算法性能不错,入围了美国和欧洲分组密码算法评选决赛,最终未中选的原因和知识产权有关。,2分组密码模式,2.0概述 2.1电子码本(ECB)模式 2.2密码分组链接(CBC)模式 2.3输出反馈(OFB)模式 2.4计数器(CTR)模式 2.5并行消息认证码(PMAC)模式 2.6偏移码本(OCB)模式 2.7国产分组密码模式,2.0 分组密码模式概述,分组密码算法本身只定义了将一组明文加密成一组密文的变换,而实际应用中要加密和认证的数据长度远远大于一个分组,这就需要为分组密码算法选择工作模式,避免采用固定格式带来的安全隐患。分组密码模式包括加密模式、认证模式和认证加密模式。认证模式是一种陷门MAC算法。在分组密码模式领域,原来有4种标准工作模式:ECB、CBC、CFB和OFB。美国NIST在制定了AES标准之后,也在征集新的分组密码模式。NIST增加了一种新加密模式CTR和一种认证加密模式CCM (CTR with CBC-MAC),并推荐了一种新认证模式RMAC。,2.0 分组密码模式概述(续),IEEE 802.15.3型WPAN(无线个域网)、IEEE 802.11型WLAN(无线局域网)和IEEE 802.16型WMAN(无线城域网)已经采用CCM模式,HP支持CBC-MAC模式。埃及人Ahmed A. Belal和Moez A. Abdel-Gawad提交了一个有特色的模式(2DEM),适用于图象加密。 CBC模式有很多变体,实质上只是增加了一些进程,例如XCBC 和RMAC模式,其综合性能和CBC模式差不多。,2.0 分组密码模式概述(续),在现有的认证模式中,PMAC模式是一种并行认证模式,有其思想特色,其他认证模式一般未超出CBC-MAC模式的思想范畴;不过,PMAC模式的串行速度比CBC-MAC模式慢。 另外,P. Rogaway等提出的OCB模式是同时实现加密和认证的并行模式,也有其思想特色。 国内科研人员也提出了一些分组密码模式。 分组密码模式一般有3个输入参数:明文P、密钥K和初值IV。IV一般为计数器,或为不重复的伪随机数,功能是抗重放攻击。,2.0 分组密码模式概述(续),符号:1)C = EK (P)表示用密钥K把一组明文P加密成一组密文C; 2)P = DK (C)表示用密钥K把密文C加解成明文P; 3)分组长度为T;4)输出MAC长度为m比特; 5)明文分组个数为n;6)| 表示串联; 7)表示按位逻辑异或; 8)MSBm(Y )表示截取Y的前m比特; 9)最后一组明文长度为; 10)Pi表示明文P的第i个分组; 11)Pi表示明文P的第i个字节。,2.1电子码本(ECB)模式,ECB模式是个加密模式,是最简单的模式,它将明文数据划分为一个个的分组,各个分组独立地直接采用基本分组密码算法进行加解密,不必按次序进行,可并行处理,适合于加密随机存取的文件,如数据库。可见ECB模式实际上没有使用模式,这就存在巨大的不足,在密钥不变的情况下,相同的明文总是被加密成相同的密文,从而导致一系列安全问题,攻击者可以从重复的密文中判断出一个明文分组正在被多次使用。当这种重复相当多时,攻击者可以从重复出现的频次猜测明文的意义,这种方法对攻击通信协议中那
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号