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

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

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

答:

①消息认证:是用来验证消息完整性的一种机制或服务,确保收到的数据确实和发送时的一样(没有修改、插入、删除或重放),通常还要求信息认证机制确保发送方声称的身份是真实有效的

消息认证中使用Hash函数的本质:发送者根据待发送的信息使用该函数计算一组Hash值,然后将Hash值和消息一起发送过去。接收者收到后对信息执行同样的Hash计算,并将结果与收到的Hash值进行对比,如果不匹配,则接收者推断出信息遭受到篡改

Hash函数用于消息认证的方法:

·使用对称密码算法加密消息和Hash码

·使用对称密码算法只对Hash码进行加密

·不使用加密算法,仅使用Hash函数也能够实现消息认证

·通过将整个消息和Hash值加密

②数字签名:就是附加在数据单元上的一些数据或是对数据单元所作的密码交换,在进行数据签名过程中使用用户的私钥加密信息的Hash值,其他任何知道该用户公钥的人都能够通过数字签名来验证消息的完整性

Hash码用于提供数字签名的方案

·使用发送方的私钥,利用公钥密码算法仅对Hash码进行加密

·先用发送方的私钥对Hash码加密,再用对称密码中密钥对信息和公钥算法加密结果进行加密

③其他应用 

·用于产生单向口令文件:当用户输入口令时,操作系统将对比输入口令的Hash值和存储在口令文件中的Hash值

·用于入侵检查和病毒检测:将每个文件的Hash值H(F)存储在安全系统中,然后就能够通过重新计算H(F)来判断文件是否被修改过,入侵者只能够改变F,而不能够改变H(F)

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



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

答:

生日悖论是指,如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%。从引起逻辑矛盾的角度来说生日悖论并不是一种悖论,从这个数学事实与一般直觉相抵触的意义上,它才称得上是一个悖论。大多数人会认为,23人中有2人生日相同的概率应该远远小于50%。

总结起来,生日悖论的本质就是,随着元素增多,出现重复元素的概率会以惊人速度增长

生日攻击就是利用散列函数发生碰撞的可能性,进行n次尝试直到找到一对碰撞的输入。一个40比特长的消息摘要是很不安全的,大约一百万次随机Hash可至少以50%的概率找到一个碰撞。

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

生日攻击方法没有利用Hash函数的结构和任何代数弱性质,它只依赖于消息摘要的长度,即Hash值的长度

生日攻击对散列函数的要求:

·生日攻击决定了一个仅依赖于散列值的集合大小的散列函数的必要安全条件,即消息摘要必须足够长

·它意味着安全的消息散列的长度有一个下限(一般建议最小长度为128bit)

MD5用于保证信息传输完整一致,让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式

特点:

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

·容易计算:从元数据计算出MD5的值很容易

·抗修改性:对元数据进行人和改动,哪怕是只修改一个字节,所得到的MD5值都有很大的区别

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

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

安全Hash函数SHA-1:主要用于数字签名标准里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。

特性:

·不可以从信息摘要中复原信息

·两个不同的信息不会产生同样的信息摘要

但在2017.02.23,Google宣布了SHA-1算法碰撞方法,攻破SHA-1算法。

散列函数的安全性要求:

(1)H可适用于任意长度的数据块

(2)H能够生成固定长队输出

(3)对于任意给定的x,计算H(x)相对容易,并且可以用软/硬件实现

(4)单向性(抗原向攻击):对任何给定的散列码h,找到满足H(x)= h的x在计算上是不可行的

(5)抗弱碰撞性(抗第二原向攻击):对任何给定的消息x,找到满足y≠x且H(x)= H(y)的y在计算上是不可行的

(6)抗强碰撞性:找到任何满足H(x)= H(y)的偶对(x,y)在计算上是不可行的

总的来说,MD5及相关散列算法的破解研究,在理论上是一种重大的进行,王小云教授及其后继者的研究,使得Hash算法在安全性上有了和大的进步,虽然随着计算机性能的几何性增长,Hash需要取得更长的长度才能防范生日攻击,但是随着改进,若Hash函数具备了足够的随机性,那么恶意碰撞的可能性就会急剧降低。就目前而言,虽然Hash算法具备本身的一些缺陷,但仍然是一种几号的安全性验证算法

