專利名稱::基于整數(shù)非線性映射的散列函數(shù)構(gòu)造方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及信息安全
技術(shù)領(lǐng)域:
中一種提取消息摘要的散列函數(shù)構(gòu)造方法,尤其是廣泛用于數(shù)字證書、電子簽名、口令保護(hù)、數(shù)字信息的完整性驗(yàn)證等安全應(yīng)用場合的基于整數(shù)非線性映射的散列函數(shù)構(gòu)造方法。
背景技術(shù):
:近十幾年來,美、俄、歐、日等都相繼制定了各自的Hash函數(shù)算法標(biāo)準(zhǔn)。安全Hash算法SHA-1、SHA-2是美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)的標(biāo)準(zhǔn)算法;RIPEMD-160是歐共體PIPE計(jì)劃下開發(fā)的標(biāo)準(zhǔn)Hash算法,其輸出為160bit;GOSTHash算法是俄國國家標(biāo)準(zhǔn),它的輸出為256bit;N-Hash算法是由日本電報(bào)電話公司研究發(fā)明的。但時(shí)至今日,我國尚未公布類似的Hash函數(shù)算法標(biāo)準(zhǔn)。近年來,密碼學(xué)界對(duì)Hash函數(shù)的設(shè)計(jì)與分析給予了廣泛的關(guān)注。在2004年美密會(huì)上,王小云等宣布了包括MD4,MD5,HAVAL-128以及RIPEMD在內(nèi)的碰撞實(shí)例。王小云等人對(duì)SHA-1的分析也已取得突破性成果,她們已將碰撞攻擊的復(fù)雜度從269提高到263。SHA-1被認(rèn)為是現(xiàn)代網(wǎng)絡(luò)安全的基石,被廣泛使用于銀行、安全通訊以及電子商務(wù)中。由于王小云等人揭示出SHA-1的脆弱性,美國NIST正在舉行Hash函數(shù)標(biāo)準(zhǔn)的公開征集。傳統(tǒng)的Hash函數(shù)(MDx系和SHA系)的主要設(shè)計(jì)原則基于Merkle-Damgard結(jié)構(gòu),它們具有許多共同的設(shè)計(jì)準(zhǔn)則,各輪的混合運(yùn)算設(shè)計(jì)極為相似,全都采用了整數(shù)模加和邏輯函數(shù)(輪函數(shù))。從世界范圍來看,隨著新的攻擊方法的提出,如此眾多的Hash算法在不長的時(shí)間相繼被攻破,說明其設(shè)計(jì)準(zhǔn)則存在缺陷,也是長期以來Hash函數(shù)設(shè)計(jì)走“近親路線”的結(jié)果。美國NIST鼓勵(lì)設(shè)計(jì)者在新的應(yīng)用和協(xié)議中使用SHA-2Hash函數(shù)。但由于SHA-2與SHA-1同屬一個(gè)Hash算法類別,也存在被類似方法攻擊的可能。為獲得更安全的Hash函數(shù),近年來利用混沌系統(tǒng)對(duì)變量和參數(shù)的變化的敏感特性構(gòu)造單向Hash函數(shù)的研究也已取得一些進(jìn)展。Hash函數(shù)與分組加密算法有很多相同的密碼學(xué)特征,而其根本不同點(diǎn)在于Hash算法是不可逆的,而分組加密算法是可逆的?;煦缬成涞牟豢赡嫘员砻鳎诨煦缬成錁?gòu)造Hash函數(shù)比構(gòu)造分組密碼算法更有優(yōu)勢。但是,由于數(shù)字化混沌系統(tǒng)的動(dòng)力學(xué)特性退化問題及構(gòu)造方案本身的缺陷,目前基于混沌理論的Hash函數(shù)構(gòu)造方案還無法得到人們的信任。時(shí)空混沌系統(tǒng)具有非常多的正李雅普諾夫指數(shù),系統(tǒng)在時(shí)間及空間方向上都是混沌的,其動(dòng)力學(xué)行為非常豐富而復(fù)雜,空間上的任何一點(diǎn)的微小變化都會(huì)隨時(shí)間的增加而擴(kuò)散開去,產(chǎn)生很大的變化。利用時(shí)空混沌可以大大提高系統(tǒng)的復(fù)雜性,從而有利于提高系統(tǒng)的安全性。2005年張?jiān)谖墨I(xiàn)1“基于時(shí)空混沌系統(tǒng)的單向Hash函數(shù)構(gòu)造”(張瀚等,物理學(xué)報(bào),2005,54(9))給出一種基于CML的單向Hash函數(shù)構(gòu)造方案,但該方案存在以下缺陷1)采用了單向耦合映像格子系統(tǒng)模型(OCML)。由于OCML易同步,且計(jì)算效率高,因此在人們將時(shí)空混沌應(yīng)用到密碼學(xué)領(lǐng)域的研究中,該模型應(yīng)用較多,但用該模型構(gòu)造單向Hash函數(shù),卻存在初始擾動(dòng)傳播放大速度較慢、擴(kuò)散機(jī)制不強(qiáng)的問題。我們經(jīng)仿真研究發(fā)現(xiàn),初始條件或系統(tǒng)參數(shù)的微小差異,需要通過約4×L次迭代(L為OCML的格點(diǎn)數(shù)),才能使混沌軌道有明顯分離,變成互不相關(guān)的兩條軌道;2)明文信息作為初值來驅(qū)動(dòng)OCML,一個(gè)格點(diǎn)只能調(diào)制1個(gè)字節(jié)的明文信息,當(dāng)明文文件較大時(shí),需要的OCML格點(diǎn)規(guī)模太大,計(jì)算效率極低;3)明文映射方式存在嚴(yán)重缺陷。2007年S.Wang在文獻(xiàn)[2]“Hashfunctionbasedonchaoticmaplattices”(S.Wang,G.Hu,Chaos,17)給出基于時(shí)空混沌構(gòu)造單向Hash函數(shù)的新方案,與文獻(xiàn)1相比,提高了效率,但與MD5及SHA-1相比,執(zhí)行效率仍然偏低。目前提出的基于混沌的hash函數(shù)與傳統(tǒng)的基于邏輯函數(shù)的Hash函數(shù)的一個(gè)重要區(qū)別就是基于混沌的hash函數(shù)界定在實(shí)數(shù)域上,而傳統(tǒng)的Hash函數(shù)采用的是有限整數(shù)的按位操作。在實(shí)數(shù)域上構(gòu)造混沌hash函數(shù)還面臨以下幾方面問題1)實(shí)數(shù)域幾乎被不可數(shù)的無窮多的無理數(shù)所充滿,然而,由于計(jì)算機(jī)截?cái)嗾`差的存在,它不能處理無理數(shù),產(chǎn)生不了一個(gè)非周期軌道,在有限精度實(shí)現(xiàn)的情況下,數(shù)字化混沌系統(tǒng)的動(dòng)力學(xué)特性相對(duì)連續(xù)系統(tǒng)而言存在嚴(yán)重的退化;2)實(shí)數(shù)域上,計(jì)算機(jī)精度及所采用的機(jī)器甚至語言類型都可能影響有限精度混沌系統(tǒng)的最終結(jié)果,因此,基于實(shí)數(shù)域上混沌的Hash算法中普遍存在由于計(jì)算機(jī)的有限精度或各計(jì)算機(jī)精度不同所導(dǎo)致的Hash值計(jì)算失敗的難題,使混沌Hash函數(shù)的實(shí)際應(yīng)用受到很大限制;3)不利于軟硬件高速實(shí)現(xiàn)。
發(fā)明內(nèi)容根據(jù)
背景技術(shù):
所述,本發(fā)明的目的在于克服現(xiàn)有的混沌散列函數(shù)設(shè)計(jì)方案所存在的問題,提供一種基于整數(shù)非線性映射的散列函數(shù)構(gòu)造方法,用于解決信息系統(tǒng)安全中的消息驗(yàn)證、數(shù)字簽名等技術(shù)問題。本發(fā)明采用分段式非線性碼字?jǐn)U展方案,通過整數(shù)非線性映射拉伸與折疊的非線性本質(zhì)實(shí)現(xiàn)消息的非線性擴(kuò)展,增強(qiáng)了碼字?jǐn)U展的非線性擴(kuò)散程度,提高了運(yùn)算效率;將整數(shù)非線性映射與邏輯函數(shù)相結(jié)合,作為壓縮函數(shù)混合運(yùn)算的主要非線性部件,具有較為理想的混淆與擴(kuò)散特性;壓縮函數(shù)內(nèi)部采用并行迭代結(jié)構(gòu),有利于軟硬件高速并行實(shí)現(xiàn)。本發(fā)明的方法安全、快速,易于軟硬件實(shí)現(xiàn)。為了實(shí)現(xiàn)上述目的,本發(fā)明是通過以下技術(shù)方案來實(shí)現(xiàn)的(1)消息填充將任意長度的明文消息M分割成1024比特的消息塊M0,...,M1,...,Mt,最后一個(gè)塊填充為Mt=*...*10...0Mdlen(H)Length(M),其中,Mdlen(H)表示輸出的散列長度,長度為10比特,Length(M)表示M的長度的二進(jìn)制形式,長度為64比特。將每個(gè)消息塊Mi劃分成兩組,每組由16個(gè)32比特的消息字組成,分別為m0,m1,...,m15及m′0,m′1,...,m′15。(2)給定一組初始向量及參數(shù)k0=0x5a827999,k1=0x6ed9eba1,k2=0x8f1bbcdc,k3=0xca62c1d6,k4=0x99728a5a,k5=0x1abe9de6,k6=0xcdcbb1f8,k7=0x6d1c26ac.(3)非線性分段式碼字?jǐn)U展利用上式對(duì)消息字m0,m1,...,m15及m′0,m′1,...,m′15進(jìn)行消息擴(kuò)展,先通過循環(huán)移位及模加方式進(jìn)行10次迭代操作,隨后再利用非線性映射進(jìn)行碼字?jǐn)U展,得到擴(kuò)展后的碼字序列W0,W1...,W63及W′0,W′1,...,W′63。(+表示mod232的加法運(yùn)算,∨表示逐比特邏輯或,表示逐比特邏輯異或,<<表示左移位操作,>>表示右移位操作,<<<表示循環(huán)左移位操作)。(4)并行方式的混合迭代運(yùn)算1)2)Fort=0to11{當(dāng)t為偶數(shù)時(shí)k=(t/2)*8+16;i=0,…,7i=0,…,7當(dāng)t為奇數(shù)時(shí)k=((t-1)/2)*8+16;i=0,…,7i=0,…,7}3)將x0(0),...,x7(0)分別加到x0,...,x7,即4)對(duì)剩下的消息塊繼續(xù)2)、3)的操作,直到最后一個(gè)消息塊。(5)散列輸出并行迭代結(jié)束后,最后的輸出結(jié)果即為256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7。根據(jù)不同場合的應(yīng)用需求,通過輸出變換,得到輸出結(jié)果為120,160,192或224比特的消息摘要。由于采用了上述技術(shù)方案,本發(fā)明具有如下優(yōu)點(diǎn)和效果(1)本發(fā)明混合運(yùn)算使用了耦合整數(shù)非線性映射式中,及兩個(gè)基本邏輯函數(shù)(x(y∨(~z),xyzw),使得整數(shù)非線性映射具有均勻分布性及良好的非線性特征,并且實(shí)現(xiàn)簡單,運(yùn)算速度快,但它是單變量間的1-1映射,不存在值碰撞問題。每一次映射變換除了能使?fàn)顟B(tài)變量左移一位之外,最高比特位的差分特性還將引發(fā)該狀態(tài)變量產(chǎn)生最大的差分?jǐn)U展碼字重量,而且通過循環(huán)移位及耦合擴(kuò)散,每一消息比特差分均有機(jī)會(huì)觸發(fā)動(dòng)態(tài)差分?jǐn)U散。而兩個(gè)基本邏輯函數(shù)與整數(shù)帳篷映射的混合使用,又加速了狀態(tài)變量間的差分?jǐn)U散。(2)本發(fā)明采用分段式非線性碼字?jǐn)U展方式,并且在混合函數(shù)中僅使用通過遞歸方式生成的擴(kuò)展碼字序列部分,加速了消息在混合運(yùn)算中的擴(kuò)散及混淆過程。(3)相對(duì)于傳統(tǒng)Hash函數(shù)的操作步只能用串行方式實(shí)現(xiàn),本發(fā)明的壓縮函數(shù)內(nèi)部的迭代結(jié)構(gòu)與MD5、SHA-1、SHA-256等不同,適應(yīng)于并行方式實(shí)現(xiàn)。(4)本發(fā)明描述簡單,易于實(shí)現(xiàn),借鑒并改進(jìn)了混沌密碼學(xué)研究中廣泛采用的帳篷映射模型,將其從實(shí)數(shù)域變換到整數(shù)集中,應(yīng)用到消息擴(kuò)展及壓縮函數(shù)的混合運(yùn)算,進(jìn)而充分利用了帳篷映射拉伸與折疊的非線性本質(zhì)與均勻分布的特性,而且本發(fā)明運(yùn)算過程全部采用基于32位操作數(shù)的一些簡單位操作,便于軟硬件高速實(shí)現(xiàn)。圖1為本發(fā)明散列函數(shù)結(jié)構(gòu)示意圖。圖2為本發(fā)明所采用的耦合映像系統(tǒng)模型在隨機(jī)選取一組初值時(shí)狀態(tài)變量x0(i)經(jīng)12000次迭代的結(jié)果,說明耦合映像系統(tǒng)模型具有較為理想的均勻分布特性。圖3是對(duì)本發(fā)明所采用分段式非線性碼字?jǐn)U展方案進(jìn)行差分?jǐn)U散特性試驗(yàn)的結(jié)果。實(shí)驗(yàn)方法是隨機(jī)選取一個(gè)消息分組(512比特),每次改變一個(gè)比特,觀察其在隨后的遞歸過程中對(duì)1536(48*32)個(gè)擴(kuò)展比特位的影響。具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。本發(fā)明的方法采用分段式非線性碼字?jǐn)U展方案,通過整數(shù)非線性映射拉伸與折疊的非線性本質(zhì)實(shí)現(xiàn)消息的非線性擴(kuò)展,增強(qiáng)了碼字?jǐn)U展的非線性擴(kuò)散程度,提高了運(yùn)算效率。將整數(shù)非線性映射與邏輯函數(shù)相結(jié)合,作為壓縮函數(shù)混合運(yùn)算的主要非線性部件,具有較為理想的混淆與擴(kuò)散特性。壓縮函數(shù)內(nèi)部采用并行迭代結(jié)構(gòu),有利于軟硬件高速并行實(shí)現(xiàn)。本發(fā)明方法具體包括以下步驟(1)消息填充將任意長度的明文消息M分割成1024比特的消息塊M0,...,Mi,...,Mt,最后一個(gè)塊填充為Mt=*...*10...0Mdlen(H)Length(M),其中,Mdlen(H)表示輸出的散列長度,長度為10比特,Length(M)表示M的長度的二進(jìn)制形式,長度為64比特。將每個(gè)消息塊Mi劃分成兩組,每組由16個(gè)32比特的消息字組成,分別為m0,m1,...,m15及m′0,m′1,...,m′15。例如如果擬輸出的散列長度為256比特,明文為900位二進(jìn)制數(shù),表示成十六進(jìn)制數(shù)為AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EAD9823408349698778FFFCDE8976234762342345645AEAFCE234789236ABD948572789235823408349698778FFFC876FAC于是添加1個(gè)“1”,49個(gè)“0”,接著添加256比特輸出散列長度所對(duì)應(yīng)的編碼(十個(gè)“0”),最后再加上64比特串(900)10=0000000000000768,共1024比特,因而只有一個(gè)填充消息塊,將其劃分成兩組,每組由16個(gè)32比特的消息字組成組1(m0,m1,…,m15)AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EA組2(m′0,m′1,…,m′15)D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC8000000000000000000000000000768(2)初始化散列值及參數(shù)設(shè)定k0=0x5a827999,k1=0x6ed9eba1,k2=0x8f1bbcdc,k3=0xca62c1d6,k4=0x99728a5a,k5=0x1abe9de6,k6=0xcdcbb1f8,k7=0x6d1c26ac.(3)按照下式進(jìn)行非線性分段式碼字?jǐn)U展碼字?jǐn)U展過程如下1)將組1(m0,m1,...,m15)(組2(m′0,m′1,...,m′15))依序賦值給Wt(0≤t≤15);2)按下式進(jìn)行10次迭代操作Wt=Wt-3+Wt-8+Wt-14+Wt-16+(Wt-1Wt-2Wt-15)<<<13+(Wt-1Wt-4Wt-11)<<<233)接著利用非線性映射進(jìn)行碼字?jǐn)U展(38次迭代操作),得到擴(kuò)展后的碼字序列W0,W1…,W63(W′0,W′1,…,W′63)Wt=Wt-2+Wt-3+Wt-9+Wt-16例如對(duì)于前面由給定的消息塊劃分出的組1(m0,m1,…,m15)AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EA進(jìn)行碼字?jǐn)U展操作后,得到的擴(kuò)展碼字序列為(W0,W1…,W63)AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EA7308A6CC9CE24DBBE6914A0D602D324A1FFA86FFA707F7981C2DF3DA397234AAC1452E362E2A5FBEBB1351D6A71A88FBDCFCC27FD978ACFAAA4F865A244371A35999F0D74596634A024696004595D224CBE26D6D7032FC8A689EC657762CED3972E8B3F719EC269BD22B425E19A9B52233D84D337BDA4D884E37E6573318DF504BE5756C18F9F62A0289D57735507488084523EF3C746784323A258AA9A53E8EC32E8209CBA0028D67B09A632B080552D3819BD98357991A8A4AC2299825AAF2對(duì)于前面由給定的消息塊劃分出的組2(m′0,m′1,…,m′15)D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC8000000000000000000000000000768進(jìn)行碼字?jǐn)U展操作后,得到的擴(kuò)展碼字序列為(W′0,W′1,…,W′63)D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC80000000000000000000000000007680300B20BD4CE6A58C23E6346E3DCB7201927C7C59809A3B9297E1E9C98F7B1339E0F45085B1B52DB959F6DCA540E61B87E36A5B5A81CCAD7A78AC0E5D13BBD29C53F154FB8AB2176DB662B097BE65AD742A5E65F28CE0A9944A5E610261638D978F7265933CBA6F83A8809CD01A25E11D914ACF37854CFBA0344BC1FF0A99F71F73317B0FE562DEA854BCCBB4968CADE009798DC309A1C9F2B3AE04632272A981EA85A1625A01FCE16AF1CF57C7F4F5E7F27F1C317067819FDD7FA7F2C5CD3B6(4)并行方式的混合迭代運(yùn)算并行混合運(yùn)算是對(duì)耦合映像系統(tǒng)模型的一個(gè)迭代計(jì)算過程。耦合映像系統(tǒng)模型為該模型在空間方向上展示出豐富而復(fù)雜的動(dòng)力學(xué)行為,迭代該式產(chǎn)生的時(shí)間序列具有理想的均勻分布特性。這里,取p=8,j=0,...,7。圖2是該耦合映像系統(tǒng)模型在隨機(jī)選取一組初值時(shí)狀態(tài)變量x0(i)經(jīng)12000次迭代的結(jié)果?;旌系?jì)算過程如下1)2)Fort=0to11{當(dāng)t為偶數(shù)時(shí)k=(t/2)*8+16;i=0,…,7i=0,…,7當(dāng)t為奇數(shù)時(shí)k=((t-1)/2)*8+16;i=0,…,7i=0,…,7}3)將x0(0),...,x7(0)分別加到x0,...,x7,即4)對(duì)剩下的消息塊繼續(xù)2)、3)的操作,直到最后一個(gè)消息塊。在12輪次的迭代過程中,8個(gè)連接變量的值可采取并行方式更新。下面是迭代計(jì)算的實(shí)施例W0,W1…,W15AFCE234789236ABD9485727892358934572340932945DAB43958739093ECD871234687234518231876FACB823769123749612374521789123746DF90876123EAW′0,W′1,…,W′15D9823408349698728FFFCDE8976234762342345645AEAFCE234789246ABD948572789235823408349698778FFFC876FAC8000000000000000000000000000768對(duì)t=0到t=11計(jì)算得到表1的結(jié)果。表1迭代計(jì)算最后的輸出為x0=6A09E667+D1F501E6=3BFEE84D,x1=BB67AE85+E71F0E3F=A286BCC4,x2=3C6EF372+72030D17=AE720089,x3=A54FF53A+EF2ECB19=947EC053,x4=510E527+4ADB9311=9BE9E590,x5=9B05688C+DD6FBF3E=87527CA,x6=1F83D9AB+FAC89F8B=1A4C7936,x7=5BE0CD19+F480ADE2=50617AFB。(5)散列輸出并行迭代結(jié)束后,最后的輸出結(jié)果即為256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7。根據(jù)不同場合的應(yīng)用需求,通過輸出變換,得到輸出結(jié)果為128,160,192或224比特的消息摘要。256比特散列值并行迭代結(jié)束后,最后的輸出結(jié)果即為256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7=3BFEE84DA286BCC4AE720089947EC0539BE9E59087527CA1A4C793650617AFB。224比特散列值為x0||x1||x2||x3||x4||x5||x6=3BFEE84DA286BCC4AE720089947EC0539BE9E59087527CA1A4C7936。192比特散列值把x6,x7分解為192比特散列值為y0||y1||y2||y3||y4||y5,這里y0||y1||y2||y3||y4||y5=3BFEE9E1A286BF07AE72020A947EC7F19BE9E6C778752AA5。160比特散列值把x5,x6,x7分解為160比特散列值為y0||y1||y2||y3||y4,這里y0||y1||y2||y3||y4=3C0DEEF5A2879F10AE86A4209480B97E9BEA934B。128比特散列值y0=x0+x4,y1=x1+x5,y2=x2+x6y3=x3+x7.y0||y1||y2||y3=D7E8CDDD1AFBE48EC8BE79BFE4E03B4E散列函數(shù)被普遍應(yīng)用于數(shù)字安全的幾乎所有方面,比如密碼保護(hù),數(shù)字簽名,時(shí)間戳等,在密碼協(xié)議設(shè)計(jì)中,可以靈活地使用散列函數(shù)來增加安全性。關(guān)于非線性映射由來的說明帳篷映射是混沌研究中十分重要的例子,它的定義是帳篷映射的優(yōu)異特性之一是其具有均勻的分布函數(shù),在實(shí)數(shù)域內(nèi)其性態(tài)是混沌的。當(dāng)參數(shù)α=0.5時(shí),將其由實(shí)數(shù)域運(yùn)算等價(jià)轉(zhuǎn)化為整數(shù)運(yùn)算其中1=2k-1。我們將映射F稱為整數(shù)非線性映射,它服從上的均勻分布,具有拉伸與折疊的非線性本質(zhì),其拉伸特性最終導(dǎo)致相鄰點(diǎn)的指數(shù)分離,其折疊特性則保持生成序列有界,且引起映射不可逆。定義D=231,在GF(232)內(nèi),可用C語言中的三元運(yùn)算符(?)將上面給出的整數(shù)非線性映射描述為xn+1=xn<D?(xn<<1)+1~xn<<1顯然,該式可用簡單的邏輯判斷、邏輯取反及移位操作予以實(shí)現(xiàn)。若用匯編語言或硬件實(shí)現(xiàn),則其操作可以進(jìn)一步簡化為測試字的最高位是否為0,若為0,則左移一位加1,否則,則各位求反后,左移一位。雖然操作十分簡單,但是這里遇到if區(qū)塊,它會(huì)編譯成跳轉(zhuǎn)指令,而跳轉(zhuǎn)指令會(huì)影響現(xiàn)代超流水線CPU的流水線效率,一旦分支預(yù)測失敗,就可能阻斷流水,從而浪費(fèi)大量的指令周期。為了避開if跳轉(zhuǎn),給出整數(shù)非線性映射的另一種等價(jià)形式該式全部采用簡單指令實(shí)現(xiàn),完全避免了跳轉(zhuǎn)操作。實(shí)施例1應(yīng)用本發(fā)明進(jìn)行數(shù)字簽名數(shù)字簽名是對(duì)網(wǎng)上傳輸?shù)碾娮訄?bào)文進(jìn)行簽名確認(rèn)的一種方式,目前已經(jīng)應(yīng)用于網(wǎng)上安全支付系統(tǒng)、電子銀行系統(tǒng)、電子證券系統(tǒng)、安全郵件系統(tǒng)、電子訂票系統(tǒng)、網(wǎng)上購物系統(tǒng)、網(wǎng)上保稅等一系列電子商務(wù)應(yīng)用的簽名認(rèn)證服務(wù)。數(shù)字簽名對(duì)安全性和防偽造性的要求較高,并且要求驗(yàn)證速度比簽名速度要快,特別是聯(lián)機(jī)在線實(shí)時(shí)驗(yàn)證。目前數(shù)字簽名算法中廣泛采用了安全散列算法(SHA-1),在SHA-1的安全性遭受嚴(yán)重威脅的情況下,有必要采用更為安全的散列算法。本發(fā)明方法安全性好,執(zhí)行速度快,特別適合應(yīng)用于數(shù)字簽名。下面給出用本發(fā)明方法及RSA算法對(duì)一個(gè)合同文本進(jìn)行數(shù)字簽名的例子。1)給定一個(gè)合同文本(需要簽名的消息)“Thiscontractismadebyandbetweenthebuyersandthesellers,wherebythebuyersagreetobuyandthesellersagreetoselltheundermentionedcommodityaccordingtothetermsandconditionsstipulatedbelowtobepackedproperlybysellers,suitableforlong-distancelandtransportationandwellprotectedagainstdampness,moisture,shock,rust.thesellersshallbeliableforanylossattributabletoinadequateorimproperprotectivemeasurestakenbythesellersinregardtopacking.onthesurfaceofeachpackage,thepackagenumber,measurement,grossweight,netweightandthewordingsandtheliftingpositionshallbestenciledinfadelesspaint.”2)把上述需要簽名的消息作為本發(fā)明方法的輸入,由此輸出一個(gè)定長的安全散列值(128比特)202BA810F534B3A69FBFDDED873F2DEA3)RSA算法的一對(duì)密鑰Modulus(N)678E60FAAA21F56DE2D250E5CA2ADD69FC2622F122D370944D65E59C18FB0BD1PrivateExponent(D)4663B631CC6146D5499F51D3D046B0B70DAD2D4D53960F7FD5E72ADAA0ABD31DPublicExponent(E)100014)合同發(fā)送方用自己的私鑰對(duì)由合同文本生成的散列值加密形成簽名50B627E01486F6260FA8CB61BB7C11A7F077F6AEF9F5445AD93096B1E69CC7E45)將合同文本和簽名傳送出去,接受方收到合同文本,根據(jù)收到的合同文本計(jì)算一個(gè)散列值,同時(shí)使用發(fā)送方的公鑰對(duì)簽名解密。若解密后的散列碼和計(jì)算得出的散列碼一致,則簽名時(shí)有效的。因?yàn)橹挥邪l(fā)送方知道自己的私鑰,所以,只有發(fā)送方才能生成合法的簽名。若合同文件被稍微篡改,比如最后一個(gè)字母改為s,則生成的散列值為9895129EB931281C10A11B95C96C8750將文件的首字母“T”改為“t”,則生成的散列值為3D13EF1B6AE69B5C426BBC43B5934975文本最后增加一個(gè)空格,則生成的散列值為E4D14C8A7F3314D77BDC630D4734F3D3可見,合同文件只要稍微更改,解密后的散列值和計(jì)算得出的散列值就會(huì)完全不同。實(shí)施例2應(yīng)用本發(fā)明進(jìn)行密碼保護(hù)用戶帳戶的安全保護(hù)是目前電子商務(wù)活動(dòng)的一個(gè)重要技術(shù)問題。對(duì)于用戶來講,最關(guān)心的問題是口令的保密,口令的泄密將會(huì)導(dǎo)致用戶的帳號(hào)被他人盜用。通常用戶的帳號(hào)信息保存在用戶帳號(hào)數(shù)據(jù)庫中,如果用戶的口令在數(shù)據(jù)庫中以明文方式存放,所有有權(quán)訪問用戶帳號(hào)數(shù)據(jù)庫的個(gè)人可以容易地得到其他人的口令。如果黑客得到了訪問用戶帳號(hào)數(shù)據(jù)庫的機(jī)會(huì),那么,所有用戶的口令將被泄露。若在用戶帳號(hào)數(shù)據(jù)庫中不直接存放用戶的口令而存放口令的散列值,則可達(dá)到有效保護(hù)用戶口令的目的。為了防止“字典”攻擊,在用戶帳號(hào)數(shù)據(jù)庫中不直接存放口令的散列值,而存放一隨機(jī)字符串和用戶口令相加所構(gòu)成的字符串的散列值。例如若用戶設(shè)定口令為abc123,存放的隨機(jī)字符串為sdafhb2n4c1a8sdjhf1sa,則存放應(yīng)用本發(fā)明方法生成的散列值(256比特)50d0eaob1c8f5668399cd529d39d3c9a74556062b05928864c040ed6816a42b9。由于散列函數(shù)的單向性,黑客即使獲得該散列值,也無法獲得該用戶的口令。為了驗(yàn)證本發(fā)明方法的效果,對(duì)上述方法得到的散列函數(shù)的性能分析如下1.分段式非線性碼字?jǐn)U展方案的差分?jǐn)U散特性分析對(duì)本發(fā)明算法所采用分段式非線性碼字?jǐn)U展方案進(jìn)行差分?jǐn)U散特性試驗(yàn)隨機(jī)選取一個(gè)消息分組(512比特),每次改變一個(gè)比特,觀察其在隨后的遞歸過程中對(duì)1536(48*32)個(gè)擴(kuò)展比特位的影響,測試結(jié)果如圖3所示。表2給出SHA-1、SHA-256及本發(fā)明算法分別采用的碼字?jǐn)U展方式的消息差分?jǐn)U展最小及最大碼字重量。這里實(shí)驗(yàn)得出的碼字重量是在隨機(jī)選定一組消息(512比特),每次改變其一個(gè)比特時(shí)得到的結(jié)果。模加運(yùn)算具有非線性特征,本發(fā)明算法采用的分段式非線性碼字?jǐn)U展方案在采用模加運(yùn)算的基礎(chǔ)上,進(jìn)一步引入了整數(shù)非線性映射,使碼字?jǐn)U散過程變得十分復(fù)雜.表2列出的實(shí)驗(yàn)結(jié)果足以說明,分段式非線性碼字?jǐn)U展方式加劇了消息差分?jǐn)U散程度。另外,在P4、2.0GHz主頻條件下,對(duì)SHA-256擴(kuò)展碼字及本文給出的分段式非線性擴(kuò)展碼的運(yùn)算效率進(jìn)行測試,后者比前者快約10%左右。表2三種碼字?jǐn)U展方式的比較2.本發(fā)明算法非線性擴(kuò)散特性的統(tǒng)計(jì)分析用統(tǒng)計(jì)方法對(duì)密碼算法的非線性擴(kuò)散程度進(jìn)行分析通常要包括算法的完全性、雪崩效應(yīng)及嚴(yán)格雪崩準(zhǔn)則等方面。完全性是指函數(shù)輸出值的每一個(gè)比特都與消息輸入的所有比特有關(guān),雪崩效應(yīng)是指消息輸入中任意一個(gè)比特的改變都應(yīng)造成輸出平均半數(shù)比特的改變,嚴(yán)格雪崩準(zhǔn)則是指消息輸入中任意一個(gè)比特的改變都會(huì)造成輸出的每一個(gè)比特以1/2的概率發(fā)生改變。設(shè)H是一個(gè)n比特輸入m比特輸出的Hash算法,輸入向量為x=(x1,...,xn)∈(0,1)n,僅改變x的第i比特后的輸入向量為x(i)∈(0,1)n。它們經(jīng)過壓縮映射后對(duì)應(yīng)的輸出向量分別記為H(x)、H(x(i))∈(0,1)m。(.)j表示向量的第j比特,w(.)表示向量的漢明重量,#{.}表示集合的勢。設(shè)X為Hash算法輸入的樣本空間,記aij=#{x∈X|(H(x))j≠(H(x(i)))j}(其中i=1,2,...,n;j=1,2,...,m)表示X中的輸入向量x和x(i)對(duì)應(yīng)的輸出向量之間第j比特不同的個(gè)數(shù);bij=#{x∈X|w(H(x(i))-H(x))=j(luò)}(其中i=1,2,...,n;j=1,2,...,m)表示X中的輸入向量x和x(i)對(duì)應(yīng)的輸出向量之間的差分漢明重量為j的個(gè)數(shù)。定義3個(gè)統(tǒng)計(jì)度量完備性程度的度量雪崩效應(yīng)程度的度量嚴(yán)格雪崩程度的度量若H(.)是隨機(jī)變換,zα/2表示標(biāo)準(zhǔn)正態(tài)分布的α/2分位點(diǎn),則有1)測試的樣本量X至少應(yīng)為nm×(zα/2)2;2)p(dc)=1-2-#x≈1.0;3)其置信區(qū)間為4)其置信區(qū)間為測試其統(tǒng)計(jì)量dc,da,dsa,若落入其置信區(qū)間,則說明散列算法滿足非線性擴(kuò)散的基本要求,即可認(rèn)為散列函數(shù)具有很好的完全性和雪崩效應(yīng),滿足嚴(yán)格雪崩準(zhǔn)則。取輸入長度n=512比特,輸出長度m=256比特,在顯著水平α=0.05下,理論上得到如下結(jié)果1)zα/2=1.96,選取樣本容量X為503526;2)dc=1.000000;3)E{da}=0.999930,其置信區(qū)間為(0.9999221,0.9999373);4)E{dsa}=0.998876,其置信區(qū)間為(0.9988679,0.9988831).隨機(jī)選取503526組512比特字(取自VisualC的Rand())的樣本集X作為本文算法的消息輸入,對(duì)本發(fā)明算法進(jìn)行實(shí)際測試,實(shí)測結(jié)果如表3所示。表3非線性擴(kuò)散性能逐拍統(tǒng)計(jì)結(jié)果對(duì)SHA-256進(jìn)行同樣的測試,實(shí)測結(jié)果如表4所示。表4SHA-256擴(kuò)散性能的逐拍統(tǒng)計(jì)結(jié)果從表3可以看出,在顯著水平α=0.05的情況下,本發(fā)明方法在迭代1拍之后統(tǒng)計(jì)量dc,da,dsa落入了各自的置信區(qū)間,從而滿足了散列算法的非線性擴(kuò)散性要求,明顯優(yōu)于表4給出的SHA-256的實(shí)驗(yàn)結(jié)果(由于本發(fā)明算法采用了并行迭代結(jié)構(gòu),其迭代1拍可以粗略地對(duì)應(yīng)于SHA-256迭代8拍,依次地,迭代2拍對(duì)應(yīng)于SHA-256迭代16拍,......)。3.本發(fā)明算法抗碰撞性分析抗碰撞性是散列函數(shù)的一個(gè)非常重要的性質(zhì),即找到兩個(gè)能產(chǎn)生相同散列值的隨機(jī)消息在計(jì)算上是不可能的。通過以下的實(shí)驗(yàn)可以定量測試本文算法的抗碰撞能力在明文空間中隨機(jī)選取一段明文求出其散列值,并以單字節(jié)字符的方式來表示,然后隨機(jī)地選擇并改變明文中1比特的值得到另一新的散列結(jié)果。定義兩個(gè)散列值之間的距離為其中ei和e′i分別是最初的和新的散列值的第i個(gè)字符,S為散列值對(duì)應(yīng)字符的個(gè)數(shù),函數(shù)t(·)將ei和e′i轉(zhuǎn)換成對(duì)應(yīng)的十進(jìn)制數(shù)。若兩個(gè)散列值分別由兩個(gè)獨(dú)立的均勻分布的隨機(jī)序列所組成,則理論上散列值的單位字符的平均距離為85.33。取輸入長度n=1024比特,隨機(jī)選擇輸入樣本,測試其輸出的單位字符的平均距離。對(duì)本發(fā)明進(jìn)行10萬次統(tǒng)計(jì)測試,得到實(shí)際的測試結(jié)果如表5所示。表5抗碰撞性的逐拍統(tǒng)計(jì)結(jié)果從表5可以看出,本文算法在迭代2拍之后,其輸出的單位字符的平均距離趨于穩(wěn)定,并且與理論值十分接近。這一測試結(jié)果表明,僅有1比特不同的兩個(gè)明文所得到的兩個(gè)散列值統(tǒng)計(jì)上等價(jià)于由相互獨(dú)立的兩個(gè)均勻隨機(jī)序列構(gòu)成。因此,依據(jù)本概率模型,無法將本發(fā)明方法與隨機(jī)映射相區(qū)分。為便于比較,表6給出SHA-256的抗碰撞性的實(shí)測結(jié)果。從表6可以看出,SHA-256算法在迭代24步之后,其輸出的單位字符的平均距離趨于穩(wěn)定。表6SHA-256算法抗碰撞性的逐拍統(tǒng)計(jì)結(jié)果4.本發(fā)明算法的執(zhí)行效率表7給出了在P4、2.0GHz主頻條件下,三種散列函數(shù)(本發(fā)明算法,SHA-256,SHA-1)用C語言實(shí)現(xiàn)的速度的測試結(jié)果。從表7可見,本發(fā)明算法明顯比傳統(tǒng)散列算法的速度要快。另外,本發(fā)明算法的內(nèi)部迭代結(jié)構(gòu)使得它易于并行實(shí)現(xiàn),在時(shí)間性能上還有較大的提升空間。表7三種Hash函數(shù)的速度比較(Mbps)權(quán)利要求1.一種基于整數(shù)非線性映射的散列函數(shù)構(gòu)造方法,包括下列步驟(1)消息填充將任意長度的明文消息M分割成1024比特的消息塊M0,...,MI,...,Mt,最后一個(gè)塊填充為Mt=*...*10...0Mdlen(H)Length(M),其中Mdlen(H)表示輸出的散列長度,長度為10比特,Length(M)表示M的長度的二進(jìn)制形式,長度為64比特;將每個(gè)消息塊Mi劃分成兩組,每組由16個(gè)32比特的消息字組成,分別為m0,m1,...,m15及m′0,m′1,...,m′15;(2)給定一組初始向量及參數(shù)k0=0x5a827999,k1=0x6ed9eba1,k2=0x8f1bbcdc,k3=0xca62c1d6,k4=0x99728a5a,k5=0x1abe9de6,k6=0xcdcbb1f8,k7=0x6d1c26ac;(3)非線性分段式碼字?jǐn)U展利用上式對(duì)消息字m0,m1,...,m15及m′0,m′1,...,m′15進(jìn)行消息擴(kuò)展,先通過循環(huán)移位及模加方式進(jìn)行10次迭代操作,隨后再利用非線性映射進(jìn)行碼字?jǐn)U展,得到擴(kuò)展后的碼字序列W0,W1...,W63及W′0,W′1,...,W′63;(+表示mod232的加法運(yùn)算,∨表示逐比特邏輯或,表示逐比特邏輯異或,<<表示左移位操作,>>表示右移位操作,<<<表示循環(huán)左移位操作);(4)并行方式的混合迭代運(yùn)算1)2)Fort=0to11{當(dāng)t為偶數(shù)時(shí),k=(t/2)*8+16;Gi=(((xi(-(xi>>31)))<<1)∨(xi>>31))+Wi+ki=0,7i=0,...,7當(dāng)t為奇數(shù)時(shí),k=((t-1)/2)*8+16;Gi=(((xi(-(xi>>31)))<<1)∨(xi>>31))+W′i+ki=0,...,73)將x0(0),...,x7(0)分別加到x0,...,x7,即4)對(duì)剩下的消息塊繼續(xù)2)、3)的操作,直到最后一個(gè)消息塊;(5)散列輸出并行迭代結(jié)束后,最后的輸出結(jié)果即為256比特的散列值x0||x1||x2||x3||x4||x5||x6||x7。根據(jù)不同場合的應(yīng)用需求,通過輸出變換,得到輸出結(jié)果為128,160,192,224或256比特的消息摘要。全文摘要一種涉及信息系統(tǒng)安全工程技術(shù)的基于整數(shù)非線性映射的散列函數(shù)構(gòu)造方法,包括以下步驟(1)消息填充;(2)設(shè)定一組初始向量及參數(shù);(3)對(duì)消息分組進(jìn)行非線性分段式碼字?jǐn)U展;(4)采用耦合映像系統(tǒng)模型進(jìn)行并行式混合迭代運(yùn)算,實(shí)現(xiàn)擴(kuò)展碼字與鏈接變量的混淆與擴(kuò)散;(5)可變長度散列輸出。本發(fā)明的散列函數(shù)構(gòu)造方法多用于數(shù)字證書,電子簽名,口令保護(hù),數(shù)字完整性驗(yàn)證等領(lǐng)域,采用了非線性分段式碼字?jǐn)U展技術(shù),加速了碼字的非線性擴(kuò)散程度,將整數(shù)非線性映射與邏輯函數(shù)相結(jié)合,具有較為理想的混淆與擴(kuò)散特性,本發(fā)明壓縮函數(shù)內(nèi)部采用并行迭代結(jié)構(gòu),有利于軟硬件高速并行實(shí)現(xiàn),構(gòu)造方法運(yùn)算效率高,易于修改補(bǔ)充和維護(hù)。文檔編號(hào)H04L9/30GK101741560SQ20081022611公開日2010年6月16日申請(qǐng)日期2008年11月14日優(yōu)先權(quán)日2008年11月14日發(fā)明者劉建東申請(qǐng)人:北京石油化工學(xué)院