收藏 分享(赏)

crypto4c-ch12-散列算法和MAC算法.ppt

上传人:scg750829 文档编号:7069799 上传时间:2019-05-05 格式:PPT 页数:43 大小:1.32MB
下载 相关 举报
crypto4c-ch12-散列算法和MAC算法.ppt_第1页
第1页 / 共43页
crypto4c-ch12-散列算法和MAC算法.ppt_第2页
第2页 / 共43页
crypto4c-ch12-散列算法和MAC算法.ppt_第3页
第3页 / 共43页
crypto4c-ch12-散列算法和MAC算法.ppt_第4页
第4页 / 共43页
crypto4c-ch12-散列算法和MAC算法.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、第12章 散列算法和MAC算法,12.1 安全散列算法 (SHA) 12.2 散列函数 Whirlpool 12.3 HMAC 12.4 CMAC,散列函数,消息摘要 Message digest 对于任意给定的消息,产生固定长度的散列值 函数特性 单向性 抗碰撞性(弱、强) 应用举例 代替CRC等 很多软件发行时文件的MD5校验,序列号识别 产生消息认证码 MAC,散列函数的典型结构,将输入的消息分为L个固定长度的分组,每个分组长为b位,不足时需填充,且最后一个分组包含输入的总长度。 重复使用压缩函数f,其输入是上一步的n位结果(称为链接变量)及当前处理的b位分组,输出一个n位分组。bn,称

2、为压缩。,散列算法的总体结构,MD5,近几年对散列算法的分析就是从MD5上获得突破的,MD5的抗强碰撞性被打破。但是MD5是目前仍广泛使用的散列算法,而且看起来抗强碰撞性的丢失对实用影响不大。 MD5算法是很多其他散列算法的前身,包括SHA-1。MD5算法将逐渐被取代,如SHA其它版本、WHIRLPOOL、RIPEMD-160。,MD系列,作者 Ronald Rivest RSA的设计者之一 MD2、MD4、MD5 1989年、1990年、1991年 应用 曾经是使用最广泛的消息摘要算法 但是散列值太短(128位) 而SHA有160位,MD5 结构,ABCD初值,MD5 细节,输入 任意长 输

