複製鏈接
請複製以下鏈接發送給好友

密碼散列函數

鎖定
密碼散列函數(Cryptographic hash function),又譯為加密散列函數,是散列函數的一種。它被認為是一種單向函數,也就是説極其難以由散列函數輸出的結果,回推輸入的數據是什麼。這樣的單向函數被稱為“現代密碼學的馱馬”。這種散列函數的輸入數據,通常被稱為消息(message),而它的輸出結果,經常被稱為消息摘要(message digest)或摘要(digest)。在信息安全中,有許多重要的應用,都使用了密碼散列函數來實現,例如數字簽名消息認證碼
中文名
密碼散列函數
外文名
Cryptographic hash function
領    域
信息安全
別    名
加密散列函數
應    用
數字簽名,消息認證碼
類    型
散列函數

目錄

密碼散列函數簡介

密碼散列函數是一種單向散列函數,將任意長度的消息壓縮到某一固定長度的消息摘要,一個理想的密碼散列函數應該有四個主要的特性:對於任何一個給定的消息,它都很容易就能運算出散列數值。難以由一個已知的散列數值,去推算出原始的消息。在不更動散列數值的前提下,修改消息內容是不可行的。對於兩個不同的消息,它不能給與相同的散列數值。單向散列函數生成的信息摘要是不可預見的,消息摘要看起來和原始的數據沒有任何的關係。而且,原始數據的任何微小變化都會對生成的信息摘要產生很大的影響 [1]  。它的模型為:
其中,
是待處理的明文,可以為任意長;
單向散列函數
是生成的報文摘要,它具有固定的長度,並且和
的長度無關。其中
具有以下的單向性質:給
,很容易計算
;給定
,很難計算
,甚至得不到的
任何消息;給定
,要找兩個不同的
,使得
在計算上是不可行的。

密碼散列函數散列函數

散列函數(Hash function)又稱散列算法、哈希函數,是一種從任何一種數據中創建小的數字“指紋”的方法。散列函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。該函數將數據打亂混合,重新創建一個叫做散列值(hash values,hash codes,hash sums,或hashes)的指紋。散列值通常用一個短的隨機字母和數字組成的字符串來代表。好的散列函數在輸入域中很少出現散列衝突。在散列表和數據處理中,不抑制衝突來區別數據,會使得數據庫記錄更難找到。所有散列函數都有如下一個基本特性:如果兩個散列值是不相同的(根據同一函數),那麼這兩個散列值的原始輸入也是不相同的。這個特性是散列函數具有確定性的結果,具有這種性質的散列函數稱為單向散列函數。但另一方面,散列函數的輸入和輸出不是確定對應關係的,如果兩個散列值相同,兩個輸入值很可能是相同的,但也可能不同,這種情況稱為“散列碰撞(collision)”,這通常是兩個不同長度的輸入值,刻意計算出相同的輸出值。輸入一些數據計算出散列值,然後部分改變輸入值,一個具有強混淆特性的散列函數會產生一個完全不同的散列值

密碼散列函數應用

數字簽名(又稱公鑰數字簽名,Digital Signature)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證,但法條中的電子簽章與數字簽名,代表之意義並不相同,電子簽章用以辨識及確認電子文件簽署人身份、資格及電子文件真偽者。而數字簽名則是以數學算法或其他方式運算對其加密,才形成電子簽章,意即使用數字簽名才創造出電子簽章。數字簽名不是指將簽名掃描成數字圖像,或者用觸摸板獲取的簽名,更不是落款。數字簽名了的文件的完整性是很容易驗證的(不需要騎縫章、騎縫簽名,也不需要筆跡鑑定),而且數字簽名具有不可抵賴性(即不可否認性),不需要筆跡專家來驗證。數字簽名應用了公鑰密碼領域使用的單向函數原理。單向函數指的是正向操作非常簡單,而逆向操作非常困難的函數,比如大整數乘法。這種函數往往提供一種難解或懷疑難解的數學問題。公鑰密碼領域具備實用性的三個懷疑難解問題為:質數分解,離散對數和橢圓曲線問題。
在密碼學中,消息認證碼(Message authentication code,縮寫為MAC),又譯為消息鑑別碼、文件消息認證碼、訊息鑑別碼、信息認證碼,是經過特定算法後產生的一小段信息,檢查某段消息的完整性,以及作身份驗證。它可以用來檢查在消息傳遞過程中,其內容是否被更改過,不管更改的原因是來自意外或是蓄意攻擊。同時可以作為消息來源的身份驗證,確認消息的來源。消息認證碼的算法中,通常會使用帶密鑰的散列函數(HMAC),或者塊密碼的帶認證工作模式(如CBC-MAC)。信息鑑別碼不能提供對信息的保密,若要同時實現保密認證,同時需要對信息進行加密。
參考資料
  • 1.    辛運幃,廖大春,盧桂章.單向散列函數的原理、實現和在密碼學中的應用[J].計算機應用研究,2002(02):25-27.