做业题目:散列函数的应用及其安全性。html
内容要求:算法
(1) 给出散列函数的具体应用。数据库
(2) 结合生日攻击、以及200四、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答能够参考下面给出的第一个连接。浏览器
(3)结合md5算法中的选择前缀碰撞以及第二个连接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问题。安全
1、散列函数的具体应用网络
(一)Hash算法在信息安全方面的应用主要体如今如下的3个方面: 函数
2、结合生日攻击、以及200四、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答能够参考下面给出的第一个连接。(https://www.win.tue.nl/hashclash/)工具
(一)生日攻击【4】测试
Hash函数的输出是定长的,输入数据的长度能够是任意的,所以杂凑函数的计算效率很重要。在安全性上,理想的Hash函数还必须具有如下性质。google
一、单向性:对任何给定的杂凑值d,寻找到工使d = h(x)在计算上是不可行的。
二、弱抗碰撞性:对任何给定的x,寻找到不等于x的y,使h(y)=h(x)在计算上是不可行的。
三、强抗碰撞性:寻找任何的(x,y)对,x不等于y, 使h(y)= h(x)在计算上是不可行的。
这里进一步解释以上性质。单向性使杂凑值能安全地表明原数据,也妨碍了攻击者根据特定的杂凑值伪造但愿的数据。其他两个性质都是防止碰撞性,碰撞性是指:能够找到x和y, x不等于y, 使h(y)=h(x)。以上弱抗碰撞性和强抗碰撞性在不一样的前提下防止了(y, h(x)或(x,h(y))成为有效对。“生口攻击”问题可用于形象地阐述解决碰摘的重要性。(生日攻击最初是指在23我的中,存在2我的生日相同的极率至少为1/2,这相似于计算了q=23次哈希函数的值,该值的范围是1到M=365,就得到了碰撞。分析显示,q=( 2MIn(1-a)-1)1/2 式中,a表示在杂凑值上限为M、经过计算q次杂凑函数获得一个碰撞的几率,当a=0.5时,q =1.17(M)1/2。生日攻击也说明,增大M能加强抗碰撞性,所以杂凑值的长度不能过短,当前广泛在128比特以上。
(二)密码学领域重大发现:山东大学王小云教授成功破解MD5
HASH函数,又称杂凑函数,是在信息安全领域有普遍和重要应用的密码算法。MD5就是这样一个在国内外有着普遍的应用的杂凑函数算法,它曾一度被认为是很是安全的。然而,王小云教授发现,能够很快的找到MD5的“碰撞”,就是两个文件能够产生相同的“指纹”。这意味着,当你在网络上使用电子签名签署一份合同后,还可能找到另一份具备相同签名但内容迥异的合同,这样两份合同的真伪性便无从辨别。王小云教授的研究成果证明了利用MD5算法的碰撞能够严重威胁信息系统安全,这一发现使目前电子签名的法律效力和技术体系受到挑战。所以,业界专家普林斯顿计算机教授Edward Felten等强烈呼吁信息系统的设计者尽快更换签名算法,并且他们强调这是一个须要当即解决的问题。【6】
(三)Google 宣布成功攻破 SHA-1 加密【9】
SHA-1是1995年由国家安全局(NSA)设计的,做为数字签名算法的一部分。 与其余散列同样,SHA-1还将任何输入消息转换为长字符串的数字和字母,用做该特定消息的加密指纹。
Google官方博客宣布,将在Chrome浏览器中逐渐下降SHA-1证书的安全指示。但有意思的是Google.com目前使用的也是SHA-1签名的证书,但证书将在3个月内过时,Google将从2015年起使用SHA-2签名的证书。SHA-1算法目前还没有发现严重的弱点,但伪造证书所需费用正愈来愈低,HAttered,成本仅为11万美圆,用于在亚马逊的云计算平台上执行。
做为概念证实,新研究提出了具备相同SHA1散列的两个PDF文件[PDF1,PDF2],可是显示彻底不一样的内容。
根据研究人员,SHAttered攻击比蛮力攻击快100,000倍,技术可用于在GIT文件对象甚至数字证书中建立冲突。
“这种攻击须要超过9,223,372,036,854,775,808个SHA1计算,这至关于处理能力为6500年的单CPU计算和110年的单GPU计算,”研究人员解释说。
尽管研究人员在十年前宣布不安全,微软在2013年11月宣布不安全,但宣布它不会在2016年后接受SHA1证书,SHA1已经在互联网上普遍使用。
因此,如今是迁移到更安全的加密散列,如SHA-256和SHA-3的高时间。
(四)Hash 函数H的安全性需求
需 求 |
描 述 |
输入长度可变 |
H 可应用于任意大小的数据块 |
输出长度固定 |
H产生定长的输出 |
效率 |
对任意给定的x,计算H(x)比较容易,用硬件和软件都可实现 |
抗原像攻击(单向性) |
对任意给定的Hash码h,找到知足H(y)=h 的y在计算上是不可行的 |
抗第二原像攻击( 抗弱碰撞性) |
对任何给定的分块x,找到知足y#x 且H(x)=H(y)的y 在计算上是不可行的 |
抗碰撞攻击(抗强碰撞性) |
找到任何知足H(x)=H(y)的偶对(x,y)在计算上是不可行的 |
伪随机性 |
H的输出知足伪随机性测试标准 |
(五)MD5和SHA-1安全性的对比
|
MD5安全性 |
SHA-1安全性 |
|
碰撞率的比较 |
高 |
低 |
SHA-1的CR值比MD5低,这意味着SHA-1比MD5拥有更高的安全性 |
基于散列值长度的比较 |
MD5算法散列值为128比特 |
SHA-1算法散列值为160比特 |
对于同一文件的散列值,长度越长必然会越难破解。SHA-1比MD5更难破解。 |
已有破解方法比较 |
已有密码分析的攻击方法 |
SHA-1只是理论上被破解 |
MD5较脆弱。 |
(六)目前安全散列函数的发展
目前经常使用的HASH函数主要有两个系列,MD 和 SHA系列。【3】
一、MD系列主要包括 MD2,MD4,MD5,不幸的是这一系列的hash函数都已经被证明是不够安全的了,我国山东大学教授王小云就是由于在有限的时间内成功地破解了MD2和MD5算法而扬名海内外。
二、SHA系列正是所以而生,其包含SHA1 和 SHA2(SHA224, SAH256, SHA384,SHA512)系列。其中224,256,384,512都是指其输出的位长度,而SHA1是160位长(注意咱们应该避免使用SHA0,那是SHA的初始版本,后来通过调整,升级为SHA0,咱们在使用的时候应该使用SHA1).
三、 通过长时间的测试和软硬件的不断提高,SHA1已经再也不被当成是能经得住考验的选择了。目前大多数应用场景下,推荐使用SHA256以上的算法。在几率方面有生日悖论的存在,经此推导,每种HASH算法的实际位强度只有其结果强度的通常,即若是是SHA256,实际攻击强度只有2的128次方。【8】
3、结合md5算法中的选择前缀碰撞以及第二个连接中的helloworld.exe和goodbyworld.exe两个可执行文件的md5消息摘要值和两个文件的执行结果说明md5算法在验证软件完整性时可能出现的问题。
(一)构造前缀碰撞法:经过选择不一样的前缀,计算生日数和碰撞块添加到文件尾部,便可获得两个具备相同的M D5的文件。不过,要计算出这些尾部数据并不容易,直接使用hashclash[[1]]的工具须要至关大的时间成本,可是碰撞做者对该工具进行改进后已经可以高效完成大量正常程序与恶意程序的碰撞了,如下为此阶段样本的典型样例(每组正常程序与恶意程序对照),因为碰撞的原理与文件格式无关,因此样本形态呈现了多样化的特色。
(二)密码学家使用的是“构造前缀碰撞法”(chosen-prefix collisions)来进行这次攻击(是王小云所使用的攻击方法的改进版本)。
他们所使用的计算机是一台 Sony PS3,且仅用了不到两天。
他们的结论:MD5 算法不该再被用于任何软件完整性检查或代码签名的用途!
下面这两个程序会在屏幕上打印出不一样的字符,可是它们的 MD5 都是同样的。【12】
另:如今,若是仅仅是想要生成 MD5 相同而内容不一样的文件的话,在任何主流配置的电脑上用几秒钟就能够完成了。
这几位密码学家编写的“快速 MD5 碰撞生成器”:hashclash/fastcoll_v1.0.0.5.exe.zip
源代码:fastcoll_v1.0.0.5_source.zip
(三)md5算法在验证软件完整性时可能出现的问题
一、破解MD5主要依靠大型字典的方法,将经常使用密码进行MD5后创建数据库,而后和MD5数值进行对比,经过这样的方法来“破解”MD5,所以,一般直接将密码进行MD5处理的话,一些弱密码很容易能够经过这种手段“破解”出来。
二、生成 MD5 相同而内容不一样的文件的话,在任何主流配置的电脑上用几秒钟就能够完成。
三、MD5值就好像是软件的指纹,每个软件只能有惟一一个MD5值,所以咱们能够经过MD5值来判断该程序或代码的完整性。使用方法是:例如某个游戏的运行文件的MD5值是X,而用HashX校验器检验出来的结果是Y,那么就有理由怀疑这个文件被加入了木马或者病毒。MD5校检是目前公认最安全的校检软件安全性的方法,但最近,国外的科学家研究出了新的MD5碰撞破解方法,可让两个不一样文件的MD5值彻底同样。若是黑客从网上下载一个工具,给其捆绑上木马,而后经过工具让其MD5值和原文件同样。那么当用户下载了文件后用MD5校检工具进行校检时就会发现带毒文件和原文件MD5值彻底同样,就会去放心地去运行,结果可想而知。因此,MD5校检已经再也不可信了。
4、总结
一、HASH算法不是加密算法
有不少人把HASH算法当成是加密算法,这是不许确的,其实咱们知道加密老是相对于解密而言的,没有解密何谈加密呢,HASH的设计以没法解为目的的。
二、HASH并不能保证网络的安全,要防止攻击者同时替换数据和HASH。正确运用中要结合加密,签名。
三、 没有永远的安全HASH,只有永远的HASH思想。
四、MD5 和SHA-1 是单项散列函数的典型表明,它们普遍地应用在信息安全和数字签名等各个领域。SHA-1比MD5安全性更高;在同一硬件上,SHA-1比MD5运行的要慢。在某种程度上,咱们能够得出这样一个结论,当处理的数据很小时,咱们能够选择使用MD5消息摘要而不是SHA-1消息摘要。由于此时MD5的碰撞率和运行时间都不高,这能够大大节约资源。
参考连接
【1】https://www.win.tue.nl/hashclash/
【2】http://www.win.tue.nl/hashclash/SoftIntCodeSign/
【4】密码学:生日攻击
【6】密码学领域重大发现:山东大学王小云教授成功破解MD5 (2004.09.05 来自:山大视点 )
【8】国际最新消息:Google 宣布成功攻破 SHA-1 加密
【10】MD5和SHA-1的缺陷
【11】MD5算法如何被破解
【12】关于王小云破解MD5