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

一.散列函数的应用

1.错误校正

使用一个散列函数可以很直观的检测出数据在传输时发生的错误。

2. 语音识别

对于像从一个已知列表中匹配一个MP3文件这样的应用,一种可能的方案是使用传统的散列函数——例如MD5。

3.信息安全

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

(1)消息认证

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

(2)数字签名

Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。

(3) 鉴权协议

如下的鉴权协议又被称作挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。以上就是一些关于hash以及其相关的一些基本预备知识。

(4)文件校验

我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。

MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。

4.散列表

散列表是散列函数的一个主要应用,使用散列表能够快速的按照关键字查找数据记录。

5.其他

对于散列函数,通常还被用于产生单向口令文件;入侵检测和病毒检测;构建随机函数(PRF)或用做伪随机数发生器(PRNG)。

二. 散列函数的安全性以及目前安全散列函数的发展

1. 关于生日攻击

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

防范方法

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

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

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

2.散列函数的安全性

有两种方法可以攻击安全散列函数:密码分析法和暴力攻击法。散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度。Van Oorschot和Wiener曾经提出,花费1000万美元涉及一个被专门用来搜索MD5算法碰撞的机器,则平均24天内就可以找到一个碰撞。2004年8月中国密码学家王小云教授等首次公布了提出一种寻找MD5碰撞的新方法。目前利用该方法用普通微机几分钟内即可找到MD5的碰撞。MD5已经被彻底攻破。

以为相对于安全的MD5和SHA-1算法,在相继公布被实现碰撞之后,可以预见,之后的算法发现碰撞只是实现计算机更好性能的 时间长短而已。

3. 目前安全散列函数的发展

(1)SHA安全散列函数

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

● 1995年公布SHA-1
● 2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512)
● 2008年,增加了SHA-224

更详细的如下图所示:

三. md5算法来验证软件完整性时可能出现的问题

1.MD5和SHA-1算法:

MD5和SHA-1算法的核心是哈希函数。密码学哈希函数(Cryptography Hash Function,简称为哈希函数)又称杂凑函数,是在信息安全领域有广泛和重要应用的密码算法,主要作用是数据完整性验证和消息认证。它有一种类似于指纹的应用,所以有时候我们也把它叫做“数字指纹”。因为它具有以下特性:原始信息只要改变一点点,哪怕是几比特,对应的消息摘要也会改变很大。

2004年8月17日在美国加州圣巴巴拉举行了一次国际密码学学术年会(Crypto’2004),当晚来自中国山东大学的王小云教授做了关于破译 MD5、HAVAL-128、 MD4和RIPEMD算法的报告。

SHA-1已经被公众密码社群做了非常严密的检验而还没发现到有不安全的地方,它在一段时间被认为是安全的,直到2017.02.23,Google宣布攻破SHA-1。

2.验证软件完整性时可能出现的问题

(1)文件不完整的情况 :感染病毒;植入木马/后门/人为篡改;传输故障

(2)可能出现的问题: 如果有第三方在验证软件完整性时截取软件代码,使用快速MD5碰撞生成器,在短时间内伪造一份相同的MD5,并恶意篡改软件,那么安全性将会大大下降;当软件过大时,在验证过程中所需的时间也会大大增加,对于第三方而言,攻击的成功概率也会增加。

转载于:https://www.cnblogs.com/chenyyxx/p/9021446.html

