散列函数应用

一、给出散列函数的具体应用。

 Hash算法在信息安全方面的应用主要体现在以下的3个方面:

  1)文件校验
  我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。
  MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。
  2)数字签名
  Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。
  3)鉴权协议
  如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

 

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

  生日攻击:生日攻击是利用概率论中的生日问题,找到冲突的Hash值,伪造报文,使身份验证算法失效。

2004、2005年王晓云教授有关MD5安全性:MD5就是这样一个在国内外有着广泛的应用的杂凑函数算法。然而,王小云教授发现,可以很快的找到MD5的“碰撞”,就是两个文件可以产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另外一份具有相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证实了利用MD5算法的碰撞可以严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到挑战。

  017年Google公司SHA-1的安全性:SHA-1,安全哈希算法1,一个非常流行的加密散列函数设计于1995年由美国国家安全局,正式死亡后,一组研究人员从谷歌和CWI研究所在阿姆斯特丹宣布今天提交了第一次成功的SHA-1碰撞攻击 。谷歌与同一组研究人员接触,与他们合作,今天发布了新的研究,详细描述了成功的SHA1碰撞攻击,他们称之为SHAttered。

散列函数的安全性:

  有两种方法可以攻击安全散列函数:密码分析法和暴力攻击法。散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度。Van Oorschot和Wiener曾经提出,花费1000万美元涉及一个被专门用来搜索MD5算法碰撞的机器,则平均24天内就可以找到一个碰撞。2004年8月中国密码学家王小云教授等首次公布了提出一种寻找MD5碰撞的新方法。目前利用该方法用普通微机几分钟内即可找到MD5的碰撞。MD5已经呗彻底攻破。

  安全散列函数的发展:因为所需的安全散列长度越来越长,因此我们可以使用有限定义域上的散列函数(俗称压缩函数)通过迭代方式拓展为具有无限定义域的散列函数。而最为代表性的就Merkle-Damgard结构。这个结构的好处是,如果压缩函数是抗碰撞的,那经过此结构处理后的散列函数也是抗碰撞的。SM3,HMAC就是基于这种结构,因为Merkle-Damgard结构并不能抵抗扩展攻击,因此HMAC引入了Key。

 

 

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

1.选择前缀碰撞

        通过选择不同的前缀,计算生日数和碰撞块添加到文件尾部,即可得到两个具有相同的MD5的文件。不过,要计算出这些尾部数据并不容易,直接使用hashclash[[1]]的工具需要相当大的时间成本,但是碰撞作者对该工具进行改进后已经能够高效完成大量正常程序与恶意程序的碰撞了,以下为此阶段样本的典型样例(每组正常程序与恶意程序对照),由于碰撞的原理与文件格式无关,所以样本形态呈现了多样化的特点。其原理图大致如下:

 

2.helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果

(1)消息摘要值

        我们将我们所选择的前缀冲突查找方法应用到文件HelloWorld.exe 和GoodbyeWorld.exe。这是为了仔细构建两个832字节的块,并将它们附加到两个文件的末尾。这2次832字节已经被构建,使得结果文件被重命名为HelloWorld-colliding.exe 和 GoodbyeWorld-colliding.exe。

        虽然HelloWorld-colliding.exe 和 GoodbyeWorld-colliding.exe 是不同的文件,包含不同功能的程序,但它们都具有MD5哈希值。

(2)执行结果

        helloworld.exe的执行结果是窗口一闪而过;goodbyworld.exe的执行结果是“Goodbye World :-(”的循环输出。

 

3.md5算法来验证软件完整性时可能出现的问题。

(1)结果分析

        虽然这个生成器仅仅用于构造两个文件, MD5相同但内容不同,不是从MD5值逆推出的,但是说明MD5不可靠已经足以了.

(2)可能出现的问题

        黑客可以通过软件伪造MD5值,病毒木马就能很轻松的躲过MD5校检。

        如果黑客从网上下载一个工具,给其捆绑上木马,然后通过工具让其MD5值和原文件一样。那么当用户下载了文件后用MD5校检工具进行校检时就会发现带毒文件和原文件MD5值完全一样,就会去放心地去运行,结果可想而知。

posted @ 2018-05-13 21:07  云妹抖抖抖  阅读(548)  评论(0编辑  收藏  举报