哈希娱乐 行业新闻 党建先锋

哈希娱乐Hash函数与消息认证pptx

发布时间:2025-11-22 14:02:02  浏览:

  哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏

哈希娱乐Hash函数与消息认证pptx

  26.1Hash函数概述Hash函数定义Hash函数的安全性Hash函数的迭代构造法Hash函数与消息认证全文共131页,当前为第2页。

  36.1.1Hash函数定义网络环境下面临的安全威胁1.泄露2.通信量分析3.伪装4.内容篡改5.序号篡改6.计时篡改7.抵赖Hash函数与消息认证全文共131页,当前为第3页。

  46.1.1Hash函数定义数据安全机密性完整性认证性密码技术主要保证数据的机密性Hash函数能保证数据的完整性和认证性Hash函数与消息认证全文共131页,当前为第4页。

  56.1.1Hash函数定义Hash函数定义:Hash函数是一个将任意长度的消息(message)映射成固定长度消息的函数。将h称为一个Hash函数(hashfunction),或称为哈希函数、散列函数。对于任何消息x,将h(x)称为x的Hash值、散列值、消息摘要(messagedigest)。Hash函数与消息认证全文共131页,当前为第5页。

  66.1.1Hash函数定义Hash函数的碰撞(collision)设x、x’是两个不同的消息,如果h(x)=h(x’)则称x和x’是Hash函数h的一个(对)碰撞.Hash函数与消息认证全文共131页,当前为第6页。

  76.1.1Hash函数定义Hash函数的分类单向Hash函数(one?way)给定一个Hash值y,如果寻找一个消息x,使得y=h(x)是计算上不可行的,则称h是单向Hash函数.弱抗碰撞Hash函数(weaklycollision?free)任给一个消息x,如果寻找另一个不同的消息x’,使得h(x)=h(x’)是计算上不可行的,则称h是弱抗碰撞Hash函数.强抗碰撞Hash函数(stronglycollision?free)如果寻找两个不同的消息x和x’,使得h(x)=h(x’)是计算上不可行的,则称h是强抗碰撞Hash函数.Hash函数与消息认证全文共131页,当前为第7页。

  86.1.1Hash函数定义安全Hash函数h应具有以下性质:对任意的消息x,计算h(x)是容易的;h是单向的;h是弱抗碰撞的,或是强抗碰撞的。Hash函数与消息认证全文共131页,当前为第8页。

  9哈希函数H是一公开函数,用于将任意长的消息M映射为较短的、固定长度的一个值H(M),作为认证符,称函数值H(M)为哈希值、杂凑值、杂凑码或消息摘要。杂凑码是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消息中任何一个比特或几个比特都会使杂凑码发生改变。可将MAC看成是带密钥的哈希函数。MAC主要用于保证消息的完整性。哈希函数常用于数字签名。Hash函数与消息认证全文共131页,当前为第9页。

  10下图表示哈希函数用来提供消息认证的基本使用方式,共有以下6种:①消息与哈希值链接后用单钥加密算法加密。由于所用密钥仅为收发双方A、B共享,因此可保证消息的确来自A并且未被篡改。同时还由于消息和哈希值都被加密,这种方式还提供了保密性,见图(a)。(提供认证性和保密性)②用单钥加密算法仅对哈希值加密。这种方式用于不要求保密性的情况下,可减少处理负担。注意这种方式和图(a)的MAC结果完全一样,即将EK[H(M)]看作一个函数,函数的输入为消息M和密钥K,输出为固定长度,见图(b)。(提供认证性)Hash函数与消息认证全文共131页,当前为第10页。

  11图哈希函数的基本使用方式Hash函数与消息认证全文共131页,当前为第11页。

  12③用公钥加密算法和发送方的秘密钥仅加密哈希值。和②一样,这种方式提供认证性,又由于只有发送方能产生加密的哈希值,因此这种方式还对发送方发送的消息提供了数字签字,事实上这种方式就是数字签字,见图(c)。(提供认证性和数字签字)④消息的哈希值用公钥加密算法和发送方的秘密钥加密后与消息链接,再对链接后的结果用单钥加密算法加密,这种方式提供了保密性和数字签字,见图(d)。(提供认证性、数字签字和保密性)Hash函数与消息认证全文共131页,当前为第12页。

  13图哈希函数的基本使用方式Hash函数与消息认证全文共131页,当前为第13页。

  14⑤使用这种方式时要求通信双方共享一个秘密值S,A计算消息M和秘密值S链接在一起的哈希值,并将此哈希值附加到M后发往B。因B也有S,所以可重新计算哈希值以对消息进行认证。由于秘密值S本身未被发送,敌手无法对截获的消息加以篡改,也无法产生假消息。这种方式仅提供认证,见图(e)。⑥这种方式是在⑤中消息与哈希值链接以后再增加单钥加密运算,从而又可提供保密性,见图(f)。Hash函数与消息认证全文共131页,当前为第14页。

  15图哈希函数的基本使用方式Hash函数与消息认证全文共131页,当前为第15页。

  16由于加密运算的速度较慢,代价较高,而且很多加密算法还受到专利保护,因此在不要求保密性的情况下,方式②和③将比其他方式更具优势。Hash函数与消息认证全文共131页,当前为第16页。

  17哈希函数的目的是为需认证的数据产生一个“指纹”。为了能够实现对数据的认证,哈希函数应满足以下条件:①函数的输入可以是任意长。②函数的输出是固定长。③已知x,求H(x)较为容易,可用硬件或软件实现。④已知h,求使得H(x)=h的x在计算上是不可行的,这一性质称为函数的单向性,称H(x)为单向哈希函数。哈希函数应满足的条件Hash函数与消息认证全文共131页,当前为第17页。

  18⑤已知x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。如果单向哈希函数满足这一性质,则称其为弱单向哈希函数。⑥找出任意两个不同的输入x、y,使得H(y)=H(x)在计算上是不可行的。如果单向哈希函数满足这一性质,则称其为强单向哈希函数。第⑤和第⑥个条件给出了哈希函数无碰撞性的概念,如果哈希函数对不同的输入可产生相同的输出,则称该函数具有碰撞性。Hash函数与消息认证全文共131页,当前为第18页。

  19以上6个条件中,前3个是哈希函数能用于消息认证的基本要求。第4个条件(即单向性)则对使用秘密值的认证技术,极为重要。假如哈希函数不具有单向性,则攻击者截获M和C=H(S‖M)后,求C的逆S‖M,就可求出秘密值S。第5个条件使得敌手无法在已知某个消息时,找到与该消息具有相同哈希值的另一消息。这一性质用于哈希值被加密情况时(见图8.3(b)和图8.3(c))防止敌手的伪造,由于在这种情况下,敌手可读取传送的明文消息M,因此能产生该消息的哈希值H(M)。Hash函数与消息认证全文共131页,当前为第19页。

  20但由于敌手不知道用于加密哈希值的密钥,他就不可能既伪造一个消息M,又伪造这个消息的哈希值加密后的密文EK[H(M)]。然而,如果第5个条件不成立,敌手在截获明文消息及其加密的哈希值后,就可按以下方式伪造消息:首先求出截获的消息的哈希值,然后产生一个具有相同哈希值的伪造消息,最后再将伪造的消息和截获的加密的哈希值发往通信的接收方。第6个条件用于抵抗生日攻击。Hash函数与消息认证全文共131页,当前为第20页。

  221.Hash函数的概念Hash函数是可接受变长的数据输入,并生成定长的数据输出的函数。这个定长的输出是输入数据的Hash值或称为消息摘要。由于Hash函数具有单向性的属性,故也称之为单向散列函数。Hash值(消息摘要、散列码)又被称为输入数据的数字指纹。回顾Hash函数与消息认证全文共131页,当前为第22页。

  232.简单的Hash算法Hash函数与消息认证全文共131页,当前为第23页。

  256.1.2Hash函数的安全性对Hash函数的攻击是指寻找一对碰撞消息的过程生日悖论(birthdayparadox)生日问题:假设每个人的生日是等概率的,每年有365天,在k个人中至少有两个人的生日相同的概率大于1/2,问k最小应是多少?k人生日都不同的概率是:有P(365,23)=0.5073。即在23个人中,至少有两个人生日相同的概率大于0.5,这个数字比人们直观猜测的结果小得多,因而称为生日悖论。Hash函数与消息认证全文共131页,当前为第25页。

  26生日攻击法生日悖论原理可以用于构造对Hash函数的攻击设Hash函数值有n个比特,m是真消息,M是伪造的假消息,分别把消息m和M表示成r和R个变形的消息。消息与其变形消息具有不同的形式,但有相同的含义。将消息表示成变形消息的方法很多,例如增加空格、使用缩写、使用意义相同的单词、去掉不必要的单词等。6.1.2Hash函数的安全性Hash函数与消息认证全文共131页,当前为第26页。

  276.1.2Hash函数的安全性生日攻击法分别把消息m和M表示成r和R个变形的消息Hash函数与消息认证全文共131页,当前为第27页。

  28生日攻击法计算真消息m的变形与假消息M的变形发生碰撞的概率由于n比特长的散列值共有2n个,所以对于给定m的变形mi和M的变形Mj,mi与Mj不碰撞的概率是1-1/2n。由于M共有R个变形,所以M的全部变形都不与mi碰撞的概率是:因为消息m共有r个变形,因此m的变形与M的变形都不碰撞的概率是:m的变形与M的变形发生碰撞的概率是:6.1.2Hash函数的安全性Hash函数与消息认证全文共131页,当前为第28页。

  29生日攻击法当r=R=2n/2时,P(n)=1?e?1?0.63。对于Hash值长度为64比特的Hash函数,生日攻击的时间复杂度约为232,所以是不安全的。为了抵抗生日攻击,建议Hash值长度至少为128比特.6.1.2Hash函数的安全性Hash函数与消息认证全文共131页,当前为第29页。

  30中间相遇攻击(in-the-middleattack)用于攻击一类具有特殊结构的Hash函数分析Hash函数运算的中间值相等的概率讨论一类利用加密变换构造的Hash函数设加密体制为:对于消息m=(m1,m2),其散列值的计算分以下两步:(1)h1=EK(m1,IV);(2)d=h(m)=EK(m2,h1),其中IV是加密变换的初始值。这类Hash函数将遭受中间相遇攻击。6.1.2Hash函数的安全性Hash函数与消息认证全文共131页,当前为第30页。

  31中间相遇攻击(in-the-middleattack)用于攻击一类具有特殊结构的Hash函数分析Hash函数运算的中间值相等的概率讨论一类利用加密变换构造的Hash函数攻击方式:假设攻击者要找出一个假消息M=(M1,M2),使得M与m是一个碰撞。设m的散列值都为d。攻击者首先产生消息M1的r个变形,消息M2的R个变形.6.1.2Hash函数的安全性Hash函数与消息认证全文共131页,当前为第31页。

  356.1.3Hash函数的迭代构造法压缩函数(compressionfunction)迭代技术设x是一个长度为L的比特串。重复应用压缩函数f,对消息x进行多次压缩,最后得到x的散列值Hash函数与消息认证全文共131页,当前为第35页。

  366.1.3Hash函数的迭代构造法计算消息x的散列值h(x)的步骤预处理:用一个公开算法在消息x右方添加若干比特,得到比特串y,使得y的长度为t的倍数。即有y=xpad(x)=y1y2…yr,其中yi=t(i=1,2,…,r),pad(x)称为填充函数。典型的填充函数是先添加x长度x的值,再添加若干比特(例如0)。迭代过程:设H0=IV是一个长度为m的初始比特串,重复使用压缩函数f,依次计算Hi=f(Hi?1yi)(i=1,2,…,r).输出变换:设g:{0,1}m?{0,1}t是一个公开函数,令h(x)=g(Hr).Hash函数与消息认证全文共131页,当前为第36页。

  376.1.3Hash函数的迭代构造法用上述方法构造的Hash函数称为迭代Hash函数。大多数实用Hash函数都是迭代Hash函数在预处理阶段,必须保证变换x?y是单射。因为如果预处理变换x?y不是单射,则存在x?x’使得y=y’,从而h(x)=h(x’),即能够找到h的碰撞。对于任意无碰撞的压缩函数,都可以使用迭代技术构造一个无碰撞的Hash函数。Hash函数与消息认证全文共131页,当前为第37页。

  38目前使用的大多数杂凑函数如MD5、SHA,其结构都是迭代型的,如图所示。Hash函数与消息认证全文共131页,当前为第38页。

  40其中函数的输入M被分为L个分组Y0,Y1,…,YL-1,每一个分组的长度为b比特,最后一个分组的长度不够的话,需对其做填充。最后一个分组中还包括整个函数输入的长度值,这样一来,将使得敌手的攻击更为困难,即敌手若想成功地产生假冒的消息,就必须保证假冒消息的杂凑值与原消息的杂凑值相同,而且假冒消息的长度也要与原消息的长度相等。Hash函数与消息认证全文共131页,当前为第40页。

  41算法的核心技术是设计无碰撞的压缩函数f,而敌手对算法的攻击重点是f的内部结构,由于f和分组密码一样是由若干轮处理过程组成,所以对f的攻击需通过对各轮之间的位模式的分析来进行,分析过程常常需要先找出f的碰撞。由于f是压缩函数,其碰撞是不可避免的,因此在设计f时就应保证找出其碰撞在计算上是不可行的。Hash函数与消息认证全文共131页,当前为第41页。

  43MD5·效果把一个任意长度的字节串变换成一定长度的十六进制数字串。目的是让大容量信息在用数字签名软件签署私人密钥前被压缩成一种保密的格式。Hash函数与消息认证全文共131页,当前为第43页。

  44MD5·应用一致性验证:从网上下载文件,软件,各种资料的时候,有些文件会提供MD5对照信息。利用MD5校验软件来核对下载的文件,以此观测下载得到的文件与传送者是否相符。Hash函数与消息认证全文共131页,当前为第44页。

  45MD5·应用一致性验证:利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。Hash函数与消息认证全文共131页,当前为第45页。

  46MD5·应用数字证书:对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。例子:将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。Hash函数与消息认证全文共131页,当前为第46页。

  47MD5·应用安全访问认证:用于操作系统的登陆认证上。当用户登录的时候,系统把用户输入的密码进行MD5Hash运算,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这可以避免用户的密码被具有系统管理员权限的用户知道。Hash函数与消息认证全文共131页,当前为第47页。

  48MD5·崩塌2004年8月17日的美国加州圣巴巴拉的国际密码学会议上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然。Hash函数与消息认证全文共131页,当前为第48页。

  50MD5·崩塌MD5破解工程权威网站是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang,Feng,Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。Hash函数与消息认证全文共131页,当前为第50页。

  51MD5·崩塌由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束。Hash函数与消息认证全文共131页,当前为第51页。

  52MD5·评论那么,我们为什么还要学习这个似乎已经被KO掉的MD5呢?好吧,我们来理一理思路Hash函数与消息认证全文共131页,当前为第52页。

  53MD5·评论我们的牛人王教授做的成效是查找碰撞,并不是可以反推。MD5是用来获取信息摘要的,主要用途是防篡改。这项工作做到篡改信息,并保持MD5不变。Hash函数与消息认证全文共131页,当前为第53页。

  54MD5·评论至于那个在数个小时内就可以找到MD5碰撞的程序....就是你用一台IBMP690,在数小时内,创造出两个MD5相同但内容不同的东东来,有点意思吧~Hash函数与消息认证全文共131页,当前为第54页。

  55MD5·评论但是IBMP690是个有32个cpu,8GB内存的机器,这东西我们可是买不起的!难!注意:2004年一台中低档型家用PC机不低于6000RMB,约128M内存,800~1000CPU,10.3~20G硬盘……Hash函数与消息认证全文共131页,当前为第55页。

  56MD5·评论何况这个程序得到的只是碰撞如果你要根据已知文件,去构造一个相同MD5,并且是内容不同的有效文件难上加难!Hash函数与消息认证全文共131页,当前为第56页。

  57MD5·评论用在网络安全方面,假如你要构造一个跟系统文件相同MD5而内容不同的,可以运行的木马文件难上加难再加难!Hash函数与消息认证全文共131页,当前为第57页。

  58MD5·评论虽然,我们的王大神已经做出了如此惊人的工作。但由于MD5算法的使用不需要支付任何版权费用的,所以在一般的情况下(非绝密应用领域)怎么都算得上是非常安全的了。即便是应用在绝密领域内,MD5也不失为一种非常优秀的中间技术。Hash函数与消息认证全文共131页,当前为第58页。

  596.2.1MD5算法MD5算法的输入可以是任意长度的消息x,对输入消息按512位的分组为单位进行处理,输出128位的散列值MD(x)。整个算法分为五个步骤。步骤1:增加填充位在消息x右边增加若干比特,使其长度与448模512同余。也就是说,填充后的消息长度比512的某个倍数少64位。即使消息本身已经满足上述长度要求,仍然需要进行填充。例如,若消息长为448,则仍需要填充512位使其长度为960位。填充位数在1到512之间。填充比特的第一位是1,其它均为0。Hash函数与消息认证全文共131页,当前为第59页。

  606.2.1MD5算法步骤2:附加消息长度值用64位表示原始消息x的长度,并将其附加在步骤1所得结果之。若填充前消息长度大于264,则只使用其低64位。填充方法是把64比特的长度分成两个32比特的字,低32比特字先填充,高32比特字后填充。步骤1与步骤2一起称为消息的预处理经预处理后,原消息长度变为512的倍数设原消息x经预处理后变为消息Y=Y0Y1…YL?1,其中Yi(i=0,1,…,L?1)是512比特在后面的步骤中,将对512比特的分组Yi进行处理Hash函数与消息认证全文共131页,当前为第60页。

  646.2.1MD5算法步骤4:以512位的分组(16个字)为单位处理消息MD5是迭代Hash函数,其压缩函数为:步骤4是MD5算法的主循环,它以512比特作为分组,重复应用压缩函数HMD5,从消息Y的第一个分组Y1开始,依次对每个分组Yi进行压缩,直至最后分组YL?1,然后输出消息x的Hash值。可见,MD5的循环次数等于消息Y中512比特分组的数目L。Hash函数与消息认证全文共131页,当前为第64页。

  65MD5压缩函数HMD5HMD5由四轮处理组成加法是指缓冲区中的4个字与CVi中对应的4个字分别模232相加Hash函数与消息认证全文共131页,当前为第65页。

  66MD5压缩函数HMD5HMD5的四轮处理过程的算法结构相同,每一轮要对缓冲区ABCD进行16次迭代,每次迭代的运算形式为:其中a、b、c、d分别为缓冲区A、B、C、D中的字,运算结束后再将(a、b、c、d)循环右移一个字。Hash函数与消息认证全文共131页,当前为第66页。

  67MD5压缩函数HMD5HMD5的基本逻辑函数g每一轮使用一个基本逻辑函数g,每个基本逻辑函数的输入是三个32位的字,输出是一个32位的字,它执行位逻辑运算,即输出的第n位是其三个输入的第n位的函数基本逻辑函数g的定义符号?、?、?和?分别表示逻辑操作AND、OR、NOT和XORHash函数与消息认证全文共131页,当前为第67页。

  68MD5压缩函数HMD5HMD5的基本逻辑函数g基本逻辑函数g的真值表bcdFGHIHash函数与消息认证全文共131页,当前为第68页。

  69MD5压缩函数HMD5字组X把当前处理的512比特的分组Yi依次分成16个32比特的字,分别记为X[0,1,…,15].在每一轮的16步迭代中,每一步迭代使用一个字,迭代步数不同使用的字也不相同.因此,16步迭代恰好用完16个字.Hash函数与消息认证全文共131页,当前为第69页。

  73MD5压缩函数HMD5循环左移位数sLs(v)表示对32位的变量v循环左移s位。s的值与轮数和迭代步数有关。步数轮数1Hash函数与消息认证全文共131页,当前为第73页。

  756.2.2MD5的安全性Rivest猜测,MD5可能是128位Hash函数中强度最大的。目前,对MD5的攻击已取得以下结果:T.Berson(1992)已经证明,对单轮的MD5算法,利用差分密码分析,可以在合理的时间内找出散列值相同的两条消息。这一结果对MD5四轮运算的每一轮都成立。但是,目前尚不能将这种攻击推广到具有四轮运算的MD5上.B.Boer和A.Bosselaers(1993)说明了如何找到消息分组和MD5两个不同的初始值,使它们产生相同的输出.也就是说,对一个512位的分组,MD5压缩函数对缓冲区ABCD的不同值产生相同的输出,这种情况称为伪碰撞(pseudo-collision).目前尚不能用该方法成功攻击MD5算法.Hash函数与消息认证全文共131页,当前为第75页。

  766.2.2MD5的安全性H.Dobbertin(1996)找到了MD5无初始值的碰撞(pseudo-collision).给定一个512位的分组,可以找到另一个512位的分组,对于选择的初始值IV0,它们的MD5运算结果相同.到目前为止,尚不能用这种方法对使用MD5初始值IV的整个消息进行攻击.我国山东大学王小云教授(2004)提出的攻击对MD5最具威胁。对于MD5的初始值IV,王小云找到了许多512位的分组对,它们的MD5值相同.国际密码学家Lenstra利用王小云等提供的MD5碰撞,伪造了符合X.509标准的数字证书.MD5算法抗密码分析能力较弱,对MD5的生日攻击所需代价为264数量级.所以,必须设计新的Hash算法,使其与MD5相比具有更长的散列值和更高的安全性.Hash函数与消息认证全文共131页,当前为第76页。

  776.3安全Hash算法SHA?1安全Hash算法SHA(securehashalgorithm)由美国标准与技术研究所(NIST)设计并于1993年作为联邦信息处理标准(FIPS180)发布修改版于1995年发布(FIPS180?1),通常称之为SHA?1。该标准称为安全Hash函数。RFC3174也给出了SHA?1,它基本上是复制FIPS180?1的内容,但增加了C代码实现。SHA?1算法的输入是长度小于264的任意消息x,输出160位的散列值。Hash函数与消息认证全文共131页,当前为第77页。

  786.3.1SHA?1算法步骤SHA?1处理消息的过程与MD5类似,对输入消息按512位的分组为单位进行处理,整个算法分为五个步骤步骤1:增加填充位在消息右边增加若干比特,使其长度与448模512同余。即使消息本身已经满足上述长度要求,仍然需要进行填充。填充位数在1到512之间。填充比特的第一位是“1”,其它均为“0”。步骤2:附加消息长度值用64位表示原始消息x的长度,并将其附加在步骤1所得结果之后。步骤1与步骤2一起称为消息的预处理经预处理后,原消息长度变为512的倍数。设原消息x经预处理后变为消息Y=Y0Y1…YL?1,其中Yi(i=0,1,…,L?1)是512比特。在后面的步骤中,将对512比特的分组Yi进行处理。Hash函数与消息认证全文共131页,当前为第78页。

  796.3.1SHA?1算法步骤步骤3:初始化缓冲区SHA?1算法的中间结果和最终结果保存在160位的缓冲区里,缓冲区用5个32位的寄存器表示。5个缓冲区记为A、B、C、D、E,其初始值为下列32位整数(16进制表示):A=67452301,B=EFCDAB89,C=98BADCFE,D=10325476,E=C3D2E1F0.其中,前4个初始值与MD5的初始值相同。SHA?1以大端格式存储缓冲区的值,即字的最高有效字节存于低地址字节位置。因此,上述初始值存储为(十六进制):字A=67452301,字B=EFCDAB89,字C=98BADCFE,字D=10325476,字E=C3D2E1F0.Hash函数与消息认证全文共131页,当前为第79页。

  806.3.1SHA?1算法步骤步骤4:以512位的分组(16个字)为单位处理消息SHA?1是迭代Hash函数,其压缩函数为:步骤4是SHA?1算法的主循环,它以512比特作为分组,重复应用压缩函数HSHA,从消息Y的第一个分组Y1开始,依次对每个分组Yi进行压缩,直至最后分组YL?1,然后输出消息x的Hash值。SHA?1循环次数等于消息Y中512比特分组的数目L。Hash函数与消息认证全文共131页,当前为第80页。

  82SHA?1的压缩函数HSHA压缩函数HSHA的四轮处理过程的算法结构相同,每一轮要对缓冲区ABCDE进行20次迭代,每次迭代的运算形式为ABCDEABCDE++f+Wt+KtL30L5其中A、B、C、D、E分别为五个缓冲区中的字,运算结束后再将(A、B、C、D、E)循环右移一个字。Hash函数与消息认证全文共131页,当前为第82页。

  83SHA?1的压缩函数HSHA基本逻辑函数f每一轮使用一个基本逻辑函数f,每个基本逻辑函数的输入是三个32位的字,输出是一个32位的字,它执行位逻辑运算,即输出的第n位是其三个输入第n位的函数。轮数基本逻辑函数ff(B,C,D)1234f1(B,C,D)f2(B,C,D)f3(B,C,D)f4(B,C,D)Hash函数与消息认证全文共131页,当前为第83页。

  84SHA?1的压缩函数HSHA基本逻辑函数f基本逻辑函数f的线Hash函数与消息认证全文共131页,当前为第84页。

  866.3.1SHA?1算法步骤步骤5:输出第L个分组处理后的输出值即是消息x的散列值MD(x)SHA?1的处理过程归纳如下:CV0=IVCVi+1=SUM32(CVi,ABCDEi)(i=0,1,…,L?1)MD=CVL?1其中:IV=第三步定义的缓冲区ABCDE的初值ABCDEi=处理第i个消息分组时最后一轮的输出L=消息经第一步和第二步处理后分组的个数SUM32=对输入字的模232相加MD=散列值.Hash函数与消息认证全文共131页,当前为第86页。

  876.3.2SHA?1和MD5的比较SHA?1与MD5的算法类似,所以它们的性质极为相似抗穷举攻击的能力SHA?1抗穷举攻击的能力比MD5强用穷举攻击方法产生具有给定散列值的消息MD5需要的代价为2128数量级SHA?1需要的代价为2160数量级用穷举攻击方法产生两个具有相同散列值的消息MD5需要的代价为264数量级SHA?1需要的代价为280数量级抗密码分析的能力MD5算法抗密码分析的能力较弱SHA?1算法抗密码分析的能力似乎并不弱Hash函数与消息认证全文共131页,当前为第87页。

  886.3.2SHA?1和MD5的比较速度SHA?1执行的速度比MD5的速度慢得多简洁性SHA?1和MD5两种算法都易于描述和实现,不需要使用大的程序和置换表数据的存储方式MD5使用little?endian(小字节序)方式,SHA?1使用big?endian(大字节序)方式。这两种方式没有本质的差异Hash函数与消息认证全文共131页,当前为第88页。

  896.4基于分组密码与离散对数的Hash函数Hash函数的间接构造法利用已有的密码算法构造Hash函数如果密码算法是安全的,那么利用它所构造的Hash函数也是安全的Hash函数与消息认证全文共131页,当前为第89页。

  906.4.1利用分组密码算法构造Hash函数已知条件设Ek是一个分组长度为n的分组密码的加密算法,密钥为k,对于任意的消息x,首先对x进行分组,每组的长度为n。设消息x为:x=x1x2…xL,其中xi?GF(2)n(1?i?L).Hash函数与消息认证全文共131页,当前为第90页。

  92基于分组密码CFB工作模式构造Hash函数首先选取一个初始值:y0=IV?GF(2)n,然后依次计算:最后定义Hash值为:hCFB(x)=yL.6.4.1利用分组密码算法构造Hash函数IV=y0x1y1Ekx2y2EkyL=hCFB(x)xLEk在密钥公开的情况下,基于分组密码CBC工作模式和CFB工作模式构造的Hash函数是不安全的,它们甚至不是弱无碰撞的.Hash函数与消息认证全文共131页,当前为第92页。

  93基于一些困难数学问题,诸如离散对数问题、因子分解问题、背包问题等可以构造出一些Hash函数,这些Hash函数的安全性依赖于对应数学问题的困难性Chaum、Heijst和Pfitzmann(1992年)提出的基于离散对数问题构造的Hash函数运行速度不是很快可以证明是安全的.Chaum?Heijst?PfitzmannHash函数的构造设p是一个大素数,q=(p?1)/2是一个素数,?和?是Zp的两个本原元。假设离散对数log??是计算上不可行的。定义Hash函数h为:6.4.2基于离散对数问题的Hash函数Hash函数与消息认证全文共131页,当前为第93页。

  986.5消息认证认证(authentication)是防止网络系统遭受主动攻击的重要技术认证的主要目的有两个第一,验证消息的发送者是真的,而不是冒充的,称为实体认证,包括信源、信宿等的认证和识别。第二,验证信息的完整性,即验证数据在传送或存储过程中未被篡改、重放或延迟,称为消息认证。Hash函数与消息认证全文共131页,当前为第98页。

  996.6.1消息认证码带密钥的Hash函数称为消息认证码(MAC:messageauthenticationcode).消息认证码是实现消息认证的重要工具.MAC有两个不同的输入,一个是消息x,另一个是密钥K.MAC产生定长的输出.实例:某一个大公司A想给它的客户发布一个新产品的广告,A希望不对广告内容加密,但又希望其它公司不能修改广告内容或冒充公司A发布同样的广告,或者当广告内容被修改后能够发现.如果使用不带密钥的Hash函数,由于其它公司可能在修改广告内容后产生新的散列值,从而使A无法确认原广告是否被修改.设计MAC算法的要求在不知道密钥的情况下,难以找到两个不同的消息具有相同的输出。Hash函数与消息认证全文共131页,当前为第99页。

  100消息摘要的生成和验证消息摘要的生成和验证过程如图5-8和图5-9所示,发送方利用函数生成待发消息的消息摘要,然后将摘要附在消息之后一起发出。接收方接收后,将消息内容和摘要值分离,用同样的函数生成消息内容的摘要值,再将此摘要值与收到的摘要值进行比较,如果比较结果相同,则说明消息在传输的过程中没有受到破坏,反之,则说明收到的消息已不再是发送时的初始内容了。整个过程主要利用了函数的性质4,即函数的雪崩性。消息在传输过程中,只要其中任何一部分发生了细微的变化(哪怕只是一个比特),也会造成其摘要值的巨大改变。而且,消息内容的内容与摘要值同时发生改变,从而导致改变后的消息的摘要值恰好等于改变后的摘要值的情况出现的几率几乎为零。因此,消息的接收方能通过对消息传输前后的摘要值进行对比而作出准确的消息完整性判断。Hash函数与消息认证全文共131页,当前为第100页。

  102消息认证技术1)消息认证概念消息认证是指通过对消息或消息相关信息进行加密或签名变换进行的认证,目的是为防止传输和存储的消息被有意或无意地篡改。2)消息认证方法消息认证方法一般采用提取信息摘要方法实现消息认证。消息认证的摘要算法与一般的对称或非对称加密算法不同,它并不用于防止信息被窃取,而是用于证明原文的完整性和准确性。也就是说,消息认证主要用于防止信息被篡改。Hash函数与消息认证全文共131页,当前为第102页。

  103消息认证技术3)消息认证分类消息内容认证(即消息完整性认证)消息的源和宿认证(即身份认证)消息的序号和操作时间认证等。Hash函数与消息认证全文共131页,当前为第103页。

  104消息认证技术1.消息内容认证消息内容认证常用的方法是:消息发送者在消息中加入一个鉴别码(MAC、MDC等)并经加密后发送给接收者(有时只需加密鉴别码即可)。接收者利用约定的算法对解密后的消息进行鉴别运算,将得到的鉴别码与收到的鉴别码进行比较,若二者相等,则接收,否则拒绝接收。2.源和宿的认证一种是通信双方事先约定发送消息的数据加密密钥,接收者只需证实发送来的消息是否能用该密钥还原成明文就能鉴别发送者。另一种是通信双方实现约定各自发送消息所使用的通行字,发送消息中含有此通行字并进行加密,接收者只需判别消息中解密的通行字是否等于约定的通行字就能鉴定发送者。Hash函数与消息认证全文共131页,当前为第104页。

  105消息认证技术3.消息序号和操作时间的认证消息的序号和时间性的认证主要是阻止消息的重放攻击。常用的方法有消息的流水作业、链接认证符随机数认证法和时间戳等。1)MD5。信息摘要算法,由RSADataSecurity公司的Rivest于1992年提出,能对任何长度的输入消息进行处理,产生128bit长的“消息摘要”输出。2)SHA算法。它能为任意长度的输入产生160bit的杂凑值。典型算法Hash函数与消息认证全文共131页,当前为第105页。

  106消息认证是一种过程,它使得通信的接收方能够验证所收到的报文(发送者、报文的内容、发送时间、序列等)在传送过程中是否被假冒、伪造、篡改,是否感染了病毒等,即保证信息的完整性和有效性。采用MAC的消息认证技术1.消息认证码Hash函数与消息认证全文共131页,当前为第106页。

  107(1)B确信消息未被更改过。如果一个攻击者更改消息,而未更改MAC,那么B计算出来的消息将不同于接收到的MAC(假定攻击者不知道该密钥,因此不可能更改MAC来对应被更改过的消息)。(2)B确信消息来自发送者。因为没有其他人知道该密钥,所以也没有人能为一个消息伪造一个合适的MAC。(3)如果消息包括一个序列号(如用于HDLC、X.25和TCP),那么接收者确信该序列号的正确性。这是因为攻击者无法更改序列号。Hash函数与消息认证全文共131页,当前为第107页。

  1082.基于DES的消息认证码利用DES算法可以生成消息认证码(FIPSPUB113),它是使用DES加密后的密文的若干位(如16或32位)作为消息认证码,如图所示。Hash函数与消息认证全文共131页,当前为第108页。

  112不同的Hash值可以提供几种消息认证方式(如图所示):(1)使用对称密码技术对附加Hash值的消息进行加密(如图(a)所示)。认证的原理是:因为只有A和B共享密钥K,因此消息M必定来自A且未被篡改。消息摘要提供认证所需要的结构或冗余。因为对包括消息和Hash值的整体进行了加密,因此还提供了保密。3.采用Hash函数的消息认证Hash函数与消息认证全文共131页,当前为第112页。

  113(2)使用对称密码技术仅对Hash值进行加密(如图(b)所示)。该方法是针对消息无需保密的应用情况,从而减少了由加密而增加的处理负担。由H值与加密结果合并成为的一个整体函数实际上就是一个消息认证码(MAC)。是变量消息M和密钥K的函数值,且它生成一个定长的输出,对不知道该密钥的攻击者来说是安全的。Hash函数与消息认证全文共131页,当前为第113页。

  114(3)使用公钥密码技术和发送方的私钥仅对Hash值进行加密(如图(c)所示)。该方法既能提供认证,又能提供数字签名。因为只有发送方能够生成加密的Hash认证码(事实上,这也是数字签名的本质)。Hash函数与消息认证全文共131页,当前为第114页。

  115(4)同时提供保密性和数字签名。可使用一个对称秘密密钥对消息和已使用的公钥加密的Hash认证码一起进行加密,如图(d)所示。Hash函数与消息认证全文共131页,当前为第115页。

  116(5)通信各方共享一个公共的秘密值S的Hash值(如图(e)所示)。该方法使用Hash值,但不对其加密。假定通信各方共享一个公共秘密值S,用户A对串接的消息M和S计算出Hash值,并将得到的Hash值附加在消息M后。因为秘密值S本身并不被发送,攻击者无法更改中途截获的消息,也就无法产生假消息,此方法只提供认证。Hash函数与消息认证全文共131页,当前为第116页。

  117(6)通过对包含消息和Hash值的整体进行加密就能对方法(5)增加保密功能,如图(f)所示。当不需要保密时,方法(2)和(3)在降低计算量上要优于那些需要对整个消息进行加密的方法。然而,目前对避免加密的方法(5)越来越重视。Hash函数与消息认证全文共131页,当前为第117页。

  118表5-1归纳了上图中说明的保密和认证方法。Hash函数与消息认证全文共131页,当前为第118页。

  1196.6.1消息认证码基于分组密码CBC工作模式构造MAC基于分组密码CBC工作模式构造MAC算法已经成为ISO/IEC9797标准,它使用密文链接和双密钥三重加密技术。设EK表示以K为密钥的加密算法,设K’是一个与K不同的密钥,消息分组长度为n。首先把消息x分成L个n位块x=x1x2…xL,计算:hK是一个n位MAC.记为CBC-MAC.Hash函数与消息认证全文共131页,当前为第119页。

  1206.6.1消息认证码基于Hash函数构造MAC设h是一个(不带密钥)Hash函数,K是密钥,x是消息,则定义消息认证码hK如下:基于MD5算法直接构造消息认证码MD5-MACMD5-MAC算法使用96字节的常数其中下标加法运算是模3相加.如果密钥K的长度小于128位,则通过多次自行链接,最后截取左边128位作为以下算法中使用的密钥K。Hash函数与消息认证全文共131页,当前为第120页。

  1216.6.1消息认证码将密钥K扩展成3个16字节的子密钥K0,K1,K2,其中把K0,K1分成4个32位的子串Kj[i](j=0,1,i=0,1,2,3)对MD5进行修改:用K0代替MD5的4个32位寄存器ABCD.把K1[i]与MD5第i+1遍中每个常数232sin(j)进行模232加法.将512位的分组链接到消息x右边,再按MD5的要求进行填充.将上一步的结果输入到修改后的MD5中,取其输出的前一半(64位)作为消息x的消息认证码MD5-MAC(x).MD5-MAC软件实现比较容易,其运算速度与MD5大体相近.Hash函数与消息认证全文共131页,当前为第121页。

  1236.6.2HMAC算法HMAC算法描述设HMAC使用的Hash函数为h,每次处理的输入分组长度为b比特(使用MD5与SHA-1时,b=512),最后的输出长度为l比特(使用MD5时,l=128;使用SHA-1时,l=160)。如果HMAC的输入消息为x,则x=x1x2…xL,其中每一个分组xi(1≤i≤L)的长度为b比特。令HMAC使用的密钥为K,密钥K可以是任意的、长度不超过b比特的比特串(HMAC算法推荐密钥最小长度为l比特)。当密钥K的长度超过b比特时,使用Hash函数h对K进行压缩,把K作为h的输入,并将输出的l比特作为密钥K。Hash函数与消息认证全文共131页,当前为第123页。

  1256.6.2HMAC算法HMAC算法具体执行步骤(1)如果密钥K的长度小于b比特,则在其右边填充一些“0”,使其成为长度为b比特的比特串,仍记为K。(2)计算Si=K?ipad,其中ipad是HMAC算法中规定的一个长度为b比特的比特模式串,它等于复b/8次后得到的比特串。(3)把HMAC的输入消息x=x1x2…xL附加在Si的右端,得到Six=Six1x2…xL,将该比特串作为Hash函数h的输入,得到l比特的输出h(Six)。(4)计算So=K?opad,其中opad是HMAC算法中规定的另一个长度为b比特的比特模式串,它等于复b/8次后得到的比特串。(5)将第(3)步得到的h(Six)附加在So的右端,并以该比特串作为Hash函数h的输入,得到l比特的输出。(6)将第(5)步的输出作为HMAC算法的最终输出结果,即消息x的消息认证码HMAC(x)。Hash函数与消息认证全文共131页,当前为第125页。

  1266.6.2HMAC算法HMAC的安全性建立在嵌入Hash函数基础上的所有MAC,其安全性在某种程度上都依赖于该Hash函数的强度。对于HMAC,可以给出HMAC的强度与所嵌入Hash函数强度之间的关系。根据伪造者在给定时间内伪造成功和用相同密钥产生给定数量的消息-MAC对的概率,可以用于描述MAC的安全性。Bellare等人(1996年)已经证明,如果攻击者已知若干(时间、消息-MAC)对,则成功攻击HMAC的概率等价于对所嵌入Hash函数的下列攻击之一:(1)即使对于攻击者而言,IV是随机的、秘密的和未知的,攻击者也能计算压缩函数的输出。(2)即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰撞。在目前的计算水平下,使用MD5和SHA-1等作为HMAC算法所嵌入的Hash函数,HMAC的安全性是可以保证的。Hash函数与消息认证全文共131页,当前为第126页。

  1276.6.3应用数据完整性数据完整性是指数据在生成、传送或存储过程中没有被非法篡改.使用Hash函数可以保证数据的完整性使用MAC设用户A将消息x发送给接收者B,A与B共享秘密的MAC密钥K,hK是MAC。用户A计算x的MAChK(x),将数据C=xhK(x)发送给B。B通过其它方法确定用户A的身份,分开接收到的数据x’,使用共享密钥K计算hK(x’),并与接收到的hK(x)相比较。如果hK(x’)=hK(x),则B确定消息x’是来自于具有密钥K的用户A,在传输过程中未被篡改。C发送方A接收方B比较x1xx1hKxhKHash函数与消息认证全文共131页,当前为第127页。

  1286.6.3应用使用Hash函数和加密设A与B共享分组密码的密钥K,EK是加密算法,h是公开的Hash函数.用户A计算C=EK(xh(x)),并将数据C发送给B.B利用密钥K进行解密,得到x’和h(x),然后计算h(x’),并与接收到的h(x)相比较.如果h(x’)=h(x),则B确定消息x’是真实的.由于这里对h(x)进行了加密,所以对Hash函数h的要求可以适当降低.C发送方A接收方B比较x1xx1hEKDKxhHash函数与消息认证全文共131页,当前为第128页。

  1296.6.3应用加密使用MAC和加密设A与B共享分组密码的密钥K和MAC的密钥K’,EK是加密算法,hK’是MAC。用户A计算C=EK(xhK’(x)),并将数据C发送给B.B利用密钥K进行解密,得到x’和hK’(x),然后计算hK’(x’),并与接收到的hK’(x)相比较.如果hK’(x’)=hK’(x),则B确定消息x’是真实的.该技术的优点是即使加密算法被攻破,MAC仍然能提供完整性保护作用.其缺点是需要管理K和K’两个密钥.C发送方A接收方B比较x1xx1hK’EKDKxhK’Hash函数与消息认证全文共131页,当前为第129页。

  1306.6.3应用实现数据源认证数据源认证也称为消息认证,它是要求证实一个实体在过去某个时刻建立的数据源.数据源认证也包括数据完整性.提供数据源认证的方法有:(1)使用消息认证码MAC;(2)对附加上散列值的消息进行加密.设用户A将消息x发送给接收者B,A与B共享密钥K,则用户A向B发送以下数据可实现数据源的认证.(1)EK(xh(x)):提供保密(仅双方共享K)和认证(加密保护散列值);(2)xEK(h(x)):提供认证(加密保护散列值);(3)xh(xS):提供认证(仅双方共享随机数S);(4)EK(xh(xS)):提供保密和认证(仅双方共享K、S)。Hash函数与消息认证全文共131页,当前为第130页。

  1316.6.3应用由于加密软件慢、硬件费用高、加密算法专利保护和出口限制等因素,人们倾向于不使用带有加密的认证方法,愿意使用方法(3)。数据源认证方案不能提供数据源的不可拒绝性,因为任何一方都可以使用共享密钥创建一个消息及其认证。如果需要解决这种潜在的争执,可以使用可信第三方或公钥技术。使用MAC能够确定数据是在过去某个时间由特定一方生成的,但是不能提供唯一性和时间上的保证,也不能发现消息是否重用或重发。为了解决这些问题,必须使用随时间变化的参数,例如时间戳、序列号和随机数等。Hash函数与消息认证全文共131页,当前为第131页。

  2、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。

  3、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。

  4、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档

  广西金源生物化工实业万新型PVC无毒热稳定剂技改环境影响环评报告.pdf

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者