【信息安全技术】作业五 散列函数的应用及其安全性

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

数字签名

也称电子签名,是指附加在某一电子文档中的一组特定的符号或代码,它是利用数学方法和密码算法对该电子文档进行关键信息提取并进行加密而形成的,用于标识签发者的身份以及签发者对电子文档的认可,并能被接受者用来验证该电子文档在传输过程中是否被篡改或伪造。

消息认证

消息认证是指通过对消息或者消息有关的信息进行加密或签名变换进行的认证,目的是为了防止传输和存储的消息被有意无意的篡改,包括消息内容认证(即消息完整性认证)、消息的源和宿认证(即身份认证0)、及消息的序号和操作时间认证等。它在票据防伪中具有重要应用(如税务的金税系统和银行的支付密码器)。
消息认证所用的摘要算法与一般的对称或非对称加密算法不同,它并不用于防止信息被窃取,而是用于证明原文的完整性和准确性,也就是说,消息认证主要用于防止信息被篡改。

验证信息的来源是真是的,而不是伪造的,此为消息源认证;验证消息的完整性,即验证信息在传送或存储过程中是否被篡改。

·口令的安全性

·文件的完整性(譬如可信计算、文件病毒的检验、网页防篡改、黑白名单等应用。)

·密码协议的应用(譬如零知识证明、比特承诺、投掷硬币、电子商务的安全协议的许多应用。)

纯认证系统模型:

参考资料:

1.【图文】散列函数与数字签名_百度文库

2.第四讲 Hash函数及应用_图文_百度文库

3.【图文】Hash函数与消息认证_百度文库

4.消息认证_百度百科


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

生日攻击:

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

防范方法:

1.使用安全的Hash算法:安全的Hash算法生成的Hash值有足够多的位数。这样,攻击者在寻找两个具有相同Hash值的文件时就会非常困难。

2.加盐:在为文件签名之前,先向文件添加一个随机值,然后计算Hash值,再将文件、签名和随机值一起发送给接收者。这样,攻击者必须找出具有特定Hash值的伪造文件,这非常困难。

3.改动文件:在为文件签名之前,对消息或文件做少许改动。这样,攻击者必须找出具有特定Hash值的伪造文件,这非常困难。

MD5:

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的破解:

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

2009年,冯登国、谢涛二人利用差分攻击,将MD5的碰撞算法复杂度从王小云的2^42进一步降低到2^21,极端情况下甚至可以降低至2^10。仅仅2^21的复杂度意味着即便是在2008年的计算机上,也只要几秒便可以找到一对碰撞。

SHA-1:

SHA-1是1995年国家标准技术局NIST(National Institute of Standards and Technology)于1995年标准化的哈希函数。与前身MD5相比,SHA-1的输出长度更长(MD5输出长度为128bit,而SHA-1的输出长度为160bit),这也意味着出现哈希碰撞的概率更低。同时,SHA-1的安全性似乎也比MD5更好。这里要稍微介绍一下寻找哈希函数碰撞的难度和一般方法了。以SHA-1为例,其哈希结果长度为160bit。如果SHA-1本身没有漏洞,而攻击者想找到一组碰撞的话,最显然的方法是选取组不同的数据,依次计算它们的哈希结果。根据著名的抽屉原理,必然会出现一组数据,使得其哈希结果相同。此攻击方法需要调用次SHA-1,即计算量级大约为

SHA-1的攻破:

2017年2月23日,荷兰阿姆斯特丹 Centrum Wiskunde & Informatica (CWI) 研究所和 Google 公司的研究人员 [Marc Stevens (CWI Amsterdam), Elie Bursztein (Google), Pierre Karpman (CWI Amsterdam), Ange Albertini (Google), Yarik Markov (Google), Alex Petit Bianco (Google), Clement Baisse (Google)] 在谷歌安全博客上发布了世界上第一例公开的 SHA-1 哈希碰撞实例!在经过两年的联合研究和花费了巨大的计算机时间之后,研究人员在他们的研究网站 SHAttered 上给出了两个内容不同,但是具有相同 SHA-1 消息摘要的 PDF 文件(PDF 1、 PDF 2),这就意味着在理论研究长期以来警示 SHA-1 算法存在风险之后,SHA-1 算法的实际攻击案例也浮出水面,同时也标志着 SHA-1 算法终于走向了生命的末期。

图中两个不同的PDF文件,但SHA-1消息摘要相同,SHA-256消息摘要不同:

散列函数的安全性:

  1. MD5和SHA-1算法已经被证明存在碰撞,MD5算法更是已经可以使用较短的时间进行破解,SHA-1的破解虽然还具有一定成本,但在被证明发生碰撞后,在计算机性能不断发展并且算法不断被改进的今天,破解的速度只会变得越来越快,SHA-1算法已经可以说是不安全的了。
  2. 由资料可知“生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度”,所以生日攻击对于所有种类的散列函数算法都有效果,增长Hash值的长度就可以抵御生日攻击。

