信息安全作業5 散列函數的應用及其安全性發展
一、哈希函數的應用
(1)錯誤校正
使用一個散列函數可以很直觀的檢測出數據在傳輸時發生的錯誤。在數據的發送方,對將要發送的數據應用散列函數,並將計算的結果同原始數據一同發送。在數據的接收方,同樣的散列函數被再一次應用到接收到的數據上,如果兩次散列函數計算出來的結果不一致,那麽就說明數據在傳輸的過程中某些地方有錯誤了。這就叫做冗余校驗。
對於錯誤校正,假設相似擾動的分布接近最小(a distribution of likely perturbations is assumed at least approximately)。對於一個信息串的微擾可以被分為兩類,大的(不可能的)錯誤和小的(可能的)
(2)語音識別
對於像從一個已知列表中匹配一個MP3文件這樣的應用,一種可能的方案是使用傳統的散列函數--例如MD5,但是這種方案會對時間平移、CD讀取錯誤、不同的音頻壓縮算法或者音量調整的實現機制等情況非常敏感。使用一些類似於MD5的方法有利於迅速找到那些嚴格相同(從音頻文件的二進制數據來看)的音頻文件,但是要找到全部相同(從音頻文件的內容來看)的音頻文件就需要使用其他更高級的算法了。
那些並不緊隨IT工業潮流的人往往能反其道而行之,對於那些微小差異足夠魯棒的散列函數確實存在。現存的絕大多數散列算法都是不夠魯棒的,但是有少數散列算法能夠達到辨別從嘈雜房間裏的揚聲器裏播放出來的音樂的魯棒性。有一個實際的例子是Shazam[1]服務。用戶可以用電話機撥打一個特定的號碼,並將電話機的話筒靠近用於播放音樂的揚聲器。該項服務會分析正在播放的音樂,並將它於存儲在數據庫中的已知的散列值進行比較。用戶就能夠收到被識別的音樂的曲名(需要收取一定的費用)
二、結合生日攻擊、以及2004、2005年王曉雲教授有關MD5安全性和2017年google公司SHA-1的安全性,說明散列函數的安全性以及目前安全散列函數的發展。
(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數據能夠生成該輸入報文固定長度的輸出。
(2)安全散列函數的發展
三種最廣泛使用的算法是MD5,SHA和RIPEMD; 然而所有算法都來自MD4的格式。近些年,應用最廣泛的散列函數是SHA。由於其他每一種被廣泛應用的散列函數都已經被證實存在這密碼分析學中的缺陷,接著到2005年,SHA或許僅存的安全散列算法。SHA由美國國家標準與技術研究院(NIST)開發。1995年公布SHA-1;2002年,公布了SHA-2(SHA-256、SHA-384、SHA-512);2008年,增加了SHA-224。
三、結合md5算法中的選擇前綴碰撞以及第二個鏈接中的helloworld.exe和goodbyworld.exe兩個可執行文件的md5消息摘要值和兩個文件的執行結果說明md5算法來驗證軟件完整性時可能出現的問題。
可能會感染病毒、植入木馬/後門/人為篡改、傳輸故障。如果有第三方在驗證軟件完整性時截取軟件代碼,使用快速MD5碰撞生成器,在短時間內偽造一份相同的MD5,並惡意篡改軟件,那麽安全性將會大大下降,當軟件過大時,在驗證過程中所需的時間也會大大增加,對於第三方而言,攻擊的成功概率也會增加。攻擊者也不需要從源代碼中構造出兩個文件,完全可以將第一個文件作為任何源的任何可執行文件,並且作為第二個文件生成第二個可執行文件作為惡意軟件。然後,可以找到要附加到兩個文件的字節塊,使得得到的文件具有相同的MD5哈希值。攻擊者只需要獲取第一個文件就可以了。
信息安全作業5 散列函數的應用及其安全性發展