信息安全技術 做業5

散列函數的應用及安全性

一、散列函數的應用。

錯誤校訂
使用一個散列函數能夠很直觀的檢測出數據在傳輸時發生的錯誤。在數據的發送方,對將要發送的數據應用散列函數,並將計算的結果同原始數據一同發送。在數據的接收方,一樣的散列函數被再一次應用到接收到的數據上,若是兩次散列函數計算出來的結果不一致,那麼就說明數據在傳輸的過程當中某些地方有錯誤了。這就叫作冗餘校驗。
對於錯誤校訂,假設類似擾動的分佈接近最小(a distribution of likely perturbations is assumed at least approximately)。對於一個信息串的微擾能夠被分爲兩類,大的(不可能的)錯誤和小的(可能的)錯誤。咱們對於第二類錯誤從新定義以下,假如給定 H(x) 和 x+s,那麼只要s足夠小,咱們就能有效的計算出x。那樣的散列函數被稱做錯誤校訂編碼。這些錯誤校訂編碼有兩個重要的分類:循環冗餘校驗和裏德所羅門碼。
 
語音識別
對於像從一個已知列表中匹配一個MP3文件這樣的應用,一種可能的方案是使用傳統的散列函數——例如MD5,可是這種方案會對時間平移、CD讀取錯誤、不一樣的音頻壓縮算法或者音量調整的實現機制等狀況很是敏感。使用一些相似於MD5的方法有利於迅速找到那些嚴格相同(從音頻文件的二進制數據來看)的音頻文件,可是要找到所有相同(從音頻文件的內容來看)的音頻文件就須要使用其餘更高級的算法了。
那些並不緊隨IT工業潮流的人每每能反其道而行之,對於那些微小差別足夠魯棒的散列函數確實存在。現存的絕大多數散列算法都是不夠魯棒的,可是有少數散列算法可以達到辨別從嘈雜房間裏的揚聲器裏播放出來的音樂的魯棒性。有一個實際的例子是Shazam[1]服務。用戶能夠用電話機撥打一個特定的號碼,並將電話機的話筒靠近用於播放音樂的揚聲器。該項服務會分析正在播放的音樂,並將它於存儲在數據庫中的已知的散列值進行比較。用戶就可以收到被識別的音樂的曲名(須要收取必定的費用)
 
信息安全
Hash算法在信息安全方面的應用主要體如今如下的3個方面:
(1)文件校驗
咱們比較熟悉的校驗算法有奇偶校驗和CRC校驗,這2種校驗並無抗數據篡改的能力,它們必定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。
MD5 Hash算法的"數字指紋"特性,使它成爲目前應用最普遍的一種文件完整性校驗和(Checksum)算法,很多Unix系統有提供計算md5 checksum的命令。
(2)數字簽名
Hash 算法也是現代密碼體系中的一個重要組成部分。因爲非對稱算法的運算速度較慢,因此在數字簽名協議中,單向散列函數扮演了一個重要的角色。對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上能夠認爲與對文件自己進行數字簽名是等效的。並且這樣的協議還有其餘的優勢。
(3) 鑑權協議
以下的鑑權協議又被稱做挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的狀況下,這是一種簡單而安全的方法。以上就是一些關於hash以及其相關的一些基本預備知識。
 

二、散列函數的安全性

安全散列函數: 單向散列函數或者安全散列函數之因此重要,不只在於消息認證(消息摘要,數據指紋),還有數字簽名(增強版的消息認證)和驗證數據的完整性。常見的單向散列函數有MD5和SHA算法

散列函數的安全性:有兩種方法能夠攻擊安全散列函數:密碼分析法和暴力攻擊法。散列函數抵抗暴力攻擊的強度徹底依賴於算法生成的散列碼長度。Van Oorschot和Wiener曾經提出,花費1000萬美圓涉及一個被專門用來搜索MD5算法碰撞的機器,則平均24天內就能夠找到一個碰撞。2004年8月中國密碼學家王小云教授等首次公佈了提出一種尋找MD5碰撞的新方法。目前利用該方法用普通微機幾分鐘內便可找到MD5的碰撞。MD5已經唄完全攻破。數據庫

散列函數的安全性要求:安全

一、已知哈希函數的輸出,要求它的輸入是困難的,即已知c=Hash(m),求m是困難的。這代表函數應該具備單向性。

二、已知m,計算Hash(m)是容易的。這代表函數應該具備快速性。

三、已知,構造m2使Hash(m2)=c1是困難的。這代表函數應該具備抗碰撞性。

四、c=Hash(m),c的每一比特都與m的每一比特有關,並有高度敏感性。即每改變m的一比特,都將對c產生明顯影響。這代表函數應該具備雪崩性。

五、做爲一種數字簽名,還要求哈希函數除了信息m自身以外,應該基於發信方的祕密信息對信息m進行確認。

六、接受的輸入m數據沒有長度限制;對輸入任何長度的m數據可以生成該輸入報文固定長度的輸出。

生日攻擊:利用「兩個集合相交」問題的原理生成散列函數碰撞,達到目的的攻擊稱爲生日攻擊,也稱爲平方根攻擊。生日攻擊方法沒有利用Hash函數的結構和任何代數弱性質,它只依賴於消息摘要的長度,即hash值的長度。簡單來講,生日攻擊就是利用散列函數發生碰撞的可能性,進行n次嘗試直到找到一對碰撞的輸入。一個40比特長的消息摘要是很不安全的,大約一百萬次隨機Hash可至少以50%的機率找到一個碰撞。由於所需的安全散列長度愈來愈長,所以咱們可使用有限定義域上的散列函數(俗稱壓縮函數)經過迭代方式拓展爲具備無限定義域的散列函數。而最爲表明性的就Merkle-Damgard結構app

MD5原理:對MD5算法簡要的敘述能夠爲:MD5以512位分組來處理輸入的信息,且每一分組又被劃分爲16個32位子分組,通過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。函數

SHA-1:SHA (Secure Hash Algorithm,譯做安全散列算法) 是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院(NIST) 發佈的一系列密碼散列函數。正式名稱爲 SHA 的家族第一個成員發佈於 1993年。然而人們給它取了一個非正式的名稱 SHA-0 以免與它的後繼者混淆。兩年以後, SHA-1,第一個 SHA 的後繼者發佈了。 另外還有四種變體,曾經發布以提高輸出的範圍和變動一些細微設計: SHA-224, SHA-256, SHA-384 和 SHA-512 (這些有時候也被稱作 SHA-2)。編碼

最初載明的算法於1993年發佈,稱作安全散列標準 (Secure Hash Standard),FIPS PUB 180。這個版本常被稱爲 "SHA-0"。它在發佈以後很快就被NSA撤回,而且以 1995年發佈的修訂版本 FIPS PUB 180-1 (一般稱爲 "SHA-1") 取代。根據 NSA的說法,它修正了一個在原始算法中會下降密碼安全性的錯誤。然而 NSA 並無提供任何進一步的解釋或證實該錯誤已被修正。1998年,在一次對 SHA-0 的攻擊中發現此次攻擊並不能適用於 SHA-1 — 咱們不知道這是否就是NSA 所發現的錯誤,但這或許暗示咱們此次修正已經提高了安全性。SHA-1已經被公衆密碼社羣作了很是嚴密的檢驗而還沒發現到有不安全的地方,它在一段時間被認爲是安全的,直到Google宣佈攻破SHA-1。
相關文章
相關標籤/搜索