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

一、散列函数的应用

1、消息认证:       (1)、消息认证的定义:消息认证是用来验证消息完整性的一项机制或服务。消息认证确保收到的数据确实和发送时的一样(即没有修改、插入、删除和重放)。此外,通常还要求消息认证机制确保发送方声称的消息是有效的。当Hash函数用于提供消息认证功能时,Hash函数值通常称为消息摘要。

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

(3)Hash码用于消息认证的方式(如下图所示):

(a)、使用对称密码算法加密信息和Hash码。因为只有A和B共享密钥,所以消息必然发自A处。

(b)、使用对称密码算法只对Hash码进行加密。对于无需保存性的应用,这种方法减少了加解密操作的负担。

(c)、不使用加密算法,仅使用Hash函数也能够实现消息认证。该方案假设通信双方共享相同的消息值S。发送方A将消息M和秘密值S串联后计算其Hash值,并将得到的Hash值附在消息M后发送。因为接收方B同时掌握S,所以能够计算改Hash值进行验证。

(d)、通过将整个消息和Hash值加密,能够在方案(c)的基础上提供保密性。

 2、数字签名:

(1)、数字签名的定义:数字签名的操作与MAC相似,在进行数字签名的过程中使用用户的私钥加密消息的Hash值,其他任何知道该用户公钥的人都能够通过数字签名来验证消息的完整性。在这种情况下,攻击者要想篡改消息,则需要知道用户的私钥。

(2)、数字签名的方案(如下图所示):

(a)、使用发送方的私钥,利用公钥密码算法仅对Hash码进行加密。与图(b)一样,这种方法可提供认证;由于只有发送方可以产生加密后的Hash码,所以这种方法也提供了数字签名,事实上,这就是数字签名技术的本质所在。

(b)、若即希望保证保密性又希望有数字签名,则先用发送方的私钥对Hash码加密,再用对称密码中的密钥对消息和公钥算法加密的结果进行加密,这种技术比较常用。

3、其他应用:

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

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

(3)、密码学Hash函数能够用于构建随机函数(PRF)或用做伪随机数发生器(PRNG)

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

1、散列函数的安全性:

(1)、生日攻击:

举例: A对一个合同文件进行签名,然后把合同文件和签名一起发送给接收方。攻击者B想要伪造假的合同文件发给接收方。B先准备2^m/2个有效合同文件(集合X),每个文件包含与原合同文件相同的意思。B再准备2^m/2个伪造合同文件(集合Y),每个文件也都是希望的伪造合同的意思。然后比较集合X和Y,找到Hash值相同的两个文件,分别是有效合同和伪造合同B成功的概率会大于0.5,如果没有找到匹配的文件,就准备更多的有效文件和伪造文件,直到找到一对匹配的文件。

防范方法:①、使用安全的Hash算法:安全的Hash算法产生成的Hash值足够多的位数。这样攻击者寻找相同Hash值得文件就非常困难。②、加盐:在为文件签名之前,先向文件添加一个随机值,然后计算Hash值,再将文件、签名和随机值一起发送给接收方。③、改动文件:在为文件签名之前,对消息或文件做少许改动。

(2)、MD5安全性:

用于确保信息传输完整一致。将数据运算为另一固定长度值,是凑杂算法的基础原理。从2004年利用MD5的碰撞的方法就能将MD5攻破开始,MD5就已经不安全。MD5攻击方法有①通过暴力破解②网上有MD5对应的数据库,比较简单的密码都可以从数据库中找到。

(3)、SHA-1的安全性:

2005年,Rijmen和Oswald发表了对SHA-1较弱版的攻击,2005年2月,王小云、殷益群以及于洪波发表了对完整版SHA-1的攻击,在2017年Google公司宣布实现了对SHA-1算法的攻击,SHA-1彻底被攻破。

(4)、散列函数的安全性:

①、散列函数的攻击方法有:穷举攻击和密码分析法

②、散列函数的安全需求:a、输入长度可变,H可应用于任意大小的数据块;b、输出长度固定,H产生定长的攻击;c、效率,对任意给定的x,计算H(x)比较容易,用硬件和软件均可实现;d、抗原像攻击(单向性),对任意给定的Hash码h,找到满足H(y)=h的y在计算上是不可行的。e、抗第二原像攻击(抗弱碰撞性),对任意给定分块x,找到满足y≠x,且H(x)=H(y)的y在计算上是不可行的;f、抗碰撞攻击(抗强碰撞性),找到任何满足H(x)=H(y)的偶对(x,y)在计算上是不可行的。g、伪随机性,H的书橱满足伪随机性测试标准。

