專利名稱:利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全技術(shù)中的密碼技術(shù)和計(jì)算機(jī)技術(shù)領(lǐng)域,更具體地,涉及用于利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法和裝置。
背景技術(shù):
密碼技術(shù)的發(fā)展經(jīng)歷了古典密碼技術(shù)、對稱密碼技術(shù)和公鑰密碼技術(shù)三個(gè)階段。消息摘要函數(shù)(簡稱HASH函數(shù))是數(shù)字簽名和消息認(rèn)證碼的低層技術(shù),它包括迭代結(jié)構(gòu)和單向壓縮函數(shù)兩個(gè)部分。
目前,普遍使用的HASH函數(shù)有MD5、SHA-0和SHA-1等(見文獻(xiàn)[1]),它們均基于
(MD)迭代結(jié)構(gòu)(見文獻(xiàn)[2],[3]),MD迭代結(jié)構(gòu)是一種線性迭代結(jié)構(gòu),如圖1所示。
圖1是現(xiàn)有技術(shù)中MD迭代結(jié)構(gòu)的示意圖。
在圖1中,假設(shè)消息為X,其長度為l比特,將消息X劃分為n個(gè)消息分組X1,X2,...,Xn,其中每個(gè)消息分組Xi為m比特,且令n=l/m。
令初始迭代值Y0為IV,壓縮函數(shù)f,每次迭代輸出為k比特長度的Yi(Y1、Y2、...、Yn),這里k<m,則MD迭代結(jié)構(gòu)可以是Y0=IV,Yi=f(Yi-1,Xi),并且D=Y(jié)n。
D是最終的迭代輸出,即,消息摘要。
其迭代過程為 (1)把任意長度的消息或文件X劃分為n個(gè)固定長度的分組X1、X2、...、Xn; (2)設(shè)置初始迭代值Y0=IV; (3)對于i從1到n,計(jì)算Yi=f(Yi-1,Xi); 則計(jì)算出的最終的Yn即是消息摘要D??梢?,其為一種線性迭代結(jié)構(gòu)。
然而,對MD5、SHA-0和SHA-1的多分組差分攻擊(見文獻(xiàn)[4],[5],[6])表明,抗碰撞的壓縮函數(shù)并不是抗碰撞的Hash函數(shù)的充分條件,而只是必要條件。也就是說,單純的抗碰撞壓縮函數(shù)并不能使Hash函數(shù)也具有抗碰撞的能力。一個(gè)抗碰撞的安全的Hash函數(shù)既要基于一個(gè)抗碰撞的壓縮函數(shù),也要基于一個(gè)抗碰撞的迭代結(jié)構(gòu)。而目前的現(xiàn)有技術(shù)并沒有解決這個(gè)問題。
因此,需要一種既要基于抗碰撞的壓縮函數(shù),也要基于抗碰撞的迭代結(jié)構(gòu)的抗碰撞的安全的Hash函數(shù)。
參考文獻(xiàn)A.J.Menezes,P.Van Oorschot,and S.Vanstone,Handbook of AppliedCryptography(應(yīng)用密碼學(xué)手冊),CRC Press,London,1997。Ivan Damgard,“A design principle for hash functions(消息摘要函數(shù)的設(shè)計(jì)原理),”Advances in Cryptology(密碼學(xué)進(jìn)展)CRYPTO 89,Springer-Verlag,1989,pp.416-427。Ralph Merkle,“One way hash functions and DES(單向消息摘要函數(shù)及DES),”Advances in Cryptology CRYPTO 89,Springer-Verlag,1989,pp.428-446。Eli Biham,Rafi Chen,and Antoine Joux etc,“Collisions of SHA-0 andReduced SHA-1(SHA-0及簡約SHA-1的碰撞),”Advances inCryptology-EUROCRYPT 2005,Springer-Verlag,2005,pp.36-57。Xiaoyun Wang,Yiqun Lisa Yin,and Hongbo Yu,“Finding collisions inthe full SHA-1(發(fā)現(xiàn)完全SHA-1中的碰撞),”Advances inCryptology-CRYPTO’05,Springer-Verlag,2005,pp.17-36。Xiaoyun Wang and Hongbo Yu,“How to Break MD5 and Other HashFunctions(如何破譯MD5及其它消息摘要函數(shù)),”Advances in Cryptology-EUROCRYPT’05,Springer-Verlag,2005,pp.19-35。
發(fā)明內(nèi)容
考慮到現(xiàn)有技術(shù)中的上述問題,本發(fā)明設(shè)計(jì)了一種新的用于消息摘要的環(huán)迭代結(jié)構(gòu),即帶反饋的環(huán)迭代結(jié)構(gòu)。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息,輸出固定長度的消息摘要,所述方法包括步驟將所述消息劃分為n個(gè)固定長度的分組,其中n為自然數(shù);設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;將每次迭代的輸出值的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算;以及將后(n-1)個(gè)分組的異或與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要。
本發(fā)明中消息摘要的長度可為128或160或256比特。
根據(jù)本發(fā)明的另一方面,還提供一種使用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息,輸出固定長度的消息摘要,所述方法包括步驟將所述消息劃分為n個(gè)固定長度的分組,其中n為自然數(shù);設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;對第n次迭代的輸出值進(jìn)行逆碼運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算;以及將第n個(gè)分組與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要。
本發(fā)明中的消息摘要的長度可以為128或160或256比特。
本發(fā)明還提供一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的裝置,其包含所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù),所述裝置輸入任意長度的消息,輸出固定長度的消息摘要,所述裝置包括用于將所述消息劃分為n個(gè)固定長度的分組的部件,其中n為自然數(shù);用于設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算的部件,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;用于將每次迭代的輸出值的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算的部件;以及用于將后(n-1)個(gè)分組的異或與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要的部件。
本發(fā)明還提供一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的裝置,其包含所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù),所述裝置輸入任意長度的消息,輸出固定長度的消息摘要,所述裝置包括用于將所述消息劃分為n個(gè)固定長度的分組的部件,其中n為自然數(shù);用于設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算的部件,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;用于對第n次迭代的輸出值進(jìn)行逆碼運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算的部件;以及用于將第n個(gè)分組與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要的部件。
本發(fā)明還提供一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)f組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息X,輸出固定長度的消息摘要D,所述方法包括步驟把消息X劃分為n個(gè)固定長度的分組X1、X2、...、Xn,其中n為自然數(shù);設(shè)置初始迭代值Y0=IV;迭代計(jì)算Yi=f(Yi-1,Xi),其中i=1、2,...、n;以及令并通過公式
來生成消息摘要D,其中,符號(hào)“
”代表異或運(yùn)算,符號(hào)“
”代表模加運(yùn)算,符號(hào)“
”表示逆碼運(yùn)算。
本發(fā)明中的消息摘要D的長度可以為128或160或256比特。
本發(fā)明還提供一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)f組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息X,輸出固定長度的消息摘要D,所述方法包括步驟把消息X劃分為n個(gè)固定長度的分組X1、X2、...、Xn,其中n為自然數(shù);設(shè)置初始迭代值Y0=IV;迭代計(jì)算Yi=f(Yi-1,Xi),其中i=1、2、...、n;以及令Xn+1=X1,Xn+2=Xn,并通過公式
來生成消息摘要D,其中,符號(hào)“
”表示逆碼運(yùn)算。
本發(fā)明中的消息摘要D的長度可以為128或160或256比特。
經(jīng)分析,本發(fā)明利用多反饋環(huán)迭代結(jié)構(gòu)的方法和裝置具有下列積極效果(1)比MD迭代結(jié)構(gòu)更安全;(2)能抵御多分組差分攻擊;(3)能抵御D-way第二原象攻擊。
通過結(jié)合附圖詳細(xì)描述本發(fā)明的具體實(shí)施例,本發(fā)明的上述和其它特點(diǎn)和優(yōu)點(diǎn)將變得更加清楚,其中 圖1是現(xiàn)有技術(shù)中的MD迭代結(jié)構(gòu)的示意圖; 圖2是根據(jù)本發(fā)明第一實(shí)施例的利用單反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置的圖; 圖3是根據(jù)本發(fā)明第一實(shí)施例的利用單反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成方法的流程圖; 圖4是根據(jù)本發(fā)明第二實(shí)施例的利用多反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置的圖;以及 圖5是根據(jù)本發(fā)明第二實(shí)施例的利用多反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成方法的流程圖。
具體實(shí)施例方式 下面將結(jié)合附圖詳細(xì)描述本發(fā)明的具體實(shí)施例。通過在下文中參照附圖闡述本發(fā)明實(shí)施例的描述中,本發(fā)明的其它目的和方面將變得清楚。并且,如果考慮到與本發(fā)明的相關(guān)現(xiàn)有技術(shù)的詳細(xì)描述可能會(huì)混淆本發(fā)明的要點(diǎn),則將不會(huì)在這里提供該描述。在全部附圖中,相同的附圖標(biāo)記用于表示執(zhí)行相同功能的相同元件。
1.Hash(消息摘要)單反饋環(huán)迭代(Single feedback ring iteration,以下簡稱為SFRI)結(jié)構(gòu) 圖2是根據(jù)本發(fā)明第一實(shí)施例的利用單反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置的圖。
在圖2中,假設(shè)消息或文件為X,其長度為l比特,將消息或文件X劃分為n個(gè)消息分組Xi(X1,X2,...,Xn),每個(gè)消息分Xi為m比特,且令n=l/m。在本發(fā)明中,我們忽略了余數(shù)填充問題,因?yàn)橛袥]有填充并不影響我們的討論。
令初始迭代值Y0為IV,f為壓縮函數(shù),每次迭代輸出的值為Yi,其具有k比特的長度,這里,k<m。
如前所述,對于MD迭代結(jié)構(gòu),有Y0=IV,Yi=f(Yi-1,Xi),并且輸出值Yn即為消息摘要D。
本發(fā)明的單反饋環(huán)迭代(SFRI)結(jié)構(gòu)是一種簡單的反饋迭代結(jié)構(gòu),它對MD迭代結(jié)構(gòu)中第n次迭代的輸出Yn進(jìn)行逆碼運(yùn)算,并將逆碼運(yùn)算的結(jié)果
與X1進(jìn)行再一次迭代,即第n+1次迭代,其函數(shù)形式如下
定義Xn+1=X1 然后,將第n+1次迭代的輸出值Yn+1與Xn進(jìn)行最后一次迭代,即第n+2次迭代,并生成最終的輸出值Yn+2,作為消息摘要D, 則消息摘要
這里,定義Xn+2=Xn;符號(hào)“
”表示逆碼運(yùn)算,即把一個(gè)變量的高位比特和低位比特互相逆轉(zhuǎn),以逆序來重新排列變量的比特。例如,“100110”的逆碼為“011001”。
經(jīng)過適當(dāng)處理,可輸出固定長度的消息摘要D。在本發(fā)明的SFRI結(jié)構(gòu)中,f可以是任何通用HASH算法的壓縮函數(shù),例如,f可以是MD5或SHA-1或SHA-256的壓縮函數(shù)。如果選擇f為MD5的壓縮函數(shù),則消息摘要D的值為128比特。如果選擇f為SHA-1的壓縮函數(shù),則消息摘要D的值為160比特。如果選擇f為SHA-256的壓縮函數(shù),則消息摘要D的值為256比特。
在本發(fā)明的第一實(shí)施例中,上述每次迭代可以分別在不同的迭代部件中實(shí)現(xiàn),例如圖2中所示出的第一迭代部件1用于執(zhí)行第一次迭代,第二迭代部件2用于執(zhí)行第二次迭代,第三迭代部件3用于執(zhí)行第三次迭代、...、第n迭代部件n用于執(zhí)行第n次迭代,第(n+1)迭代部件n+1用于執(zhí)行第n+1次迭代,第(n+2)迭代部件n+2用于執(zhí)行第n+2次迭代,等。
在本發(fā)明的另一個(gè)實(shí)施例中,上述每次迭代也可以在同一個(gè)迭代部件中實(shí)現(xiàn),也可以將不同的迭代部件組合為若干個(gè)組合部件,例如將圖2中所示出的第一迭代部件1和第(n+1)迭代部件n+1組合為一個(gè)迭代部件,將第n迭代部件n與第(n+2)迭代部件n+2組合為一個(gè)迭代部件,等。
另外,本領(lǐng)域的技術(shù)人員應(yīng)該知道,本發(fā)明可以通過將實(shí)現(xiàn)上述迭代功能的程序代碼固化在適當(dāng)?shù)挠布衼韺?shí)現(xiàn)上述的各種迭代部件,也可以通過將實(shí)現(xiàn)上述迭代功能的程序裝載在各種計(jì)算裝置(例如通用計(jì)算機(jī)、膝上型計(jì)算機(jī)、手持式電腦(PDA)、或者是移動(dòng)電話等)中來實(shí)現(xiàn)上述各種迭代部件。
另外,在本發(fā)明的實(shí)施例中,還包括用于將任意長度的消息或文件X劃分為n個(gè)固定長度的消息分組的部件(未示出),其實(shí)現(xiàn)方式與上述各個(gè)迭代部件的實(shí)現(xiàn)方式相同,或可以與上述各個(gè)迭代部件組合為一個(gè)部件。
圖3是根據(jù)本發(fā)明第一實(shí)施例的利用單反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成方法的流程圖。
在第一實(shí)施例中,所述單反饋環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)f組成消息摘要函數(shù)(即構(gòu)成本發(fā)明利用單反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置),所述消息摘要函數(shù)輸入任意長度的消息,輸出固定長度的消息摘要D。
如圖3所示,在步驟S301中,向本發(fā)明的消息摘要生成裝置中輸入任意長度的消息或文件X。
然后,在步驟S302中,把消息或文件X劃分為n個(gè)固定長度的分組Xi(X1、X2、...、Xn),其中n是自然數(shù)。
接下來,在步驟S303,設(shè)置初始迭代值Y0=IV。
在步驟S304,對于i從1到n,計(jì)算Yi=f(Yi-1,Xi)。即,通過函數(shù)f對所述n個(gè)分組依次進(jìn)行迭代計(jì)算,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入。
然后,在步驟S305,令Xn+1=X1,Xn+2=Xn,計(jì)算并輸出
即,對第n次迭代的輸出值進(jìn)行逆碼運(yùn)算
并將其結(jié)果與第一個(gè)消息分組進(jìn)行第n+1次迭代計(jì)算,然后,將第n個(gè)分組Xn與第n+1次迭代的輸出值
再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要D。
最后,D即為消息或文件X的摘要,稱為消息摘要。經(jīng)過適當(dāng)處理,可輸出固定長度的D,D一般為128或160或256比特。
2.多反饋環(huán)迭代(Multiple feedback ring iteration,以下簡稱“MFRI”)結(jié)構(gòu) 圖4是根據(jù)本發(fā)明第二實(shí)施例的利用多反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置的圖。
如圖4所示,本發(fā)明的多反饋環(huán)迭代(MFRI)結(jié)構(gòu)是一種相對復(fù)雜的結(jié)構(gòu),它把每次迭代輸出值的逆碼進(jìn)行模加運(yùn)算,其結(jié)果作為反饋再一次與X1進(jìn)行迭代,即第n+1次迭代;對第n+1次迭代的輸出值與后(n-1)個(gè)消息分組的異或再進(jìn)行第n+2次迭代,最后形成并輸出消息摘要D。
在圖4中,假設(shè)消息或文件為X,其長度為l比特,將消息或文件X劃分為n個(gè)消息分組Xi(X1,X2,...,Xn),每個(gè)消息分Xi為m比特,且令n=l/m。在本發(fā)明中,我們忽略了余數(shù)填充問題,因?yàn)樘畛鋯栴}并不影響我們的討論。
令初始迭代值Y0為IV,f為壓縮函數(shù),每次迭代輸出的值為Yi,其具有k比特的長度,這里,k<m。
如上所述,本發(fā)明的多反饋環(huán)迭代(MFRI)是一種復(fù)雜的反饋環(huán)迭代結(jié)構(gòu),它對MD迭代結(jié)構(gòu)中的每次迭代輸出值Yi的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果
作為反饋再一次與X1進(jìn)行迭代,即第n+1次迭代,其函數(shù)形式如下
這里,定義Xn+1=X1 然后,將第n+1次迭代的輸出值Yn+1與后(n-1)個(gè)消息分組的異或
再進(jìn)行第n+2次迭代,并生成最終的輸出值Yn+2,作為消息摘要D, 則消息摘要
這里,定義符號(hào)“
”代表異或運(yùn)算,其中
可以被看作是一種前饋。符號(hào)“
”代表模加運(yùn)算,模加運(yùn)算是將兩個(gè)整數(shù)相加,除以2^16(2的16次方)或2^32后,取其余數(shù)。符號(hào)“
”表示逆碼運(yùn)算,即把一個(gè)變量的高位比特和低位比特互相逆轉(zhuǎn),以逆序來重新排列變量的比特。例如,“100110”的逆碼為“011001”。
經(jīng)過上述處理,可輸出固定長度的消息摘要D。在本發(fā)明的MFRI結(jié)構(gòu)中,f可以是任何通用HASH算法的壓縮函數(shù),例如,f可以是MD5或SHA-1或SHA-256的壓縮函數(shù)。如果選擇f為MD5的壓縮函數(shù),則消息摘要D的值為128比特。如果選擇f為SHA-1的壓縮函數(shù),則消息摘要D的值為160比特。如果選擇f為SHA-256的壓縮函數(shù),則消息摘要D的值為256比特。
另外,與第一實(shí)施例相比,在第二實(shí)施例中,我們用
以及來分別替換單反饋環(huán)迭代SFRI中的
和Xn+2=Xn,以使最后的消息摘要D相對均勻地依賴于X1,X2,...,Xn。
在本發(fā)明的第二實(shí)施例中,與第一實(shí)施例相同,上述每次迭代可以分別在不同的迭代部件中實(shí)現(xiàn),例如圖4中所示出的第一迭代部件1用于執(zhí)行第一次迭代,第二迭代部件2用于執(zhí)行第二次迭代,第三迭代部件3用于執(zhí)行第三次迭代、...、第n迭代部件n用于執(zhí)行第n次迭代,第(n+1)迭代部件n+1用于執(zhí)行第n+1次迭代,第(n+2)迭代部件n+2用于執(zhí)行第n+2次迭代,等。
在本發(fā)明的另一個(gè)實(shí)施例中,上述每次迭代也可以在同一個(gè)迭代部件中實(shí)現(xiàn),也可以將不同的迭代部件組合為若干個(gè)組合部件,例如將圖4中所示出的第一迭代部件1和第(n+1)迭代部件n+1組合為一個(gè)迭代部件,將第n迭代部件n與第(n+2)迭代部件n+2組合為一個(gè)迭代部件,等。
另外,本領(lǐng)域的技術(shù)人員應(yīng)該知道,本發(fā)明可以通過將實(shí)現(xiàn)上述迭代功能的程序代碼固化在適當(dāng)?shù)挠布衼韺?shí)現(xiàn)上述的各種迭代部件,也可以通過將實(shí)現(xiàn)上述迭代功能的程序裝載在各種計(jì)算裝置(例如通用計(jì)算機(jī)、膝上型計(jì)算機(jī)、手持式電腦(PDA)、或者是移動(dòng)電話等)中來實(shí)現(xiàn)上述各種迭代部件。
另外,在本發(fā)明的實(shí)施例中,還包括用于將任意長度的消息或文件X劃分為n個(gè)固定長度的消息分組的部件(未示出),其實(shí)現(xiàn)方式與上述各個(gè)迭代部件的實(shí)現(xiàn)方式相同,或可以與上述各個(gè)迭代部件組合為一個(gè)部件。
圖5是根據(jù)本發(fā)明第二實(shí)施例的利用多反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成方法的流程圖。
在第二實(shí)施例中,所述多反饋環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)f組成消息摘要函數(shù)(即構(gòu)成本發(fā)明利用多反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置),所述消息摘要函數(shù)輸入任意長度的消息,輸出固定長度的消息摘要D。
如圖5所示,在步驟S501中,向本發(fā)明的利用多反饋環(huán)迭代結(jié)構(gòu)的消息摘要生成裝置中輸入任意長度的消息或文件X。
然后,在步驟S502中,把消息或文件X劃分為n個(gè)固定長度的分組Xi(X1、X2、...、Xn),其中,n是自然數(shù)。
在步驟S503,設(shè)置初始迭代值Y0=IV。
接下來,在步驟S504,對于i從1到n,計(jì)算Yi=f(Yi-1,Xi)。即,通過函數(shù)f對所述n個(gè)分組依次進(jìn)行迭代計(jì)算,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入。
然后,在步驟S505,令計(jì)算并輸出
即,將每次迭代的輸出值的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果
與第一個(gè)分組(X1)進(jìn)行第n+1次迭代計(jì)算,并將后(n-1)個(gè)分組的異或值
與第n+1次迭代的輸出值
再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要D。
最后,D即為消息或文件X的摘要,稱為消息摘要。經(jīng)過適當(dāng)處理,可輸出固定長度的D,D一般為128或160或256比特。
3.環(huán)迭代結(jié)構(gòu)的安全性分析 3.1比MD結(jié)構(gòu)更安全 假定f是壓縮函數(shù)。其與任意迭代結(jié)構(gòu)結(jié)合,以構(gòu)建單向hash函數(shù)H。
[定義1]對于給定的消息M,如果我們不能在多項(xiàng)式時(shí)間內(nèi)找到消息M’,使得M’≠M(fèi)且H(M’)=H(M),則H被稱為弱無碰撞(collision-free)。
[定義2]如果我們不能在多項(xiàng)式時(shí)間內(nèi)找到任意兩個(gè)消息M和M’滿足M’≠M(fèi)且H(M’)=H(M),則H被稱為強(qiáng)無碰撞。
顯然,如果hash函數(shù)是強(qiáng)無碰撞的,則其必須是弱無碰撞的。
[引理1]在安全性方面SFRI結(jié)構(gòu)與MD結(jié)構(gòu)等同 證明 假設(shè)f與MD結(jié)合以構(gòu)建hash函數(shù)H1,并且f與SFRI結(jié)構(gòu)結(jié)合以構(gòu)建hash函數(shù)H2。
首先,假設(shè)H1是強(qiáng)無碰撞的,則我們需要推斷出H2也是強(qiáng)無碰撞的。
假設(shè)H2不是強(qiáng)無碰撞的。即,可在多項(xiàng)式時(shí)間內(nèi)找到兩個(gè)消息M和M’滿足M≠M(fèi)’且H2(M)=H2(M’)。
假設(shè)M恰好被分為n個(gè)m比特分組,并且M’恰好被分為n’個(gè)m比特分組。
那么,對于SFRI結(jié)構(gòu),有
以及
其中Yn=H1(M),且Yn’=H1(M’)。
使M1=M$X1$Xn且M’1=M’$X’1$X’n’,其中‘$’代表字符串的連接,則 H2(M)=H1(M1),且H2(M’)=H1(M’1)。
由此,可在多項(xiàng)式時(shí)間內(nèi)找到兩個(gè)消息M1、M’1,滿足M1≠M(fèi)’1且H1(M1)=H1(M’1)。這與預(yù)先假設(shè)相矛盾,因此H2也是強(qiáng)無碰撞的。
其次,假設(shè)H2是強(qiáng)無碰撞的,則我們需要推斷出H1也是強(qiáng)無碰撞的。
根據(jù)參考文獻(xiàn)[5]和[6],將消息分組差分定義為ΔXi=X’i-Xi,并且將迭代輸出差分定義為ΔYi=Y(jié)’i-Yi。
在SFRI結(jié)構(gòu)中,碰撞差分特征值將是ΔX1,ΔX2,...,ΔXn,ΔXn+1,ΔXn+2和0=ΔY0,ΔY1,ΔY2,...,ΔYn,ΔYn+1,ΔYn+2=0。
注意到ΔXn+1=X’1-X1且ΔXn+2=X’n-Xn。
由此,ΔX1=ΔXn+1且ΔXn=ΔXn+2。
如果攻擊者設(shè)置ΔX1=ΔXn=ΔYn=0,則對SFRI的攻擊退化為對MD結(jié)構(gòu)的攻擊。
因而,如果H1不是強(qiáng)無碰撞的,則H2不是強(qiáng)無碰撞的。這與預(yù)先假設(shè)相矛盾,因此H1是強(qiáng)無碰撞的。
綜上所述,我們證明了引理1。
[定理1]MFRI結(jié)構(gòu)比MD結(jié)構(gòu)更安全。
證明 如果我們能在多項(xiàng)式時(shí)間內(nèi)找出X1,X2,...,Xn,使得
且即
且則MFRI結(jié)構(gòu)將簡化為SFRI結(jié)構(gòu)。能找到這樣的X1,X2,...,Xn嗎?讓u=1,并考慮下面的聯(lián)立方程 Y1=f(IV,X1) Y2=f(Y1,X2) ... Yn-1=f(Yn-2,Xn-1)
顯然,此方程系實(shí)質(zhì)上僅包含兩個(gè)方程,并且具有n-1個(gè)變量X1,X2,...,Xn-1。如果假定X1,X2,...,Xn-3的值,則需要尋找Xn-2和Xn-1。
根據(jù)可通過Xn-1描述Xn-2。代入Y1,Y2,...,Yn-1得到
從上面的方程尋找Xn-1包括至少解出原象(preimage)問題。由于單向壓縮函數(shù)f的性質(zhì),不可能在多項(xiàng)式時(shí)間內(nèi)計(jì)算出Xn-1。如果假定其他n-3個(gè)未知變量的值,則存在相似結(jié)果,其顯示我們不能在多項(xiàng)式時(shí)間內(nèi)找到X1,X2,...,Xn-1,使得
且即MFRI結(jié)構(gòu)不能在多項(xiàng)式時(shí)間內(nèi)簡化為SFRI結(jié)構(gòu)。
因而,MFRI結(jié)構(gòu)比SFRI結(jié)構(gòu)更安全。根據(jù)傳遞性,MFRI結(jié)構(gòu)也比MD結(jié)構(gòu)更安全。
3.2對多分組差分攻擊的抵御 3.2.1多分組差分攻擊的簡要介紹 參考文獻(xiàn)[4]、[5]和[6]顯示了對hash函數(shù)MD4、MD5、SHA-0和SHA-1的多分組接近差分攻擊。此攻擊由以下步驟組成 (1)找出希望產(chǎn)生碰撞的M和M’的一組碰撞差分特征值。
(2)導(dǎo)出由鏈變量的比特描述的一組充分條件,并確保碰撞差分特征值成立。
(3)通過單步/多步或單消息/多消息方法修改隨機(jī)消息M,以便使得滿足幾乎所有的充分條件。
假定M被分為n個(gè)m比特分組X1,X2,...,Xn,而迭代輸出依次是Y1,Y2,...,Yn=D。
假定M’被分為n個(gè)m比特分組X’1,X’2,...,X’n,而迭代輸出是Y’1,Y’2,...,Y’n=D’,其中n≥2。
根據(jù)參考文獻(xiàn)[5]和[6],將消息差分定義為ΔXi=X’i-Xi,并且將迭代輸出差分定義為ΔYi=Y(jié)’i-Yi。
注意到,在參考文獻(xiàn)[5]和[6]中,通過模整數(shù)減法‘-’計(jì)算差分,而在其他參考文獻(xiàn)中,通過與非或‘
’計(jì)算差分。顯然,這兩種差分的組合可給攻擊者帶來更多的信息。
對于MD結(jié)構(gòu),假定碰撞差分特征值是ΔX1,ΔX2,...,ΔXn和0=ΔY0,ΔY1,ΔY2 ,...,ΔYn=0。
應(yīng)該注意到,因?yàn)楫?dāng)對兩個(gè)不同的消息進(jìn)行hash運(yùn)算時(shí)使用了相同的壓縮函數(shù)f,所以迭代的初始值是相同的,即ΔY0=0。ΔYn=0表示已找出碰撞(M,M’),并且它是攻擊者嘗試達(dá)到的目標(biāo)。
ΔYi也是鏈變量差值。對于具體的壓縮函數(shù),攻擊者可設(shè)置更詳細(xì)的步鏈(step-chaining)變量差分和輪轉(zhuǎn)鏈(round-chaining)變量差分[5][6][7]。
3.2.2導(dǎo)致分組修改成為聯(lián)合事件的MFRI 在MFRI結(jié)構(gòu)中,使碰撞差分特征值是ΔX1,ΔX2,...,ΔXn和0=ΔY0,ΔY1,ΔY2,...,ΔYn,且第(n+1)次迭代的輸入鏈變量是Ydn,則
其中上標(biāo)‘d’表示時(shí)延。因此,
例如,當(dāng)A=11010100,A’=00101011,且ΔA=10101001時(shí),有
且
因此
這給采用差分分析方法的攻擊者帶來了額外的困難。
根據(jù)參考文獻(xiàn)[5]、[6]和[7],不難理解,如果不存在多反饋,則對每個(gè)分組Xi的修改是獨(dú)立事件,并且當(dāng)進(jìn)行修改時(shí),可以考慮僅與分組Xi相關(guān)而不與其他分組相關(guān)的ΔXi和ΔYi。然而,當(dāng)存在多反饋時(shí),由于
所以對每個(gè)分組Xi的修改將影響相應(yīng)的Yi,并且進(jìn)一步影響ΔYdn。由此,對每個(gè)分組Xi的修改從單獨(dú)的獨(dú)立事件變?yōu)槁?lián)合事件。
假定通過消息修改技術(shù),攻擊者能降低分組準(zhǔn)碰撞的時(shí)間復(fù)雜度O(2ki)。根據(jù)參考文獻(xiàn)[5]、[6]和[7],在MD結(jié)構(gòu)中,對每個(gè)分組的修改是獨(dú)立事件,因此產(chǎn)生n分組消息碰撞的復(fù)雜度是O(2k1+2k2+...+2kn)。然而,在MFRI結(jié)構(gòu)中,對每個(gè)分組的修改成為聯(lián)合事件的一部分,因此兩個(gè)n分組消息產(chǎn)生碰撞的概率是1/(2k12k2...2kn),即產(chǎn)生消息碰撞的復(fù)雜度升高到O(2k1+k2+...+kn)。
3.2.3使得消息修改成為無限循環(huán)的MFRI 為確保所設(shè)置的差分特征值成立,每個(gè)分組都具有從f和ΔYi導(dǎo)出的一組充分條件,其中ΔYi是鏈變量差分。對于hash函數(shù)MD4和MD5,每個(gè)鏈變量的長度是128比特,恰好是4個(gè)32位字的一個(gè)。因此,事實(shí)上,每個(gè)鏈變量由四個(gè)字變量a、b、c和d組成。因?yàn)槊總€(gè)分組迭代由數(shù)個(gè)輪轉(zhuǎn)迭代組成,而每個(gè)輪轉(zhuǎn)迭代由數(shù)個(gè)步迭代組成,所以在每次分組迭代處理中可將變量a、b、c、d進(jìn)一步分為a1、b1、c1、d1、a2、b2、c2、d2、...as、bs、cs、ds。例如,在MD4中,s=12,而在MD5中,s=16。以0、1或在ai、bi、ci、di之前的那些變量來表達(dá)在充分條件中ai、bi、ci、di的值。對于SHA-1,其鏈變量由a、b、c、d和e這5個(gè)字變量構(gòu)成。以0、1或在ai之前的那些變量來表達(dá)分組碰撞的充分條件的值。
在MFRI結(jié)構(gòu)中,由于反饋和Xn+1=X1,所以需要對X1的第二次修改。然而,第二次修改肯定會(huì)影響第一次修改的結(jié)果,即,破壞已滿足的充分條件并改變鏈變量Y1的值,并且進(jìn)一步地,導(dǎo)致Y2,Y3,...,Yn和反饋Ydn產(chǎn)生變化。由此,攻擊者需要再一次修改X1。這樣,MFRI結(jié)構(gòu)將使對X1和其他分組的修改成為無限循環(huán)。
3.2.4使得碰撞的充分條件不兼容的MFRI 由于Xn+1=X1,所以對于MFRI結(jié)構(gòu),關(guān)鍵問題在于分別在第一次迭代和第(n+1)次迭代中使用鏈變量描述的兩組充分條件是否兼容。如果它們兼容,則理論上可推導(dǎo)出兩組充分條件。如果它們相互矛盾,則基本不可能推導(dǎo)出這兩組充分條件,由此不能確保差分特征值將成立、以及找到兩個(gè)消息的碰撞。
假設(shè)Λ={a1,1,a1,2,...,a1,32}是變量a1的32個(gè)比特的集合,則其功率集合的大小是
由P∩NE表示Λ的任何兩個(gè)非空子集的交集為空的概率,則
由此,Λ的任何兩個(gè)非空子集的交集為非空的概率大于(1-1/212),這意味著在第一次迭代和第(n+1)次迭代中條件變量a1的至少1個(gè)比特產(chǎn)生重疊的概率大于(1-1/212)。
我們還可以假設(shè)a1,1重疊,使a1,11表示a1,1在第一次迭代中的條件值,并且使a1,1n+1表示a1,1在第(n+1)次迭代中的條件值。如果或1,則這表示兩組充分條件相兼容;否則兩組充分條件不兼容,即這樣的兩組充分條件不可能同時(shí)存在。顯然,如果交集只包含1個(gè)比特,則不兼容的概率是1/2。如果交集包含2個(gè)比特,則不兼容的概率是(1-1/4)。假設(shè)Pa1,Pb1,Pc1,Pd1=1/2或1分別代表中間鏈變量a1、b1、c1、d1在第一次迭代和第(n+1)次迭代中條件兼容的概率。這樣,對于a1、b1、c1和d1,條件不兼容的概率是(1-1/(Pa1Pb1Pc1Pd1))。對于其他中間鏈變量a2、b2、c2、d2...,存在相似的結(jié)論。
上面的分析顯示,在相同分組的不同迭代中,條件比特產(chǎn)生重疊的概率接近于1,并且重疊比特的值不兼容的概率大于1/2。
3.3D向第二原象攻擊的無效 Joux提出一種稱為D向(D-way)的攻擊方法,其被用于基于參考文獻(xiàn)[8]的MD結(jié)構(gòu)而尋找hash函數(shù)的輸出的第二原象。對于給定的hash目標(biāo)值Y=H(M)∈{0,1}k,攻擊者首先在使Hd=H(M1)=H(M2)=...=H(M2d)的d分組消息上找到2d個(gè)碰撞。然后找到分組Xd+1,使得f(Hd,Xd+1)=Y(jié)。這樣,攻擊者成功地找到帶有消息M的第二原象。根據(jù)參考文獻(xiàn)[8],這種攻擊的時(shí)間復(fù)雜度是O(d2k/2+2k)。
對于基于MFRI結(jié)構(gòu)的hash函數(shù),因?yàn)橛蠿d+1=X1,和X’d+1=X’1,所以盡管ΔY1=ΔY2=...=ΔYd=0,也不能確保ΔYd+1=0和ΔYd+2=0。即,難于通過生日攻擊[8]而為碰撞找出兩個(gè)d分組消息M1和M2。由此,D向方法對基于MFRI結(jié)構(gòu)的hash函數(shù)是無效的。
4.hash環(huán)迭代結(jié)構(gòu)的性能分析 對于相同的消息M,MFRI比MD結(jié)構(gòu)多2次f映射運(yùn)算、n次逆碼運(yùn)算、n次模加運(yùn)算和(n-1)次異或運(yùn)算。逆碼、模加和異或是基本運(yùn)算,而且它們不會(huì)花費(fèi)太多時(shí)間。由此,MFRI具有相對快的運(yùn)算速度。需要為前饋和反饋值在存儲(chǔ)空間中增加兩個(gè)額外的變量??蓪⑦@兩個(gè)變量的初始值設(shè)為0。這樣,前饋?zhàn)兞客ㄟ^異或而依次容納X2,X3,...,Xn,而反饋?zhàn)兞客ㄟ^模加而依次容納
目前,樹結(jié)構(gòu)和拉鏈(zipper)結(jié)構(gòu)也比MD結(jié)構(gòu)更安全。然而,由于可將任何現(xiàn)有hash函數(shù)中的壓縮映射f不加改變地移植到MFRI結(jié)構(gòu)中,所以MFRI結(jié)構(gòu)比樹結(jié)構(gòu)更實(shí)用,而且,由于MFRI結(jié)構(gòu)中的映射f的運(yùn)算的次數(shù)大約是拉鏈結(jié)構(gòu)的一半,所以MFRI結(jié)構(gòu)比拉鏈結(jié)構(gòu)更高效。
5.結(jié)論 在本發(fā)明中,我們提出了帶反饋的環(huán)迭代結(jié)構(gòu),并且證明了MFRI結(jié)構(gòu)比MD結(jié)構(gòu)更安全。
在反饋每次迭代輸出時(shí),首先進(jìn)行逆變換是重要的,這使得不可能從ΔY1、ΔY2、...和ΔYn直接導(dǎo)出ΔYdn。
從小節(jié)3.1可知,在MFRI結(jié)構(gòu)和MD結(jié)構(gòu)之間存在某些可比性。MFRI中的最后兩個(gè)額外分組可被看作MD填充的擴(kuò)展。因此,對于相同的壓縮f,如果MD結(jié)構(gòu)的hash輸出是唯一的、獨(dú)立的且隨機(jī)的,則MFRI結(jié)構(gòu)的hash輸出也是唯一的、獨(dú)立的且隨機(jī)的。如果MD結(jié)構(gòu)能引起hash輸出的雪崩(avalanche)效應(yīng),則MFRI結(jié)構(gòu)也能引起hash輸出的雪崩效應(yīng)。
應(yīng)該注意的是,對于輸入消息X,僅當(dāng)其具有至少兩個(gè)分組時(shí),MFRI結(jié)構(gòu)才有效。
對于現(xiàn)有的hash函數(shù)-例如MD5和SHA-1,如果將它們的壓縮函數(shù)提取并移植到MFRI結(jié)構(gòu)中,則前面的分析顯示,現(xiàn)有攻擊方法將對新形成的hash函數(shù)無效。
綜上所述,本發(fā)明的MFRI多反饋環(huán)迭代結(jié)構(gòu)與任何一個(gè)已知的單向壓縮函數(shù)結(jié)合,便可以得到一個(gè)更安全的HASH函數(shù)。這種安全的HASH函數(shù)可以用于數(shù)字簽名和消息認(rèn)證碼中。
盡管上面已經(jīng)參照具體實(shí)施例詳細(xì)描述了本發(fā)明,但是對于本領(lǐng)域技術(shù)人員來說,可對本發(fā)明做出進(jìn)一步的變化和改進(jìn)。應(yīng)當(dāng)理解,這樣的變化和改進(jìn)落于本發(fā)明的精神和范圍之內(nèi)。
權(quán)利要求
1.一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息,輸出固定長度的消息摘要,所述方法包括步驟
將所述消息劃分為n個(gè)固定長度的分組,其中n為自然數(shù);
設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;
將每次迭代的輸出值的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算;以及
將后(n-1)個(gè)分組的異或與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要。
2.如權(quán)利要求1所述的方法,其中消息摘要的長度為128或160或256比特。
3.一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息,輸出固定長度的消息摘要,所述方法包括步驟
將所述消息劃分為n個(gè)固定長度的分組,其中n為自然數(shù);
設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;
對第n次迭代的輸出值進(jìn)行逆碼運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算;以及
將第n個(gè)分組與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要。
4.如權(quán)利要求3所述的方法,其中消息摘要的長度為128或160或256比特。
5.一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的裝置,其包含所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù),所述裝置輸入任意長度的消息,輸出固定長度的消息摘要,所述裝置包括
用于將所述消息劃分為n個(gè)固定長度的分組的部件,其中n為自然數(shù);
用于設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算的部件,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;
用于將每次迭代的輸出值的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算的部件;以及
用于將后(n-1)個(gè)分組的異或與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要的部件。
6.一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的裝置,其包含所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù),所述裝置輸入任意長度的消息,輸出固定長度的消息摘要,所述裝置包括
用于將所述消息劃分為n個(gè)固定長度的分組的部件,其中n為自然數(shù);
用于設(shè)置初始迭代值,并通過所述單向壓縮函數(shù)對所述n個(gè)分組依次進(jìn)行迭代計(jì)算的部件,其中第一次迭代的輸入值為所述初始迭代值和第一個(gè)分組,并且當(dāng)n≥2時(shí),第n-1次迭代計(jì)算的輸出值和第n個(gè)分組作為第n次迭代計(jì)算的輸入;
用于對第n次迭代的輸出值進(jìn)行逆碼運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代計(jì)算的部件;以及
用于將第n個(gè)分組與第n+1次迭代的輸出值再進(jìn)行第n+2次迭代計(jì)算,以生成所述消息摘要的部件。
7.一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)f組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息X,輸出固定長度的消息摘要D,所述方法包括步驟
把消息X劃分為n個(gè)固定長度的分組X1、X2、...、Xn,其中n為自然數(shù);
設(shè)置初始迭代值Y0=IV;
計(jì)算Yi=f(Yi-1,Xi),其中i=1、2、...、n;以及
令Xn+1=X1,并通過以下公式來生成消息摘要D,
其中,符號(hào)
代表異或運(yùn)算,符號(hào)“
”代表模加運(yùn)算,符號(hào)
表示逆碼運(yùn)算。
8.如權(quán)利要求7所述的方法,其中消息摘要D的長度為128或160或256比特。
9.一種利用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法,其中所述環(huán)迭代結(jié)構(gòu)與一單向壓縮函數(shù)f組成消息摘要函數(shù),所述消息摘要函數(shù)輸入任意長度的消息X,輸出固定長度的消息摘要D,所述方法包括步驟
把消息X劃分為n個(gè)固定長度的分組X1、X2、...、Xn,其中n為自然數(shù);
設(shè)置初始迭代值Y0=IV;
迭代計(jì)算Yi=f(Yi-1,Xi),其中i=1、2、...、n;以及
令Xn+1=X1,Xn+2=Xn,并通過以下公式來生成消息摘要D,
其中,符號(hào)
表示逆碼運(yùn)算。
10.如權(quán)利要求9所述的方法,其中所述消息摘要D的長度為128或160或256比特。
全文摘要
一種使用環(huán)迭代結(jié)構(gòu)生成消息摘要的方法和裝置,其中環(huán)迭代結(jié)構(gòu)與單向壓縮函數(shù)組成消息摘要函數(shù),其輸入任意長度消息,輸出固定長度的消息摘要,包括將消息分為n個(gè)分組;設(shè)置初始值,并通單向壓縮函數(shù)對n個(gè)分組依次進(jìn)行迭代,其中第一次迭代的輸入值為初始值和第一個(gè)分組,并當(dāng)n≥2時(shí),第n-1次迭代的輸出和第n個(gè)分組作為第n次迭代的輸入;將每次迭代的輸出的逆碼進(jìn)行模加運(yùn)算,并將其結(jié)果與第一個(gè)分組進(jìn)行第n+1次迭代;將后(n-1)個(gè)分組的異或與第n+1次迭代的輸出進(jìn)行第n+2次迭代,以生成消息摘要。本發(fā)明的方法和裝置比MD迭代結(jié)構(gòu)更安全,能抵御多分組差分攻擊,并能抵御D-way第二原象攻擊。
文檔編號(hào)H04L9/00GK101202618SQ20061016691
公開日2008年6月18日 申請日期2006年12月12日 優(yōu)先權(quán)日2006年12月12日
發(fā)明者蘇盛輝, 楊義先, 波 楊, 張紹蘭 申請人:索尼(中國)有限公司