單向雜湊函式

2022-08-29 00:45:19 字數 2053 閱讀 8405

之前討論的問題是:資訊保密。(通過加密的方式)

有時候,我們可能不需要對資訊保密,而是希望接收者能夠驗證在傳遞過程中的訊息有沒被修改,即入侵者不能用假訊息代替合法訊息。(資料完整性)

乙個生活中的問題:如何識別某個人的身份?身份證、指紋。

對應的,我們有資料指紋

那麼乙個指紋函式需要滿足什麼條件?

指紋能處理不同人的身份識別

-》1.該指紋函式要能處理不同長度的資料(甚至是任意長度)

人的指紋是乙個規模相對固定的資訊

-》2.指紋函式的輸出長度要固定

獲取乙個人的指紋非常容易

-》3.資料指紋的計算應該比較容易

已知乙個指紋,不能知道指紋是誰(不使用指紋匹配查詢的系統)

-》4.指紋函式的計算具有單向性

找到兩個人的指紋完全一致是不可能的

-》5.給定乙個訊息,要找到另外乙個訊息的指紋與給定訊息的指紋一致,是不可能的

在世界上找到任意兩個人指紋完全一樣是不可能的

-》6.找到任意兩個指紋一致的訊息,是不可能的(包含性質5)

具有上述性質的指紋函式為單向雜湊函式

記為h(x), 具有以下的性質:

1.h(x)的輸入x為任意長度

2.h(x)的輸出長度固定

3.h(x)的計算方便快捷

4.h(x)的計算具有單向性

5.對於給定x, 找到y<>x, 且h(y)=h(x)在計算不可行

6.找到一對數(x, y), h(x)=h(y)在計算上不可行(包含5)

這樣的函式是滿足特殊性質的hash函式,後文簡稱hash函式,產生的輸出(訊息指紋)稱為訊息摘要,簡稱摘要。

使用hash函式進行完整性驗證的模型:

hash函式可以解決口令驗證的問題:

乙個使用者想進入乙個重要的計算機系統,如果計算機儲存的是使用者的口令,那麼就會出現很多問題。問題的關鍵是,驗證口令時,能不能不要知道具體的口令。

模型:

不同口令有不同的口令摘要

只有口令摘要不能恢復口令

但是這樣會有問題,如果攻擊者用暴力破解的方法,嘗試n個口令,最終能夠找到正確的口令,在這個過程中,如果他把口令和物件的口令摘要記錄成乙個字典,下次破解就只需要查詢這個字典就可以了。

解決的辦法是加入乙個鹽,成為乙個含鹽口令摘要,鹽是乙個隨機數,在口令設定時預設,且不需要保密。

不需要保密的原因是:我們必須要鹽存起來,以便驗證時使用,就有可能洩漏鹽,那麼就不對鹽進行保密了。

得到的好處:字典攻擊失效,對同一口令,鹽不同,摘要就不同,字典的空間變得很大,窮舉的時間非常長。

模型變得更加合理:

可以看到,其原理是對口令(口令長度任意)進行hash,輸出長度固定的摘要,作為乙個key,對私鑰檔案進行加密時,加入key,使用對稱加密器,得到加密後的私鑰檔案。

解密時同樣輸入乙個口令,hash一下,作為key進行解密。

hash函式解決數字簽名的問題:

如果直接對明文進行數字簽名,如果檔案很長,簽名的時間會很長。

使用hash,即使檔案很長,hash後的摘要長度是固定的,簽名的時間是個常數,驗證簽名的時間也是個常數。

簽名過程:

驗證簽名過程:

單向雜湊函式

在介紹單向雜湊函式之前,我們先了解一下什麼情況下需要使用到單向雜湊函式。單向雜湊函式有乙個輸入和輸出。輸入稱為訊息,輸出稱為雜湊值。雜湊值的長度跟訊息的長度無關,不論多少大小的長度的訊息,都會計算出固定長度的雜湊值。單向雜湊函式具有下面幾個特性 能夠根據任意長度的訊息計算出固定長度的雜湊值。計算速度...

單向雜湊函式

在介紹單向雜湊函式之前,我們先了解一下什麼情況下需要使用到單向雜湊函式。單向雜湊函式有乙個輸入和輸出。輸入稱為訊息,輸出稱為雜湊值。雜湊值的長度跟訊息的長度無關,不論多少大小的長度的訊息,都會計算出固定長度的雜湊值。單向雜湊函式具有下面幾個特性 能夠根據任意長度的訊息計算出固定長度的雜湊值。計算速度...

單向雜湊函式總結

名稱安全性 說明md5 不安全md5可以被碰撞 1 sha 1 不安全除了用於對過去生成的雜湊值進行校驗外,不應該被用於新的用途,而是應該遷移到sha 2 sha 2 安全有效應對了針對sha 1的攻擊方法,因此說安全的,可以使用 sha 3 2 安全 1 2004年的國際密碼學會議 crypto ...