哈希函數(shù)簡(jiǎn)史

PlatON
國(guó)際著名密碼學(xué)Hans Dobbertin在1996年攻破了MD4算法的同時(shí),也對(duì)MD5的安全性產(chǎn)生了質(zhì)疑,從而促使他設(shè)計(jì)了一個(gè)類MD5的RIPEMD-160。在結(jié)構(gòu)上,RIPEMD-160可以視為兩個(gè)并行的類MD5算法,這使得RIPEMD-160的安全性大大提高。

圖學(xué)院第五單元開(kāi)課啦!這單元我們將學(xué)習(xí)哈希函數(shù)及其在區(qū)塊鏈中的應(yīng)用。

哈希函數(shù)的定義

哈希函數(shù)(Hash Function)是一個(gè)公開(kāi)函數(shù),用于將任意長(zhǎng)的消息M映射為較短的、固定長(zhǎng)度的一個(gè)值H(M),又稱為散列函數(shù)、雜湊函數(shù)。我們稱函數(shù)值H(M)為哈希值、雜湊值、雜湊碼、或消息摘要。

雜湊值是消息中所有比特的函數(shù),因此提供了一種錯(cuò)誤檢測(cè)能力,即改變消息中任何一個(gè)比特或幾個(gè)比特都會(huì)使雜湊值發(fā)生改變。

哈希函數(shù)的性質(zhì)

哈希函數(shù)具有如下性質(zhì):

·H可以作用于一個(gè)任意長(zhǎng)度的數(shù)據(jù)塊(實(shí)際上是不是任意,比如SHA-1要求不超過(guò)264)。

·H產(chǎn)生一個(gè)固定長(zhǎng)度的輸出(比如SHA-1的輸出是160比特,SHA-256的輸出是256比特)。

·對(duì)任意給定的x,H(x)計(jì)算相對(duì)容易,無(wú)論是軟件還是硬件實(shí)現(xiàn)。

·單向性(抗原像)(One-Way):對(duì)于任意給定的消息,計(jì)算其哈希值容易。但是,對(duì)于給定的哈希值h,要找到M使得H(M)=h在計(jì)算上是不可行的。

其中前3條是實(shí)用性要求,后3條是安全性要求。

單向性:即給定消息可以產(chǎn)生一個(gè)哈希值,而給定哈希值不可能產(chǎn)生對(duì)應(yīng)的消息;否則,設(shè)傳送數(shù)據(jù)C=<M,H(M‖K)>,K是密鑰。攻擊者可以截獲C,求出哈希函數(shù)的逆,從而得出H-1(C),然后從M和M‖K即可得出K。

弱抗碰撞性:是保證一個(gè)給定的消息的哈希值不能找到與之相同的另外的消息,即防止偽造。否則,攻擊者可以截獲報(bào)文M及其哈希函數(shù)值H(M),并找出另一報(bào)文M’使得H(M’)=H(M)。這樣攻擊者可用M’去冒充M,而收方不能發(fā)現(xiàn)。

強(qiáng)抗碰撞性:是對(duì)已知的生日攻擊方法的防御能力,強(qiáng)抗碰撞自然包含弱抗碰撞。

密碼學(xué)上安全的雜湊函數(shù)H應(yīng)具有以下性質(zhì):

·對(duì)于任意的消息x,計(jì)算H(x)是容易的

·H是單向的

·H是強(qiáng)抗碰撞的

哈希函數(shù)的發(fā)展

1978年,Merkle和Damagad設(shè)計(jì)MD迭代結(jié)構(gòu)。

1993年,來(lái)學(xué)嘉和Messay改進(jìn)加強(qiáng)MD結(jié)構(gòu)。

在90年代初MIT Laboratory for Computer Science和RSA數(shù)據(jù)安全公司的Rivest設(shè)計(jì)了散列算法MD族,MD代表消息摘要。

MD族中的MD2、MD4和MD5都產(chǎn)生一個(gè)128位的信息摘要。

MD2(1989年)、MD4(1990年)、MD5(1991年):由美國(guó)密碼學(xué)家羅納德·李維斯特(Ronald Linn Rivest)設(shè)計(jì),經(jīng)MD2、MD3和MD4發(fā)展而來(lái),輸出的是128位固定長(zhǎng)度的字符串。

RIPEMD-128/160/320:國(guó)際著名密碼學(xué)Hans Dobbertin在1996年攻破了MD4算法的同時(shí),也對(duì)MD5的安全性產(chǎn)生了質(zhì)疑,從而促使他設(shè)計(jì)了一個(gè)類MD5的RIPEMD-160。在結(jié)構(gòu)上,RIPEMD-160可以視為兩個(gè)并行的類MD5算法,這使得RIPEMD-160的安全性大大提高。

值得注意的是,MD4、MD5已經(jīng)在2004年8月Crypto2004上,被我國(guó)密碼學(xué)者王小云等破譯,即在有效的時(shí)間內(nèi)找到了它們的大量碰撞。

SHA系列算法是美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology,NIST)根據(jù)Rivest設(shè)計(jì)的MD4和MD5開(kāi)發(fā)的算法.美國(guó)國(guó)家安全局(National Security Agency,NSA)發(fā)布SHA作為美國(guó)政府標(biāo)準(zhǔn)。

SHA-0-SHA-0正式地稱作SHA,這個(gè)版本在發(fā)行后不久被指出存在弱點(diǎn).

SHA-1-SHA-1是NIST于1994年發(fā)布的,它與MD4和MD5算法非常相似,被認(rèn)為是MD4和MD5的后繼者.

SHA-2-SHA-2實(shí)際上分為SHA-224、SHA-256、SHA-384和SHA-512算法。

2017年2月23日谷歌宣布,谷歌研究人員和阿姆斯特丹CWI研究所合作發(fā)布了一項(xiàng)新的研究,詳細(xì)描述了成功的SHA1碰撞攻擊。

NESSIE工程推薦使用的哈希算法有SHA-256/384/512和Whirlpool(Vincent Rijmen和Paulo S.L.M.Barreto在2000年設(shè)計(jì),入選國(guó)際標(biāo)準(zhǔn)ISO/IEC 10118-3)。(NESSIE是歐洲一項(xiàng)為期三年的密碼標(biāo)準(zhǔn)計(jì)劃,詳見(jiàn):http://www.nessieproject.com/)

日本密碼研究與評(píng)估委員會(huì)推薦使用的算法有RIPEMD-160、SHA-256/384/512。

此外,NIST于2008年啟動(dòng)新的哈希標(biāo)準(zhǔn)的征集活動(dòng)。

·除迭代結(jié)構(gòu)以外的結(jié)構(gòu)

·適用于任何平臺(tái)的壓縮函數(shù)

2008年10月提交文檔,收到64個(gè)算法,公開(kāi)56個(gè),51個(gè)進(jìn)入第一輪評(píng)估。2009年10月,第二輪評(píng)估開(kāi)始,剩余14個(gè)算法。第三輪剩余五個(gè)算法,2012年10月2日,Keccak被選為SHA-3。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無(wú)評(píng)論