安全散列函数结构:

因为所需的安全散列长度越来越长,因此我们可以使用有限定义域上的散列函数(俗称压缩函数)通过迭代方式拓展为具有无限定义域的散列函数。而最为代表性的就Merkle-Damgard结构。

Merkle-Damgard结构:

这个结构的好处是,如果压缩函数是抗碰撞的,那经过此结构处理后的散列函数也是抗碰撞的。

SM3,HMAC就是基于这种结构,因为Merkle-Damgard结构并不能抵抗扩展攻击,因此HMAC引入了Key。

参考资料:

1.生日攻击_百度百科

2.MD5_百度百科

3.如何评价 2 月 23 日谷歌宣布实现了 SHA-1 碰撞? - 知乎

4.抗碰撞性、生日攻击及安全散列函数结构解析 - CSDN博客


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

前缀碰撞攻击:

对于MD5/SHA1更复杂的攻击目前主要有共同前缀碰撞攻击(Identical PrefixCollision)和选择前缀碰撞攻击(Chosen Prefix Collision)。共同前缀攻击是构造两个不同的消息s1和s2,他们由相同的前缀,和不同的尾部“碰撞块”组成。震惊世界的SHAttered攻击是对SHA1进行的共同前缀攻击。选择前缀攻击则是构造两个不同的消息s1和s2,他们不必有共同的前缀,但是经过在尾部附加不同的“碰撞块”后,两个消息的散列值相同。选择前缀攻击是包括共同前缀攻击的,因此共同前缀的攻击代价小于选择前缀攻击。在Marc Stevens(SHAttered作者)2009年的文章中对此类攻击的计算代价总结如表1。

表1:MD5和SHA1的两种不同攻击的计算代价

这里的单位是需要计算的hash的次数。例如2004年之前,对MD5的平凡攻击(生日攻击)需要蛮力计算2的64次方次md5 hash。在2009年时,对于MD5的共同前缀攻击计算代价是2的16次方次MD5 hash,对SHA1的则是2的52次方。不难看出,无论是共同前缀攻击,还是选择前缀攻击,都可以被应用在同谋碰撞攻击中。由于共同前缀攻击和选择前缀攻击的研究进展迅速,同谋碰撞攻击逐渐成为数字签名体系最大的威胁。

计算复杂度和最后构造出的碰撞结构有很大关系。对于共同前缀碰撞攻击,由王小云教授提出的攻击方法需要构造两个碰撞块,第一个碰撞块由生日攻击得到,目的是使得计算完第一碰撞块后的hash内部状态的差分满足特定形式。第二个碰撞块则由对差分路径的搜索得到。因此构造共同前缀碰撞攻击只需要两个碰撞块。对于选择前缀碰撞攻击,需要构造多个(>=2个)碰撞块。第一个碰撞块的作用相同,后续的碰撞块则对第一个碰撞块计算完成之后内部状态的区别做逐一修正。在唯一一份公开的选择前缀碰撞代码中,这个后续碰撞块的长度指定为9,意为需要构造9次修正块,以完成一次碰撞攻击。长度越短,对于每个碰撞块的要求就越高,计算所需的时间也指数级提高。在长度为9时,计算可以在普通计算机上运算几小时即可完成。

对于MD5碰撞的研究主要关注与快速发现MD5碰撞。王小云教授的著名工作等,以及谢涛的后续工作等,使得在短时间内构造简短的MD5碰撞成为可能。对SHA1最著名的攻击是最近的SHA1 Shattered攻击,是一种共同前缀碰撞攻击 。另一方面,利用选择前缀攻击,可以伪造X509格式的CA证书 ,以及构造多个消息的碰撞“Herding Attack”,可以用于“预测”任何一次的美国总统大选结果。 此外,对于攻击签名机制,还有一些由于签名机制实现不当而产生的漏洞和对应的攻击方法。下面我们简要介绍一下选择前缀碰撞攻击的能力,然后再讨论如何利用择前缀碰撞攻击,最后回顾一下对于基于hash的签名机制实现不当而产生的攻击。

两个可执行文件的摘要值:

由图中黄色标识出的文字可知,虽然两个文件是不同的,但是他们的MD5码是相同的。

MD5算法来验证软件完整性时可能出现的问题:

经过对以上相关知识的了解,我认为在MD5算法在很短的时间就可以被攻破的情况下,再继续使用MD5算法来验证软件完整性的话就让人感觉不可靠。因为存在两个功能完全不同的软件但它们的MD5码确完全相同的情况,这种情况的存在使我们有理由怀疑即使在MD5校验成功,软件未被篡改的情况下,该软件的内容还是有可能已经被人所篡改,变成了一个完全不同的软件或是软件内部被人植入病毒等,则MD5的校验结果就变得不可信。