(5)安全散列函数的发展:

①、SHA由美国标准与技术研究所(NIST)设计,并于1993年作为联邦信息处理标准(FIPS 180)发布;

②、随后该版本的SHA-0被发现存在缺陷,修订版于1995年发布(FIPS 180-1),通常称为SHA-1;

③、2002年,NIST发布了修订版FIPS 180-2,其中给出了三种新的SHA版本,Hash值长度依次为256位、384位和512位,分别称为SHA-256、SHA-384和SHA-512。这些统称为SHA-2;

④、在2008年发布的修订版FIP PUB 180-3中,增加了224位版本。

三、MD5算法来验证软件完整性出现的问题

1、不同的两个程序有可能有相同的MD5;

2、不能通过校验MD5来判断软件是否被入侵或者中病毒等;

3、无法确定文件的来源可靠性;

4、当MD5验证时间较长时,会增加安全风险,被攻击的几率会大大增加。

转载于:https://www.cnblogs.com/xieyy127/p/9029603.html

2016012075 谢月月 散列函数的应用及其安全性相关推荐

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

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

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

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

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

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

  4. 2016012056+陈逸璇+散列函数的应用及其安全性

    散列函数的应用及其安全性 一.散列函数的应用 1.错误校正 使用一个散列函数可以很直观的检测出数据在传输时发生的错误. 2. 语音识别 对于像从一个已知列表中匹配一个MP3文件这样的应用,一种可能的方 ...

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

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

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

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

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

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

  8. 2016012025 童宇欣 散列函数的应用及其安全性

    一.散列函数的具体应用 密码学中,Hash函数被广泛应用于各种不同的安全应用和网络协议中.以下是散列函数的一些具体应用. 1.消息认证 (1)消息认证概念:消息认证是用来验证消息完整性的一种机制和服务 ...

  9. 丁小帅+2016012047+作业5

    散列函数的应用及其安全性 本次作业为扩展有关散列函数安全性的知识扩展. 作业题目:散列函数的应用及其安全性. 内容要求: (1) 给出散列函数的具体应用. (2) 结合生日攻击.以及2004.2005 ...

最新文章

  1. ApacheCommons的Java公共类库(实现如Log这些功能)
  2. linux安装jetty部署war包,jetty部署war包
  3. Java初学者入门经典:面向对象的思维方法(其实同样非常适合C#的初学者)……非原创,作者忘了,非常抱歉...
  4. java基础JDK的安装和环境变量的配置
  5. javafx 调用接口_JavaFX技巧3:使用回调接口
  6. Spark Yarn-cluster与Yarn-client
  7. IDEA怎么导入一个maven项目
  8. 【图像处理】基于matlab直方图医学图像处理【含Matlab源码 458期】
  9. Java、JSP公文流转系统
  10. 学习是一件很辛苦的事,全世界都一样!
  11. Elsevier论文模板没有author biography的解决办法
  12. N多计算机精品免费视频下载,不要别后悔啊
  13. 微信公众平台订阅号和服务号的区别详解
  14. win10查看电脑开机时长
  15. chrome cookie存在什么地方_谷歌浏览器产生的cookie缓存怎么查看呢?Cookie的具体内容在哪里...
  16. PB 打印机打印横纵向设置
  17. 杰理之单音VCOMO直推,喇叭没声音问题【篇】
  18. 用word写毕业论文时当未正常保存文件时,重新打开时,封面格式混乱的解决方法
  19. linux下怎么卸载ogg,linux安装ogg
  20. unity:Enemy的简单移动

热门文章

  1. 一个好的设计应当具备哪些要素
  2. Lotus Notes应用经验谈
  3. Bert-as-Service库Embedding句子
  4. 分数阶累加的Python实现
  5. 如何花钱让2000元的月收入工资价值最大化?
  6. qlineedit文本改变时_行文本编辑框QLineEdit及自动补全
  7. 安全管家安卓_pc-cillin和腾讯电脑管家比较哪个更好
  8. 使用druid【使用官方的stater】||集成JdbcTemplate
  9. pageX,clientX,offsetX,layerX的区别
  10. JavaScript 技术篇-js只获取本节点text文本,不包含子节点