hash演算法,或密碼學hash函式,是密碼學應用的重要組成部分。has函式由於其壓縮特性,常用於訊息的核實和認證。hash函式是區塊鏈技術中加密的關鍵技術。
一、hash函式的定義
hash函式又稱為雜湊函式、雜湊函式或雜湊函式,其功能是將一串任意長度的訊息對映為乙個較短的固定長度的輸出串。該固定長度的輸出串與初始訊息的所有位元相關,通常稱該輸出串為訊息的hash值。
hash函式通常用來構造資料的「數字指紋」,以驗證傳輸資料的完整性。對於特定的資料來說,它的hash值是惟一的,一旦資料發生變化,對應的「數字指紋」也會發生變化。因此,通過對「數字指紋」的驗證就能確認資料的完整性。
1、hash函式的定義
設m為所有可能訊息m的集合,y為所有可能的訊息摘要y構成的有限集,則把從m到y的對映
h:m→y
稱為hash函式。在以上的定義中。m為無限集,y為有限集。
2、hash函式的性質
hash函式必須滿足以下性質:
(1)輸入訊息的長度沒有限制,hash函式應能作用於任何大小的資料分組。
(2)壓縮性:hash函式作用於任意長度的訊息後得到固定長度的輸出。
(3)正向計算簡單性:對任意給定訊息m,計算y=h(m)比較容易,適合於軟、硬體快速實現。
(5)單向性:對任意給定的訊息摘要y=h(m),找到滿足y=h(m)的訊息m是很困難的,即hash函式求逆在計算上不可行。
(6)弱抗碰撞性:對任意給定的訊息m,找到另乙個不同的訊息m^',使得h(m)=h(m^')在計算上不可行。
(7)強抗碰撞性:找到任何滿足h(m1)=h(m2)在計算上不可行。
二、常見hash函式介紹
hash函式的演算法有很多,但不一定都很有效。hash函式中比較有名的是md系列演算法和sha(secure hash algorithm)系列演算法。md系列演算法是由ron rivest提出的,md2是為8位計算機系統設計的,md4、md5是為32位計算機系統開發的。md4演算法易於實現,其組成結構中需要填充位元位使訊息長度模512等於448,再將訊息的原始長度以64bit表示,填充在最後乙個訊息分組中。輸入資訊以512bit分組,每個分組通過3輪共48個步驟的處理,得到128bit的摘要值。md4公布後,很快就發現其存在缺陷,在極短的時間內就能找到md4的碰撞,於是md4被淘汰。
rivest又提出了md5作為md4的改進。md4、md5處理訊息時都以512作為分組,輸出128bit的訊息摘要。md5在md4的基礎上增加了計算的輪次,執行速度比md4慢,但增加了安全性。md5的壓縮函式共需要進行64次運算,並對4個非線性基本邏輯函式f、g、h、i的沒乙個進行16次迭代。md5複雜的結構使得輸出對輸入依賴性非常大,輸出的每一位都是輸入每一位的函式。也就是說。隨機選擇兩條訊息,即使它們具有相同的規律性,也不可能產生相同的hash值。
安全hash函式sha是由美國國家標準與技術研究所(nist)設計並於2023年作為聯邦資訊處理標準發布。人們很快發現了sha的乙個弱點,於是nist又於2023年發布了它的乙個修改版sha-1。sha-1是國際上使用較為廣泛的hash函式。
sha-1產生160bit的訊息摘要值,其設計思想**於md4,其基本框架與md5類似,採用迭代技術構造。sha-1演算法的輸入不可無限長,是長度小於264的任意訊息,將原始輸入訊息按512bit進行分組進行處理,最後一組通過填充成為整塊。通過壓縮函式的反覆迭代過程。最後輸出160bit的訊息摘要值。
sha-1和md5的訊息摘要長度分別為160bit和128bit,所以窮舉搜尋攻擊的方法尋找具有給定訊息摘要的訊息分別需做2160和2128次運算,因此sha抗窮舉搜尋攻擊的強度要高於md5。此外,安全的hash函式設計的關鍵點是壓縮函式,好的壓縮函式的輸入位應該影響多的輸出位,sha-1的壓縮函式輸入位影響的輸出位較多,因此sha-1安全性比md5要高,但執行速度慢一些。
2023年.nist發布了修訂版fips-2替換了fips-1。在fips-2中,除sha-1外,新增了sha-256、sha-384和sha-512三個hash演算法,這些新演算法統稱為sha-2。與sha-1相比,sha-2具有更複雜的描述,其中安全效能最高的sha-512演算法的訊息摘要長度為512bit,因此尋找具有給定訊息摘要的訊息需要2512次運算,因此sha-512的抗窮舉搜尋攻擊的強度在sha系列演算法中最高。
三、hash演算法的用途
1、檔案校驗
我們比較熟悉的校驗演算法有奇偶校驗和crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。
md5 hash演算法的「數字指紋」特性,使它成為目前應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5 checksum的命令。
2、數字簽名
hash 演算法也是現代密碼體系中的乙個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了乙個重要的角色。 對 hash 值,又稱「數字摘要」進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
3、鑑權協議
如下的鑑權協議又被稱作挑戰--認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。
三、hash演算法結構
目前,一般使用迭代技術來構造hash函式,它是由merkle於2023年提出,曾廣泛使用的md4、md5以及安全hash演算法(sha-1、sha-2)等都是基於這種結構,採用這種方法構造的hash函式稱為迭代hash函式。該結構大體上分為:預處理、迭代壓縮過程和輸出變換,其核心為迭代壓縮過程中使用的壓縮函式。
1、預處理
由於將不限長度的訊息壓縮成定長度輸出的摘要值,首先必須將輸入訊息m劃分成固定長度(rbit)的分組mi(i=1,…,t),對最後乙個分組mt填充若干位元,使該分組等於固定值r。填充的位元中包括原始輸入訊息m的長度。
2、迭代壓縮過程
對每乙個訊息分組進行迭代壓縮,此過程中重複使用乙個壓縮函式f。壓縮函式f有兩個輸入:乙個是本次迭代的第i個分組mi(長度為rbit);另乙個是鏈結變數hi-1(上乙個分組mi-1經f函式處理以後的輸出)。然後,f函式產生乙個nbit的輸出hi,此輸出作為下一次迭代的鏈結變數。通常r≥n,故稱函式f為壓縮函式。在開始迭代壓縮之前,鏈結變數有乙個nbit長度的初始值iv。
迭代壓縮的邏輯關係為
h0=iv
hi=f(hi-1,mi)
3、輸出變換
t輪迭代後的鏈結變數ht經輸出變換函式g變換後得到輸入訊息m的摘要值為
h(m)=g(ht)
為了減少碰撞,輸入訊息m的長度資訊作為填充的資料報含在最後乙個訊息的分組中,因此攻擊者在試圖找到偽訊息m1與傳送訊息m的訊息摘要一致時,必須保證m1的長度和m的長度一致才合法,從而大大增加了攻擊的難度。這種技術稱為md的強化技術。有學者證明,經過md強化後,hash函式抗碰撞的強度等價於壓縮函式f抗碰撞的強度。如果壓縮函式f是單向的、抗碰撞的,那麼這個hash函式也是單向的、抗碰撞。攻擊者對演算法的攻擊重點是f的內部結構,由於和分組密碼一樣是由若干輪處理過程組成的,所以對f的攻擊需通過對各輪之間的位模式的分析來進行。分析時需要先找出f的碰撞,因此、設計安全的hash函式就轉變成設計抗碰撞的壓縮函式f,並且該壓縮的輸入是固定長度的。
「區塊鏈原理設計與應用「」讀書筆記
區塊鏈思想的誕生 區塊鏈技術具備去中心化 防篡改 可追溯等眾多金融領域十分需要的特點。實現多方場景下開放 扁平化的全新合作信任模型,而這些都為實現更高效的資源配置,更具體的說是金融交易,提供有效的技術手段。新型數字貨幣 分布式賬本技術的支付系統。在清算和結算方面獨特優勢。挑戰 1.不影響業務執行的前...
區塊鏈讀書筆記四
區塊鏈對大規模協作產生的影響 對區塊鏈未來的前景的興奮點在於,極高的生產力會將這個星球上所有的人和機器都連入乙個全新的網路,也許到了21世紀下半夜,資本主義走向沒落,區塊鏈去中心化協同共享將取而代之,每個人都有自己的個性資產以及榮譽。區塊鏈作為新興協同的共享模式的最佳技術手段,將培養和鼓勵個人參與到...
區塊鏈讀書筆記02 區塊鏈高階
參考文獻 補充說明 廣播新的資料記錄時,實際上不需要抵達全部的節點。只要資料記錄資訊能夠抵達足夠多的節點,那麼將很快地被整合進乙個區塊中 全網節點表示接受某區塊的方法,就是將該區塊的隨機雜湊值視為最新的區塊雜湊值,新區塊的製造將以該區塊鏈為基礎進行延長 節點始終都將最長的區塊鏈視為正確的鏈,並持續以...