2016012056+陈逸璇+散列函数的应用及其安全性相关推荐

  1. 2016012009 马佳欣 散列函数的应用及其安全性

            散列函数的应用及其安全性 马佳欣  2016012009 (1)散列函数的具体应用 由于散列函数的应用的多样性,它们经常是专为某一应用而设计的.例如,加密散列函数假设存在一个要找到具有 ...

  2. 2016012075 谢月月 散列函数的应用及其安全性

    散列函数的应用及其安全性 一.散列函数的应用 1.消息认证:       (1).消息认证的定义:消息认证是用来验证消息完整性的一项机制或服务.消息认证确保收到的数据确实和发送时的一样(即没有修改.插 ...

  3. 2016012026 管凌波 散列函数的应用及其安全性

    2016012026 管凌波 散列函数的应用及其安全性 一.散列函数是什么. 散列函数即为Hash函数,就是把任意长度的输入(预映射),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是 ...

  4. 2016012072+张济吨+散列函数的应用及其安全性

    一.散列函数的具体应用 1.消息认证         消息认证是用来验证消息完整性的一种机制或服务.消息认证确保收到的数据确实和发送时的一样(及没有修改.插入.删除或重放).此外,还要求消息认证机制确 ...

  5. 《程序员的自我修养》(陈逸鹤)读书笔记

    第一章 谈职业生涯  写给年轻程序员的几点启示: 正确认识自己 比一般人更努力(将成为你最大的竞争优势) 适时建立个人权威 遵循最佳实践 保持好奇心并乐于探索新的事物 抛开代码与人沟通 要为优秀的人工 ...

  6. 程序员的自我修养,陈逸鹤

    我时常会说"杂事不杂", 虽然看着被很多与技术无关的事务缠身,但它们对你来说同样具有意义.你从中可能获得沟通能力,管理能力,建立更广的人脉,在企业内部建立影响力,等等,之所以今天你 ...

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

    一.散列函数的具体应用: 1.文件校验 我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏.M ...

  8. 2016012028 赵莉 散列函数的应用及其安全性

    目录: 一.散列函数的具体应用: 二.散列函数的安全性以及目前安全散列函数的发展: 三.md5算法来验证软件完整性时可能出现的问题. 一.散列函数的具体应用 密码学中,Hash函数被广泛应用于各种不同 ...

  9. 散列函数的应用及其安全性 付淅 2016012063

    题目内容要求:(1) 给出散列函数的具体应用.(2) 结合生日攻击.以及2004.2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性,说明散列函数的安全性以及目前安全散 ...

最新文章

  1. Exp 8 Web基础 20164302 王一帆
  2. 远程桌面不能用不能连接处理办法
  3. kafka重新启动时出现:found a corrupted index file due to requirement failed问题解决方法
  4. 关于Node.js中安装完express后不能使用express命令
  5. Hibernate事务管理
  6. 下载不了python_Python的下载与安装
  7. 基于 Webpack2、Vue2、iView2 的可视化脚手架 iView Cli 发布 2.0 版本
  8. 关于字符集和字符编码格式
  9. html一边自动宽度,有2列,希望右侧固定宽度,左侧自动宽度。_html/css_WEB-ITnose...
  10. html_jQuery_ajax
  11. 电脑运行c语言时错误,电脑出现microsoft visual c++ runtime error 解决方法(多图)
  12. office2010c盘_Win10官方精简winxp ghost office2010系统流出:C盘装完梦回XP
  13. Python周刊488期
  14. 27个精美的时间线(含源代码)
  15. huge形式_huge什么意思怎么读
  16. win10下卜卦占星工具
  17. iOS cocoapods的版本升级更新
  18. ORAN C平面 Section Extension 10
  19. 011-Java代理模式
  20. 数学建模(一)对变化进行建模及其解

热门文章

  1. windows tcp端口映射或端口转发
  2. 技术为本,中科柏诚致力于打造高效供应链金融平台
  3. 【自考一次过】《信息资源管理》第4章 信息系统资源内容管理
  4. PHPStudy搭建WordPress本地网站
  5. 【优化求解】基于蜘蛛猴算法求解单目标优化问题matlab代码
  6. 嵌入式必懂的CAN总线,一文讲通了
  7. SpaceX火箭发射成功,一文了解所用的软件技术栈
  8. 石墨烯 量子计算机,石墨烯鼓有望成为量子计算机内存
  9. php consult用法,YanPHP: YanPHP——一个为API开发而设计的高性能轻量级框架
  10. 网件公司M4100-D12G三层交换机,部分配置说明(2)