单向杂凑函数解读
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第 6 章單向雜湊函數
密碼學上的雜湊函數(Cryptographic Hash Function),為一種可以將任意長本文由【中文word文档库】搜集整理。中文word文档库免费提供海量教学资料、行业资料、范文模板、应用文书、考试学习和社会
经济等word文档
度的輸入訊息加以濃縮、轉換,成為一相當短的固定長度輸出訊息的函數,此一輸出訊息一般稱為文件摘要(Message Digest)或雜湊值(Hash Value)。
設計或使用雜湊函數於密碼學系統上的主因是因為利用公開金鑰密碼系統簽章時,因其運算速度較慢,若對整份文件加以簽章則效率不彰。因此加以變通,使用由該文件經過雜湊函數運算所產生之長度較短,但足以區別該文件的文件摘要(Message Digest),或稱文件的數位指紋(Digital Fingerprint),來加以簽章,取代原先對整份文件簽章的方式,以加速數位簽章的應用。
雜湊函數與加密演算法一樣,均是將訊息加以隱藏。但其不同點在於加密演算法的結果可以藉由適當的方式加以還原,而雜湊函數則必須具單向與不可逆(One-Way)的特性。因此使得給定文件時,順向計算該文件的雜湊值相單簡單快速,但經過雜湊函數濃縮、運算後的文件摘要,無法反向還原成先前的訊息。
密碼學中所使用的單向雜湊函數(One-Way Hash Function)必須具備以下兩個特性:
1.當給定一特定的雜湊輸出值後,欲找出任何文件可以輸出此一特定
的雜湊值,為計算上的不可行,此為抗拒事先描繪的特性(Preimage
Resistance)。
2.即使給定一份文件及其雜湊值後,找出第二份文件可以輸出此一特
定的雜湊值,為計算上的不可行,此為抗拒第二事先描繪的特性
(Second Preimage Resistance)。
一個單向雜湊函數必須利用有限的資料量(通常為128或160位元)來區別所有文件,必定存在兩份以上的文件具有相同的雜湊值,此即碰撞、衝突或重複(Collision)的現象。因此,一個可以抗拒碰撞(Collision-Resistance)的單向雜湊函數條件更為嚴苛,除了上述兩條件外,必須使得攻擊者欲找出兩份不相同的文件具有相同的雜湊值,為計算上的不可行。
理想中,一個長度為n位元的文件摘要,應可區別n2份文件,但在生日攻
2n,亦擊法(Birthday Attack)的威脅下,已使得此一文件數量大幅減少成為2/
2份文件,換言即輸出長度為128位元(16位元組)的文件摘要函數只能區別64
之,攻擊者即使利用地毯式搜尋(Brute-force Attack),在最壞的情況下也只要經2次運算,即可找出具有相同文件摘要的兩份文件,由此看來,有必要將訊過64
息彙記的輸出長度提升至160位元(10位元組)以上。
大部分的單向雜湊函數或訊息彙記函數之設計理念均極類似,均以固定長度的區塊處理來運作。先將輸入訊息後端不足區塊長度的部份,加以填補(Padding)成為一完整長度的區塊,再利用一個壓縮函數(Compress Function),反複地將兩個固定長度的區塊訊息資料利用壓縮(Compress)、邏輯轉換(AND,NOT,OR,XOR)及旋轉移位(Rotate or Cycle Shift)等處理,產生一個單一的結果,稱為鏈結變數(Chaining Variable),作為下一回合的輸入值,並反覆使用上述壓縮函數至訊息處理完畢為止,其最後的壓縮函數值即為文件摘要,請參考下圖之說明。
圖6-1 文件彙記產生示意圖
常見的單向雜湊函數有RSA公司MD家族之MD2、MD4、MD5,美國國家標準與技術協會(National Institute of Science and Technology,NIST)的SHA、SHA-1、與歐盟(European Union)RIPE專案之RIPEMD、RIPEMD -128、RIPEMD -160等,在以下各個小節我們將分別介紹這些單向雜湊函數。
6.1 MD 家族
RSA公司之MD家族包括了MD2、MD4及MD5,都是由設計RSA公開金鑰密碼系統的三位發明人(Rivest、Shamir、Adleman)其中的Rivest所設計發展的,此三個文件摘要函數的內部結構大致相同,均可將任意長度的訊息轉換輸出為128位元的文件摘要,其中MD2是針對8位元的環境予以最佳化,MD4與MD5則是充份利用32位元的環境予以最佳化。
6.1.1 MD2
MD2由Rivest發展於1989年,其運作方式如下:[Kaliski92]
1.將輸入訊息填補成16位元組(128位元)長區塊的整數倍大小。
2.利用基於圓周率(π)的非線性轉換,計算出一個核對總和值(Checksum)
附加於其後。
3.將上述訊息切割為16位元組長的區塊,配合一個固定的初始值,反覆計
算其函數值,產生一個16位元組(128位元)的文件摘要。
目前已經可以找出其壓縮函數的“碰撞”,且在省略核對總和值的條件下,更可以找到兩份具有相同訊息彙記的文件。也就是說,若無核對總和值的幫助,MD2安全強度已經不足。
6.1.2 MD4
MD4由Rivest發展於1990年,其運作方式亦與MD2相似,不同的是MD4在輸入的訊息上添加了一個64位元的資料,用以表示輸入訊息的長度,並變更其處理區塊大小為512位元,且此512位元長的資料區塊在壓縮處理上,也必須經過三個回合(Round)的不同處理,其填補訊息的長度亦也與MD2有所不同[Rivest90,Rivest92a,Stinson95]。而MD5、SHA-1、RIPEMD均以MD4為設計基礎,加以修改發展而成。德國的Dobbertin,在1995年證明,使用一部普通PC,在一分鐘內即可找到一個MD4的碰撞。因此,MD4的安全強度也已經不足。
6.1.3 MD5
MD5由Rivest發展於1991年,可以說是MD4的加強安全版,比MD4稍慢,除了將壓縮處理過程從MD4的三個回合,增加為四個回合外,其餘均與