2016012006崔啸寒 散列函数的应用及其安全性

目录:

Ⅰ 散列函数的具体应用。

Ⅱ 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。

Ⅲ 结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问题。

正文:

Ⅰ 散列函数的具体应用。

首先,散列函数的定义是:

散列函数一般指哈希函数(Hash Function),表达式Addr = H(key)。一般的线性表,树中,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较。这一类查找方法建立在“比较“的基础上,查找的效率依赖于查找过程中所进行的比较次数。 理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应。

具体应用:

1,数据校验

HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。

2,单向性的运用

利用HASH函数的这个特点,我们能够实现口令,密码等安全数据的安全存储。密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,顾而我们可以比较HASH结果。这一点相信在银行等系统中有所运用,否则我们真的要睡不着觉了:)

3,碰撞约束以及有限固定摘要长度

数字签名正是运用了这些特点来提高效率的。我们知道非对称加密算法速度较低,通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率。
 4,可以运用HASH到随机数的生成和密码,salt值等的衍生中

因为HASH算法能够最大限度的保证其唯一性,故而可以运用到关键数据的衍生中(从一个随机的种子数产生,并且不暴露种子本身秘密)。

Ⅱ 散列函数的安全性以及目前安全散列函数的发展。

1.生日攻击:利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击称为生日攻击,也称为平方根攻击。生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度。

2.Message Digest Algorithm MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特点:

(1)压缩性:任意长度的数据,算出的MD5值长度都是固定的。

(2)容易计算:从原数据计算出MD5值很容易。

(3)抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

(4)强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

3.SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。然而人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-384 和 SHA-512 (这些有时候也被称做 SHA-2)。

4.2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。(注意:并非是真正的破解,只是加速了杂凑冲撞)

令世界顶尖密码学家想象不到的是,破解MD5之后,2005年2月,王小云教授又破解了另一国际密码SHA-1。因为SHA-1在美国等国际社会有更加广泛的应用,密码被破的消息一出,在国际社会的反响可谓石破天惊。换句话说,王小云的研究成果表明了从理论上讲电子签名可以伪造,必须及时添加限制条件,或者重新选用更为安全的密码标准,以保证电子商务的安全。

MD5破解工程权威网站是为了公开征集专门针对MD5的攻击而设立的,网站于2004年8月17日宣布:“中国研究人员发现了完整MD5算法的碰撞;Wang,Feng,Lai,Yu公布了MD5、MD4、HAVAL-128、RIPEMD-128几个 Hash函数的碰撞。这是近年来密码学领域最具实质性的研究进展。使用他们的技术,在数个小时内就可以找到MD5碰撞。……由于这个里程碑式的发现,MD5CRK项目将在随后48小时内结束”。

5.HASH函数的安全性要求:

(1)已知哈希函数的输出,要求它的输入是困难的,即已知c=Hash(m),求m是困难的。这表明函数应该具有单向性。

(2)已知m,计算Hash(m)是容易的。这表明函数应该具有快速性。

(3)已知,构造m2使Hash(m2)=c1是困难的。这表明函数应该具有抗碰撞性。

(4)c=Hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一比特,都将对c产生明显影响。这表明函数应该具有雪崩性。

(5)作为一种数字签名,还要求哈希函数除了信息m自身之外,应该基于发信方的秘密信息对信息m进行确认。

(6)接受的输入m数据没有长度限制;对输入任何长度的m数据能够生成该输入报文固定长度的输出。

6.安全散列函数的发展:

安全散列算法是数宇签名等密码学应用中重要的工具。目前最常用的安全散列算法是SHA-1算法,它被广泛地应用于电子商务等信息安全领域。

单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要,数据指纹),还有数字签名(加强版的消息认证)和验证数据的完整性。常见的单向散列函数有MD5和SHA

SHA安全散列函数

近些年,应用最广泛的散列函数是SHA。由于其他每一种被广泛应用的散列函数都已经被证实存在这密码分析学中的缺陷,接着到2005年,SHA或许仅存的安全散列算法。SHA由美国国家标准与技术研究院(NIST)开发。

● 1995年公布SHA-1
● 2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)
● 2008年,增加了SHA-224

更详细的如下图所示:

(1)算法实现

SHA-1算法是一种易于实现并可以基于多种平台的方便易行的安全算法,目前很多计算机语言,像C,JAVA,C++和PHP依照SHA一1算法的标准都能实现SHA-1。当然,受语言平台应用性的制约,应用最广泛的是C语言和Java语言。自身计算机上的消息认证一般采用C语言实现就足够,不仅能够保证良好的可移植性,而且实现起来也比较简单、容易理解。考虑到网络上的数字签名,乃至电子商务等,一般采用Java实现代码较简单迅速,其可移植性和安全性也能得到更好的保证。事实上,这里还存在一个潜在的问题:SHA-1算法信息摘要的计算速度井不总是能满足要求。使得SHA-1算法的硬件实现也有很多途径,如利用现场可编程门阵列不仅可以实现这种算法,井且某种程度上也能提高运算速度。特别是随着数字通信领域的飞速发展,在急剧增长的无线移动设备领域,对加密系统的性能要求越来越严格。使得SHA一1算法软硬件优化方案的实现成为专家关注的热点。

(2)算法安全性

SHA-1算法是由MDS算法演变而来的,它们之间最大的区别在于前者产生的摘要长度比后者长32bit。SHA-1对于强行攻击,产生任何一个报文使之摘要等于给定报文摘要的难度为2160数量级的操作,较MDS的2128数量级操作要难。因此,SHA-1算法对抵抗强行攻击的强度很高。同时,因为SHA-1算法的循环步骤有80次,比MDS算法的64次要多,所以其运行速度也较慢。

