哈希游戏- 哈希游戏平台- 哈希游戏官方网站
1、1第第7章章 认证理论与技术认证理论与技术 -Hash函数函数2上讲内容回顾上讲内容回顾n流密码(序列密码)的思想起源n流密码的分类n基于移位寄存器的流密码算法nRC4算法3本章主要内容本章主要内容n单向函数nHash函数的定义及发展现状nSHA-1算法nhash函数的用途n消息认证码简介nCBC-MAC算法nHMAC算法4定义定义.函数 若满足下列两个条件,则称之为强单向函数:1 计算 是容易的,即 是多项式时间可计算的;2 计算 函数的逆 是困难的,即对每一多项式时间概率算法 ,每一多项式 和充分大的 有单向函数单向函数:0,1*0,1*f()fx()fxf1()fxM()p n0()n
2、nn1Pr()()1/()nnMf Uff Up n5单向函数单向函数(,)*,f x yxyxy注.1 可能有少量x给出的f(x)可用多项式时间概率算法求逆;2 单向函数的存在性没有理论上的证明,但是有些函数,经过实践检验,至今没有发现多项式时间的求逆算法,仍在使用.n例1 伪随机数生成器(种子密钥密钥流)n例2 因子分解问题(因子合数)6HashHash函数定义函数定义n消息是消息是任意有限任意有限长度,哈希值是固定长度长度,哈希值是固定长度.nHash的概念起源于的概念起源于1956年,年,Dumey用它来解决用它来解决symbol table question(符号表问题符号表问题)
4、d an input hashing to a given value(a preimage)or to find two colliding inputs(a collision).hn奇偶校验码奇偶校验码n新版身份证新版身份证7散列算法的概念及结构散列算法的概念及结构outputhH(M)h是多对一映射多对一映射M碰撞或冲突8HashHash函数的定义函数的定义n单向性(抗原像):对干任意给定的消息,计算其哈希值单向性(抗原像):对干任意给定的消息,计算其哈希值容易容易.但是,对于给定的哈希值但是,对于给定的哈希值h,要找到,要找到M使得使得H(M)h在在计算上计算上是不可行的是不可行的.
5、n 弱抗碰撞(抗二次原像):对于给定的消息弱抗碰撞(抗二次原像):对于给定的消息M1,要发现,要发现另一个消息另一个消息M2,满足,满足H(M1)H(M2)在在计算上计算上是不可行是不可行的的.n强抗碰撞:找任意一对不同的消息强抗碰撞:找任意一对不同的消息M1,M2,使,使H(M1)H(M2)在在计算上计算上是不可行的是不可行的.n随机性随机性.9散列算法的概念及结构散列算法的概念及结构Moutputh由m计算h(m)容易H(M)outputhM由h(m)计算上m不容易H(M)10散列算法的概念及结构散列算法的概念及结构outputhH抗弱碰撞性抗弱碰撞性M给定给定H(M)mm11散列算法的概
6、念及结构散列算法的概念及结构outputH(m)=H(m)H抗强碰撞性抗强碰撞性Mmm12HashHash函数的定义函数的定义HashHash函数的安全性需求函数的安全性需求鸽子原理生日攻击13HashHash函数的定义函数的定义Hash函数的分类函数的分类n不带密钥的哈希函数不带密钥的哈希函数 主要用于消息完整性主要用于消息完整性n带密钥的哈希函数带密钥的哈希函数 主要用于消息源认证和消息完整性主要用于消息源认证和消息完整性14不带密钥的哈希函数的发展不带密钥的哈希函数的发展1978年,Merkle和Damagad设计MD迭代结构1993年,莱学家和Messay改进为MD加强结构15不带密钥
8、r和bosselaers以及其他人很快的发现了攻击md4版本中第一步和第三步的漏洞.dobbertin向大家演示了如何利用一部普通的个人电脑在几分钟内找到md4完整版本中的碰撞.nMD51991年,rivest开发出技术上更为趋近成熟的md5算法.den boer和bosselaers曾发现md5算法中的伪碰撞(pseudo-collisions),但除此之外就没有其他被发现的分析结果了.nRIPEMD-128/160/320 RIPEMD由欧洲财团开发和设计.16不带密钥的哈希函数的发展SHA系列算法是NIST 根据Rivest 设计的MD4和MD5开发的算法.国家安全当局发布SHA作为美国
9、政府标准.SHA表示安全散列算法.nSHA-0 SHA-0正式地称作SHA,这个版本在发行后不久被指出存在弱点.nSHA-1 SHA-1是NIST于1994年发布的,它与MD4和MD5散列算法非常相似,被认为是MD4和 MD5的后继者.nSHA-2 SHA-2实际上分为SHA-224、SHA-256、SHA-384和SHA-512算法.17nHAVAL 1992年Yuliang Zheng 设计了HAVAL函数,它与许多其他散列函数不同.nGostGost是一套苏联标准.不带密钥的哈希函数的发展不带密钥的哈希函数的发展18不带密钥的哈希函数不带密钥的哈希函数 碰撞攻击复杂度碰撞攻击复杂度19碰
12、384nSHA-512输出的摘要是51223SHA1 算法原理 分段运算:512 bits 杂凑值长度:160 bits 初始向量:160 bitsSHA-1消息摘要消息摘要每个分块每个分块512比特,最后一个分块中最后比特,最后一个分块中最后64比特记录数据长度比特记录数据长度。任意有限长度消息输入,如何分任意有限长度消息输入,如何分512比特的块比特的块。24SHA-1算法第一步算法第一步第一步:填充消息 使得消息的长度(bit为单位)模512为448。如果数据长度正好是模512为448,增加512个填充bit,也就是说填充的个数为1512bit。填充方法:第一个bit为1,其余全部为0。