欢迎来到学术参考网
当前位置:教育论文>文教资料

密码学Hash函数分析与应用

发布时间:2023-12-10 10:35

  第一章Hash函数的研究现状


  通过阅读《密码编码学与网络安全——原理与实践(第五版)》的相关章节及从网上以及图书馆查阅相关资料,可以了解到,hash函数的设计已经初具规模,从1989由Rivest等人设计了MD2算法之后,又设计了MD4以及MD5,虽然速度会稍慢些,但是安全性逐渐提升。再到1992、1993年RIPEMD以及美国RSA又对MD4、MD5进行改进,提出了SHA系列算法,密码学Hash函数走上了正轨,RSA公司对SHA-0,SHA-1的设计、2002年美国NIST对SHA-1又进行改进增加了输出长度,形成了SHA-2(包括SHA-512、SHA-384等算法)算法,再到2009年SHA-3的问世,密码学Hash函数在不断的发展壮大,安全性也逐渐提高。


  第二章Hash函数的定义


  Hash函数是一类可以把输入的任意长度的消息或数据块x(又叫做预映射,pre-image),通过一定的散列算法进行映射,变成固定长度的输出值Hash值h=H(x),我们可以把这一类输出的值h叫做散列值或者是消息摘要。


  目前,根据Hash函数算法的设计方法的不同通常可以分为三种类型:标准型、基于模运算性、基于分组加密型三种类型。


  1.标准型的Hash函数


  标准Hash函数一般来说可以分成两部分,一部分是MD系列的,另一部分是SHA-系列的。


  从1989年开始由Rivest等人设计了MD2的算法之后,又先后的设计了MD4还有MD5等算法,虽然后者在运行速度可能稍慢些,但是安全性能在逐渐提升,以上为MD系列Hash算法。


  再到1992、1993年以后RIPEMD以及美国RSA又对MD4、MD5进行了改进,提出SHA系列算法之后,密码学Hash函数才逐渐走上了正轨,RSA对SHA-0,SHA-1进行了设计、2002年美国NIST对SHA-1算法加以改进增加了输出长度,形成了SHA-2算法(包括SHA-512、SHA-384、SHA-256等算法),再到2009年SHA-3的问世,这些算法都是SHA-系列Hash函数。


  2.基于分组机密型的Hash函数


  基于分组密码来构造Hash函数具有一定的局限性,它不能使用分组密码的组件一边来设计Hash函数,而是仅能靠分组密码的一些输入输出的模式进行变换来构造一些压缩函数。利用分组密码来构造Hash函数是先对原始消息(单位为m)进行填充,这样进行填充后的消息的总长度就是每一个分组长度(每一个分组的长度为n)的倍数,假设原始消息被分为了t组,Mi(i=1,2…t),把h0设为初始向量,那么hi=f(Mi,Hi-1)其中i=1,2…t,Ek是一组分组加密算法,其中消息长度为n,k为密钥分组,H(m)=Ht。


  其中以下为已经证明了的安全Hash函数的一些方案:


  1979年:Matyas-meyer-Oseas的hi=Eh(i-1)(mi)⊕mi


  1989年:Miyaguchi-preneal的hi=Eh(i-1)(mi)⊕mi⊕h(i-1)


  1979年:Davis-Meyer的hi=Eh(i-1)(mi)⊕h(i-1)


  利用分组密码来构造Hash函数有它的优缺点,其中优点是它的发展已经很成熟,设计效果也比较好,但是它的缺点却是效率低,由于原始消息要先转化成密钥,密钥一般又是不变的,所以它的运行时间相对长而且安全性也不高。


  3.基于模运算型的Hash函数


  此类Hash函数一般是要用到bit的一些逻辑性的运算,如:与、或、异或(⊕)等运算符,它是基于一些比较困难的数学问题,比如:离散数学的问题,因子分解的问题,背包的问题等进行Hash函数的构造。这类的运算效率很低而且安全性对数学问题是否困难依赖太大,安全性也不好,所以运用的相对较少。我们一般不会采用这种基于模运算型进行的Hash函数的构造。


  第三章论Hash函数的重要应用


  1.消息认证


  对于消息认证,它主要是用来验证消息完整性的一种机制或服务,用来确保收到的数据和发送的一样,一般来说,我们比较熟悉的认证方法是奇偶校验以及CRC校验,但是这只是两种校验方式,只能检测和纠正一定程度上的信道误码,但是并不能防止恶意攻击对数据的破坏。


  但是加密函数也有不方便的地方,比如说是加密后程序运行速度变慢,而且加密软件价格昂贵,大家不得不考虑成本的问题,有的加密软件已经申请了专利,这样成本会更高,对于加密软件的优化也是对于大数据块来说的。


  2.数字签名


  Hash函数是当代密码学中的很重要的组成部分。它在数字签名方面也有着很广泛的应用,对于数字签名这种应用,应用过程如下,用公钥私钥加密方式来验证消息的完整性,具体过程是:发送者用私钥加密消息的Hash值,只要你知道公钥,便可以通过这种方法来验证消息的完整性,现在数字签名的应用比消息认证更为广泛。


  3.其他应用


  它在其他方面的应用,比如鉴权协议上的应用,这种鉴权协议又可以被称作是“挑战——认证模式”,它在传输信道中是可被侦听的,但是在不可以被篡改的这样一种情况下,这确实是一种简单而又安全的方法。


  第四章结论


  通过对本次论文的书写,可以认识到Hash函数在密码学中的重要应用,它能够保证数据的完整性以及不可否认性。认识到它在是消息认证和数字签名方面的应用。对于消息认证,它是用来验证消息完整性的一种机制或服务,确保收到的数据和发送的一样。但是加密函数也有不方便的地方,比如说是加密后程序运行速度变慢,而且加密软件价格昂贵,大家不得不考虑成本的问题,有的加密软件已经申请了专利,这样成本会更高,对于加密软件的优化也是对于大数据快来说的。对于数字签名这种应用,用公钥私钥加密方式来验证消息的完整性,具体过程是:发送者用私钥加密消息的Hash值,只要你知道公钥,便可以通过这种方法来验证消息的完整性。


  hash函数是密码学领域的重要部分,但是Hash函数确实存在安全性的缺陷,安全性更高的hash算法能够满足应用的需求,通过对主流Hash算法如:MD5,SHA-1以及SHA-2等Hash算法的安全性进行效率分析,掌握hash函数安全性评估方法,并且能够正确使用hash函数。在此基础上,对设计更安全的Hash函数找到自己的创新之处。


  作者:徐秀华

上一篇:现代密码学课程教学改革若干问题研究

下一篇:本科类院校密码学实践课程教学研究