LoL最新赛事 2025年最佳英雄联盟投注网站Hash函数与消息认证pptx
日期:2025-05-22 11:16 | 人气:
LoL最新赛事- 2025年最佳英雄联盟投注网站
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页。
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页。
12③用公钥加密算法和发送方的秘密钥仅加密哈希值。和②一样,这种方式提供认证性,又由于只有发送方能产生加密的哈希值,因此这种方式还对发送方发送的消息提供了数字签字,事实上这种方式就是数字签字,见图(c)。(提供认证性和数字签字)④消息的哈希值用公钥加密算法和发送方的秘密钥加密后与消息链接,再对链接后的结果用单钥加密算法加密,这种方式提供了保密性和数字签字,见图(d)。(提供认证性、数字签字和保密性)Hash函数与消息认证全文共131页,当前为第12页。
14⑤使用这种方式时要求通信双方共享一个秘密值S,A计算消息M和秘密值S链接在一起的哈希值,并将此哈希值附加到M后发往B。因B也有S,所以可重新计算哈希值以对消息进行认证。由于秘密值S本身未被发送,敌手无法对截获的消息加以篡改,也无法产生假消息。这种方式仅提供认证,见图(e)。⑥这种方式是在⑤中消息与哈希值链接以后再增加单钥加密运算,从而又可提供保密性,见图(f)。Hash函数与消息认证全文共131页,当前为第14页。
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页。
256.1.2Hash函数的安全性对Hash函数的攻击是指寻找一对碰撞消息的过程生日悖论(birthdayparadox)生日问题:假设每个人的生日是等概率的,每年有365天,在k个人中至少有两个人的生日相同的概率大于1/2,问k最小应是多少?k人生日都不同的概率是:有P(365,23)=0.5073。即在23个人中,至少有两个人生日相同的概率大于0.5,这个数字比人们直观猜测的结果小得多,因而称为生日悖论。Hash函数与消息认证全文共131页,当前为第25页。
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页。
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页。
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页。
46MD5·应用数字证书:对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。例子:将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。Hash函数与消息认证全文共131页,当前为第46页。
50MD5·崩塌MD5破解工程权威网站是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang,Feng,Lai与Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。Hash函数与消息认证全文共131页,当前为第50页。
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页。
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页。
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页。
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页。
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页。
104消息认证技术1.消息内容认证消息内容认证常用的方法是:消息发送者在消息中加入一个鉴别码(MAC、MDC等)并经加密后发送给接收者(有时只需加密鉴别码即可)。接收者利用约定的算法对解密后的消息进行鉴别运算,将得到的鉴别码与收到的鉴别码进行比较,若二者相等,则接收,否则拒绝接收。2.源和宿的认证一种是通信双方事先约定发送消息的数据加密密钥,接收者只需证实发送来的消息是否能用该密钥还原成明文就能鉴别发送者。另一种是通信双方实现约定各自发送消息所使用的通行字,发送消息中含有此通行字并进行加密,接收者只需判别消息中解密的通行字是否等于约定的通行字就能鉴定发送者。Hash函数与消息认证全文共131页,当前为第104页。
105消息认证技术3.消息序号和操作时间的认证消息的序号和时间性的认证主要是阻止消息的重放攻击。常用的方法有消息的流水作业、链接认证符随机数认证法和时间戳等。1)MD5。信息摘要算法,由RSADataSecurity公司的Rivest于1992年提出,能对任何长度的输入消息进行处理,产生128bit长的“消息摘要”输出。2)SHA算法。它能为任意长度的输入产生160bit的杂凑值。典型算法Hash函数与消息认证全文共131页,当前为第105页。
107(1)B确信消息未被更改过。如果一个攻击者更改消息,而未更改MAC,那么B计算出来的消息将不同于接收到的MAC(假定攻击者不知道该密钥,因此不可能更改MAC来对应被更改过的消息)。(2)B确信消息来自发送者。因为没有其他人知道该密钥,所以也没有人能为一个消息伪造一个合适的MAC。(3)如果消息包括一个序列号(如用于HDLC、X.25和TCP),那么接收者确信该序列号的正确性。这是因为攻击者无法更改序列号。Hash函数与消息认证全文共131页,当前为第107页。
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页。
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页。