参考资料:

1.你的数字签名会被撞破么?——安全hash的攻与防

2.Software Integrity Checksum and Code Signing Vulnerability

原文地址:https://www.cnblogs.com/ForeverSevrous/p/9009189.html

时间: 2024-08-30 16:55:40

【信息安全技术】作业五 散列函数的应用及其安全性的相关文章

信息安全技术 实验五 网络攻防技术 20155202 张旭

信息安全技术 实验五 网络攻防技术 20155202 练习一 信息收集 一. 实验目的 该实验为验证性实验. ? 了解信息搜集的一般步骤 ? 学会熟练使用ping命令 ? 学会利用Nmap等工具进行信息搜集 二. 实验内容 Ping探测 Nmap扫描 探测总结 注:详细实验操作请参考实验室服务器上的参考资料. 三. 实验步骤 本练习主机A.B为一组,C.D为一组,E.F为一组.实验角色说明如下: 实验主机 实验角色 系统环境 A.C.E 扫描源/目标 Windows B.D.F 扫描源/目标 L

散列函数的应用及其安全性(信息安全技术作业5)

一.给出散列函数的具体应用. 1)文件校验 MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验算法. 2)数字签名 因为非对称算法的运算速度比较慢,所以在数字签名协议中应用单向散列函数.对 Hash 值进行的数字签名,在统计上可以认为与对文件本身进行数字签名是等效的.通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率. 3)鉴权协议 如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简

信息安全技术作业5--散列函数的应用及其安全性

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

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

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

Gartner:2016年十大信息安全技术(含解读)

在刚刚结束的2016年Gartner安全与风险管理峰会上,发布了2016年十大信息安全技术(http://www.gartner.com/newsroom/id/3347717).这里提及的10大技术基本上都在以往的报告中详细阐述过.这10大技术分别是: 1)云访问安全代理(CASB):CASB相当于一个应用代理安全网关,安全地连接起用户与多个云服务商,属于云安全身份管理的范畴.这是Gartner在云计算安全领域力推的技术,有多份专门报告,也是Hype Cycle的常客,这里就不多说了.[注:C

关于举办“高级信息安全技术专业人员培训班”和“高级软件性能测试工程师培训班”

大家好!       我中心于2016年2月27日举办“高级信息安全技术专业人员培训班”和2016年3月19日举办“高级软件性能测试工程师培训班” 如有疑问请您及时与我们联系, 感谢您的支持! 如有软件测评服务业务合作,如软件登记测试,确认测试,验收测试,等保测评,渗透测试,风险评估等项目服务,期待您的合作,再次感谢您的支持!           如有培训需求,可以联系我们,劳烦您转发给您相关可能有需求的培训同事,多谢. 祝您工作顺利,健康快乐每一天! 中国赛宝实验室软件评测中心 工业和信息化部

《信息安全技术》实验四 木马及远程控制技术

<信息安全技术>实验四 木马及远程控制技术 实验目的 剖析网页木马的工作原理 理解木马的植入过程 学会编写简单的网页木马脚本 通过分析监控信息实现手动删除木马 实验内容 木马生成与植入 利用木马实现远程控制 木马的删除 实验人数 每组2人,本组为20155314 20155304 实验环境 系统环境 Windows Server 2003虚拟机 网络环境 交换网络结构 实验工具 网络协议分析器 灰鸽子 监控器 实验类型 设计性实验 实验原理 一.网页木马原理及相关定义 浏览器是用来解释和显示万

2017-2018-1 20155321 20155330 《信息安全技术》 实验四 木马及远程控制技术

<信息安全技术> 实验四 木马及远程控制技术 实验名称: 木马及远程控制技术 姓名: 林汝婷.朱玥 学号: 20155321.20155330 班级: 1553 日期: 2017.11.21 一. 实验目的 该实验为设计性实验. 剖析网页木马的工作原理 理解木马的植入过程 学会编写简单的网页木马脚本 通过分析监控信息实现手动删除木马 二. 实验内容 木马生成与植入 利用木马实现远程控制 木马的删除 注:详细实验操作请参考实验室服务器上的参考资料. 三.实验环境 操作系统:windows 7.V

Gartner: 2017年11大信息安全技术(解读版)

在2017年6月份举办的第23届Gartner安全与风险管理峰会上,Gartner的Fellow--Neil McDonald发布了2017年度的11个最新最酷的信息安全技术,比往年的10大技术多了一项. 以往都是通过互联网了解Gartner的各种信息和报告.这次,本人有幸亲临现场,参加峰会,自然有更多的感悟.参加峰会期间,获得的信息量实在太大,直到现在,虽然已经过去了2个多月,依然没有消化完. 回到主题,以往我都是聚焦于每年选出来的10大信息安全技术本身,但对这些技术是如何被Gartner选出