安全散列函数SHA的发展:

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

·1995年,发布SHA-1(160bit)

·2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)

·2008年,增加了SHA-224

更详细如下图所示:

参考资料:

①散列函数攻击算法研究  浙江大学https://wenku.baidu.com/view/76db3b46e55c3b3567ec102de2bd960590c6d990.html

②-_-PX的CSDN博客:生日攻击

https://blog.csdn.net/px_farmer/article/details/52688806

③傲慢灬的CSDN博客:抗碰撞性、生日攻击及安全散列函数结构解析

https://blog.csdn.net/jerry81333/article/details/52763070

④Linuxest的CSDN博客:密码学:生日攻击

https://blog.csdn.net/ddk3001/article/details/52647990

⑤MD5百度百科

https://baike.baidu.com/item/MD5/212708?fr=aladdin

⑥SHA-1百度百科

https://baike.baidu.com/item/SHA1/8812671?fr=aladdin



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

答:

MD5算法选择前缀碰撞:2007年,Stevents提出了MD5选择前缀碰撞算法,展示了如何在一对任意选取的MD5消息前缀后,通过构造一对后缀使得两部分级联后的消息对发生碰撞的过程,随后在2009年,Stevents等通过选取更加灵活的差分路径,进一步完善了MD5选择前缀碰撞算法,并给出了理论上最有攻击复杂度239;同时,利用X.509协议中标准的2048比特的RSA大数字段,运用选择前缀碰撞,成功通过3次近似碰撞伪造了CA证书,复杂度为249.9,两个复杂度的差异主要由实际应用时对近似碰撞块数的限制引起。2012年,Stevents等给出了最终完善后的MD5选择前缀碰撞流程及伪造证书等应用的细节。除Stevents等所做的相关工作外,周林对选择前缀碰撞的部分组件进行了多平台实现

软件完整性包含两部分:

(1)软件运行状态的完整性。软件在运行状态下,代码、金泰数据、动态数据和栈,必须保证不被未经授权的修改

(2)软件的控制流的完整性。软件运行时的执行路径要与软件静态代码所反映的流程图一致,及软件的行为不能被非授权用户通过任何方式修改和操控

为了使软件完整性校检和基于哈希值的数字签名具有任何价值,使用的加密哈希函数必须具有冲突性,也就是说,几乎不可能找到具有相同散列值的不同消息

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

(1)MD5不防碰撞,可能被第三方非授权用户利用MD5的冲撞攻击缺陷,使用快速MD5碰撞生成器,获得相同MD5值数据,从而恶意篡改软件,软件的完整性受到威胁

(2)第二连接中helloworld.exe和goodbyworld.exe两个文件在执行时显示了不变得行为,一个是好的,一个是坏的,但是现在文件具有相同的MD5 哈希值,在无害的程序上获得的数字签名对恶意软件同样有效

(3)攻击者能够在文件被散列或签名之前对其进行操作,在软件完整性保护或代码签名方案中滥用chosen-prefix冲突

(4)用户不能确定已发布的散列值或数字签名只对他下载的可执行文件有效。特别是当软件完整性验证发生在后台时,用户不知道操作系统或某个隐藏的应用程序正在悄悄地验证安装阮加的数字签名,用户可能更容易被引诱安装恶意软件

(5)攻击者不需要从源代码构建两个可执行程序,他完全可以作为第一个文件从任何来源的任何可执行文件,并且作为第二个文件产生第二个可执行的恶意软件,然后在两个文件中添加一个字节块,这样产生的文件具有相同的MD5哈希值。如果攻击者得到第一个文件,这个签名也将对攻击者构建的恶意软件有效

故MD5不应再用作软件完整性或代码签名目的的散列函数

参考资料:

