一文讀懂區(qū)塊鏈中的哈希函數(shù)是如何構(gòu)造的

uru game
基于分組的對稱密碼算法比如DES/AES算法只是描述如何根據(jù)秘鑰對一段固定長度(分組塊)的數(shù)據(jù)進行加密,對于比較長的數(shù)據(jù),分組密碼工作模式描述了如何重復(fù)應(yīng)用某種算法安全地轉(zhuǎn)換大于塊的數(shù)據(jù)量。

1.基于數(shù)學(xué)難題的構(gòu)造方法

MASH-1(Modular Arithmetic Secure Hash)是一個基于RSA算法的哈希算法,在1995年提出,入選國際標準ISO/IEC 10118-4;MASH-2是MASH-1的改進,把第四步中的2換成了28+1;由于涉及模乘/平方運算,計算速度慢,非常不實用。

2.利用對稱密碼體制設(shè)計哈希函數(shù)

分組密碼的工作模式是:根據(jù)不同的數(shù)據(jù)格式和安全性要求,以一個具體的分組密碼算法為基礎(chǔ)構(gòu)造一個分組密碼系統(tǒng)的方法。

基于分組的對稱密碼算法比如DES/AES算法只是描述如何根據(jù)秘鑰對一段固定長度(分組塊)的數(shù)據(jù)進行加密,對于比較長的數(shù)據(jù),分組密碼工作模式描述了如何重復(fù)應(yīng)用某種算法安全地轉(zhuǎn)換大于塊的數(shù)據(jù)量。

簡單的說就是,DES/AES算法描述怎么加密一個數(shù)據(jù)塊,分組密碼工作模式模式了如果重復(fù)加密比較長的多個數(shù)據(jù)塊。常見的分組密碼工作模式有五種:

●電碼本(Electronic Code Book,ECB)模式

●密文分組鏈接(Cipher Block Chaining,CBC)模式

●密文反饋(Cipher Feed Back,CFB)模式

●輸出反饋(Output Feed Back,OFB)模式

●計數(shù)器(Counter,CTR)模式

ECB工作模式

加密:輸入是當前明文分組。

解密:每一個密文分組分別解密。

具體公式為:

ECB工作模式示意圖

CBC工作模式

加密:輸入是當前明文分組和前一次密文分組的異或。

解密:每一個密文分組被解密后,再與前一個密文分組異或得明文。

具體公式為:

CBC工作模式示意圖

CFB工作模式

加密算法的輸入是64比特移位寄存器,其初值為某個初始向量IV。

加密算法輸出的最左(最高有效位)j比特與明文的第一個單元P1進行異或,產(chǎn)生出密文的第1個單元C1,并傳送該單元。

然后將移位寄存器的內(nèi)容左移j位并將C1送入移位寄存器最右邊(最低有效位)j位。

這一過程繼續(xù)到明文的所有單元都被加密為止。

CFB工作模式示意圖

OFB工作模式

OFB模式的結(jié)構(gòu)類似于CFB

不同之處:

OFB模式是將加密算法的輸出反饋到移位寄存器

CFB模式中是將密文單元反饋到移位寄存器

OFB工作模式示意圖

CTR工作模式

加密:輸入是當前明文分組和計數(shù)器密文分組的異或。

解密:每一個密文分組被解密后,再與計數(shù)器密文分組異或得明文。

具體公式為:

CTR工作模式示意圖

工作模式比較

●ECB模式,簡單、高速,但最弱、易受重發(fā)攻擊,一般不推薦。

●CBC模式適用于文件加密,比ECB模式慢,安全性加強。當有少量錯誤時,不會造成同步錯誤。

●OFB模式和CFB模式較CBC模式慢許多。每次迭代只有少數(shù)比特完成加密。若可以容忍少量錯誤擴展,則可換來恢復(fù)同步能力,此時用CFB或OFB模式。在字符為單元的流密碼中多選CFB模式。

●CTR模式用于高速同步系統(tǒng),不容忍差錯傳播。

3.直接設(shè)計哈希函數(shù)

Merkle在1989年提出迭代型哈希函數(shù)的一般結(jié)構(gòu);(另外一個工作是默克爾哈希樹),Ron Rivest在1990年利用這種結(jié)構(gòu)提出MD4。(另外一個工作是RSA算法),這種結(jié)構(gòu)在幾乎所有的哈希函數(shù)中使用,具體做法為:

迭代型哈希函數(shù)的一般結(jié)構(gòu)示意圖

●把所有消息M分成一些固定長度的塊Yi

●最后一塊padding并使其包含消息M的長度

●設(shè)定初始值CV0

●循環(huán)執(zhí)行壓縮函數(shù)f,CVi=f(CVi-1||Yi-1)

●最后一個CVi為哈希值

●算法中重復(fù)使用一個壓縮函數(shù)f

●f的輸入有兩項,一項是上一輪輸出的n比特值CVi-1,稱為鏈接變量,另一項是算法在本輪的b比特輸入分組Yi-1

●f的輸出為n比特值CVi,CVi又作為下一輪的輸入

●算法開始時還需對鏈接變量指定一個初值IV,最后一輪輸出的鏈接變量CVL即為最終產(chǎn)生的雜湊值

●通常有b>n,因此稱函數(shù)f為壓縮函數(shù)

●算法可表達如下:CV0=IV=n比特長的初值

●CVi=f(CVi-1,Yi-1);1≤i≤L

●H(M)=CVL

●算法的核心技術(shù)是設(shè)計難以找到碰撞的壓縮函數(shù)f,而敵手對算法的攻擊重點是f的內(nèi)部結(jié)構(gòu)

●f和分組密碼一樣是由若干輪處理過程組成

●對f的分析需要找出f的碰撞。由于f是壓縮函數(shù),其碰撞是不可避免的,因此在設(shè)計f時就應(yīng)保證找出其碰撞在計算上是困難的

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論