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

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

一、散列函数的应用

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验证时间较长时,会增加安全风险,被攻击的几率会大大增加。

 

posted @ 2018-05-12 19:27  雨凌雪  阅读(182)  评论(0编辑  收藏  举报