2016011997+茅梓军+散列函数应用及其安全性

作业要求:

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

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

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

链接1:https://www.win.tue.nl/hashclash/

链接2:http://www.win.tue.nl/hashclash/SoftIntCodeSign/

作业内容:

1.散列函数的具体应用

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

ps:散列函数常见误区:

1)误认为其是加密算法
    有很多人把HASH算法当成是加密算法,这是不准确的,其实我们知道加密总是相对于解密而言的,没有解密何谈加密呢,HASH的设计以无法解为目的的。
    2)不包含salt的口令HASH
    注意如果我们不附加一个随机的salt值,HASH口令是很容易被字典攻击入侵的。

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

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

生日攻击:

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

MD5:

MD5算法具有以下特点:

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

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据是非常困难的。

其安全性表现为:

MD5是一个较为古老的算法,一度被广泛应用于安全领域。比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。不过,由于MD5的弱点被不断发现以及计算机能力不断的提升,通过碰撞的方法有可能构造两个具有相同MD5的信息,使MD5算法在目前的安全环境下有一点落伍。从实践角度,不同信息具有相同MD5的可能性还是非常低的,通常认为是不可能的,通过碰撞的方法也很难碰撞出复杂信息的MD5数值。因此,MD5算法还是被广泛的用作检验文件是否变化的散列函数,很多类似迅雷、旋风这样的下载工具,都可以通过MD5来验证,用户下载下来的文件是否被修改。

SHA-1:

SHA  是NSA 设计,NIST发布的一系列密码散列函数。正式名称为 SHA 的家族第一个成员发布于 1993年。然而人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆。两年之后, SHA-1,第一个 SHA 的后继者发布了。 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-384 和 SHA-512

最初载明的算法于1993年发布,称做安全散列标准 (Secure Hash Standard),FIPS PUB 180。这个版本常被称为 "SHA-0"。它在发布之后很快就被NSA撤回,并且以 1995年发布的修订版本 FIPS PUB 180-1 (通常称为 "SHA-1") 取代。根据 NSA的说法,它修正了一个在原始算法中会降低密码安全性的错误。然而 NSA 并没有提供任何进一步的解释或证明该错误已被修正。1998年,在一次对 SHA-0 的攻击中发现这次攻击并不能适用于 SHA-1 — 我们不知道这是否就是NSA 所发现的错误,但这或许暗示我们这次修正已经提升了安全性。SHA-1已经被公众密码社群做了非常严密的检验而还没发现到有不安全的地方,它在一段时间被认为是安全的,直到Google宣布攻破SHA-1。

散列函数的安全性及其发展:

有两种方法可以攻击安全散列函数:密码分析法和暴力攻击法。散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度。Van Oorschot和Wiener曾经提出,花费1000万美元涉及一个被专门用来搜索MD5算法碰撞的机器,则平均24天内就可以找到一个碰撞。

2004年8月中国密码学家王小云教授等首次公布了提出一种寻找MD5碰撞的新方法。目前利用该方法用普通微机几分钟内即可找到MD5的碰撞。MD5已经呗彻底攻破。

散列函数未来的研究主要是两个方向:

1)散列函数本身性质的研究

2)采用新的方式直接涉及新算法

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

1)MD5算法:它的全称是message-digest algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。

MD5算法具有以下特点:

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

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

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

2)MD5算法的选择前缀碰撞:如果两个文件存在任何碰撞(冲突)的地方,发生前缀碰撞后,这两个文件完全相同,即得到相同的MD5。第二个链接中的helloworld.exe和goodbyworld.exe两个可执行文件的MD5消息摘要值相同,即文件内容不同,但是MD5相同,这说明MD5算法存在着不安全性。正如第二问中谈到,利用王晓云教授的方法,MD5算法已经被彻底攻破。

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

(1)无法保证文件的来源可靠性,无法确认发送方与接收方传说的是同一个文件

(2)无法保证文件的完整性和正确性,文件很有可能被删改

(3)当验证效率较低时,会出现验证时间过长,给中间攻击者的攻击行为提供足够的攻击时间而增加安全风险

以上就是我针对散列函数的应用与安全性做的一系列的调查研究,可能会有错误或理解片面的地方,希望老师不吝赐教。

