1. 程式人生 > >單向雜湊函式的性質

單向雜湊函式的性質

一 根據任意長度計算出固定長度的雜湊值

首先,單向雜湊函式的輸入必須能夠是任意長度的訊息。其次,無論輸入多長的訊息,單向雜湊函式必須都能夠生成長度很短的雜湊值,如果訊息越長生成的雜湊值越長的話就不好用了。從使用方便的角度,雜湊值的長度最好是短且固定的。

二 能夠快速計算出雜湊值

計算雜湊值花費的時間必須要短。儘管訊息越長,計算雜湊值的時間也會越長,但如果不能在現實的時間內完成計算就沒有意義了。

三 訊息不同,雜湊值也不同

為了能夠確認完整性,訊息中哪怕只有1位元的改變,也必須有很高的概率產生不同的雜湊值。如下圖所示:

如果單向雜湊函式計算出的雜湊值沒有發生變化,那麼訊息很容易就會被篡改,這個單向雜湊函式就無法用於完整性的檢查。兩個不同的訊息產生同一個雜湊值的情況稱為碰撞。如果要將單向雜湊函式用於完整性的檢查,則需要確認在事實上不可能被人為地發現碰撞。

難以發現碰撞的性質為抗碰撞性。金鑰技術中所使用的單向雜湊函式,都需要具備抗碰撞性。

下面以Alice用單向雜湊函式來檢查檔案完整性的場景為例,說明什麼是抗碰撞性。

假設Alice所使用的單向雜湊函式不具備抗碰撞性。

Alice在回家之前得到下面的雜湊值:

Alice在睡覺的時候,主動攻擊者Mallory入侵了Alice的計算機,並改寫了Alice的檔案。

由於我們假設Alice的單向雜湊函式不具備抗碰撞性,因此Mallory能夠找到一種改寫檔案的方法,使得改寫後文件的雜湊值不發生變化。於是,雖然Mallory改寫了檔案,但雜湊值沒有發生變化。

第二天早上,Alice重新計算雜湊值,得到下面的結果。

這個結果和昨晚雜湊值一致,Alice鬆了一口氣。但是,實際上Mallory已經改寫了檔案,Alice將Mallory改寫的檔案複製出來製成了母盤。

這裡所說的抗碰撞性,指的是難以找出另外一條具備特定雜湊值的訊息。當給定某條訊息的雜湊值時,單向雜湊函式必要確保要找到和該條訊息具有相同雜湊值的另外一條訊息是非常困難的。這一性質稱為弱抗碰撞性。單向雜湊函式都具備弱抗碰撞性。

和弱抗碰撞性相對的,還有強抗碰撞性。所謂強抗碰撞性,是指要找到雜湊值相同的兩條不同的訊息時非常困難的這一性質。在這裡,雜湊值可以是任意的。

密碼技術中所使用的單向雜湊函式,不僅要具備弱抗碰撞性,還必須具備強抗碰撞性。

四 具備單向性

單向雜湊函式必須具備單向性,單向性指的是無法通過雜湊值反向算出訊息的性質。根據訊息計算雜湊值可以很容易,但這條單行路是無法反過來走的。

根據訊息計算出雜湊值很容易,但根據雜湊值卻無法反算出訊息。

儘管單向雜湊函式所產生的雜湊值是和原來的訊息完全不同的位元序列,但是單向雜湊函式並不是一種加密,因此無法通過解密將雜湊值還原成原來的訊息。