①MD5选择前缀碰撞算法的改进及复杂度分析   程宽、韩文报(1、信息工程大学;  2、数学工程与先进计算国家重点实验室)

http://www.cqvip.com/read/read.aspx?id=74837489504849524857485254

原文地址:https://www.cnblogs.com/zhoust023/p/9017366.html

时间: 2024-11-10 16:18:45

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

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

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

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

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

软件过程与项目管理第五次作业

软件项目过程与管理第五次作业 (因为上周请假回家了,所以上周的作业这周补交) 由于我们小组的项目是做一个简单的2D游戏引擎,起初我对游戏引擎不是很了解,为了更好的参与到这个项目中去,我利用网络学习了一些关于游戏引擎的相关知识,在这里做一个简单的总结. 1.游戏引擎的概念:游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件.这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始.大部分都支持多种操作平台,

20179214 2017-2018-2 《密码与安全新技术》第五周作业

20179214 2017-2018-2 <密码与安全新技术>第五周作业 课程:<密码与安全新技术> 班级: 201792 姓名: 刘胜楠 学号:20179214 上课教师:谢四江 上课日期:2018年3月29日 必修/选修: 选修 学习内容总结 ICO众筹 所有成功的数字货币以及区块链(本文区块链指"区块链公有链")项目无一不是社区项目.常见的ICO里,数字货币和区块链项目向早期爱好者出售项目代币.项目团队通过ICO获取技术开发和市场拓展资金:而项目爱好者通过

软件项目管理第五周作业

1.psp Job Type Date Start End Total 四周总结 随笔 2016.4.4 23:00 23:23 23 站立会议 会议 2016.4.4 13:30 13:45 15 数据库 编码测试 2016.4.4 13:50 15:20 90 站立会议 会议 2016.4.5 13:00 13:15 15 摇一摇1 编码测试 2016.4.5 13:35 14:20 45 站立会议 会议 2016.4.6 13:05 13:15 10 数据库函数添加 编码测试 2016.4

《机电传动控制》第五周作业

机电传动控制第五周作业 一.传动电机或控制电机在工业或生活中的应用: 1.电气伺服传动领域 在要求速度控制和位置控制(伺服)的场合,特种电机的应用越来越广泛.开关磁阻电动机.永磁无刷直流电动机.步进电动机.永磁交流伺服电动机.永磁直流电动机等都已在数控机床.工业电气自动化.自动生产线.工业机器人以及各种军.民用装备等领域获得了广泛应用.如交流伺服电机驱动系统应用在凹版印刷机中,以其高控制精度实现了极高的同步协调性,使这种印刷设备具有自动化程度高.套准精度高.承印范围大.生产成本低.节约能源.维修

集美大学网络1413第五次作业(团队一)

-- Deadline: 2017-04-05 22:00pm -- 第五次作业   团队展示     选题要求    团队成员绩效评估方法  附加项目  总分  团队/分值 基本信息 团队项目描述 队员风采 合照 特色描述 确定选题 真实.可用.有价值 预期的用户量 Git仓库 贡献分 每个成员的计划,如何帮助团队完成任务 博客互动 项目不局限于学校且有创新   0.5 0.5 1 0.5 1 0.5 2 0.5 0.5 1 0.5 1 1 10.5 六个核桃 0.5 0.5 1 0.5 1

解题报告——2018级2016第二学期第五周作业排座椅

解题报告--2018级2016第二学期第五周作业 F:排座椅 描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来 之后,只有有限的D对同学上课时会交头接耳.同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设 置了K条横向的通道,L条纵向的通道.于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅

解题报告—— 2018级2016第二学期第五周作业 删数问题

解题报告--  2018级2016第二学期第五周作业 删数问题 描述 键盘输入一个高精度的正整数n(<=240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小. 输入ns输出最后剩下的最小数样例输入 178543 4 样例输出 13 分析: 这题题目上已表明是贪心算法:原本最容易产生的错误贪心准则是删去其中最大的数字:但通过简单举例便可得之,这种贪心准则要漏洞:通过简单的计算举例发现如果这个数是一位比一位大的话