專(zhuān)利名稱(chēng)::動(dòng)態(tài)輸入雜湊函數(shù)dih的制作方法
技術(shù)領(lǐng)域:
:密碼學(xué)雜湊函數(shù)背景介紹密碼學(xué)雜湊函數(shù)在計(jì)算機(jī)安全的各個(gè)領(lǐng)域起著重要的作用。而隨著近年來(lái)一些雜湊函數(shù)被攻破,構(gòu)造新的安全的雜湊函數(shù)成為緊迫的問(wèn)題,然后,構(gòu)造符合要求的雜湊函數(shù)是相當(dāng)困難的,本發(fā)明構(gòu)造了一個(gè)新的強(qiáng)大的雜湊函數(shù)DIH,或有望解決雜湊函數(shù)上的難題。
發(fā)明內(nèi)容動(dòng)態(tài)輸入雜湊函數(shù)DIH,借鑒MD5基礎(chǔ),對(duì)每個(gè)512分組進(jìn)行3輪16步運(yùn)算。對(duì)于每一步的32位消息子塊x[j],先獲得x[j]的動(dòng)態(tài)的無(wú)規(guī)則查表映射,與x[j]—起輸入工作變量的非線性函數(shù)運(yùn)算并反饋至下一步;并通過(guò)輔助寄存器變量組巧,ivivr4延遲輸入產(chǎn)生交織獲得強(qiáng)雪崩效應(yīng)。在MD5基礎(chǔ)上(格式化輸入消息x和建立4個(gè)32比特工作變量a,b,c,d,4個(gè)鏈值H"H2,H3,H4,以及非線性處理函數(shù)設(shè)置等),本發(fā)明:1)設(shè)置了256字節(jié)的表,以便對(duì)每個(gè)每一步的32位消息子塊x[j]獲得查表映射2)此映射是動(dòng)態(tài)的,與每一步x[j]關(guān)聯(lián)將工作變量b模加x[j]后分成字節(jié)流查表再組成32比特字,用以替代MD5中固定字表加入運(yùn)算,極大增強(qiáng)了雪崩變化。3)設(shè)置了輔助寄存器變量iviviviv用以存儲(chǔ)延遲32比特映射字輸入,起到交錯(cuò)作用,使得函數(shù)更復(fù)雜化。4)鏈值設(shè)置為5個(gè),分別是H"H2,H3,H4,4,對(duì)應(yīng)變量為a,b,c,d,巧5)r2,r3,r4不隨鏈值更新賦值,但卻跟a,b,c,d,巧一樣,也是之后IV的部分具體實(shí)施例方式l.DIH算法輸入任意長(zhǎng)度b>0的比特串X輸出X的160比特雜湊碼1.l符號(hào)"—"表示賦值或同時(shí)賦值;"||"表示級(jí)聯(lián);"<<<"為循環(huán)左移;"+"表示32位模加"b—(Sl,s2,s3,s4)"將32位b拆分為4個(gè)字節(jié)s!,s2,s3,s4(大端表示)"P[SJI|P[S2]I|P[S3]IIP[SJ'、,S2,S3,S4的查表值級(jí)聯(lián)成的32比特字(大端表示)附錄)組下標(biāo)函數(shù)F(b,c,d)=(bANDc)0R((N0Tb)AND(d))G(b,c,d)=(bANDd)OR(cAND(NOTd))K(b,c,d)=bXORcXORd1.2預(yù)處理1):建立統(tǒng)一固定的基表以256個(gè)不同的單節(jié)字0-255為基元,排列成的總共長(zhǎng)度為256B的固定表PS(見(jiàn)可以把PS看做一個(gè)數(shù)組P[128],P[S]為查表獲得的基元數(shù)值,s為對(duì)應(yīng)基元的數(shù)將P[128]放入緩存要求PS表基元分布隨機(jī)均勻2):和MD5—樣,MD強(qiáng)化①長(zhǎng)度為b比特的原明文串x,在明文后添加r比特添加第一個(gè)比特為l,后面接著添加q-l(q-l>0)個(gè)O,其中r使得添加后的總比特長(zhǎng)度加64就是512的倍數(shù)的最小的數(shù)。最后添加bmod264的64比特表示作為2個(gè)32比特字(但采用大端表示)。這樣總共m個(gè)512位的分組,b+q+64=512m=16*32m。格式化輸入由16m個(gè)32比特的字組成x。x廣'X16m-1o1.3初始化設(shè)置常數(shù)定義與SHA-1—樣定義五個(gè)32比特初始鏈值、=0x67452301,h2=0xefcdab89,h3=0x98badcfe,h4=0x10325476,h5=0xc3d2elf0(H"H2,H3,H4,H5)—(h"h2,h3,h4,h5)另定義4個(gè)常數(shù)W二0xcdaa8b43,N丄=0xeb36c27a,N2=0x5alcf3d4,N3=0xdc7082b9設(shè)置4個(gè)32比特的寄存器變量為a,b,c,d進(jìn)行運(yùn)算并存儲(chǔ)運(yùn)算結(jié)果。設(shè)置輔助的4個(gè)寄存器變量巧,iviviv每個(gè)為32比特(存儲(chǔ)和延遲輸入置換中間值)。初始化變量(r2,r3,r4)—(NnN2,N3)②1.4算法執(zhí)行對(duì)i從0到m-l,將16個(gè)32比特字的第i個(gè)分組復(fù)制到緩存X[j]—x16i+j,0《j《15,在更新鏈表前,作3輪,每輪16步的運(yùn)算初始化變量(a,b,c,d,t》一諷,H2,H3,H4,H5)第一輪16步對(duì)j從0到151)a=a+巧,b=b+X[j](32位模加)2):b—s丄,s2,s3,s4③r工—(P[sJI|P[s2]I|P[s3]II(P[s4])3)t=a+(F(b,c,d)+t,W+b<<<1)<<<7——(F(b,c,d)為MD5的非線性函數(shù),)4)(a,b,c,d)—(d,t,b,c);t—;(r!,r2,r3,r4)—(r2,r3,r4,t<<<1)第二輪16步對(duì)j從16到31將第一輪中的F(b,c,d)換為G(b,c,d),運(yùn)算第三輪16步對(duì)j從32到47將第一輪中的F(b,c,d)換為K(b,c,d),運(yùn)算第三輪16步完成后更新鏈值:(H"H2,H3,H4,H5)—(H,a,H2+b,H3+c,H4+d,H5+r》完成最后的雜湊值IIH21IH31IH41IH5(大端表示)DIH是用與每個(gè)消息子塊X[j]關(guān)聯(lián)的動(dòng)態(tài)的查表值作為指定置換,替代了MD5中固定的字和表加入運(yùn)算,因而更具隨機(jī)性。實(shí)際上,DIH初始化的數(shù)據(jù)可以任意選擇(意味著可預(yù)防自由起始端攻擊)。使用僅僅256字節(jié)的表,輸入查表置換的變化規(guī)模(232)遠(yuǎn)大于MD5雜湊函數(shù)的固定字表或SHA1的(從16個(gè)到80個(gè))輸入的置換,DIH設(shè)置的巧,r2,r3,r4使各個(gè)計(jì)算中間值_查表置換與循環(huán)體延遲交錯(cuò),更有助于抵制攻擊。變量r2,r3,r4不隨a,b,c,d,巧同時(shí)更新賦值,實(shí)際上卻與a,b,c,d,巧同時(shí)成為下一輪的IV,這種設(shè)置,使得自由起始端攻擊格外困難;DIH雜湊函數(shù)輸出隨機(jī)性應(yīng)不低于MD5,速度約為MD5的0.2-0.4倍。增加輔助存儲(chǔ)r變量的數(shù)目,可以進(jìn)一步提高強(qiáng)度。2.注釋和附錄①添加比特的MD強(qiáng)化弓I用自MD5函數(shù)F(b,c,d)=(bANDc)OR((麗b)AND(d));G(b,c,d)=(bA固)OR(cAND(麗d))K(b,c,d)=bX0RcX0Rd引用自MD5②變量r2,r3,r4不跟隨變量a,b,c,d,巧一起更新賦值。③將32位b變量查表置換成賦值給巧的32位,未必要堅(jiān)持大端表示,只要規(guī)定統(tǒng)一置換,是比較快捷方便的。例如,令巧變量指定為寄存器EAX,b為EBX則AH—P[BH],AL—P[BL];巧<<<16,b<<<16,AH—P[BH],AL—P[BL];附一個(gè)PS固定表sP[S]值SP[S]值SP[S]值SP[S]值SP[S]值SP[S]值SP[S]值SP[S]值01473223064108961201287216024919202241561227334765162972001291161250193562251142443411166599825130121621791942092266531163519167131992131319216319619550227153418836868211100641321721642319635228685537806937101144133199165161976022912667738152701171021021343016610419814823017571493922471197103177135631671401992362311615<table>tableseeoriginaldocumentpage6</column></row><table>DIH256位雜湊法相對(duì)于DIH160的變化DIH256雜湊法定義8個(gè)32比特初始鏈值^,h2,h3,h4,h5,h6,h7,h8諷,H2,H3,H4,H5,H6,H7,H8)—(^,h2,h3,h4,h5,h6,h7,h8)第i個(gè)分組復(fù)制到緩存X[j]—X16i+j,0《j《15,作3輪,每輪IS步的運(yùn)算初始化變量(a,b,c,d,)一諷,H2,H3,H4)第一輪,第二輪同MRH160第二輪結(jié)束時(shí),(H"H2,H3,H4)—(H,a,H2+b,H3+c,H4+d)第三輪同DIH160,結(jié)束時(shí),(H5,H6,H7,H8)—(H5+a,H6+b,H7+c,H8+d)鏈表分2次更新,即分別在第二輪結(jié)束時(shí)和第三輪結(jié)束時(shí)。最后的雜湊Hj|H2||H3||H4||H5||H6||H7||!18(大端表示)ri,r2,r3,r4變量不隨鏈表初始化賦值,意味著,在之后的初始IV中,巧,r2,r3,r4共128位是無(wú)法自由確定的,因而對(duì)具有兩個(gè)分組以上的消息,即使是自由起始端,攻擊也不可行。權(quán)利要求一種新雜湊函數(shù)-動(dòng)態(tài)輸入雜湊函數(shù)DIHDIH采用了MD5的基本結(jié)構(gòu)添加比特MD強(qiáng)化,將明文分為512比特分組,采用了MD5處理P函數(shù),寄存器變量a,b,c,d結(jié)構(gòu)。但BTH與MD5不同,其特征為1)DIH設(shè)置了256字節(jié)的表,以便對(duì)每個(gè)每一步的32位消息子塊x[j]獲得查表映射2)此映射是動(dòng)態(tài)的,與每一步x[j]關(guān)聯(lián)將工作變量b模加x[j]后分成字節(jié)流查表再組成32比特字,用以替代MD5中固定字表加入運(yùn)算,極大增強(qiáng)了雪崩變化。3)設(shè)置了輔助寄存器變量r1,r2,r3,r4,用以存儲(chǔ)延遲32比特映射字輸入,起到交錯(cuò)作用,使得函數(shù)變化更復(fù)雜化。4)DIH鏈值設(shè)置為5個(gè),分別是H1,H2,H3,H4,H5,對(duì)應(yīng)變量為a,b,c,d,r1,每個(gè)512比特分組經(jīng)過(guò)3輪16步運(yùn)算,輸出雜湊是160位。(256位的DIH256鏈值設(shè)置為8個(gè)H1,H2,H3,H4,H5,H6,H7,H8,鏈值在第二輪和第三輪分為兩次更新,輸出256位雜湊值)。5)r2,r3,r4不隨鏈值更新賦值,但卻跟a,b,c,d,r1一樣,實(shí)質(zhì)上也是之后IV的部分。全文摘要?jiǎng)討B(tài)輸入雜湊函數(shù)DIH,借鑒MI)5基礎(chǔ),對(duì)每個(gè)512分組進(jìn)行3輪16步運(yùn)算,輸出160位雜湊值(也可以構(gòu)造輸出192,256比特長(zhǎng)度的函數(shù))。對(duì)于每一步的32位消息子塊x[j],先獲得x[j]的動(dòng)態(tài)的無(wú)規(guī)則查表映射,與x[j]一起輸入工作變量的非線性函數(shù)運(yùn)算并反饋至下一步;并通過(guò)輔助寄存器變量組r1,r2,r3,r4延遲輸入產(chǎn)生交織獲得強(qiáng)雪崩效應(yīng),從而在預(yù)防各種攻擊,尤其是自由起始端攻擊的能力上更強(qiáng)大。文檔編號(hào)H04L9/18GK101753299SQ20081024316公開(kāi)日2010年6月23日申請(qǐng)日期2008年12月9日優(yōu)先權(quán)日2008年12月9日發(fā)明者姚錫根申請(qǐng)人:姚錫根