3、出 128位 过程 填充在YL 消息填充1512位,使之 448 mod 512 填充64位长度值 填充后消息被划分成512位分组 初始寄存器(IV) (低端格式存储) A67452301 BEFCDAB89 C98BADCFE D10325476 分组处理 ,MD5 单个分组,输入128位512位 输出128位过程FGHI布尔函数T是常量表Xk为512位分组中的第k个32位字,常量表 Ti = 232abs(sin(i),T1 = D76AA478 T2 = E8C7B756 T3 = 242070DB T4 = C1BDCEEE T5 = F57COFAF T6 = 4787C62A T7

4、 = A8304613 T8 = FD469501 T9 = 698098D8 T10 = 8B44F7AF T11 = FFFF5BB1 T12 = 895CD7BE T13 = 6B901122 T14 = FD987193 T15 = A679438E T16 = 49B40821,T17 = F61E2562 T18 = C040B340 T19 = 265E5A51 T20 = E9B6C7AA T21 = D62F105D T22 = 02441453 T23 = D8A1E681 T24 = E7D3FBC8 T25 = 21E1CDE6 T26 = C33707D6 T27 =

5、 F4D50D87 T28 = 455A14ED T29 = A9E3E905 T30 = FCEFA3F8 T31 = 676F02D9 T32 = 8D2A4C8A,T33 = FFFA3942 T34 = 8771F681 T35 = 699D6122 T36 = FDE5380C T37 = A4BEEA44 T38 = 4BDECFA9 T39 = F6BB4B60 T40 = BEBFBC70 T41 = 289B7EC6 T42 = EAA127FA T43 = D4EF3085 T44 = 04881D05 T45 = D9D4D039 T46 = E6DB99E5 T47 =

6、 1FA27CF8 T48 = C4AC5665,T49 = F4292244 T50 = 432AFF97 T51 = AB9423A7 T52 = FC93A039 T53 = 655B59C3 T54 = 8F0CCC92 T55 = FFEFF47D T56 = 85845DD1 T57 = 6FA87E4F T58 = FE2CE6E0 T59 = A3014314 T60 = 4E0811A1 T61 = F7537E82 T62 = BD3AF235 T63 = 2AD7D2BB T64 = EB86D391,MD5 轮函数,四个函数真值表 b c d F G H I 0 0 0

7、 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0,MD5 安全性,特性 散列码(128b)的每一个比特是输入的每一个比特的函数 找两条碰撞消息的计算量是264(生日攻击) 找给定消息的碰撞的计算量是2128 攻击进展 2004年攻击成功 将被SHA的其它版本取代,12.1 SHA-1,SHA:Secure Hash Algorithm 作者 NIST 1993 FIPS PUB 180 SHA SHA-0 1995 FIPS PUB

8、 180-1 SHA-1修正版 2002 FIPS PUB 180-2 SHA-2 包括SHA-256/384/512 基于MD4,类似MD5,SHA-1 细节,输入 任意消息(264位) 输出 160位过程 填充消息、长度成512位分组 初始化寄存器ABCDE E = C3D2E1F0 分组处理 ,SHA-1 单个分组,512位/32=16字扩展至W80字每1/4用20字,分组512位 8032位,(从16个字扩展为80个字),SHA-1 轮函数,Si :循环左移 i 位K1(00-19)=5A827999 K2(20-39)=6ED9EBA1 K3(40-59)=8F1BBCDC K4(6

9、0-79)=CA62C1D6 (分别是),真值表 SHA f079,B C D f1(019)f2(2039)f3(4059)f4(6079) 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 1,比较 SHA-1/ MD5,散列值长度 MD5 128位 SHA-1 160位 安全性 SHA-1看来好些,但是SHA的设计原则没有公开 速度 SHA-1慢些 但 SHA-1使用高端格式存储,SHA-256/384/512,算法 消

10、息长度分组长度 字长度散列码长度安全性SHA-1 264 512 32 160 80SHA-256 264 512 32 256 128SHA-384 2128 1024 64 384 192SHA-512 2128 1024 64 512 256,SHA-512,输出512位,以1024位分组处理 寄存器初始值(8个64位的寄存器)a = 6A09E667F3BCC908b = BB67AE8584CAA73Bc = 3C6EF372FE94F82Bd = A54FF53A5F1D36F1e = 510E527FADE682D1f = 9B05688C2B3E6C1Fg = 1F83D9AB

11、FB41BD6Bh = 5BE0CD19137E2179,SHA-512 结构,SHA-512 总流程,附加填充位 填充消息使其长度模1024与896同余 填充由一个1和后续的0组成 附加长度 在上一步的基础上附加一个128位的块 其值为原始消息的长度 将填充后的消息分成 N 个1024位的分组,SHA-512 单个分组,函数F由80轮组成第0轮的输入是Hi-1,由消息导出的字W0 和附加常数 K0第 t 轮的输入是第t-1轮的输出,Wt 和 Kt第79轮的输出和Hi-1进行逐字模加运算后作为函数F的输出,SHA-512 轮函数,每一轮的处理过程,轮函数 输入:8个64位寄存器、64位的W、6

12、4位的K 输出:8个64位寄存器,SHA-512 字序列W的导出,12.2 Whirlpool,借鉴了AES内部的设计 和AES/Rijndael有相同的设计者 NESSIE认可的两个散列算法 Whirlpool SHA-2(SHA-256、SHA-384、SHA-512) 特性 每一分组512位/64字节 输出 512位,基于分组密码的散列函数的缺点,不利于随机化 因为加密是可逆的, 分组密码存在规则性 分组密码通常很慢 分组密码分组长度小于散列值长度 通常64位或128位 vs. 128/160/256/384/512Whirlpool的考虑,Whirlpool Overview,通用循环

13、散列结构Merkle,Whirlpool K Hi-1 FF PHi-1,Whirlpool 轮次,和AES比较,Whirlpool的安全性,较新而缺少经验和结论 所需硬件资源比SHA-12多,但同时也较快,12.3 HMAC,基于对称密码的MAC算法(CMAC) DES-CBC 基于散列函数的MAC算法(HMAC) 把散列值和密钥相结合 既能用当前的安全散列函数,又容易升级为新的散列函数,并能保持和散列函数一样的安全性 简单,容易进行密码分析,HMAC设计目标,不必修改而直接使用现有的散列函数 能很容易用新的散列函数替代原来嵌入的散列函数 保持散列函数的原有性能 对密钥的使用和处理应较简单

14、由嵌入的散列函数的安全性,可推出MAC函数抗密码分析的强度,HMAC 符号定义,H 嵌入的散列函数 IV 散列函数的初始向量 M 按散列函数填充后的消息 L 分组数 b 每个分组的长度 n 散列码的长度 K 密钥的长度若Kb,则将K经过散列函数生成n位密钥 K+ 将K填充为b位后的结果 ipad 00110110(36H)重复b/8次的结果 opad 01011100(5CH)重复b/8次的结果,HMAC,HMAC 算法流程,在K左边填充0,得到b位的K+ K+与ipad进行按位异或得到b位的分组Si 利用散列函数对Si|M产生n位散列码 将上一步得到的散列码填充成b位 K+与opad进行按位

15、异或得到b位的分组So 利用散列函数对So|H(Si|M)产生n位散列码 HMAC(K,M) = H (K+opad) | H(K+ipad)|M ,优化实现HMAC,适合同一个密钥产生多条短消息的MAC值的情况,HMAC 的安全性,攻击加密算法 (如果有使用加密算法) 攻击散列函数 单向 找碰撞消息 / 与散列码长度有关 生日攻击 / 不能离线进行 攻击使用方法 不正确的实现和使用方式,12.4 CMAC,FIPS-113(K1/K2由K衍生),小结,对MD5算法的成功攻击是近几年密码学的主要进展之一。目前,MD5算法的抗强碰撞性被否决,但是抗弱碰撞性仍保持,因此对实际应用的影响还不大,但是对MD5的信任已经动摇,设计新的散列算法的行动已经开始。当前倾向使用更长散列值的算法,如SHA-256和SHA-512等。 可能难以设计既满足抗强碰撞性,又保持较快速度的Hash算法。,

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

当前位置:首页 > 网络科技 > 数据结构与算法

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


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

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

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