專利名稱:基表變量偽隨機序列和雜湊函數的制作方法
技術領域:
密碼學對稱密鑰加密,雜湊函數
背景介紹 1).用于加密的基表變量偽隨機序列BTS BTS基表變量循環體是以變量取代MD5中固定字表,IV,以及消息輸入子塊,融入 了加密密鑰K進行運算的循環體,輸出大周期偽隨機序列。它利用并增強了 MD5隨機性又 具有龐大周期,不依賴于任何預置的IV,因而BTS既可以獲得MD5的輸出隨機性,在計算安 全性基礎上又可以隨意設置IV,用同一個密鑰K下組織多個獨立循環體,從而可進行大規 模并行運算,為加密提供高速和安全的偽隨機序列。
2).用于雜湊的基表雜湊函數BTH 將明文的每一個分組塊512比特當作BTS的加密密鑰,作4輪16步的運算,寄存 器變量abed的4個第16步輸出的128位,即hp^h^^級聯構成這個明文塊的256位雜 湊值;以每個第16步時abcd和連續多個運算過程中的查表變量值為下一輪(第四輪的狀 態為下一個明文塊的)的初始IV。以多層查表變量取代了 MD5或SHA的固定字表以及IV 設置,并定義為下一輪的初始IV,獨特的BTH在預防自由起始端攻擊,生日攻擊等各類攻擊 時,比通常的雜湊函數更具有優良的抗碰撞特性。
發明內容
1.基表變量序列BTS 1. 1建立一個公開固定的基礎表 我們以所有不同的單節字為基元,隨機亂序排列成總共長度為256B的固定序列 表"PBS", 將PBS基礎表放在連續的物理內存中,它是只讀順序表,因而,對于此表上的任意 一個數據單 元,都可以隨機讀取。 實際建立獨立的2個PBS基礎表,"PS"和"QS" 用P(t)來表示在PS上查表獲得單字節基元,t為對應基元的地址; 用Q(t)來表示在QS上查表獲得單字節基元,t為對應基元的地址; 要求PS和QS上的基元分布隨機均勻,且對于任意一個t(O《t《255),有
P(t) # Q(t) 1.2定義基元項& 密鑰K為144比特長,拆分為16比特的子密鑰K。, Kn, &,, K8
Ri是由四個8比特基元P(tJ, P(t2i), Q(tu), Q(t2i)串接構成的32比特字& = P (t ) P (t2i) Q (tu) Q (t2i)是以16位子密鑰產生的32位的特定字,可排除規律的特殊的比特 排列,例如& # 0 1. 3利用MD5形式,主寄存器運算器變量ABCD 和MD5 —樣,由4個32比特的寄存器A, B, C, D組成的累加器,a, b, c, d代表這4個寄存器變量組成abcd,進行運算并存儲運算結果)。 初始化后,輸入Ri及其他輸入項,每輪進行9步的移位和累加運算,輸出128比特。
1. 4基表變量序列BTS算法(以下所有加法為模加,"一"表示同時賦值,"<<<"為循環左移。) 初始化abcd = N。 R—丄=N" R—2 = N2, R—3 = N3, R—4 = N4, R—4 = N5,常量W = N6其
中N。,NpN2,N3,N4,Ns,N6 為6個給定的32比特常量,N。為給定的128比特常量
整型變量i,j步數i(0《i《8),設定最大輪數j^。
每一輪共9步,每一步輸入&獲得&后,輸入為abcd, &, R卜5
對于j輪,第i步0《i《8(0《j《jmax) (1)第j輪第i步開始時,abed記為(abed) t。」,abed中32比特的b順序寫為4個 8比特的Sl, s2和Ql, q2,子密鑰16比特&寫為2個8比特的Ku, K2i
t = qu+i+j+Ku (8位模加)
t2i = q2i+i+j+K2i (8位模加)
I j = P (tu) P (t2i) Q (t ) Q (t2i) b = b+(R卜4。 j <<< (i+l)+W) <<< (Slmod32)(加法為32位模加) a = a+(ProcessPi(b, c, d)+Ri。 j+b) <<< (s2mod32) (ProcessPi (b, c, d)為處理
P函數,見后)(加法為32位模加) (a, b, c, d) — (d, a, b, c)(同時賦值)此時abed即為(abed) i+1。 j (2)(abcd)8。」為j輪的y」, j+1輪的初始化令(abcd)。。 j+1 = (abcd)8。」; (R—5,j+1, R—4, j+1R—" R—3,j+1, R—2,j+1, R—一(R" R5,j R6,j R7,」R8,j);(同時賦值) j = o時,獲得y。, l《j起輸出Y,; y。
yv y」為輸出序列 j+l,進入下輪 ......, 直至j = j^,結束 2.基表變量循環體構造的雜湊函數BTH 將明文的一個512分組當作基表變量循環體的密鑰K,把基表變量循環體稍作改 動,就可以構成一個新雜湊函數BTH。進行MD強化后,明文總共m個512位分組,我們用 K^,……Kj,……,Km來表示各個分組 每個分組為512比特,依次拆為32比特的&。」其中0《i《15, 1《j《m
每個明文分組進行4輪,各16步的運算,每輪的第16步的(abcd)w輸出128比特, 分別記為hph2,h3,h4^,h2串接成256比特,hj |h2, I I為級聯符號,@表示位異或,<<<表 示循環左移,一表示同時賦值。Hj= ( (h II h2) @ (h3 II h4) ) @Hj—L為256比特 當j = m時,最終的Hm為整個明文的雜湊值。預定義H。值雜湊時的&定義
第i步,abed中32比特的b順序寫為4個8比特的Ql, q2, q3, q4明文分組Kj的第 i+1個32比特的ki。 j拆為8比特的ku, k2i, k3i, k4i
t = q,i+j+ku (8位模加)
t2i = q2+i+j+k2i (8位模加) t3i = q3+i+j+k3i (8位模加) t4i = q4+i+j+k4i (8位模加)
其中ri = P(tli)P(t2i)Q(t3i)Q(t4i) (1)第j分組第n輪第i步開始時,(1《n《4) Rin = k卜Ln (P (t") P (t2i) Q (t3i) Q (t4i)) b = b+ (1\+W) < < < (qimod32); (T" T2, T3, T4, T5) — (T2, T3, T4, T5, RLn <<< (i+1))此為(1\, T2, T3, T4, T5)Ln a = a+(ProcessPi(b, c, d)+Ri n+b) <<< (q2mod32) (a, b, c, d) — (d, a, b, c)此為(abcd)i n (2)n+l輪的初始化 (abed) o n+1 = (abed) 15 n ; (1\, T2, T3, T4, T5)0.n+1 = (1\, T2, T3, T4, T5)15.n 即n輪最后一步abed和1\, T2, T3, T4, T5的狀態,為n+1輪的初始狀態。 hn = (abcd)15 n n = n+l,…,直到n = 4時,得到h4 H尸((ht II h2) (h3 II h4) ) 1 (3) j+1分組的初始狀態(i = 0, n = 1)為j分組最后一輪最后一步(i = 15, n =4)的狀態 (abed) oj j+1 = (abed) 15 4」 (1\, T2, T3, T4, T5)0.Lj+1 = (1\, T2, T3, T4, T5)15.4.j j = j + l, ......, —直到j二m,求出Hm
具體實施例方式
以所有不同的單節字為基元,隨機亂序排列成總共長度為256B的固定序列表 "PBS,, 建立獨立的2個PBS基礎表,"PS "和"QS " 用P (t)來表示在PS上查表獲得單字節基元,t為對應基元的地址; 用Q (t)來表示在QS上查表獲得單字節基元,t為對應基元的地址; 要求PS和QS上的基元分布隨機均勻,且對于任意一個t(O《t《255),有
P(t) # Q(t) 定義HHHNe為6個給定的32比特常量,N。為給定的128比特常量。 設置4個32比特的寄存器A, B, C, D組成的累加器,a, b, c, d代表這4個寄存器 變量組成abcd,進行運算并存儲運算結果。設置輔助的5個寄存器變量1\, T2, T3, T4, 1~5,每 個為32比特.定義一個32比特的固定字W。
所有加法為模加,"一"表示同時賦值,"<<<"為循環左移,"@ "表示對應位異
或,所有變量為整形變量。 1)對于基表變量序列BTS 密鑰K為144比特長,拆分為16比特的子密鑰K。, &, …,K8初始化時,1\
=Np T2 = N2, T3N3, T4 = N4, T5 = ^,常量W = N6(abcd)。 = N。變量i, j 步數i (0《i《8),設定最大輪數J隨。 每一輪共9步,每一步輸入&獲得&后,輸入為abcd, &, 1\算法 對于j輪,第i步0《i《8 (0《j《jmax) (1)第j輪第i步開始時,abed記為(abed) t。」,abed中32比特的b順序寫為4個 8比特的Sl, s2和Ql, q2,子密鑰16比特&寫為2個8比特的Ku, K2i t = qu+i+j+Ku (8位模加) t2i = q2i+i+j+K2i (8位模加) 定義Ri是由四個8比特基元P(tJ,P(t2i),Qaj,Q(t2i)串接構成的32比特字 I j = p au) p a2i) q a ) q a2i) b = b+0\+W) <<< (Slmod32);(加法為32位模加) (1\, T2, T3, T4, T5) — (T2, T3, T4, T5, Ri= j <<< (i+1))此為0\, T2, T3, T4, T5)i。」 a = a+(ProcessPi(b, c, d)+Ri。」+b) <<< (s2mod32) (ProcessP丄(b, c, d)為處理 P函數,見后) (a, b, c, d) — (d, a, b, c)(同時賦值)此時abed即為(abed) i+1。 j (2)j + l輪的初始化 (abcd)o。 j+1 = (abcd)8。」,(1\, T2, T3, T4, T5)0。 j+1 = (1\, T2, T3, T4, T5)8。」 即j輪最后一步abed和1\, T2, T3, T4, T5的狀態,為j+1輪的初始狀態。 (3)(abcd)8。』.為j輪的y」, j = o時,獲得y。,1《j起輸出Y,二 y。ey,Yj為輸出序列 j+l,進入下輪 ......, 直至j二Jm^,結束 (4)ProcessPi(b, c, d)處理P函數 i = 0,1,2時:ProcessPi = (bANDc)0R((N0Tb)AND(d)) i = 3,4,5時:ProcessPi = (bANDd)OR(cAND(N0Td)) i = 6,7,8,時ProcessPi = bX0RcX0Rd 2).基表變量循環體構造的雜湊函數BTH 將明文分成每個為512比特的分組,并進行MD強化 原明文長度x,在明文后添加b比特(添加第一個比特為l,后面接著添加b-l個 O),使得添加后的長度x+b = 512m-64(m是正整數)b《512,若x = 512m-64,則b = 512。 最后的明文塊b比特后再加上64位長度值xmod264。這樣明文總共m個512位分組,我們 用&,1(2,……Kj,……,Km來表示各個分組 每個分組為512比特,依次拆為32比特的l j其中0《i《15, 1《j《m 每個明文分組進行4輪,各16步的運算,每輪的第16步的(abcd)^輸出128比特,分別記為^,}12,113,114 h」|h2表示h!, h2串接成256比特,h3| |h4表示h3, h4串接成256比特,"| | "為級 :@ "表示對應比特位異或運算 H尸(II h2) (h31| h4) )Hj—i為256比特
當j 二m時,最終的Hm為整個明文的雜湊值。預定義^值,設置5個輔助的寄存
聯符號,' 0115] :0116]
器變量
:01"] :oi 18]
0119] 0120]
步,abed中32比特的b順序寫為4個8比特的Ql, q2, q3, q4明文分組K」的第i+l個32比 特的b。 j拆為8比特的k , k2i, k3i, k4i q,i+j+ku (8位模加) (8位模加) (8位模加) (8位模加)
定義ri是由四個8比特基元Paj,P(t2i),Q(t3i),Q(t4i)串接構成的32比特字
I\, T2, T3, T4, Ts,每個為32比特。定義變量i, j,n, (1)初始化設置以及雜湊時的&定義 第一個明文塊首輪第一步(j = 0, n = 0, i = 0) 初始化:1\ = N丄,T2 = N2, T3 = N3, T4 = N4, T5
Ns,常量W = N6(abcd)。 = N。第i
0121] 0122] 0123] 0124] :0125] :0126] :0127]
q3+i+j+k3
R,=r. k.
0128] (2)算法
0129] (i)對于第j分組第n輪第i步(1《n《4,0《i《8) 0130] = k,—'』0 (P(tu)P(t2i)Q(t3i)Q(t4i))
0131] b = b+(l\+W) <<< (qimod32);
0132] (1\, T2, T3, T4, T5) — (T2,T3,T4,T.5,Ri.n〈《(i+l))此為(T丄,T2, T3, T4, T5) Ln
0133] a = a+(ProcessPi(b, c, (D+D) <<< (q2mod32)
0134] (a, b, c, d) — (d, a, b, c)此為(abed) i. n
0135] (ii) (abcd)0n+1 = (abcd)15n;
0136] (1\, T2, T3, T4, T5)0.n+1 = (1\, T2, T3, T4, T5)15.n
:0137] 即n+l輪的初始狀態為n輪最后一步abed和1\, T2, T3, T4, T5的狀態。
:0138] hn = (abcd)15n
0139] 直到n = 4時,分別得到h" h2, h3, h4
0140] H尸((h,llh》 (h3||h4) ) Hi—,
0141] (iii) j+1分組的初始狀態(i = 0, n = 1)為j分組最后一輪最后一步(i = 15, =4)的狀態:
0142] (abcd)ai.j+1 二 (abed) i5.4.」
0143] (1\, T2, T3, T4, T5)。.Lj+1 = (1\, T2, T3, T4, T5)15.4.j
0144] j = j + l,
0145] ......,
7
—直到j二m,求出Hm (iv)ProcessPi(b, c, d)同MD5 n = 1時,ProcessPi(b, c, d)= n = 2時,ProcessPi(b, c, d)= n = 3時,ProcessPi(b, c, d)= n = 4時,ProcessPi(b, c, d)=
(bANDc)OR((NOTb)AND(b)) (bANDd) OR(cAND(NOTd)) bXORcXORd cXOR(bOR(麗d))。
權利要求
獲取一種偽隨機序列的方法----基表變量偽隨機序列BTS循環體BTS運用了MD5雜湊函數的結構,直接采用了其非線性運算處理P函數。與MD5不同的是,BTS是一個使用密鑰K創建大周期偽隨機系列的循環,其特征為(1)建立了2個基礎序列表PS,QS,將密鑰K拆為有序的16位子密鑰K0,K1,…,Ki,逐個逐步獲得對應查表變量R0,R1,R2,…,Ri(Ri=P(t1i)P(t2i)Q(t1i)Q(t2i)),以多層查表變量替代MD5結構中固定字表,消息子塊,作為每一步輸入。(2)設立輔助存儲變量T1,T2,T3,T4,T5依次存儲連續的查表變量值。每輪輸出為最后一步abcd值,第一輪最后一步abcd定義為y0,同時,最后一步時的abcd值和T1,T2,T3,T4,T5值為下一輪的初始IV。(3)從第二輪開始輸出序列,對于j輪輸出序列為(或),而不直接給出yj。(4)并行運算方法使用同一密鑰K而將初始的T1,T2,T3,T4,T5,W值,(abcd)0值任意設置,以獲得多個不同的獨立循環體,每個獨立循環體只需要初始設置互不相同,就可以在同一K下,同時輸出獨立的偽隨機序列。F2008101566730C0000011.tif,F2008101566730C0000012.tif
2. —種新雜湊函數一基表變量雜湊函數BTHBTH采用了 MD5的基本結構添加比特MD強化,將明文分為512比特分組,采用了 MD5 處理P函數,寄存器abed結構,每個消息塊512比特經過4輪,每輪16步運算。但BTH與 MD5不同,其特征為(1) BTH把每個消息子塊當作BTS中密鑰K來處理,每一步是采用BTS循環體的多層查 表變量來替代MD5的固定字表,消息子塊作為輸入。(2) BTH采用了輔助變量1\, T2, T3, T4, T5。每輪的每一步,輸入不同層次的查表變量,每 輪的最后一步時輸出的abcd值hn二 (abcd)^(n為輪數,l《n《4)以及1\, T2, T3, T4, T5 同時作為下一輪(或下一個明文塊的首輪)的初始IV。(3) 輸出雜湊值是256位H7.= (II h2)(ha II h4) ) 。
全文摘要
(1)基表變量偽隨機序列BTS預建基表,把144位的密鑰K依次拆分為16比特的子密鑰Ki(0≤i≤8),每輪的每一步以查表變量取代MD5中固定字和消息子塊進行運算,每輪abcd第9步的128位,作為偽隨機序列輸出。BTS具有MD5的隨機性并具有龐大周期,可用同一個密鑰K組織多個獨立循環體,進行大規模并行運算。(2)基表變量雜湊函數BTH將明文的每一個分組塊512比特當作BTS的加密密鑰,作4輪16步的運算,每輪第16步abcd輸出的128位即h1,h2,h3,h4級聯構成這個明文塊的256位雜湊值;以每個第16步時abcd和多個查表變量值為下一輪(第四輪的狀態為下一個明文塊的第一輪)的初始IV。BTH在預防各類攻擊時更強大,更具有抗強碰撞的特性。
文檔編號G09C1/02GK101727772SQ20081015667
公開日2010年6月9日 申請日期2008年10月15日 優先權日2008年10月15日
發明者姚錫根 申請人:姚錫根