徐秀華
第一章 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函數找到自己的創新之處。