作业5:有关散列函数安全性的知识扩展。

作业题目:散列函数的应用及其安全性。

内容要求:

     (1) 给出散列函数的具体应用。

     (2) 结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以参考下面给出的第一个链接。

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

一、散列函数的具体应用

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

  1、消息认证

  消息认证是用来验证消息完整性的一种机制或服务。消息认证中使用Hash函数的本质如下,发送者根据待发送的消息使用该函数计算一组Hash值,然后将Hash值和消息一起发送过去。接受者收到后对于消息执行同样的Hash计算,并将结果与收到的Hash值进行比对。如果不匹配,则接受者推断出消息(或Hash值)遭受了篡改。

  2、数字签名

  Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。在进行数字签名过程中使用用户的私钥加密消息的Hash值,其他任何知道该用户公钥的人都能够通过数字签名来验证消息的完整性。

·   3、其他应用

  (1)用于产生单向口令文件。

  (2)用于入侵检测和病毒检测。

  (3)用于构建随机函数(PRF)或用伪随机数发生器(PRNG)。

    (4)  文件校验:我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。 HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

二、结合生日攻击、以及2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散列函数的发展。问题2的回答可以参考下面给出的第一个链接。(https://www.win.tue.nl/hashclash/

(一)生日攻击【4】

  Hash函数的输出是定长的,输入数据的长度可以是任意的,因此杂凑函数的计算效率很重要。在安全性上,理想的Hash函数还必须具备以下性质。

  1、单向性:对任何给定的杂凑值d,寻找到工使d = h(x)在计算上是不可行的。
  2、弱抗碰撞性:对任何给定的x,寻找到不等于x的y,使h(y)=h(x)在计算上是不可行的。
  3、强抗碰撞性:寻找任何的(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】

  1、MD系列主要包括 MD2,MD4,MD5,不幸的是这一系列的hash函数都已经被证实是不够安全的了,我国山东大学教授王小云就是因为在有限的时间内成功地破解了MD2和MD5算法而扬名海内外。

  2、SHA系列正是因此而生,其包含SHA1 和 SHA2(SHA224, SAH256, SHA384,SHA512)系列。其中224,256,384,512都是指其输出的位长度,而SHA1是160位长(注意我们应该避免使用SHA0,那是SHA的初始版本,后来经过调整,升级为SHA0,我们在使用的时候应该使用SHA1).
    3、 经过长时间的测试和软硬件的不断提升,SHA1已经不再被当成是能经得住考验的选择了。目前大多数应用场景下,推荐使用SHA256以上的算法。在概率方面有生日悖论的存在,经此推导,每种HASH算法的实际位强度只有其结果强度的一般,即如果是SHA256,实际攻击强度只有2的128次方。【8】

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

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

(二)密码学家使用的是“构造前缀碰撞法”(chosen-prefix collisions)来进行此次攻击(是王小云所使用的攻击方法的改进版本)。

  他们所使用的计算机是一台 Sony PS3,且仅用了不到两天。

  他们的结论:MD5 算法不应再被用于任何软件完整性检查或代码签名的用途!

  下面这两个程序会在屏幕上打印出不同的字符,但是它们的 MD5 都是一样的。【12】

  HelloWorld-colliding

  GoodbyeWorld-colliding.exe

  另:现在,如果仅仅是想要生成 MD5 相同而内容不同的文件的话,在任何主流配置的电脑上用几秒钟就可以完成了。
  这几位密码学家编写的“快速 MD5 碰撞生成器”:hashclash/fastcoll_v1.0.0.5.exe.zip
  源代码:fastcoll_v1.0.0.5_source.zip

(三)md5算法在验证软件完整性时可能出现的问题

  1、破解MD5主要依靠大型字典的方法,将常用密码进行MD5后建立数据库,然后和MD5数值进行对比,通过这样的方法来“破解”MD5,因此,通常直接将密码进行MD5处理的话,一些弱密码很容易可以通过这种手段“破解”出来。

  2、生成 MD5 相同而内容不同的文件的话,在任何主流配置的电脑上用几秒钟就可以完成。

  3、MD5值就好像是软件的指纹,每一个软件只能有唯一一个MD5值,因此我们可以通过MD5值来判断该程序或代码的完整性。使用方法是:例如某个游戏的运行文件的MD5值是X,而用HashX校验器检验出来的结果是Y,那么就有理由怀疑这个文件被加入了木马或者病毒。MD5校检是目前公认最安全的校检软件安全性的方法,但最近,国外的科学家研究出了新的MD5碰撞破解方法,可以让两个不同文件的MD5值完全一样。如果黑客从网上下载一个工具,给其捆绑上木马,然后通过工具让其MD5值和原文件一样。那么当用户下载了文件后用MD5校检工具进行校检时就会发现带毒文件和原文件MD5值完全一样,就会去放心地去运行,结果可想而知。所以,MD5校检已经不再可信了。

四、总结

  1、HASH算法不是加密算法
    有很多人把HASH算法当成是加密算法,这是不准确的,其实我们知道加密总是相对于解密而言的,没有解密何谈加密呢,HASH的设计以无法解为目的的。

  2、HASH并不能保证网络的安全,要防止攻击者同时替换数据和HASH。正确运用中要结合加密,签名。

  3、 没有永远的安全HASH,只有永远的HASH思想。

  4、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/

【3】HASH函数的特点及其应用

【4】密码学:生日攻击

【5】关于HASH和MD5,王小云教授的“解密”

【6】密码学领域重大发现:山东大学王小云教授成功破解MD5 (2004.09.05 来自:山大视点 )

【7】关于王小云破解MD5之我见

【8】国际最新消息:Google 宣布成功攻破 SHA-1 加密

【9】深度:为什么Google急着杀死加密算法SHA-1

【10】MD5和SHA-1的缺陷

【11】MD5算法如何被破解

【12】关于王小云破解MD5

【13】构造前缀碰撞法可制作两个内容不同但具有相同MD5验证码的文件

原文地址:https://www.cnblogs.com/13-14/p/9016500.html

时间: 2024-10-11 04:03:12

作业5:有关散列函数安全性的知识扩展。的相关文章

第五次作业:散列函数安全性的知识扩展

散列函数的应用及其安全性 一.给出散列函数的具体应用 答: ①消息认证:是用来验证消息完整性的一种机制或服务,确保收到的数据确实和发送时的一样(没有修改.插入.删除或重放),通常还要求信息认证机制确保发送方声称的身份是真实有效的 消息认证中使用Hash函数的本质:发送者根据待发送的信息使用该函数计算一组Hash值,然后将Hash值和消息一起发送过去.接收者收到后对信息执行同样的Hash计算,并将结果与收到的Hash值进行对比,如果不匹配,则接收者推断出信息遭受到篡改 Hash函数用于消息认证的方

【NLP】条件随机场知识扩展延伸

条件随机场知识扩展延伸 作者:白宁超 2016年8月3日19:47:55 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应用.本文源于笔者做语句识别序列标注过程中,对条件随机场的了解,逐步研究基于自然语言处理方面的应用.成文主要源于自然语言处理.机器学习.统计学习方法和部分网上资料对CRF介绍的相关的相关,最后进行大量研究整理汇总成体系知识.文章布局如下:第一节介绍CRF相关的基础统计知识:第二节介绍基于自然语言角度的

散列函数安全性扩展

一.散列函数的具体应用: 1,数据校验 HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证. 2,单向性的运用 利用HASH函数的这个特点,我们能够实现口令,密码等安全数据的安全存储.密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,顾而我们可以比较HASH结果.这一点相信在银行等系统中有所运用. 3,碰撞约束以及有限固定摘要长度 数字签名正是运用了这些特点来提高效率的.我们知道非

第十四次课作业(绩效评估、安全相关知识)

一.项目整体绩效评估 1.三E审计是什么的合称?(记) 三E审计:是经济审计.效率审计和效果审计的合称. 2.霍尔三维结构是从哪三个方面考察系统工程的工作过程的? 从逻辑.时间.知识等三个方面考察系统工程的工作过程. 3.投资回收期的公式?(记,并理解) (累计净现金流量开始出现正值的年份数-1)+(上年累计净现金流量的绝对值/当前的净现金流量) n=-log(1-pio/a)/log(1+io)   n投资回收期,p投资的现值,io基准收益率,A年等额经营成本 二.信息安全相关知识 1.在三安

DataBase MongoDB高级知识-扩展

MongoDB高级知识-易扩展 应用程序数据集的大小正在以不可思议的速度增长.随着可用宽带的增长和存储器价格的下跌,即使是一个小规模的应用程序,需要存储的数据也可能大的惊人,甚至超出了很多数据库的处理能力.过去非常罕见的T级别数据,现在已是司空见惯了. 由于需要存储的数据不断增长,开发者面临一个困难:应该如何扩展数据库?接下来完我们就来讲讲. 一.mongodb如何扩展? 1.纵向:纵向扩展就是使用计算能力更强的机器. 提升计算机的配置,但是配置高价格也随之上升,当上升到一定的程度就无法提升了.

信管师培训之第十三节课作业(战略管理+业务流程管理+知识管理)

一.战略管理1.企业战略的特点有哪些? (1).全局性 (2).长远性 (3).抗争性 (4).纲领性 2.企业战略决策的特点有哪些?(1).决策的对象是复杂的,很难把握住它的结构,并且是没有先例的,对其处理上也是没有经验可循. (2).面对的问题常常是突发性的.难以预料的.所依靠的是来自外部的关于未来如何变化的很少的情报. (3).决策的性质直接涉及到企业的前途. (4).评价困难,难以标准化. 3.战略管理分为哪三步?(记) 战略管理分为战略制定.战略执行和战略评估三个步骤. 4.组织的使包

C#基础知识---扩展方法

一.简介 扩展方法为现有的类型(.Net类型或者自定义类型)扩展应该附加到该类型中的方法. 二.基本原则 定义一个非嵌套.非泛型的静态类 扩展方法是静态的 扩展方法至少要有一个参数,该参数类型是要扩展的类型 第一个参数必须加上this关键字作为前缀 第一个参数不能用其他任何修饰符(如不能使用ref out等修饰符) 第一个参数的类型不能是指针类型 三.例子 例1:为.Net类型添加扩展方法 1 using System; 2 3 namespace ExtensionMethod 4 { 5 c

知识扩展——(转)一篇文章彻底弄懂Base64编码原理

在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇博文带领大家了解一下Base64的底层实现. 一.Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一.在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输.那么,Base64到底起到什么作用呢? 在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会

(知识扩展)R运用领域一览表

? Applications and Case Studies - Lessons and Experiences ? Big Data Analytics ? Biomedical and Health Data Mining ? Business Analytics ? Computational Aspects of Data Mining ? Data Integration, Matching and Linkage ? Data Mining Education ? Data Min