《密码算法设计与实现.ppt》由会员分享,可在线阅读,更多相关《密码算法设计与实现.ppt(59页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、安全程序设计方法安全程序设计方法密码算法设计与实现密码算法设计与实现黄玉划黄玉划问题问题点加/解密,可生成一个新文件(有默认目录和名称,可更改)。如果消息校验失败,则输出解密失败信息,不会生成新文件。问题分析问题分析加密加密n我们用EA、DA和AA分别表示加密算法、解密算法和数据认证算法,则加密过程如图所示,可表示为:n(1)校验值ICV=AA(P,Ka,IV);n(2)密文C=EA(K,IV,P|ICV)问题分析问题分析加密加密(续续)n上图中,IV一般为计数器,功能是抗重放攻击,对于相同的明文和密钥,每次可以加密成不同的密文。数据认证算法AA的功能是检测密文是否被篡改,保证数据的完整性完整
2、性,即消息的接收者能够验证在传送过程中消息没有被修改,入侵者不能用假消息代替合法消息。认证密钥Ka与加密密钥K可相同,也可不相同。问题分析问题分析解密解密n解密过程根据加密套件选择相应的解密算法,如图所示,可表示为:(1)P|ICV=DA(K,IV,C);n(2)认证码MAC=AA(P,Ka,IV);n(3)MAC=ICV?密码算法选择密码算法选择n(1)加密算法(流密码算法、分组密码算法流密码算法、分组密码算法、公钥密码算法)实现保密性;n(2)数据认证算法(分组密码算法的认证模式、分组密码算法的认证模式、CRC、单向、单向Hash函数函数、数字签名算法)保证完整性(消息真实性)。密码算法具
3、体选用密码算法具体选用n1分组密码算法:AES、SHACAL2、DES、IDEA、MISTY1、Camellia、RC6n2分组密码模式:CBC+PXOR(或或CRC)、ECB(或或CTR或或OFB)+CBC-MAC、OCB、PMAC、RMAC、XCBCn3流密码算法和PRNG(与CBC-MAC结合):RC4、SEAL、A5、ANSI X9.17(基于3DES)、G-SHA-1n4CRC-32n5单向Hash函数(备用):SHA1、SHA256、Whirlpool、RIPEMD160、SHA384、SHA512、HMAC、UMAC、T-T-MAC、MD51分组密码算法分组密码算法n1.0概述概
4、述n1.1DES(数据加密标准数据加密标准)算法算法n1.2IDEA(国际数据加密算法国际数据加密算法)n1.3AES(Rijndael)算法算法n1.4NESSIE候选分组密码算法候选分组密码算法1.0 分组密码算法概述分组密码算法概述n美国的第一代分组密码算法标准是DES算法,也是一个早期的国际标准;第二代标准是AES算法。欧洲的第一代分组密码算法标准是IDEA算法,新标准是日本人Eisaku Takeda设计的MISTY1算法、Shiho Moriai和Mitsuru Matsui设计的Camellia算法、以及法国人Helena Handschuh和David Naccache设计的S
5、HACAL2算法。n日本在分组密码算法领域的研究非常活跃,向NESSIE提交了5个分组密码算法,是递交数量最多的国家。Camellia算法也是日本的分组密码算法标准,据说某些性能超过了AES 算法。第三代移动通信系统3GPP的标准加密算法KASUMI是MISTY1算法的变种。n巴西在分组密码算法领域的研究也比较活跃,向NESSIE提交了3个分组密码算法,其中,Paulo S.L.M.Barreto和比利时人Vincen t Rijmen合作设计的Khazad算法是入围欧洲决赛的算法。在美国和欧洲新标准征集过程中,俄罗斯、加拿大、澳大利亚和韩国也提交了几个分组密码算法。n国内科研人员提出了几个分
6、组密码算法,性能还不错。1.1 DES算法算法有陷门?有陷门?nDES的半公开性:S盒的设计原理至今未公布,可能隐含有陷门(Hidden trapdoors)。n有趣的是,DES算法是由IBM公司设计的;当时的美国国家标准局(NSA)修改了S-盒设计,以确保IBM没有在算法中嵌入陷门,因为NSA没有理由相信IBM的研究成果,而他们不能绝对确定DES算法没有陷门,如果有陷门,将是他们失职,所以只好修改S-盒;而人们又怀疑NSA在DES算法中强加了弱点。1.2 IDEA(国际数据加密算法国际数据加密算法)nIDEA算法是欧洲的第一代分组密码算法标准,是由我国旅欧学者来学嘉和他的导师James Ma
7、ssey设计的,也是PGP的标准之一。该算法的设计原则是“来自于3个不同代数群的混合运算”,即异或、模216加、模216+1乘,这就使得IDEA算法易于软硬件实现。n在代数结构上,IDEA算法也不是一个群。该算法的软件实现速度是DES算法的2倍。Bruce Schneier认为,在早期的分组密码算法中,IDEA算法是最好和最安全的。1.3 AES(Rijndael)算法算法nDES算法的安全强度越来越满足不了技术发展的需要。为此,美国NIST于1997年开始制定AES(高级加密标准)算法以满足新时代的信息安全需求。1999年,NIST宣布已从15个候选算法中选出5个较好的算法:MARS,RC6
8、,Rijndael,Serpent,Twofish。2000年底,NIST最终确定采纳Rijndael算法作为AES算法。AES算法是由比利时的Joan Daemen和Vincent Rijmen设计的,经过全世界密码学者3年多的密集评估,被认为是安全的。由于评估过程公开,AES算法会有陷门的可能性很小。1.3 AES(高级加密标准高级加密标准)算法算法设计思路设计思路n通常,分组密码算法的结构是Feistel结构,不过AES算法使用了一种称为宽轨迹策略(WTS)的方法。n该算法有3条设计准则:抗所有已知的攻击;在多个平台上快速简洁地实现;设计简单。其分组长度为128位(Rijndael算法本
9、身的分组长度可以是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,Expan
10、dedKey);for(i=1;i 1)poly;else crc=crc 1;qcrcTab i=crc;n则CRC-32算法ICV=CRC-32(P)过程为:ncrc=0 xffffffff;nfor i=0 to len-1 crc=crcTab(crcPi)&0 xff(crc 8)&0 x00ffffff;nICV=crc0 xffffffff;5单向单向Hash函数函数n5.0 概述n5.1 早期的Hash函数n5.2 HMAC(带密钥的Hash函数)n5.3 新一代Hash函数n5.4 国产Hash函数5.0 单向单向Hash函数概述函数概述n散列(Hash)函数又称为杂凑函数,
11、或音译为哈希函数。单向散列函数的早期国际标准有SHA-1(美)、RIPEMD-160(欧)等算法,现在NIST又增加了三个标准算法(SHA-256,SHA-384,SHA-512)。带密钥的散列函数(HMAC)是MAC(消息认证码)算法的一种。HMAC的美国标准是HMAC-MD5和HMAC-SHA-1算法。欧洲的单向散列函数新标准是比利时人Paulo Barreto和Vincent Rijmen设计的Whirlpool算法;欧洲的MAC新标准是Ted Krovetz,John Black,Shai Halevi,Hugo Krawczyk和Phillip Rogaway合作设计的UMAC算法以
12、及德国人Bert de Boer和Bart Van Rompay设计的Two-Track-MAC算法。n我国学者王小云等已相继破译了MD4、MD5、HAVAL-128、RIPEMD-128、SHA-0和SHA-1等散列函数,被认为是密码学界近年来“最具实质性的研究进展”。国内科研人员提出了一些单向散列函数和MAC算法。5.1 早期的早期的Hash函数函数n单向散列函数的早期国际标准有SHA-1(美)、RIPEMD-160(欧)等算法。n早期的单向散列函数中,欧洲的RIPEMD-128算法是MD4算法的一种变型;HAVAL算法是MD5算法的改进版本。n我国学者王小云等已成功攻破了MD4、MD5、
13、HAVAL-128、RIPEMD-128,在数小时内就可以找到MD5的碰撞,被认为是密码学界近年来“最具实质性的研究进展”;“能在任何初始值下用240次Hash运算找出SHA-0的碰撞,并且有望以更低的复杂度完成对SHA-0的攻击”。随后,王小云等又攻破了SHA-1算法。5.2 HMAC(带密钥的带密钥的Hash函数函数)n定义HMAC需要一个散列函数H和一个密钥K。我们用T来表示数据的分组长度(假设散列函数的分组长度T=64 B),用m来表示散列函数的输出长度(MD5中m=16 B,SHA1中m=20 B)。密钥长度可以是小于等于分组长度的任何正整数值。应用程序中使用的密钥长度若是比T大,则
14、首先用使用散列函数H作用于它,然后用H输出的m长度字符串作为在HMAC中实际使用的密钥。一般情况下,推荐的最小密钥长度是m个字节(与H的输出数据长度相等)。5.2 HMAC(续)(续)n令ipad为字节0 x36重复T次,opad为字节0 x5C重复T次。则输入数据text的HMAC值为n H(Kopad)|H(Kipad)|textn用于HMAC的密钥可以为任意长度(比T长的密钥将首先被H处理)。但当密钥长度小于m时的情况是非常令人担心的,因为这样将降低函数的安全强度。长度大于m的密钥是可以接受的,但是额外的长度并不能显著的提高函数的安全强度。5.3 新一代新一代Hash函数函数n(1)SH
15、A2(FIPS PUB 180-2)算法)算法n包括3个算法:SHA-256、SHA-384和SHA-512。n(2)NESSIE候选散列函数与候选散列函数与MAC算法算法nNESSIE共收到1个散列函数(比利时人Paulo Barreto和Vincent Rijmen设计的Whirlpool算法)和2个MAC(德国人Bert de Boer与Bart Van Rompay设计的Two-Track-MAC算法,Ted Krovetz,John Black,Shai Halevi,Hugo Krawczyk与Phillip Rogaway设计的UMAC)算法,均被采纳为欧洲标准。5.3 新一代新
16、一代Hash函数函数(2)NESSIE候选候选Hash函数与函数与MAC算法算法nWhirlpool算法算法是一个输出长度m=64 B,输入长度L 2256 b的散列函数。其整体结构为Miyaguchi-Preneel结构,可以运行在8 b和64 b的处理器上,即不依赖于具体的工作平台。Whirlpool算法基于一个内部分组密码,密钥和分组长度为T=64 B。轮函数和密钥编排都是根据宽轨迹策略设计的。nTwo-Track-MAC算法算法为迭代结构,基于带密钥的RIPEMD-160,密钥和输出MAC值都是20 B。不带密钥的RIPEMD-160在其压缩函数中采用了双轨迹结构。双轨迹的作用是交换上
17、一个消息分组;采用反馈使两个轨迹不可逆。通过组合最后一次迭代后两个轨迹的值得到最后的MAC值。nUMAC算法算法。该算法的核心是一个通用的散列函数。散列函数处理消息和密钥,产生一个固定长度的散列值,该值与伪随机函数的输出进行异或,得到消息的认证标签,即nAuthTag=H(Key1,Msg)F(Key2,Nonce)n其中,Nonce是个18 B的随机数。5.4 国产国产Hash函数函数n(1)基于三重分组链接的散列函数(HTBC)n(2)基于三重分组的并行散列函数(PHTB)nHTBC算法的速度比SHA-1快5%左右;PHTB算法的串行速度比SHA-1慢一点,比MD5和SHA2快。PHTB算
18、法有一定的特色,因为现有的无陷门单向散列函数都是迭代算法,而PHTB算法可并行处理。5.4 国产国产Hash函数函数安全性安全性n传统单向散列函数一般由压缩函数f 迭代构成:Yi=f(Pi,Yi-1)。这是个Markov过程,其当前迭代值Yi只与当前分组消息Pi和上一次的迭代值Yi-1有关。压缩函数f 存在多对一映射,即存在两个不同的消息,其前i-1组消息P*和P迭代结果相同,则对任意消息Q,消息(P*|Q)和(P|Q)最终的散列值相同;也就是说,常用单向散列函数都是局部散列的,并非全局杂凑的。nHTBC和PHTB算法不存在这种确定的规律,因为其每组计算值Yi都与整个消息P有关;也就是说,HT
19、BC和PHTB是全局散列的。从这个角度而言,HTBC和PHTB的安全性比常用单向散列函数高。n对HTBC和PHTB算法进行的大量统计测试结果都满足要求。作业作业n大作业:综合运用所学知识,设计、开发和实现一个文件加密软件系统。n上机作业:常用密码算法编程实现,并测试其速度。n1分组密码算法:AES、SHACAL2、MISTY1、Camellia、RC6。工作模式采用CBC+PXOR(或CRC-32)、ECB(或CTR或OFB)+CBC-MACn3流密码算法和PRNG(与CBC-MAC结合):RC4、SEALn4CRC-32n5单向Hash函数:SHA1、SHA256、Whirlpool、RIP
20、EMD160、SHA384、SHA512习题习题n1、网络系统安全机制的简单模型一般可分为两步:n(1)(身份身份)认证与密钥交换认证与密钥交换和(2)保密通信保密通信。n2、身份认证可分为两类:(1)对称对称认证(即常用的口令口令认证);(2)非对称非对称认证(基于数字签名数字签名算法)。n、(1)流密码算法、分组密码算法和公钥密码算法用于加解密加解密(保密保密);(2)分组密码算法的认证模式、单向Hash函数和数字签名算法用于消息消息认证认证(数据校验、窜改检测数据校验、窜改检测);Hash函数和公钥密码算法还可用于(身份身份)认证与密钥交认证与密钥交换换。n、(1)身份认证算法为信息安全
21、提供不可否认不可否认(抗抵赖,抗抵赖,身份真实身份真实)性;(2)加密算法为信息安全提供保密保密性;(3)数据认证算法为信息安全提供完整完整(数据真实数据真实)性。n5、对称算法(含Hash函数和PRNG)的基本设计思想是扩散扩散和混乱混乱。习题习题(续)(续)n6、非对称算法(公钥密码算法)的基本设计思想是计算复计算复杂性杂性和陷门单向函数陷门单向函数。n7、对称加密算法的处理过程一般分为两步:密钥编排密钥编排和数据加密数据加密。n8、产生流密码中的密钥流的一种主要工具是移位寄存器移位寄存器。n9、分组密码设计一般采用SP思想(S盒盒和置换运算置换运算P两种变换)(S盒盒实现混乱;置换运算置
22、换运算P实现扩散)和Feistel结构。n10、AES和Whirlpool算法是根据宽轨迹宽轨迹策略设计的。n11、在实际应用的混合密码系统中,公钥密码公钥密码(非对称非对称)算法用作身份认证和加密会话密钥,对称对称算法用于加密消息。n12、把公钥密码用于密钥分配解决了重要的密钥管理密钥管理问题。习题习题(续)(续)n13、为了节约时间,数字签名协议经常和单向单向Hash函数函数一起使用。并不对整个文件签名,只对文件的Hash值值签名。n14、密码统计测试方法的原理一般是假设检验假设检验。n15、对密码算法f,如果每一位输出依赖于每一位输入,则称f具有完备性完备性。n16、当密码算法f 的任意一位输入改变时,如果平均有一半的输出位改变,则称f具有雪崩效应雪崩效应。n17、当密码算法f 的任意一位输入改变时,如果每一位输出改变的概率为0.5,则称f 满足严格雪崩准则严格雪崩准则。n18、频率测试的目的是检验算法f 的输出是否服从均匀均匀分布。n19、什么是PKI?n20、PKI 的主要建设内容有哪些?n21、完整的PKI应用系统应包括哪些部分?谢谢!