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