作业5

作业5

 散列函数的具体应用:

1数据校验
    HASH函数有类似数据冗余校验类似的功能,但是它比简单的冗余校验碰撞的概率要小得多,顾而在现在密码学中总是用HASH来做关键数据的验证。
 2单向性的运用
    利用HASH函数的这个特点,我们能够实现口令,密码等安全数据的安全存储。密码等很多关键数据我们需要在数据库中存储,但是在实际运用的过程中,只是作比较操作,顾而我们可以比较HASH结果。

3,碰撞约束以及有限固定摘要长度
    数字签名正是运用了这些特点来提高效率的。我们知道非对称加密算法速度较低,通过HASH处理我们可以使其仅仅作用于HASH摘要上,从而提高效率。
    4,可以运用HASH到随机数的生成和密码,salt值等的衍生中
    因为HASH算法能够最大限度的保证其唯一性,故而可以运用到关键数据的衍生中(从一个随机的种子数产生,并且不暴露种子本身秘密)。

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

生日攻击:利用“两个集合相交”问题的原理生成散列函数碰撞,达到目的的攻击称为生日攻击,也称为平方根攻击

MD5SHA-1特性:

  1. 都是“不可逆”的函数。不存在一个算法能够由哈希值倒算出原始信息。
  2. 对原始信息的任何一点改变都会导致结果的哈希值巨大的不同。举个例子,假如原始数据是几百万字的文章,你在其中哪怕改动一个标点,计算出的哈希值都会有很大的变化。
  3. 运算代价是相对较低的。普通的AMDOpteron 2.2GHz的芯片,每秒可以计算出335MB数据的MD5值,可以计算192MB数据的SHA-1值。  
  4. 类似于1,除非通过蛮力的穷举法,否则无法找到两段不同的信息而有相同的哈希值

安全性:有两种方法可以攻击安全散列函数:密码分析法和暴力攻击法。散列函数抵抗暴力攻击的强度完全依赖于算法生成的散列码长度

安全性要求:

1,已哈希函数的输出,要求它的输入是困难的,即已知c=Hash(m),求m是困难的。这表明函数应该具有单向性。
  2、已知m,计算Hash(m)是容易的。这表明函数应该具有快速性。
  3、已知,构造m2使Hash(m2)=c1是困难的。这表明函数应该具有抗碰撞性。
  4、c=Hash(m),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一比特,都将对c产生明显影响。这表明函数应该具有雪崩性。
  5、作为一种数字签名,还要求哈希函数除了信息m自身之外,应该基于发信方的秘密信息对信息m进行确认。
  6、接受的输入m数据没有长度限制;对输入任何长度的m数据能够生成该输入报文固定长度的输出

④  目前散列函数的发展

 2004、2005年王晓云教授有关MD5安全性和2017年google公司SHA-1的安全性

2004年8月17日的美国加州圣巴巴拉,正在召开的国际密码学会议(Crypto’2004)安排了三场关于杂凑函数的特别报告。在国际著名密码学家Eli Biham和Antoine Joux相继做了对SHA-1的分析与给出SHA-0的一个碰撞之后,来自山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告囊括了对MD5、HAVAL-128、 MD4和RIPEMD四个著名HASH算法的破译结果

MD5和SHA-1的相继破解使得开发人员在2010年前应该转向更为安全的SHA-256和SHA-512算法。散列函数目前还是使用最为广泛的加密算法,尽管会出现安全性的问题,在找到新的更为有效的算法之前,应该会持续发展,更新算法并且网站也开始随之更新。但是旧的算法尽管使用的人数更少了,也依旧会有可能被继续发现安全性能的缺失。

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

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

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

3  不能确保得到的软件中间被人获取过

 

 

 

posted on 2018-05-13 12:04  王涛244  阅读(114)  评论(0)    收藏  举报