哈希游戏- 哈希游戏平台- 哈希游戏官方网站
1、12024-3-192024-3-191122024-3-192024-3-192222024-3-192024-3-1922知识点:认证与认证系统认证与认证系统 散列算法概述散列算法概述 Hash散列算法散列算法 散列算法的攻击现状散列算法的攻击现状 消息认证消息认证第第6章章 认证理论与技术认证理论与技术Hash函数函数(1)32024-3-192024-3-193332024-3-192024-3-1933 认证认证(Authentication),又称为鉴别,认证往往是许多应用系统中安全保护的第一道设防(进入系统,先输密码),也是防止主动攻击的重要技术。简单地说,认证是一个实体向另外一
2、个实体证明某种声称的属性。因此,可以看出认证至少涉及到两个独立的通信实体。而认证参数一般有多种形式,如口令、标示符、密钥、信物、智能卡、指纹、视网纹等。目前广泛应用的还是目前广泛应用的还是基于密码的认证技术基于密码的认证技术,主要认证有身份认证、站点认证、,主要认证有身份认证、站点认证、报文认证等。报文认证等。随着Hash函数和数字签名的发现,人们意识到保密和认证同时是信息系统安保密和认证同时是信息系统安全的两个方面全的两个方面,但它们是两个不同属性的问题,认证不能自动提供保密性,而保密性也不能自然提供认证功能。42024-3-192024-3-194442024-3-192024-3-194
3、4认证认证主要目的主要目的用以确保消息发送者和接收者的真实性以及消息的完整性。认证通常可分为三个子概念:消息认证(或者数据源认证)、实体认证和认证密钥建立。消息认证消息认证主要涉及验证消息的某个声称属性;实体实体认证认证更多涉及验证消息发送者声称的身份;认证认证密钥密钥建立建立主要是致力于产生一条安全信道,用于后继的应用层的安全通信会线 三部分组成。密钥源通常预先协商、通过安全信道分配密钥密钥源通常预先协商、通过安全信道分配密钥。认证译码器认证译码器对接收到的消息进行验证对接收到的消息进行验证。由发送方的认证
4、编码器对发出的消息生成认证信息,将消息和认证信息一起通过公开信道发送给接收方;接收方收到消息和认证信息后,接收方收到消息和认证信息后,由认证译码器验证消息的合法性,如果消息合法便接受,否则将其丢弃由认证译码器验证消息的合法性,如果消息合法便接受,否则将其丢弃。62024-3-192024-3-196662024-3-192024-3-1966 认证的分类 根据产生认证消息不同方式,认证分为下面三类:根据产生认证消息不同方式,认证分为下面三类:(1)消息认证:用消息的密文本身充当认证信息;)消息认证:用消息的密文本身充当认证信息;(2)消息认证码)消息认证码MAC(Message Authent
5、ication Code):由以消息和密钥作为由以消息和密钥作为输入的公开函数产生的认证信息。输入的公开函数产生的认证信息。(3)散列值:由以消息作为唯一输入的散列函数产生的认证信息(无需密钥)散列值:由以消息作为唯一输入的散列函数产生的认证信息(无需密钥),也称,也称“消息摘要消息摘要”或或“报文摘要报文摘要”。72024-3-192024-3-197772024-3-192024-3-19776.2 散列算法概述散列算法概述 散列函数是一公开函数,通常记为散列函数是一公开函数,通常记为H,用于将任意长的消息用于将任意长的消息M映射为较短的、映射为较短的、固定长度的一个值作为认证符固定长度的
6、一个值作为认证符,记为,记为H(M),经常称函数值经常称函数值H(M)为散列值、哈希值为散列值、哈希值、杂凑值、杂凑码或消息摘要、数字指纹。、杂凑值、杂凑码或消息摘要、数字指纹。从密码角度看,散列函数也可以看作是一种单向密码体制,即它从一个明文从密码角度看,散列函数也可以看作是一种单向密码体制,即它从一个明文到密文是不可逆映射,只有加密过程,不能解密。到密文是不可逆映射,只有加密过程,不能解密。散列值是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消散列值是消息中所有比特的函数,因此提供了一种错误检测能力,即改变消息中任何一个比特或几个比特都会使散列值发生改变。息中任何一个比特或几个
7、比特都会使散列值发生改变。在密码学和数据安全技术中,散列函数是实现有效、安全可靠数字签字和认证在密码学和数据安全技术中,散列函数是实现有效、安全可靠数字签字和认证的重要工具的重要工具,是安全认证协议中的重要模块。,是安全认证协议中的重要模块。82024-3-192024-3-19886.2.1 散列算法的概念及结构散列算法的概念及结构 Hash散列函数一般模型散列函数一般模型 对于散列函数对于散列函数H有下面六个要求:有下面六个要求:(1)能够接受任意长度的消息作为输入;能够接受任意长度的消息作为输入;(2)能够生成较短的固定长度的输出;能够生成较短的固定长度的输出;(3)对任何消息输入都应该
8、能够容易和快速地计算对任何消息输入都应该能够容易和快速地计算出散列值;出散列值;(4)应该是一个单向函数应该是一个单向函数难以或不可能反推。难以或不可能反推。也就是说,给定也就是说,给定H(m),恢复恢复m在计算上是不可行的;在计算上是不可行的;(5)应该能够抵抗弱冲突,即当两个不同消息输入应该能够抵抗弱冲突,即当两个不同消息输入生成相同的输出时,就产生了冲突;生成相同的输出时,就产生了冲突;(6)应该能够抵抗强冲突,即找到两个有意义的消应该能够抵抗强冲突,即找到两个有意义的消息息m1和和m2,使得使得H(m1)=H(m2)几几乎是不可能的。乎是不可能的。92024-3-192024-3-19
9、99散列函数应该满足的一般安全特性:散列函数应该满足的一般安全特性:102024-3-192024-3-191010 1979年,MerKle基于数据压缩函数f建议了一个散列函数的一般结构如下图所示。MD系列、SHA系列大多数散列函数都使用该结构。散列函数基本结构散列函数基本结构 112024-3-192024-3-191111 上图中,上图中,散列函数输入消息散列函数输入消息M,并将其分为并将其分为L个固定长度的分组,若最后一个数据个固定长度的分组,若最后一个数据块不满足输入分组长度要求,按照一定规则进行填充块不满足输入分组长度要求,按照一定规则进行填充。该散列函数重复使用一个压缩函数该散列
10、函数重复使用一个压缩函数f。压缩函数压缩函数f有两个输入,有两个输入,一个是前一阶段的一个是前一阶段的n为输入,另外一个源于消息的为输入,另外一个源于消息的b位分组,并产生一个位分组,并产生一个n位的输出,算法开始时需要一个位的输出,算法开始时需要一个初始变量初始变量IV,最终的输出值通过一个输出变换函数最终的输出值通过一个输出变换函数g得到消息散列值,通常得到消息散列值,通常bn,故称故称f为压缩函数为压缩函数,如下图所示:,如下图所示:压缩函数基本结构压缩函数基本结构 122024-3-192024-3-4-3-192024-3-1912126.2.2 散列算法的分类
11、及发展现状散列算法的分类及发展现状 最常用的散列函数主要可分为如下几类:最常用的散列函数主要可分为如下几类:(1)Message Digest(MD)系列系列 MD系列是由国际著名密码学家图灵奖获得者兼公钥加密算法RSA的创始人Rivest设计,。(2)SHA(Security Hash Algorithm)系列系列 由美国专门制定密码算法的标准机构由美国专门制定密码算法的标准机构NIST和和NSA(National Security Agency,国,国家安全局),家安全局),在在1993年,在年,在MD5基础上首先提出基础上首先提出SHA-0,美国国家安全局(,美国国家安全局(NSA)在)
12、在这个算法发布之后就将其撤回这个算法发布之后就将其撤回。1995年年SHA-1被提出被提出(即美国的即美国的FIPS PUB 180-1标准标准),消息散列为,消息散列为160 bits。现今。现今SHA-1应用到应用到DSA数字签名的标准数字签名的标准。在在2003年,相继对年,相继对SHA系列算法进行扩展,提出系列算法进行扩展,提出SHA-256、SHA-384、SHA-512(即美国的即美国的FIPS PUB 180-2标准标准),并于,并于2004年加入了额外年加入了额外的变种:的变种:SHA-224,统称为,统称为SHA-2。132024-3-192024-3-
13、4-3-192024-3-1913132007年,年,NIST发起了发起了SHA-3竞赛以征集新的竞赛以征集新的Hash算法算法。最终最终经过三轮的评选,经过三轮的评选,2012年年10月月2号,号,Keccak作为竞赛的胜利者,作为竞赛的胜利者,SHA-3标准标准被发布被发布(即美国的即美国的FIPS PUB 202),),提出了提出了4个个Hash算法算法SHA3-224,SHA3-256,SHA3-384,and SHA3-512,可完全替换,可完全替换SHA-2。(3)其它散列算法其它散列算法 HAVAL可以用来实现可变是那列的输出,RIPEMD-128、RIPEMD-160是欧洲是欧
14、洲MD5和和MD4算法的研究者提出的替代算法,算法的研究者提出的替代算法,Tiger算法主要是设计思想是在算法主要是设计思想是在64位和位和32位计算机上能够很好的使用位计算机上能够很好的使用Hash算法。算法。142024-3-192024-3-191414 目前在信息安全领域,最常用的散列函数有两大系列:Message Digest(MD)系列和SHA(Security Hash Algorithm)系列,而MD5、SHA-1是当前国际通行的两大散列函数。MD5曾经是最广泛的摘要算法,但自从在美国加州圣巴巴拉召开的国际密码学会议(Crypto2004)原山东大学的王小云教授做了破译MD5、
15、HAVAL-128、MD4和RIPEMD算法的报告,囊括了对MD5、HAVAL-128、MD4和RIPEMD四个著名HASH算法的破译结果。-发展现状发展现状152024-3-192024-3-191515 2007年,年,Marc Stevens,Arjen K.Lenstra和和Benne de Weger进一步指出通过伪造进一步指出通过伪造软件签名,可重复性攻击软件签名,可重复性攻击MD5算法;算法;2008年,荷兰埃因霍芬技术大学科学家成功把年,荷兰埃因霍芬技术大学科学家成功把2个可执行文件进行了个可执行文件进行了MD5碰撞,使得这两个运行结果不同的程序被计算出同一个碰撞,使得这两个运
16、行结果不同的程序被计算出同一个MD5;同年同年12月一组科研人员通过月一组科研人员通过MD5碰撞成功生成了伪造的碰撞成功生成了伪造的SSL证书,这使得在证书,这使得在https协议中服务器可以伪造一些根协议中服务器可以伪造一些根CA的签名,因此的签名,因此MD5散列算法已不安全,不再推散列算法已不安全,不再推荐使用。荐使用。但是目前仍然在很多场合还在使用但是目前仍然在很多场合还在使用MD5算法,如算法,如Linux操作系统中的用户口令的操作系统中的用户口令的验证算法。验证算法。162024-3-192024-3-1916162012年,Mark Stevens使用了大量的云服务器来对SHA-1的进行差分路径攻击,仅用258.5次就能形成一次攻击碰撞,并且估计,在261次的循环计算后,就可以形成完整的哈希碰撞密码库。由于近年来对哈希算法的分析与破解取得了突破性的进展,由于MD5和SHA-0成功的破解,以及对SHA-1和SHA-2理论上的攻击出现,使得现行的MD系列和SHA系列算法都不再满足安全需要。NIST希望选出一个与之前算法不同的,可替换的Hash算法,于是于是NIST于于2007年