麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

基于整數非線性映射的散列函數構造方法

文檔序號:371841閱讀:742來源:國知局

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