徐秀華
第一章 Hash函數(shù)的研究現(xiàn)狀
通過閱讀《密碼編碼學(xué)與網(wǎng)絡(luò)安全——原理與實踐(第五版)》的相關(guān)章節(jié)及從網(wǎng)上以及圖書館查閱相關(guān)資料,可以了解到,hash函數(shù)的設(shè)計已經(jīng)初具規(guī)模,從1989由Rivest等人設(shè)計了MD2算法之后,又設(shè)計了MD4以及MD5,雖然速度會稍慢些,但是安全性逐漸提升。再到1992、1993年RIPEMD以及美國RSA又對MD4、MD5進(jìn)行改進(jìn),提出了SHA系列算法,密碼學(xué)Hash函數(shù)走上了正軌,RSA公司對SHA-0,SHA-1的設(shè)計、2002年美國NIST對SHA-1又進(jìn)行改進(jìn)增加了輸出長度,形成了SHA-2(包括SHA-512、SHA-384等算法)算法,再到2009年SHA-3的問世,密碼學(xué)Hash函數(shù)在不斷的發(fā)展壯大,安全性也逐漸提高。
第二章 Hash函數(shù)的定義
Hash函數(shù)是一類可以把輸入的任意長度的消息或數(shù)據(jù)塊x(又叫做預(yù)映射,pre-image),通過一定的散列算法進(jìn)行映射,變成固定長度的輸出值Hash值h=H(x),我們可以把這一類輸出的值h叫做散列值或者是消息摘要。
目前,根據(jù)Hash函數(shù)算法的設(shè)計方法的不同通??梢苑譃槿N類型:標(biāo)準(zhǔn)型、基于模運算性、基于分組加密型三種類型。
1.標(biāo)準(zhǔn)型的Hash函數(shù)
標(biāo)準(zhǔn)Hash函數(shù)一般來說可以分成兩部分,一部分是MD系列的,另一部分是SHA-系列的。
從1989年開始由Rivest等人設(shè)計了MD2的算法之后,又先后的設(shè)計了MD4還有MD5等算法,雖然后者在運行速度可能稍慢些,但是安全性能在逐漸提升,以上為MD系列Hash算法。
再到1992、1993年以后RIPEMD以及美國RSA又對MD4、MD5進(jìn)行了改進(jìn),提出SHA系列算法之后,密碼學(xué)Hash函數(shù)才逐漸走上了正軌,RSA對SHA-0,SHA-1進(jìn)行了設(shè)計、2002年美國NIST對SHA-1算法加以改進(jìn)增加了輸出長度,形成了SHA-2算法(包括SHA-512、SHA-384、SHA-256等算法),再到2009年SHA-3的問世,這些算法都是SHA-系列Hash函數(shù)。
2.基于分組機密型的Hash函數(shù)
基于分組密碼來構(gòu)造Hash函數(shù)具有一定的局限性,它不能使用分組密碼的組件一邊來設(shè)計Hash函數(shù),而是僅能靠分組密碼的一些輸入輸出的模式進(jìn)行變換來構(gòu)造一些壓縮函數(shù)。利用分組密碼來構(gòu)造Hash函數(shù)是先對原始消息(單位為m)進(jìn)行填充,這樣進(jìn)行填充后的消息的總長度就是每一個分組長度(每一個分組的長度為n)的倍數(shù),假設(shè)原始消息被分為了t組,Mi(i=1,2…t),把h0設(shè)為初始向量,那么hi=f(Mi,Hi-1)其中i=1,2…t,Ek是一組分組加密算法,其中消息長度為n,k為密鑰分組,H(m)=Ht。
其中以下為已經(jīng)證明了的安全Hash函數(shù)的一些方案:
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)
利用分組密碼來構(gòu)造Hash函數(shù)有它的優(yōu)缺點,其中優(yōu)點是它的發(fā)展已經(jīng)很成熟,設(shè)計效果也比較好,但是它的缺點卻是效率低,由于原始消息要先轉(zhuǎn)化成密鑰,密鑰一般又是不變的,所以它的運行時間相對長而且安全性也不高。
3.基于模運算型的Hash函數(shù)
此類Hash函數(shù)一般是要用到bit的一些邏輯性的運算,如:與、或、異或(⊕)等運算符,它是基于一些比較困難的數(shù)學(xué)問題,比如:離散數(shù)學(xué)的問題,因子分解的問題,背包的問題等進(jìn)行Hash函數(shù)的構(gòu)造。這類的運算效率很低而且安全性對數(shù)學(xué)問題是否困難依賴太大,安全性也不好,所以運用的相對較少。我們一般不會采用這種基于模運算型進(jìn)行的Hash函數(shù)的構(gòu)造。
第三章 論Hash函數(shù)的重要應(yīng)用
1.消息認(rèn)證
對于消息認(rèn)證,它主要是用來驗證消息完整性的一種機制或服務(wù),用來確保收到的數(shù)據(jù)和發(fā)送的一樣,一般來說,我們比較熟悉的認(rèn)證方法是奇偶校驗以及CRC校驗,但是這只是兩種校驗方式,只能檢測和糾正一定程度上的信道誤碼,但是并不能防止惡意攻擊對數(shù)據(jù)的破壞。
但是加密函數(shù)也有不方便的地方,比如說是加密后程序運行速度變慢,而且加密軟件價格昂貴,大家不得不考慮成本的問題,有的加密軟件已經(jīng)申請了專利,這樣成本會更高,對于加密軟件的優(yōu)化也是對于大數(shù)據(jù)塊來說的。
2.數(shù)字簽名
Hash函數(shù)是當(dāng)代密碼學(xué)中的很重要的組成部分。它在數(shù)字簽名方面也有著很廣泛的應(yīng)用,對于數(shù)字簽名這種應(yīng)用,應(yīng)用過程如下,用公鑰私鑰加密方式來驗證消息的完整性,具體過程是:發(fā)送者用私鑰加密消息的Hash值,只要你知道公鑰,便可以通過這種方法來驗證消息的完整性,現(xiàn)在數(shù)字簽名的應(yīng)用比消息認(rèn)證更為廣泛。
3.其他應(yīng)用
它在其他方面的應(yīng)用,比如鑒權(quán)協(xié)議上的應(yīng)用,這種鑒權(quán)協(xié)議又可以被稱作是“挑戰(zhàn)——認(rèn)證模式”,它在傳輸信道中是可被偵聽的,但是在不可以被篡改的這樣一種情況下,這確實是一種簡單而又安全的方法。
第四章 結(jié)論
通過對本次論文的書寫,可以認(rèn)識到Hash函數(shù)在密碼學(xué)中的重要應(yīng)用,它能夠保證數(shù)據(jù)的完整性以及不可否認(rèn)性。認(rèn)識到它在是消息認(rèn)證和數(shù)字簽名方面的應(yīng)用。對于消息認(rèn)證,它是用來驗證消息完整性的一種機制或服務(wù),確保收到的數(shù)據(jù)和發(fā)送的一樣。但是加密函數(shù)也有不方便的地方,比如說是加密后程序運行速度變慢,而且加密軟件價格昂貴,大家不得不考慮成本的問題,有的加密軟件已經(jīng)申請了專利,這樣成本會更高,對于加密軟件的優(yōu)化也是對于大數(shù)據(jù)快來說的。對于數(shù)字簽名這種應(yīng)用,用公鑰私鑰加密方式來驗證消息的完整性,具體過程是:發(fā)送者用私鑰加密消息的Hash值,只要你知道公鑰,便可以通過這種方法來驗證消息的完整性。
hash函數(shù)是密碼學(xué)領(lǐng)域的重要部分,但是Hash函數(shù)確實存在安全性的缺陷,安全性更高的hash算法能夠滿足應(yīng)用的需求,通過對主流Hash算法如:MD5,SHA-1以及SHA-2等Hash算法的安全性進(jìn)行效率分析,掌握hash函數(shù)安全性評估方法,并且能夠正確使用hash函數(shù)。在此基礎(chǔ)上,對設(shè)計更安全的Hash函數(shù)找到自己的創(chuàng)新之處。