第3章-单向散列函数ppt课件.ppt
《第3章-单向散列函数ppt课件.ppt》由会员分享,可在线阅读,更多相关《第3章-单向散列函数ppt课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 单向散列函数单向散列函数1Network and Information Security第第3章章单向散列函数单向散列函数3.1 3.1 单向散列函数概述单向散列函数概述3.2 MD53.2 MD5算法算法3.3 SHA-13.3 SHA-1算法算法3.4 3.4 消息认证码消息认证码(MAC)(MAC)3.5 3.5 对单向散列函数的攻击对单向散列函数的攻击第第3 3章章 单向散列函数单向散列函数2Network and Information Security随着以随着以InternetInternet为基础的电子商务技术的迅猛发展为基础的电子商务技术的迅猛发展,以以公钥
2、密码、公钥密码、数字签名数字签名等为代表的加密安全技术已成为等为代表的加密安全技术已成为研究的热点。研究的热点。单向散列函数是数字签名单向散列函数是数字签名中的一个关键环节中的一个关键环节,可以大大可以大大缩短签名时间缩短签名时间并提高安全性并提高安全性,另外在另外在消息完整性检测消息完整性检测,内存的散布分配内存的散布分配,软件系统中软件系统中帐号口令帐号口令的安全存储单向的安全存储单向散列函数也有重要应用。散列函数也有重要应用。第第3 3章章 单向散列函数单向散列函数3Network and Information Security3.1 3.1 单向散列函数概述单向散列函数概述所所谓谓的
3、的单单向向散散列列函函数数(Hash(Hash FunctionFunction,又又称称哈哈希希函函数数、杂杂凑凑函函数数),是是将将任任意意长长度度的的消消息息M M映映射射成成一一个个固固定定长长度度散散列列值值h h(设长度为设长度为m)m)的函数的函数H H:h=H(M)h=H(M)散列函数要具有单向性,则必须满足如下特性:散列函数要具有单向性,则必须满足如下特性:给定给定M M,很容易计算,很容易计算h h。给定给定h h,根据,根据H(M)=hH(M)=h反推反推M M很难。很难。给定给定M M,要找到另一消息,要找到另一消息MM并满足并满足H(M)=H(M)H(M)=H(M)很
4、难。很难。在某些应用中,单向散列函数还需要满足抗碰撞在某些应用中,单向散列函数还需要满足抗碰撞(Collision)(Collision)的条件:要找到的条件:要找到两个随机的消息两个随机的消息M M和和MM,使,使H(M)=H(M)H(M)=H(M)很难。很难。第第3 3章章 单向散列函数单向散列函数4Network and Information Security HashHash函数的良好性质函数的良好性质(1)广泛的应用性Hash函数能用于任何大小的消息。(2)定长输出将消息集合中的任意长度的消息映射为长度为的消息摘要。(3)实现性对Hash函数的一个非常重要的要求是简单易实现性。(4
5、)单向性质要求Hash函数是单向函数。给定h值,求信息M(是一对多的关系),只有通过枚举,在现有的计算环境下是不可行的。第第3 3章章 单向散列函数单向散列函数5Network and Information Security(5 5)抗弱对抗性抗弱对抗性 确确定定与与x x有有相相同同位位数数的的y y,使使H(x)=H(y),H(x)=H(y),在在现现有有的的计计算算环环境境下下是是不不可可行的行的。(6 6)抗强对抗性抗强对抗性 找找到到两两个个不不同同位位数数信信息息x,yx,y,使使H(x)=H(y)H(x)=H(y),在在现现有有的的计计算算环环境境下下是是不不可行的。可行的。注
6、:以上两种,哪一种更容易找?注:以上两种,哪一种更容易找?(7 7)独立性独立性哈希函数值哈希函数值“不依赖输入信息不依赖输入信息”,从,从某种程度上说是某种程度上说是由算法决定的。由算法决定的。(8 8)抗近冲突)抗近冲突HashHash函函数数满满足足独独立立性性,输输入入信信息息某某一一位位的的变变化化,应应该该引引起起平平均均一一半半的输出位的变化。的输出位的变化。(9 9)安全性安全性在很广泛的条件下在很广泛的条件下,Hash,Hash值值()的分布是均匀分布的的分布是均匀分布的.第第3 3章章 单向散列函数单向散列函数6Network and Information Securit
7、y散列函数工作模式散列函数工作模式图3-1 单向散列函数工作模式第第3 3章章 单向散列函数单向散列函数7Network and Information Security 3.2.1 算法算法MD表表示示消消息息摘摘要要(MessageDigest)。MD5是是MD4的的改改进进版版,该该算算法法对对输输入入的的任任意意长长度度消消息息产产生生128位位散散列列值值(或或消消息息摘摘要要)。MD5算法可用图算法可用图3-2表示。表示。3.2MD5算算法法第第3 3章章 单向散列函数单向散列函数8Network and Information Security图3-2MD5算法 1)附加填充位附
8、加填充位 2)附加长度附加长度64 3)初始化初始化MD缓冲区缓冲区 5)输出输出 4)按按512位的分组处位的分组处理输入消息理输入消息第第3 3章章 单向散列函数单向散列函数9Network and Information Security由上图可知,由上图可知,MD5算法包括以下五个步骤。算法包括以下五个步骤。1)附加填充位附加填充位首首先先填填充充消消息息,使使其其长长度度为为一一个个比比512的的倍倍数数小小64位位的的数数。填填充充方方法法:在在消消息息后后面面填填充充一一位位1,然然后后填填充充所所需需数数量的量的0。填充位的位数从。填充位的位数从1512。填充消息长度填充消息长
9、度=512-(k+64)mod5122)附加长度附加长度将将原原消消息息长长度度的的64位位表表示示附附加加在在填填充充后后的的消消息息后后面面。当当原原消消息息长长度度大大于于264时时,用用消消息息长长度度mod264填填充充。这这时时,总总长长度度恰恰好好是是512的的整整数数倍倍。令令M01N1为为填填充充后后消消息的各个字息的各个字(每字为每字为32位位),N是是16的倍数。的倍数。第第3 3章章 单向散列函数单向散列函数10Network and Information Security3)初始化初始化MD缓冲区缓冲区初初始始化化用用于于计计算算消消息息摘摘要要的的128位位缓缓冲
10、冲区区。这这个个缓缓冲冲区区由由四四个个32位位寄寄存存器器A A、B B、C C、D D表表示示。寄寄存存器器的的初初始始化值为化值为(按低位字节在前的顺序存放按低位字节在前的顺序存放):A:01234567B:89abcdefC:fedcba98D:765432104)按按512位的分组处理输入消息位的分组处理输入消息这一步为这一步为MD5的主循环,包括四轮,如图的主循环,包括四轮,如图3-3所示。所示。每个循环都以当前的正在处理的每个循环都以当前的正在处理的512比特分组比特分组Yq和和128比特缓冲值比特缓冲值ABCDABCD为输入,然后更新缓冲内容。为输入,然后更新缓冲内容。第第3
11、3章章 单向散列函数单向散列函数11Network and Information Security图3-3单个512比特分组的MD5主循环处理第第3 3章章 单向散列函数单向散列函数12Network and Information Security图3-3中,四轮的操作类似,每一轮进行16次操作。各轮的操作过程如图3-4所示。图3-4MD5某一轮的1次执行过程j:015,i:164(共四轮,每一轮用的都不同)第第3 3章章 单向散列函数单向散列函数13Network and Information Security四四轮轮操操作作的的不不同同之之处处在在于于每每轮轮使使用用的的非非线线性性
12、函函数数不不同同,在在第第一一轮轮操操作作之之前前,首首先先把把A A、B B、C C、D D复复制制到到另另外外的的变变量量a a、b b、c c、d d中中。这这四四个个非非线线性性函函数数分分别别为为(其其输入输入/输出均为输出均为32位字位字):F(X,Y,Z)=(XY)(X)Z)G(X,Y,Z)=(XZ)(Y(Z)H(X,Y,Z)=X Y ZI(X,Y,Z)=Y(X(Z)其其中中,表表示示按按位位与与;表表示示按按位位或或;表表示示按按位位反;反;表示按位异或。表示按位异或。第第3 3章章 单向散列函数单向散列函数14Network and Information Security此
13、外,由图3-4可知,这一步中还用到了一个有64个元素的表T1.64,Ti=232abs(sin(i),i的单位为弧度。根据以上描述,将这一步骤的处理过程归纳如下:fori=0toN/161do/*每次循环处理16个字,即512字节的消息分组*/*把A存为AA,B存为BB,C存为CC,D存为DD*/AA=ABB=BCC=CDD=D第第3 3章章 单向散列函数单向散列函数15Network and Information Security/*第一轮第一轮*/*令令abcdksi表示操作表示操作b=b+(a+F(b,c,d)+Mk+Ti)s)其中,其中,Ys表示表示Y循环左移循环左移s位位*/*完成
14、下列完成下列16个操作个操作*/ABCD071DABC1122CDAB2173BCDA3224ABCD475DABC5126CDAB6177BCDA7228ABCD879DABC91210CDAB101711BCDA112212ABCD12713DABC131214CDAB141715BCDA152216第第3 3章章 单向散列函数单向散列函数16Network and Information Security/*第二轮第二轮*/*令令abcdksi表示操作表示操作b=b+(a+G(b,c,d)+Mk+Ti)s)*/*完成下列完成下列16个操作个操作*/ABCD1517DABC6918CDAB
15、111419BCDA02020ABCD5521DABC10922CDAB151423BCDA42024ABCD9525DABC14926CDAB31427BCDA82028ABCD13529DABC2930CDAB71431BCDA122032第第3 3章章 单向散列函数单向散列函数17Network and Information Security/*第三轮第三轮*/*令令abcdkst表示操作表示操作b=b+(a+H(b,c,d)+Mk+Ti)s)*/*完成以下完成以下16个操作个操作*/ABCD5433DABC81134CDAB111635BCDA142336ABCD1437DABC41
16、138CDAB71639BCDA102340ABCD13441DABC01142CDAB31643BCDA62344ABCD9445DABC121146CDAB151647BCDA22348第第3 3章章 单向散列函数单向散列函数18Network and Information Security/*第四轮第四轮*/*令令abcdkst表示操作表示操作b=b+(a+I(b,c,d)+Mk+Ti)s)*/*完成以下完成以下16个操作个操作*/ABCD0649DABC71050CDAB141551BCDA52152ABCD12653DABC31054CDAB101555BCDA12156ABCD8
17、657DABC151058CDAB61559BCDA132160ABCD4661DABC111062CDAB21563BCDA92164A=A+AAB=B+BBC=C+CCD=D+DDend/*i循环*/第第3 3章章 单向散列函数单向散列函数19Network and Information Security5)输出输出由由A、B、C、D四四个个寄寄存存器器的的输输出出按按低低位位字字节节在在前前的的顺顺序序(即即以以A的的低低字字节节开开始始、D的的高高字字节结束节结束)得到得到128位的消息摘要。位的消息摘要。以以上上就就是是对对MD5算算法法的的描描述述。MD5算算法法的的运算均为基本
18、运算,比较容易实现且速度很快。运算均为基本运算,比较容易实现且速度很快。第第3 3章章 单向散列函数单向散列函数20Network and Information Security3.2.2举例举例我们以求字符串“abc”的MD5散列值为例来说明上面描述的过程。“abc”的二进制表示为011000010110001001100011。1填充消息消息长24,先填充1位1,然后填充423位0,再用消息长24,即0 x0000000000000018填充,则:M0=61626380M1=00000000M2=00000000M3=00000000M4=00000000M5=00000000M6=00
19、000000M7=00000000M8=00000000M9=00000000M10=00000000M11=00000000M12=00000000M13=00000000M14=00000000M15=000000182初始化A:01234567B:89abcdefC:fe dcba98D:765432103主循环利用3.2.1节中描述的过程对字块1(本例只有一个字块)进行处理。变量a、b、c、d每一次计算后的中间值不再详细列出。4输出消息摘要=900150983cd24fb0d6963f7d28e17f72第第3 3章章 单向散列函数单向散列函数21Network and Informa
20、tion Security3.3安全散列函数安全散列函数(SHA-1)3.3.1 算法算法SHA是是美美国国NIST和和NSA共共同同设设计计的的安安全全散散列列算算法法(Secure Hash Algorithm),用用 于于 数数 字字 签签 名名 标标 准准DSS(DigitalSignatureStandard)。SHA的的修修改改版版SHA1于于1995年年作作为为美美国国联联邦邦信信息息处处理理标标准准公公告告(FIPSPUB1801)发布。发布。SHA1产生消息摘要的过程类似产生消息摘要的过程类似MD5,如图,如图3-5所示。所示。第第3 3章章 单向散列函数单向散列函数22Ne
21、twork and Information Security图3-5SHA1算法第第3 3章章 单向散列函数单向散列函数23Network and Information SecuritySHASHA1 1的的输输入入为为长长度度小小于于264位位的的消消息息(若若大大于于,用用mod mod 即即可可),输输出出为为160位位的的消消息息摘摘要要。具具体体过过程如下。程如下。1)填充消息填充消息首首先先将将消消息息填填充充为为512位位的的整整数数倍倍,填填充充方方法法和和MD5完完全全相相同同:先先填填充充一一个个1,然然后后填填充充一一定定数数量量的的0,使使其其长长度度比比512的的倍
22、倍数数少少64位位;接接下下来来用用原原消消息息长长度度的的64位位表表示示填填充充。这这样样,消消息息长长度度就就成成为为512的的整整数数倍倍。以以M0、M1、Mn-1表表示示填填充充后后消消息的各个字块息的各个字块(每字块为每字块为16个个32位字位字)。第第3 3章章 单向散列函数单向散列函数24Network and Information Security2)初始化缓冲区初始化缓冲区在运算过程中,在运算过程中,SHA要用到两个缓冲区,要用到两个缓冲区,两个缓两个缓冲区均有五个冲区均有五个32位的寄存器位的寄存器。第一个缓冲区标记为第一个缓冲区标记为A A、B B、C C、D D、E
23、 E;第二个缓冲区标记为;第二个缓冲区标记为H0、H1、H2、H3、H4。此外,运算过程中还用到一个标记为。此外,运算过程中还用到一个标记为W0、W1、W79的的80个个32位字序列和一个单字的缓冲区位字序列和一个单字的缓冲区TEMP。在。在运算之前,初始化运算之前,初始化Hj:H0=0 x67452301 H1=0 xEFCDAB89 H2=0 x98BADCFE H3=0 x10325476 H4=0 xC3D2E1F0第第3 3章章 单向散列函数单向散列函数25Network and Information Security3)按按512位的分组处理输入消息位的分组处理输入消息SHA运运
24、算算主主循循环环包包括括四四轮轮,每每轮轮20次次操操作作。SHA用用到到一一个个逻逻辑辑函函数数序序列列f0、f1、f79。每每个个逻逻辑辑函函数数的的输输入入为为三三个个32位位字字,输输出出为为一一个个32位位字字。定义如下(B、C、D均为32位字):ft(B,C,D)=(BC)(BD)(0t19)ft(B,C,D)=BCD(20t39)ft(B,C,D)=(BC)(BD)(CD)(40t59)ft(B,C,D)=BCD(60t79)其中,运算符的定义与其中,运算符的定义与3.1节中节中MD5运算中的相同。运算中的相同。第第3 3章章 单向散列函数单向散列函数26Network and
25、Information SecuritySHA运运算算中中还还用用到到了了常常数数字字序序列列K0、K1、K79,其值为,其值为 Kt=0 x5A827999(0t19)Kt=0 x6ED9EBA1(20t39)Kt=0 x8F1BBCDC(40t59)Kt=0 xCA62C1D6(60t79)第第3 3章章 单向散列函数单向散列函数27Network and Information SecuritySHA算法按如下步骤处理每个字块算法按如下步骤处理每个字块Mi:(1)把把Mi分为分为16个字个字W0、W1、W15,其中,其中,W0为最左边的字。为最左边的字。(2)fort=16to79dol
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单向 函数 ppt 课件
限制150内