一種基于延遲發(fā)生器的散列方法
【專利摘要】本發(fā)明公開了一種基于反饋步進延遲發(fā)生器的消息散列方法,消息散列過程由消息填充、消息注入、消息混淆和消息輸出4個階段組成。在消息注入、消息混淆和消息輸出均采用輪函數對數據進行處理。輪函數交替采用基于線性反饋函數的m?序列延遲發(fā)生器,對消息進行反饋步進、循環(huán)移位等處理,快速獲得可變長、抗碰撞的消息散列值。本發(fā)明可獲得任意長度的消息散列值,具有較高的線性復雜度,算法結構簡單,易于硬件實現。
【專利說明】
一種基于延遲發(fā)生器的散列方法
技術領域
[0001] 本發(fā)明屬于信息加密領域,特別涉及一種基于延遲發(fā)生器的消息散列方法。
【背景技術】
[0002] 數據完整性是數據安全的一個重要方面。散列技術是保護數據完整性的關鍵技 術。目前國際上通用的數據散列技術如MD5、SHA-1、RIPEMD等主要基于MD4算法,采用壓縮函 數對固定長度的數據分組進行多輪壓縮處理,獲得定長的散列值。但近幾年來,上述國際標 準的數據散列方案已被中國密碼學家破解,其可用性面臨嚴峻的挑戰(zhàn)。
[0003]線性反饋移位寄存器由串聯的η個二元寄存器及1個反饋函數網絡構成。每一時刻 移位寄存器的狀態(tài)作為反饋函數的輸入,其輸出反饋至第一級移位寄存器以形成下一時刻 的狀態(tài),移位寄存器的功能由它的狀態(tài)轉移變換來確定,而它的狀態(tài)轉移變換又完全由反 饋布爾函數來決定。延遲發(fā)生器是一類基于本原多項式線性反饋的移位寄存器,通過對一 組延遲發(fā)生器進行組合,可以大大提高系統的線性復雜度,有效防范各種密碼分析和惡意 攻擊。
【發(fā)明內容】
[0004] 本發(fā)明的主要目的在于克服現有技術的缺點與不足,提供一種新的消息散列方 案,其能夠基于延遲發(fā)生器對消息進行單向散列處理,以保證數據的完整性和可鑒別性,且 具有實現簡單、處理速度快的優(yōu)點。
[0005] 為了達到上述目的,本發(fā)明采用以下技術方案:
[0006] 本發(fā)明一種基于延遲發(fā)生器的散列方法,消息散列過程由消息填充、消息注入、消 息混淆和消息輸出4個階段組成,具體包括下述步驟:
[0007] S1、對待處理消息序列進行消息填充,并交替采用基于線性反饋函數的延遲發(fā)生 器構造一個輪函數;
[0008] S2、分別將輪函數應用于消息注入階段、消息混淆階段和消息輸出階段,對消息進 行反饋步進、循環(huán)移位處理,快速獲得可變長、抗碰撞的消息散列值。
[0009] 作為優(yōu)選的技術方案,步驟S1中,所述消息填充的方法是將待處理消息序列填充 至16的倍數字長,即512位的倍數長,具體方法是:如果消息序列長度等于16的倍數,不需要 添加;否則先添加一個1,然后填充若干個〇,使得整個消息串是16的倍數字長。
[0010] 作為優(yōu)選的技術方案,在步驟S2中,消息注入的方法為如下的多輪迭代:
[0011] for i = 0to np-l
[0012]
[0013] S-R(S)
[0014] 其中S為狀態(tài)值,存儲中間過程數據,每個狀態(tài)為512位,每一個狀態(tài)的初值皆為0; FI為注入函數;R為輪變換函數;迭代輪數nP為填充后的消息字序列長度除以16。
[0015] 作為優(yōu)選的技術方案,所述注入函數FI采用線性反饋變換,即使用基于線性反饋 函數 Xi = Xi-11+Xi-13+Xi-14+Xi-16 的延遲發(fā)生器將消息字序列{pi6i,pi6i+l,Pl6i+2,…,pi6i+15}反 饋步進16次。
[0016] 作為優(yōu)選的技術方案,在注入階段第i輪中,對消息字序列{Pl6l,Pl6l+1,Pl6l+2,…, p16l+15}使用注入函數FI進行處理后,將反饋步進16次后所得16字長消息字序列與狀態(tài)S進 行逐位異或后存為狀態(tài)S。
[0017] 作為優(yōu)選的技術方案,在步驟S2中,所述消息混淆階段采用輪函數R對前面生成的 狀態(tài)S進一步進行nb輪變換:
[0018] for i = 0to nb-l:S-R(S)
[0019] 典型地,nb取值16。
[0020] 作為優(yōu)選的技術方案,在步驟S2中,所述消息輸出階段輸出n。個字長的消息散列 值,過程如下:
[0021] for i = 0to n〇:
[0022] ① S-R(S)
[0023] ②取每一輪狀態(tài)S的第1個字構成加入散列值序列;
[0024]其中R為輪變換函數。
[0025]作為優(yōu)選的技術方案,步驟S1中,所述輪函數R由如下三步構成:
[0026]①首先為線性反饋變換:采用基于線性反饋函數Xi = Xi-1Q+Xi-12+Xi-15+Xi-16的延遲 發(fā)生器對上一步運算所得狀態(tài)S進行反饋步進16次,所得序列仍存為狀態(tài)S;
[0027]②其次是循環(huán)移位變換:對狀態(tài)S = {χο,χ?,χ2,…,Χ14,χ15}中每一個字,按旋轉變 換Xi = :xi>>> (i (i+1 )/2mod 32)進行按位循環(huán)移位,仍存為狀態(tài)S;
[0028]③再次為線性反饋變換:采用基于線性反饋函數Xi = Xi-8+Xi-9+Xi-11+Xi-16的延遲發(fā) 生器將S= {χ〇,:Χ1,Χ2,…,X14,X15}反饋步進16次,序列后仍存為狀態(tài)S。
[0029] 本發(fā)明與現有技術相比,具有如下優(yōu)點和有益效果:
[0030] 1、本發(fā)明采用線性反饋延遲發(fā)生器構造散列方案,執(zhí)行效率、安全性能和硬件實 行性能優(yōu)于采用傳統方法構造的散列方案。
[0031] 2、本發(fā)明中采用基于m-序列的延遲發(fā)生器組合用于輪函數,具有良好的偽隨機 型、較高的線性復雜度等特性,算法結構簡單,易于硬件實現。
[0032] 3、本發(fā)明可以根據需要生成任意32位之倍數長度的消息散列值。
【附圖說明】
[0033]圖1是本發(fā)明的系統流程圖。
[0034]圖2是本發(fā)明的線性反饋變換1示意圖。
[0035]圖3是本發(fā)明的輪變換結構圖。
[0036] 圖4是本發(fā)明的線性反饋變換2示意圖。
[0037] 圖5是本發(fā)明的的循環(huán)移位變換示意圖。
[0038] 圖6是本發(fā)明的線性反饋變換3示意圖。
【具體實施方式】
[0039]下面結合實施例及附圖對本發(fā)明作進一步詳細的描述,但本發(fā)明的實施方式不限 于此。
[0040] 實施例
[0041] 鑒于目前多數手機設備、PDA和智能卡等為32位處理器,本實施實例假設每一消息 字為32位。
[0042] 本發(fā)明實施過程包括消息填充、消息注入、消息混淆和散列值輸出4個階段。本發(fā) 明執(zhí)行流程如附圖1所示。
[0043] 1、消息填充階段
[0044] 消息填充方案將待處理消息序列填充至16的倍數字長,亦即512位的倍數長。例如 對長度為1000個字的消息串,需要填充至1008個字。
[0045] 填充方法是:如果消息序列長度等于16的倍數,不需進行填充;否則先添加一個位 1,然后填充若干個位〇,使得整個消息串是16的倍數字長,亦即消息數據位長為512的整數 倍。例如對長度為1000個字的消息串,需要填充10000000000000000000000000000000、 00000000000000000000000000000000、00000000000000000000000000000000、 00000000000000000000000000000000、00000000000000000000000000000000、 00000000000000000000000000000000、00000000000000000000000000000000、 00000000000000000000000000000000 等 8 個字。
[0046] 經過填充后的消息序列為{列,戶1,戶2,···,;%*]6-1 },其中nP為512位明文數據塊的 數量。
[0047] 上面1000個字的消息序列,填充后長1008個字,共nP = 63個數據塊。
[0048] 2、消息注入階段
[0049] 在散列運算過程中,中間運算的每個512位(即16個32位字)稱為一個狀態(tài),記為S =S= {χο,χ?,X2,…,X14,X15},每 一Xi 為一個 32 位字。
[0050] 對于個消息注入方案為如下的多輪迭代:
[0051] for i = 0to nn-l
[0052]
[0053] S-R(S)
[0054] 其中S為存儲散列處理中間過程數據的狀態(tài)值,每個狀態(tài)為512位(或16個32位 字),每一個狀態(tài)的初值皆為0; FI為注入函數;R為輪變換函數;迭代輪數nP為填充后的消息 字長除以16。
[0055] 其中注入函數FI采用基于線性反饋函數器Xi = Xi-ii+Xi-i3+Xi-i4+Xi-i6的延遲發(fā)生對 消息字序列{p16l,p16l+1,p16l+2,…,p16l+15}按字反饋步進16次。所采用延遲發(fā)生器的線性反 饋變換1如附圖2所示。
[0056] 在注入階段第i輪中,對消息字序列卜^口他+^他+:^…^他仙丨使用注入函數?! 進行處理后,將反饋步進16次后所得16字長消息字序列與狀態(tài)S進行逐位進行異或運算后 存為狀態(tài)S。
[0057] 其中輪函數R結構圖如附圖3所示。輪變換構成如下:
[0058] ①首先,采用基于線性反饋函數Xi = Xi-lQ+Xi-12+Xi-15+Xi-16的延遲發(fā)生器對上一步 運算所得狀態(tài)S進行按字反饋步進16次,所得序列仍存為狀態(tài)S。這里所采用延遲發(fā)生器的 線性反饋變換2如附圖4所示。
[0059] ②其次,對狀態(tài)S= { XQ,XI,X2,…,X14,X15 }中每一個字,按循環(huán)移位變換Xi = Xi>>> (i(i+l)/2mod 32)進行按位循環(huán)移位,仍存為狀態(tài)S。循環(huán)移位變換如附圖5所示。
[0000]③再次,采用基于線性反饋函數Xi = Xi-8+Xi-9+Xi-11+Xi-16的延遲發(fā)生器將S= {xo, X1,X2,…,X14,X15}線性反饋按字步進16次,仍存為狀態(tài)S。采用延遲發(fā)生器的線性反饋變換3 如附圖6所示。
[0061] 如果有特殊的安全要求,輪函數中線性反饋步進次數可以根據需要增加,如由16 次增加至24次、32次。延遲發(fā)生器可以采用同類基于線性反饋函數的延遲發(fā)生器,如Xl = Xi-11+Xi-12+Xi-13+Xi-16 或 Xi = Xi-8+Xi-11+Xi-13+Xi-14+Xi-15+Xi-16 〇
[0062] 3、消息混淆階段
[0063] 采用輪函數R對前面生成的狀態(tài)進一步進行多輪變換:
[0064] for i = 0to 15:S-R(S)
[0065] 如果有特殊的安全要求,輪函數也可增加到24輪甚至32輪,即:
[0066] for i = 0to 23:S^R(S)
[0067] 或
[0068] for i = 0to 31:S-R(S)
[0069] 4、散列輸出階段
[0070] 輸出階段輸出256位的消息散列值,過程如下:
[0071 ] for i = 0to 7 :
[0072] ① S-R(S)
[0073] ②取每一輪狀態(tài)S的第1個字構成加入散列值序列。
[0074]如此構造出一個256個字長的消息散列值。
[0075]同樣,如上述循環(huán)4次可得到128位散列值,循環(huán)5次可得到160位散列值,循環(huán)6次 可得到192位散列值,循環(huán)7次可得到224位散列值,循環(huán)12次可得到384位散列值,循環(huán)η次 可構成任意的η*32位散列值。
[0076]上述實施例為本發(fā)明較佳的實施方式,但本發(fā)明的實施方式并不受上述實施例的 限制,其他的任何未背離本發(fā)明的精神實質與原理下所作的改變、修飾、替代、組合、簡化, 均應為等效的置換方式,都包含在本發(fā)明的保護范圍之內。
【主權項】
1. 一種基于延遲發(fā)生器的散列方法,其特征在于,消息散列過程由消息填充、消息注 入、消息混淆和消息輸出4個階段組成,具體包括下述步驟: 51、 對待處理消息序列進行消息填充,并交替采用基于線性反饋函數的延遲發(fā)生器構 造一個輪函數; 52、 分別將輪函數應用于消息注入階段、消息混淆階段和消息輸出階段,對消息進行反 饋步進、循環(huán)移位處理,快速獲得可變長、抗碰撞的消息散列值。2. 根據權利要求1所述的基于延遲發(fā)生器的散列方法,其特征在于,步驟Sl中,所述消 息填充的方法是將待處理消息序列填充至16的倍數字長,即512位的倍數長,具體方法是: 如果消息序列長度等于16的倍數,不需要添加;否則先添加一個1,然后填充若干個0,使得 整個消息串是16的倍數字長。3. 根據權利要求1所述的基于延遲發(fā)生器的散列方法,其特征在于,在步驟S2中,消息 注入的方法為如下的多輪迭代: for i = 0 to nP-l S^R(S)其中S為狀態(tài)值,存儲中間過程數據,每個狀態(tài)為512位,每一個狀態(tài)的初值皆為0 ;FI為 注入函數;R為輪變換函數;迭代輪數如為填充后的消息字序列長度除以16。4. 根據權利要求3所述的基于延遲發(fā)生器的散列方法,其特征在于,所述注入函數FI采 用線性反饋變換,即使用基于線性反饋函數Xi = Xi-ll+Xi-13+Xi-14+Xi-16的延遲發(fā)生器將消息 字序列{pi6i,Pl6i+1,Pl6i+2,…,Pl6i+15 }反饋步進 16次。5. 根據權利要求3所述的基于延遲發(fā)生器的散列方法,其特征在于,在注入階段第i輪 中,對消息字序列{ρ16ι,ρ 16ι+1,ρ16ι+2,···,ρ16ι+15}使用注入函數FI進行處理后,將反饋步進16 次后所得16字長消息字序列與狀態(tài)S進行逐位異或后存為狀態(tài)S。6. 根據權利要求3所述的基于延遲發(fā)生器的散列方法,其特征在于,在步驟S2中,所述 消息混淆階段采用輪函數R對前面生成的狀態(tài)S進一步進行n b輪變換: for i = 0 to nb-l:S-R(S) 典型地,nb取值16。7. 根據權利要求1所述的基于延遲發(fā)生器的散列方法,其特征在于,在步驟S2中,所述 消息輸出階段輸出η。個字長的消息散列值,過程如下: for i = 0 to n〇: ① S-R(S) ② 取每一輪狀態(tài)S的第1個字構成加入散列值序列; 其中R為輪變換函數。8. 根據權利要求1所述的基于延遲發(fā)生器的散列方法,其特征在于,步驟Sl中,所述輪 函數R由如下三步構成: ① 首先為線性反饋變換:采用基于線性反饋函數Xi = Xi-lQ+Xi-12+Xi-15+Xi-16的延遲發(fā)生 器對上一步運算所得狀態(tài)S進行反饋步進16次,所得序列仍存為狀態(tài)S; ② 其次是循環(huán)移位變換:對狀態(tài)S = { XQ,Xl,X2,…,X14,X15 }中每一個字,按旋轉變換Xi = xi>>>(i (i+1 )/2mod 32)進行按位循環(huán)移位,仍存為狀態(tài)S; ③再次為線性反饋變換:采用基于線性反饋函數Xl = Xl-8+Xl-9+Xl-n+ Xl-16的延遲發(fā)生器 將5={10,11,12,"_,114,115}反饋步進16次,序列后仍存為狀態(tài)5。
【文檔編號】H04L9/06GK105897404SQ201610374498
【公開日】2016年8月24日
【申請日】2016年5月30日
【發(fā)明人】梁英宏, 劉義春
【申請人】廣東財經大學