-
密碼散列函數
鎖定
- 中文名
- 密碼散列函數
- 外文名
- Cryptographic hash function
- 領 域
- 信息安全
- 別 名
- 加密散列函數
- 應 用
- 數字簽名,消息認證碼
- 類 型
- 散列函數
密碼散列函數簡介
密碼散列函數是一種單向散列函數,將任意長度的消息壓縮到某一固定長度的消息摘要,一個理想的密碼散列函數應該有四個主要的特性:對於任何一個給定的消息,它都很容易就能運算出散列數值。難以由一個已知的散列數值,去推算出原始的消息。在不更動散列數值的前提下,修改消息內容是不可行的。對於兩個不同的消息,它不能給與相同的散列數值。單向散列函數生成的信息摘要是不可預見的,消息摘要看起來和原始的數據沒有任何的關係。而且,原始數據的任何微小變化都會對生成的信息摘要產生很大的影響
[1]
。它的模型為:
其中,
是待處理的明文,可以為任意長;
是單向散列函數,
是生成的報文摘要,它具有固定的長度,並且和
的長度無關。其中
具有以下的單向性質:給
和
,很容易計算
;給定
和
,很難計算
,甚至得不到的
任何消息;給定
,要找兩個不同的
和
,使得
在計算上是不可行的。
密碼散列函數散列函數
散列函數(Hash function)又稱散列算法、哈希函數,是一種從任何一種數據中創建小的數字“指紋”的方法。散列函數把消息或數據壓縮成摘要,使得數據量變小,將數據的格式固定下來。該函數將數據打亂混合,重新創建一個叫做散列值(hash values,hash codes,hash sums,或hashes)的指紋。散列值通常用一個短的隨機字母和數字組成的字符串來代表。好的散列函數在輸入域中很少出現散列衝突。在散列表和數據處理中,不抑制衝突來區別數據,會使得數據庫記錄更難找到。所有散列函數都有如下一個基本特性:如果兩個散列值是不相同的(根據同一函數),那麼這兩個散列值的原始輸入也是不相同的。這個特性是散列函數具有確定性的結果,具有這種性質的散列函數稱為單向散列函數。但另一方面,散列函數的輸入和輸出不是確定對應關係的,如果兩個散列值相同,兩個輸入值很可能是相同的,但也可能不同,這種情況稱為“散列碰撞(collision)”,這通常是兩個不同長度的輸入值,刻意計算出相同的輸出值。輸入一些數據計算出散列值,然後部分改變輸入值,一個具有強混淆特性的散列函數會產生一個完全不同的散列值。
密碼散列函數應用
數字簽名(又稱公鑰數字簽名,Digital Signature)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用於簽名,另一個用於驗證,但法條中的電子簽章與數字簽名,代表之意義並不相同,電子簽章用以辨識及確認電子文件簽署人身份、資格及電子文件真偽者。而數字簽名則是以數學算法或其他方式運算對其加密,才形成電子簽章,意即使用數字簽名才創造出電子簽章。數字簽名不是指將簽名掃描成數字圖像,或者用觸摸板獲取的簽名,更不是落款。數字簽名了的文件的完整性是很容易驗證的(不需要騎縫章、騎縫簽名,也不需要筆跡鑑定),而且數字簽名具有不可抵賴性(即不可否認性),不需要筆跡專家來驗證。數字簽名應用了公鑰密碼領域使用的單向函數原理。單向函數指的是正向操作非常簡單,而逆向操作非常困難的函數,比如大整數乘法。這種函數往往提供一種難解或懷疑難解的數學問題。公鑰密碼領域具備實用性的三個懷疑難解問題為:質數分解,離散對數和橢圓曲線問題。