原文地址:https://www.cnblogs.com/mzj666/p/9029487.html

时间: 2024-08-30 18:28:32

2016011997+茅梓军+散列函数应用及其安全性的相关文章

Light Life 小组Alfha冲刺(第三天)

日期:2018.6.15 1.1 今日完成任务情况以及遇到的问题 姓名 赵瑞雪 冯舒怡 茅梓军 薛智麟 李金昊 今日 完成任务 复习JS的一些知识,复习轮播 在慕课网上学习后端知识 和薛智麟一起完成了前端部分页面 完成首页 编写modle层封装类 学习 资源地址  http://www.w3school.com.cn/js/  http://www.runoob.com/jsp/jsp-file-uploading.html https://m.imooc.com/ https://m.imoo

Light Life 小组Alfha冲刺(第四天)

日期:2018.6.15 1.1 今日完成任务情况以及遇到的问题 姓名 赵瑞雪 冯舒怡 茅梓军 薛智麟 李金昊 今日 完成任务 编写代码 开始编写简单后端,接口 继续完成剩下的前端页面 完成首页剩余部分 继续编写 学习 资源地址  菜鸟教程HTML CSS JS https://blog.csdn.net/qq_29266921/article/details/53692042 https://m.imooc.com/ https://www.imooc.com/learn/580 菜鸟教程之s

Light Life 小组Alfha冲刺(第五天)

日期:2018.6.17 1.1 今日完成任务情况以及遇到的问题 姓名 赵瑞雪 冯舒怡 茅梓军 薛智麟 李金昊 今日 完成任务 完成部分前端页面 继续学习.写代码 继续完成前端页面 完成下单页面 完善各页面细节,建立各页面链接 学习 资源地址  W3cschool https://www.imooc.com/learn/947 https://m.imooc.com/ https://www.imooc.com/learn/580 慕课网.W3c 任务 完成程度 今日任务完成 90% 今日完成任

2016012030+王超超+散列函数的应用及其安全性

一.散列函数的具体应用 1.单向散列函数在密码学中的应用     A.数字签名技术       a. 利用单向散列函数计算出需要签名的消息的邮摘,再利用签名算法对邮摘签名来代替直接对原来的消息进行签名.        b.有效地提高了签名的效率和速度,也减少了传输的信息量,节约了网络的带宽.     B.消息的完整性认证        a.通常做法是文件的所有者用Hash算法计算出文件的Hash值,自己保存Hash值的一份拷贝,然后把文件存放在一个公开的地方.需要验证一个           文

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

散列函数的应用及其安全性 一.散列函数的具体应用 Hash(散列函数),一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值.简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数. 由于散列函数的应用的多样性,它们

2016012099+陈杰+散列函数的应用及其安全性

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

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

散列函数的应用及其安全性 一.给出散列函数的具体应用. 1.消息认证 (1)概念:消息认证是用来验证消息完整性的一种机制和服务.消息认证确保收到的消息和发送时是一样的,同时.此外,还要确保发送方声称的身份是真实有效的,当Hash函数用于提供消息认证功能时,被称为消息摘要. (2)使用本质:发送者根据待发送的消息使用该函数计算一组Hash值,然后将Hash值和消息一起发送过去.接收者收到后对于消息执行同样Hash计算,并将结果与收到的Hash值进行对比.如果不匹配,则接收者推断出消息(也可能是Ha

2016012010 赵瑞雪 散列函数的应用及其安全性

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

2016011998 张舒凯 散列函数的应用及其安全性

1.散列函数的具体应用 (1)消息认证:散列函数用于消息认证---消息认证是用来验证消息完整性的一种机制和服务,函数值称为消息摘要,确保收到的数据和发送时的一样(即没有修改.插入.删除或重放),发送者根据待发送的消息使用散列函数f计算一组散列值,再把散列函数值和消息发送出去:接受者收到后统一进行计算,并进行比对,具体方法: 1.使用对称密码算法加密消息和散列码: 2.使用对称密码算法只对散列码进行加密: 3.不使用加密算法,仅使用散列函数: 4.将整个消息和散列值加密. (2)数字签名:散列函数