專利名稱:一種加固的基于壓縮函數(shù)的hash函數(shù)構造方法
技術領域:
本發(fā)明屬于信息安全領域,涉及一種基于壓縮函數(shù)的單向哈希函數(shù)的構造方法。
背景技術:
在2004年國際密碼學大會上,王小云等人宣布的對于一系列Hash函數(shù)的碰撞結果,包括MD4,MD5, HAVAL-128和RIPEMD算法,其中可以找到MD4和RIPEMD算法碰撞的復 雜性分別低于28和218。王小云提出了一套新的針對MDx系列的Hash函數(shù)的分析技術,同時給出了得到滿足差分路線充分條件的方法,以及如何使用明文修改技術來提高碰撞攻擊的成功概率。2005年,王小云等應用此技術對MD5, SHA-O SHA-I算法進行碰撞攻擊,取得了很好的效果,可以在現(xiàn)實中很快找到碰撞。這一攻擊技術對現(xiàn)有的Hash函數(shù)提出了嚴峻的挑戰(zhàn),現(xiàn)有的好的設計方法需要進行進一步的改進。現(xiàn)有的hash函數(shù)是基于一種迭代的算法,其迭代所用的壓縮函數(shù)是相同的,在這樣的情況下可能存在一些攻擊,比如碰撞攻擊、原像攻擊和第二原像攻擊等。
發(fā)明內容
現(xiàn)有的hash (又譯為哈希、雜湊、散列)函數(shù)主要有兩大類,它們分別是以壓縮函數(shù)和分組密碼算法為基本計算單元的,以壓縮函數(shù)構造的hash函數(shù)為例,它將明文消息進行一定的填充處理,然后對消息進行分組后,依次對每一個分組采用相同的壓縮函數(shù)進行壓縮,運算到最后一個分組后,得到hash值。這種設計結構簡單,便于理解與實現(xiàn),但是,卻存在一定的不合理性第一個分組和最后一個分組與中間分組采用相同的壓縮函數(shù),而第一個分組和最后一個分組的處理有特殊之處,第一個分組由于沒有前面的壓縮結果,所以需要一個確定的初始值參與運算,這個值是不變的,在密碼分析的時候,沒有選擇的自由度,而最后一個分組包含一定的填充數(shù)據(jù)和關于消息長度的信息,具有較大的冗余度,并不像其他的分組的數(shù)據(jù)是完全自由、隨機的(拋開明文的冗余度)。這樣的冗余數(shù)據(jù)對于密碼分析是不利的,因為對于密碼分析者任何一個bit有選擇性總比沒有選擇性好,而且,最后一個分組包含關于消息長度信息。因此,本發(fā)明考慮加固這兩個分組。對這兩個分組進行加強的理由有第一,它們是比較難以破解的部分,對于hash函數(shù)的原像攻擊是必須將每一個分組逆推出來,這樣,加強最難的分組將會讓破譯難度更大。第二,它們是必須存在的分組,特殊的時候,第一個分組就是最后一個分組,而中間分組可能是不存在的,所以從這個角度,加強必需分組可增強安全性。第三,對于很長的明文,如果中間分組的運算量很大,則計算hash的運算量會很大,所以,中間分組的計算量應較小,這樣中間分組與最前和最后分組不宜采用相同的壓縮函數(shù),中間分組采用相對簡單,而最前和最后分組采用相對更為復雜的算法則更容易接受。第四,最后一個分組含有重要的信息,即關于明文長度的信息,如果可以隨意破解這個分組,則分析者有可能任意設定偽造明文(碰撞消息)的長度,這對于破解是有利的,因為密碼分析者可以根據(jù)自己的需要設定偽造明文的長度,選擇更為有利的、最容易破譯的長度,一般地,他可能會設定最短的,使得填充處理后的消息不超過一個分組長度,這樣破譯的工作量會較小。由于hash是多對一的映射,比如有的hash分組長度是512bit,hash值長度是128bit,即使設定消息的長度(對于一些hash明文消息長度的信息是64bit),對于一個確定的hash值,在該消息長度下平均而言也有大量的消息與這個hash值對應。由此可見,最后一個分組需要進行加固。第五,現(xiàn)有的一些hash分析大多數(shù)都是考慮兩個明文分組或者單個明文分組的情況尋找碰撞,本設計的加固第一個分組和最后一個分組,使得這些hash分析無法繞過。鑒于上面的分析,以及傳統(tǒng)的hash函數(shù)的缺陷,本發(fā)明中考慮對第一個分組和最后一個分組進行加固,特別是最后一個分組應該采用有效加固方法第一個分組采用加固的、比較安全的壓縮 函數(shù)F1,中間分組采用通常的壓縮函數(shù)Fz,最后一個分組采用加固的壓縮函數(shù)Fn。最后一個分組的消息Mn的壓縮函數(shù)進行特別處理,這個分組的壓縮函數(shù)Fn增加了一個輸入變量Y,Y是對所有明文分組進行壓縮得到的,即Y=Fy (M1, M2,…,Mn),F(xiàn)y為一個運算量較低的函數(shù),也就是說最終hash值Hn=Fn (Y,Mn, HlriX增加壓縮值Y作為輸入變量的目的是防止利用中間壓縮函數(shù)的脆弱性而實施碰撞攻擊和第二原像攻擊,為了減少計算Y的運算量,可以采用較為簡單的函數(shù),比如可以將所有的分組進行異或運算,或者簡單的模加運算得到Y,當只有一個分組時,直接采用該分組作為Y。加固的方法可以考慮現(xiàn)有hash函數(shù)的缺陷而進行,比如考慮現(xiàn)有的差分密碼分析,可以在原有算法的基礎上增加S盒或者其他抗差分分析部件,考慮現(xiàn)有hash函數(shù)大多數(shù)壓縮都是bit級別的運算,增加多bit壓縮的部件以防止比特跟蹤,另外現(xiàn)有分組密碼算法的設計已經(jīng)非常安全、成熟,可以對于這兩個分組采用基于對稱算法的壓縮方法,或者進行多重運算等等??紤]現(xiàn)有許多差分分析依賴的兩個分組采用相同的算法,第一個和最后一個分組的壓縮函數(shù)采用不同的結構,最后一個分組的壓縮函數(shù)Fn可設計得更加復雜、更安全,兩個分組重合時,選取最后一個分組的函數(shù)??紤]到hash函數(shù)結構的簡化,這兩個分組的加固可以在中間分組的壓縮函數(shù)的基礎上增加一些運算,或者是采用多重的同一壓縮函數(shù)的運算,特別考慮增加抗差分分析的部件。
圖I是本發(fā)明的hash迭代示意圖。
具體實施例方式以下為實施例,以加固SHA-I為例。中間分組依然采用不太安全的SHA-I的壓縮函數(shù)Fz,由于該函數(shù)已經(jīng)很清楚,所以這里不再詳述。第一個分組和最后一個分組采用不相同的加固的函數(shù)F1和Fn。加固的算法和SHA-I —樣是以壓縮函數(shù)為基礎,它有一個緩沖區(qū)存儲運算160bit的中間結果和最終hash結果Hi, i是分組的次序,它的輸入則是512bit的明文分組Mi和前一個分組的中間結果,最后一個分組增加了一個輸入Y。Hash的迭代過程可以表示如下=H1=F1 (M1,H。),其中H0為緩沖區(qū)初始值,Hi=Fi (Mi, Hh),其中i大于I小于n, Hn=Fn (Y,Mn, Hlri), η為分組個數(shù)。第一個分組壓縮函數(shù)F1的加固方法體現(xiàn)在消息分組輸入和緩沖區(qū)中間運算結果的S盒替換和左循環(huán)移位兩個方面第一,在明文分組M1進行S盒替換得到Ms,然后對得到的512bit的Ms整體進行左循環(huán)移位4bit得到Ms4,然后將Ms4作為函數(shù)Fze的輸入,其中Fze為中間分組的壓縮函數(shù)Fz的加固,H1=F1 (M17H0)= Fze (M^Htl),第二,F(xiàn)ze函數(shù)是在原來的壓縮函數(shù)Fz的基礎上進行加固得到的函數(shù),F(xiàn)ze函數(shù)對Fz加固體現(xiàn)在Fz的20步和21步之間、40步和41步之間、60步和61步之間對緩沖區(qū)的結果先進行S盒替換,再進行左循環(huán)移位,SHA-I的壓縮函數(shù)中間總共有80步迭代,加固體現(xiàn)在分別將20步、40步、60步得到的緩沖區(qū)的160bit的值采用S盒替換,替換后整體進行左循環(huán)移位12bit,得到的等長的160bit結果依然存儲在緩沖區(qū),參與下面的運算,S盒和左循環(huán)移位用于抗現(xiàn)有的一些hash分析,下面是對本實施例S盒的介紹
S盒替換的單位為8bit,S盒替換采用運算步驟如下I)將消息分組以8bit為單位變換為GF (28)上的乘法逆元,額外地,二進制00000000映射為00000000,2)對前面逆運算的結果采用仿射變換如下
權利要求
1.一種加固的基于壓縮函數(shù)的hash函數(shù)構造方法,其特征在于第一個與最后一個分組的壓縮函數(shù)和中間分組的壓縮函數(shù)是不同的,通過加固第一和最后一個分組的壓縮函數(shù)使得它們更加復雜和安全,采用一些抗差分分析的安全運算部件對它們的壓縮函數(shù)進行加固。
2.一種如權利要求I所述的加固的基于壓縮函數(shù)的hash函數(shù)構造方法,其特征是最后一個分組的壓縮函數(shù)增加了一個輸入變量Y,即Hn=Fn (Y,Mn, Hlri),其中Mn為最后一個消息分組,Hlri為倒數(shù)第二個分組得到的結果,Y為前面所有分組信息的一個壓縮,Y=Fy (M1,M2, M3, ···, Mn), Fy為一個運算量較低的函數(shù)。
3.—種如權利要求I所述的加固的基于壓縮函數(shù)的hash函數(shù)構造方法,其特征是力口固的抗差分分析部件可以采用已經(jīng)證明安全的S盒。
4.一種如權利要求I所述的加固的基于壓縮函數(shù)的hash函數(shù)構造方法,其特征為對于第一個分組和最后一個分組的加固應當增加多bit運算的部件。
5.一種如權利要求I所述的加固的基于壓縮函數(shù)的hash函數(shù)構造方法,其特征為對于第一個分組和最后一個分組的計算可以利用安全的分組密碼算法為基礎進行加固。
全文摘要
本發(fā)明屬于信息安全領域,特別是密碼學領域,涉及一種基于壓縮函數(shù)的哈希函數(shù)的加固方法。該方法對hash函數(shù)的關鍵性環(huán)節(jié)進行加固,即對第一個分組和最后一個分組的壓縮函數(shù)進行加固,針對現(xiàn)有hash函數(shù)大多數(shù)運算以單個bit為基礎,增加多bit的運算,或者利用已有的安全分組密碼算法。加固以抗擊現(xiàn)有的差分密碼分析等方法為主,同時考慮一些其他的攻擊,比如第二原像攻擊,在最后一個分組的壓縮函數(shù)的輸入中,還增加了一個輸入變量,即所有分組信息的一個簡單壓縮。這種加固的方法的優(yōu)勢在于,在關鍵性的分組進行加固,隨著明文長度的增加,計算量的增加不大,并且通過在最關鍵的位置設置破譯障礙,可有效抗擊原像攻擊,碰撞攻擊,第二原像攻擊等。
文檔編號H04L9/32GK102638344SQ201210073859
公開日2012年8月15日 申請日期2012年3月20日 優(yōu)先權日2012年3月20日
發(fā)明者付莉, 汪華登, 王勇, 蔡國永, 陳智勇 申請人:桂林電子科技大學