从目前密码学研究的最新进展来看,SHA-1虽然被发现存在缺陷(碰撞),但在近几年内,仍然可以大量使用SHA-1算法。同时,专家们认为王小云等人发现当前所用的散列算法存在的问题,必将帮助新的散列算法设计者考虑到这方面的问题,使得新的散列算法具有更好的安全性。美国政府的大多数应用被要求在今年年底以前改用SHA-2散列函数系列,早期的应用也要尽可能地进行升级。SHA-2算法跟 SHA一1基本上相似,至今尚末出现对SHA-2算法的攻击。

Ⅲ md5算法在验证软件完整性时可能出现的问题。

1、文件篡改:无法保证文件的来源可靠性,不能确认接收方接收到的文件与发送方的发出文件相同。

2、木马病毒植入:验证效率较低时,会出现验证时间过长的情况,这将给中间攻击者的攻击行为提供足够的攻击时间,增加安全风险。

3、传输错误、中断:不能保证文件的完整性和正确性,文件可能被损坏。

原文地址:https://www.cnblogs.com/cuixh998/p/9028786.html

时间: 2024-10-27 17:05:15

2016012006崔啸寒 散列函数的应用及其安全性的相关文章

散列函数的应用及其安全性

散列函数的应用及其安全性 一.散列函数的具体应用 Hash(散列函数),一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值.简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数. 由于散列函数的应用的多样性,它们

2016012099+陈杰+散列函数的应用及其安全性

作业五要求: 作业题目:散列函数的应用及其安全性.内容要求:(1) 给出散列函数的具体应用.(2) 结合生日攻击.以及2004.2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展.问题2的回答可以结合下面给出的第一个链接.(3)结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法来验证软件完整性时

2016012093 马雪 散列函数的应用及其安全性

散列函数的应用及其安全性 一.给出散列函数的具体应用. 1.消息认证 (1)概念:消息认证是用来验证消息完整性的一种机制和服务.消息认证确保收到的消息和发送时是一样的,同时.此外,还要确保发送方声称的身份是真实有效的,当Hash函数用于提供消息认证功能时,被称为消息摘要. (2)使用本质:发送者根据待发送的消息使用该函数计算一组Hash值,然后将Hash值和消息一起发送过去.接收者收到后对于消息执行同样Hash计算,并将结果与收到的Hash值进行对比.如果不匹配,则接收者推断出消息(也可能是Ha

2016012010 赵瑞雪 散列函数的应用及其安全性

作业题目:散列函数的应用及其安全性 内容要求:(1) 给出散列函数的具体应用 (2) 结合生日攻击.以及2004.2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展.问题2的回答可以参考下面给出的第一个链接 (3) 结合md5算法中的选择前缀碰撞以及第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问

2016012013 王雪 散列函数的应用及其安全性

散列函数的应用及其安全性 一.散列函数的具体应用 Hash函数 1.Hash算法是把任意长度的输入数据经过算法压缩,输出一个尺寸小了很多的固定长度的数据,即哈希值.哈希值也称为输入数据的数字指纹(Digital Fingerprint)或消息摘要(Message Digest)等.Hash函数具备以下的性质: 2.给定输入数据,很容易计算出它的哈希值: 3.反过来,给定哈希值,倒推出输入数据则很难,计算上不可行.这就是哈希函数的单向性,在技术上称为抗原像攻击性: 4.给定哈希值,想要找出能够产生

2016012026 管凌波 散列函数的应用及其安全性

2016012026 管凌波 散列函数的应用及其安全性 一.散列函数是什么. 散列函数即为Hash函数,就是把任意长度的输入(预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值.简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数. 因此,一个"好"的Hash函数具有这样的特点:对于大的输入集合使用该函数,产生的输出结果均匀分

2016012030+王超超+散列函数的应用及其安全性

一.散列函数的具体应用 1.单向散列函数在密码学中的应用     A.数字签名技术       a. 利用单向散列函数计算出需要签名的消息的邮摘,再利用签名算法对邮摘签名来代替直接对原来的消息进行签名.        b.有效地提高了签名的效率和速度,也减少了传输的信息量,节约了网络的带宽.     B.消息的完整性认证        a.通常做法是文件的所有者用Hash算法计算出文件的Hash值,自己保存Hash值的一份拷贝,然后把文件存放在一个公开的地方.需要验证一个           文

2016011998 张舒凯 散列函数的应用及其安全性

1.散列函数的具体应用 (1)消息认证:散列函数用于消息认证---消息认证是用来验证消息完整性的一种机制和服务,函数值称为消息摘要,确保收到的数据和发送时的一样(即没有修改.插入.删除或重放),发送者根据待发送的消息使用散列函数f计算一组散列值,再把散列函数值和消息发送出去:接受者收到后统一进行计算,并进行比对,具体方法: 1.使用对称密码算法加密消息和散列码: 2.使用对称密码算法只对散列码进行加密: 3.不使用加密算法,仅使用散列函数: 4.将整个消息和散列值加密. (2)数字签名:散列函数

2016012023李伟 散列函数的应用及其安全性

一.散列函数的具体应用 加密 一个典型的加密单向函数是“非对称”的,并且由一个高效的散列函数构成:一个典型的加密暗门函数是“对称”的,并且由一个高效的随机函数构成.确保传递真实的信息 消息或数据的接受者确认消息是否被篡改的性质叫数据的真实性,也称为完整性.发信人通过将原消息和散列值一起发送,可以保证真实性.散列表 散列表是散列函数的一个主要应用,使用散列表能够快速的按照关键字查找数据记录.例如,在英语字典中的关键字是英文单词,和它们相关的记录包含这些单词的定义.在这种情况下,散列函数必须把按照字