基于并行循環(huán)移位寄存器的流密碼技術(shù)sprr的制作方法
【專利摘要】移位寄存器是保密通信領(lǐng)域用于產(chǎn)生偽隨機(jī)序列的密碼部件,有線性反饋移位寄存器LFSR和非線性反饋移位寄存器NLFSR等,其最大周期T≤2n。n級(jí)并行循環(huán)移位寄存器PRR的反饋模式為:先求和:σ=ak n?1+…+ak n?n;然后并行計(jì)算n個(gè)字:For i=0 to n?1{j=kn+i;aj=[σ<<<(j mod m)]+aj?n+i}。其中,k≥1,<<<j表示循環(huán)左移j位,mod表示求余數(shù),m取平臺(tái)的位數(shù)。字長(zhǎng)為m位時(shí),n級(jí)PRR和非線性循環(huán)移位寄存器NRR的周期都大于(2m)n,即安全性高于傳統(tǒng)(N)LFSR;PRR和NRR效率也高于常用(N)LFSR。采用1個(gè)PRR和4個(gè)NRR設(shè)計(jì)了一個(gè)流密碼SPRR,其中PRR用于密鑰編排,4個(gè)NRR的輸出進(jìn)行模加產(chǎn)生SPRR的密鑰流。SPRR的效率高于常用對(duì)稱密碼,主要用于網(wǎng)絡(luò)與信息安全中的數(shù)據(jù)加解密。
【專利說明】
基于并行循環(huán)移位寄存器的流密碼技術(shù)SPRR 一、
技術(shù)領(lǐng)域
[0001] 基于并行循環(huán)移位寄存器PRR的流密碼SPRR是保密通信領(lǐng)域的一種對(duì)稱密碼,主 要用于網(wǎng)絡(luò)與信息系統(tǒng)安全中的數(shù)據(jù)加解密。 二、
【背景技術(shù)】
[0002] 密碼體制分為對(duì)稱密碼和非對(duì)稱密碼。由于非對(duì)稱密碼的加密速度遠(yuǎn)小于對(duì)稱密 碼,因此網(wǎng)絡(luò)與信息系統(tǒng)安全中的數(shù)據(jù)加解密盡量采用對(duì)稱密碼,以提高效率。對(duì)稱密碼分 為流密碼和分組密碼,2種對(duì)稱密碼各有優(yōu)缺點(diǎn)。設(shè)計(jì)流密碼的一種常用密碼部件是移位寄 存器,有線性反饋移位寄存器LFSR [1]和非線性反饋移位寄存器NLFSR[2]等,以下合稱(N) LFSR。例如,第2代移動(dòng)通信系統(tǒng)GSM的加密標(biāo)準(zhǔn)A5算法[3'4]、藍(lán)牙加密標(biāo)準(zhǔn)E0算法 [4]和流密 碼國(guó)際標(biāo)準(zhǔn)SN0W2算法[3 ]都采用了 LFSR; Hash函數(shù)標(biāo)準(zhǔn)SHA1和SHA2的消息擴(kuò)展算法[3 ]以及 第3代標(biāo)準(zhǔn)SHA3的多個(gè)候選算法采用了(N)LFSR或其它發(fā)生器。
[0003] η級(jí)(N)LFSR的當(dāng)前輸出比特都是前η比特的邏輯函數(shù),這樣的邏輯函數(shù)共有22"個(gè), 其中線性的有2"個(gè),非線性的有2 2"_2"個(gè)。LFSR采用以下反饋模式由前η比特apan+H線性 遞推下一比特an+i:
[0004] ?η+i - SLi Cn-lcli+1 ClEln+i-1
[0005] 其中,常數(shù)ck = 0或1,1彡k彡n-1,~是異或即模2加法。如果輸入的初始n比特a〇~ 全為0,則LFSR輸出恒為0,因此,η級(jí)LFSR的最大周期為2 n-l。當(dāng)且僅當(dāng)LFSR的反饋多項(xiàng) 式為本原多項(xiàng)式時(shí),LFSR的周期才達(dá)到最大。產(chǎn)生一個(gè)本原多項(xiàng)式并不容易,需借助數(shù)學(xué)軟 件包。SHA1的消息擴(kuò)展算法采用以下模式由前16個(gè)字遞推下一個(gè)字wt:
[0006] Wt= (Wt-3~Wt-8~Wt-14~Wt-16) < < < 1
[0007] 其中,<<<1表示循環(huán)左移1位,字長(zhǎng)m為32b(比特)。這相當(dāng)于字長(zhǎng)m為32b的16級(jí) 發(fā)生器,如果輸入的初始16個(gè)字wo~w 15全為0,則輸出恒為0,因此,其最大周期小于等于 (232)16-Un級(jí)NLFSR的最大周期為2 n。并行循環(huán)移位寄存器PRR和非線性循環(huán)移位寄存器NRR 是2種新型反饋移位寄存器。當(dāng)字長(zhǎng)為m比特時(shí),η級(jí)PRR和NRR的周期都大于(2m)'(N)LFSR軟 件實(shí)現(xiàn)慢,解決的辦法是并行m個(gè)(N)LFSR,相當(dāng)于字長(zhǎng)為m比特,但最大周期還是小于等于 2 n,除非象SN0W2-樣采用模2m的本原多項(xiàng)式,最大周期才小于等于(2T。也就是說,對(duì)于不 同的字長(zhǎng)m和不同的級(jí)數(shù)n,(N)LFSR要尋找不同的反饋模式,周期才能達(dá)到最大。不管字長(zhǎng)m 和級(jí)數(shù)η為多大,PRR和NRR存在統(tǒng)一的反饋模式,無(wú)須尋找達(dá)到最大周期的反饋模式,可以 直接適應(yīng)各種平臺(tái),包括將來128位以上的平臺(tái)。在32位平臺(tái)下(2.4GHz雙核CPU、2GB內(nèi)存、 Windows XP、C語(yǔ)言),SN0W2的LFSR速度為630MB/s;SHAl和SHA256的消息擴(kuò)展算法速度都小 于400MB/s; NRR的速度為700MB/s; PRR的速度達(dá)lGB/s。對(duì)于A5和E0算法采用的LFSR,除非同 時(shí)并行32個(gè)LFSR,效率才和NRR相當(dāng)。對(duì)于周期達(dá)到最大的(N) LFSR,其輸出是絕對(duì)均勻的, 遍歷了所有狀態(tài)才會(huì)重復(fù)。測(cè)試表明,PRR和NRR產(chǎn)生的輸出是偽隨機(jī)均勻的,又能遍歷所有 狀態(tài)。
[0008] 本發(fā)明基于并行循環(huán)移位寄存器PRR和非線性循環(huán)移位寄存器NRR,設(shè)計(jì)了一種流 密碼SPRR。[ 1 ](美)Schneier B.應(yīng)用密碼學(xué)--協(xié)議、算法與C源程序.吳世忠等譯.機(jī)械工 業(yè)出版社,2000-1 · 264~269
[0009] [2](中)王育民,劉建偉.通信網(wǎng)的安全一一理論與技術(shù).西安電子科技大學(xué)出版 社,1999-04.81 ~82
[0010] [3](中)谷利澤,鄭世慧,楊義先.現(xiàn)代密碼學(xué)教程.北京郵電大學(xué)出版社,2009-08.169~175,189~204
[0011] [4](中)徐勝波,馬文平,王新梅.無(wú)線通信網(wǎng)中的安全技術(shù).人民郵電出版社, 2003-07.149~150,183~187 三、
【發(fā)明內(nèi)容】
[0012] 【發(fā)明目的】
[0013] 為了設(shè)計(jì)安全高效的對(duì)稱密碼算法,用于網(wǎng)絡(luò)與信息系統(tǒng)安全中的數(shù)據(jù)加解密, 基于并行循環(huán)移位寄存器PRR和非線性循環(huán)移位寄存器NRR的流密碼SPRR相比其它對(duì)稱密 碼而言,擴(kuò)大了輸出序列的周期,增強(qiáng)了多平臺(tái)適應(yīng)性,提高了效率。
[0014] 【技術(shù)方案】
[0015] 本發(fā)明中的非線性循環(huán)移位寄存器NRR采用的技術(shù)方案是:當(dāng)字長(zhǎng)為m比特時(shí),η級(jí) NRR采用以下反饋模式由前η個(gè)字的首尾2個(gè)字遞推下一個(gè)字a1+n
[0016]
[0017]其中,i^:0,n^:2,字長(zhǎng)m取平臺(tái)的位數(shù)32;模運(yùn)算mod表示求余數(shù);<<< j表示循 環(huán)左移j位,j在0~m-1之間循環(huán)變化,即j = i modm; Φ表示模加;c為1~2m-1之間的奇數(shù);輸 入的初始η個(gè)字ao~au取值都不限,輸入的每個(gè)字都是任意m比特長(zhǎng)的數(shù)。
[0018] 本發(fā)明中的PRR和NRR與傳統(tǒng)的(N)LFSR不同之處在于:(1)循環(huán)移位數(shù)j循環(huán)變化; (2)計(jì)數(shù)加(:;(3)初值不受限。
[0019] 流密碼的加密方式為:密文C = P~KS;解密方式為:明文P = C~KS。其中KS為密鑰流, 所以其關(guān)鍵是如何產(chǎn)生密鑰流。SPRR算法采用了 1個(gè)PRR和4個(gè)NRR;其中PRR用于密鑰編排來 產(chǎn)生4個(gè)NRR的初值,而4個(gè)NRR的輸出進(jìn)行模加來產(chǎn)生密鑰流。SPRR算法產(chǎn)生密鑰流的過程 用KS = SPRR(K,IV)表示。其中輸入?yún)?shù)K為長(zhǎng)度Lk彡16B(字節(jié))的密鑰;IV是保密通信中用 于抗重放攻擊的初始向量,與密鑰K等長(zhǎng)。對(duì)于16B的密鑰和32位平臺(tái),將密鑰K和初值IV表 示成4個(gè)32位字級(jí)聯(lián):
[0020] κ=(κ〇| |Κι| |κ2| |k3);iv=(iv〇| |iVi| |ιν2| |ιν3)
[0021] SPRR算法中PRR的初值為Ao=(aQ| |ai| |a2| |a3)=K~IV。其反饋模式為:
[0022] For k = l to 19
[0023] {先求和:〇k = ak n-i+."+ak n-nmod 2m;其中k>l,n = 4,m = 32;
[0024] 然后并行計(jì)算4個(gè)字:For i = 0 to n_l{j = kn+i;aj=[0k<<<(j mod m)]+aj-n+ i mod 2m}}〇
[0025] 4個(gè)NRR的初值分別為:Bo= (ai+64+Ko) I I ai+681 I ai+721 I ai+751 I (ai+77+Κι);
[0026] Do= (ai+65+K2) I I ai+691 I ai+731 I (ai+76+K3);
[0027] Eo= (ai+66) I I (ai+7。)I I (ai+74);
[0028] Fo= (ai+671 I ai+71) 〇
[0029] 對(duì)于i多0,4個(gè)NRR的反饋模式分別為:
[0030] bi.5={[(bi.4<<<ji)+bi]+l}mod 232,其中ji = i+5mod 32;
[0031] di.4={[(di.3<<<j2)+di]+3}mod 232,其中j2 = i+llmod 32;
[0032] ei.3={[(ei.2<<<j3)+ei]+5}mod 232,其中j3 = i+17mod 32;
[0033] fi+2={[(fi+1<<<j4)+fi]+7}mod 232,其中j4=i+23mod 32〇
[0034] SPRR算法的輸出密鑰流由4個(gè)NRR的輸出進(jìn)行模加來產(chǎn)生:KS, = (V4?A4?~4?#4)。
[0035] 【有益效果】
[0036] 相比常用對(duì)稱密碼,流密碼SPRR有以下優(yōu)點(diǎn):
[0037] (1)周期更大、安全性更高。由于循環(huán)移位數(shù)j不固定,字長(zhǎng)為m比特時(shí),η級(jí)NRR的周 期大于(2m)n。對(duì)于反饋模式a1+n=[(a1+n-2 m,當(dāng)字長(zhǎng)為8b(比特)時(shí),測(cè) 試得2級(jí)NRSR的周期為484192>216B(字節(jié));3級(jí)NRR的周期為81,782456>2 24(16MB);4級(jí) NRR 的周期為 27,251403552>232(4GB)。當(dāng)字長(zhǎng)為 16b時(shí),2 級(jí)NRR的周期為 37,540033008>4G 個(gè)短整數(shù)。測(cè)試表明,周期與寄存器的初值、循環(huán)移位數(shù)j的初值及乘法系數(shù)b的初值無(wú)關(guān)。 [0038]對(duì)于周期達(dá)到最大的LFSR,其輸出狀態(tài)1~2n_l是絕對(duì)均勻的;對(duì)于周期達(dá)到最大 的NLFSR,其輸出狀態(tài)0~2 n-l是絕對(duì)均勻的,遍歷了所有狀態(tài)才會(huì)重復(fù)。測(cè)試表明,NRR產(chǎn)生 的輸出是偽隨機(jī)均勻的,沒有遍歷所有狀態(tài)也可能出現(xiàn)重復(fù)。寄存器狀態(tài)重復(fù)不一定是周 期重復(fù),當(dāng)寄存器的狀態(tài)和循環(huán)移位數(shù)j的狀態(tài)以及乘法系數(shù)b的狀態(tài)同時(shí)重復(fù)才是周期重 復(fù)。因此,NRR的不可預(yù)測(cè)性和安全性優(yōu)于(N)LFSR。
[0039] NRR輸入的初始η個(gè)字ao~an-!取值都不限。對(duì)于雜湊(Hash)函數(shù)標(biāo)準(zhǔn)SHA1和SHA2 的消息擴(kuò)展算法,如果初始消息全為0,則擴(kuò)展消息也全為(LNRR不存在該問題。
[0040] 另外,有個(gè)分組密碼叫RC6,需要5輪加密才能實(shí)現(xiàn)偽隨機(jī)性。其加密輪函數(shù)f(i,a, b,c,d)為:
[0041 ] {u= [d(2d+l )]<<<5;t = [b(2b+l )]<<<5;a=[(a't)<<<u]+k[i];c =
[(c'u)<<<t]+k[i+l] ;}
[0042] 用NRR直接取代2個(gè)緩存變量u和t,對(duì)d和b進(jìn)行可逆更新:
[0043] {t = d;d=[(t+l)<<<i]+b;b=(d< < <i )+t+l ;a=[(a'd)<<<b]+k[i];c = [(c'b)<<<d]+k[i+l];}
[0044] 5輪加密也實(shí)現(xiàn)了偽隨機(jī)性,這也說明NRR具有良好的密碼特性。
[0045]因此,流密碼SPRR的周期大于常用對(duì)稱密碼。從這方面講,SPRR的安全性高于常用 對(duì)稱密碼。
[0046] (2)效率更高。在32位平臺(tái)下(2 · 4GHz雙核CPU、2GB內(nèi)存、Windows XP、C語(yǔ)言),NRR 速度為700MB/S。常用(N) LFSR速度不超過630MB/S。
[0047] 單核時(shí),常用對(duì)稱密碼的速度不超過50MB/s;雙核時(shí)不超過ΙΟΟΜΒ/sdGHz單核時(shí), RC6-ECB的加密速度,即RC6-CTR和RC6-0FB產(chǎn)生密鑰流的速度為45MB/s;RC4、AES-CTR和 AES-0FB產(chǎn)生密鑰流的速度為30MB/S(32.4GHz雙核時(shí),AES-CTR和AES-0FB產(chǎn)生密鑰流的速度 為75MB/s 2GHz單核時(shí),SPRR產(chǎn)生密鑰流的速度為62MB/s; 2.4GHz雙核時(shí),SPRR產(chǎn)生密鑰流 的速度為119MB/S。SPRR的4個(gè)NRR能并行處理,四核時(shí)效率達(dá)到最佳,適合目前普遍使用的 雙核四核平臺(tái)。
[0048] (3)多平臺(tái)適應(yīng)性更靈活。(N)LFSR軟件實(shí)現(xiàn)慢,解決的辦法是,平臺(tái)的位數(shù)為m時(shí), 并行m個(gè)(N)LFSR,相當(dāng)于字長(zhǎng)為m比特,但最大周期還是小于等于2n,除非象SN0W2-樣采用 模2m的本原多項(xiàng)式,最大周期才小于等于(2m)n。也就是說,對(duì)于不同的字長(zhǎng)m和不同的級(jí)數(shù) n,(N)LFSR要尋找不同的反饋模式。不管字長(zhǎng)m和級(jí)數(shù)η為多大,NRR存在固定的反饋模式
£須 尋找達(dá)到最大周期的反饋模式,能直接適應(yīng)各種平臺(tái),包括將來128位以上的平臺(tái)。
[0049] SPRR能直接擴(kuò)展成面向64位以上平臺(tái)的密碼算法,也能直接改成面向資源受限的 8位平臺(tái)算法。 四、
【附圖說明】
[0050]圖1基于并行循環(huán)移位寄存器的流密碼SPRR [0051 ] 說明:?表示模加;NRR為非線性循環(huán)移位寄存器。 五、
【具體實(shí)施方式】
[0052]本發(fā)明中的非線性循環(huán)移位寄存器NRR的【具體實(shí)施方式】是:當(dāng)字長(zhǎng)為m比特時(shí),η級(jí) NRR采用以下反饋模式由前η個(gè)字的首尾2個(gè)字遞推下一個(gè)字a1+n
[0053]
[0054] 其中,η彡2,字長(zhǎng)m取平臺(tái)的位數(shù)32; < < < j表示循環(huán)左移j位,j在0~m-1之間循 環(huán)變化,即j = imod m; ?表示模加;c為1~2m_l之間的奇數(shù);輸入的初始η個(gè)字ao~an-1取值 都不限,輸入的每個(gè)字都是任意m比特長(zhǎng)的數(shù)。
[0055] SPRR采用了 1個(gè)PRR和4個(gè)非NRR,其中PRR用于密鑰編排來產(chǎn)生4個(gè)NRR的初值,而4 個(gè)NRR的輸出進(jìn)行模加來產(chǎn)生密鑰流。SPRR產(chǎn)生密鑰流的過程用KS = SPRR(K,IV)表示。其中 輸入?yún)?shù)K為長(zhǎng)度Lk多16B(字節(jié))的密鑰;IV是保密通信中用于抗重放攻擊的初始向量,與 密鑰K等長(zhǎng)。對(duì)于16B的密鑰和32位平臺(tái),將密鑰K和初值IV表示成4個(gè)32位字級(jí)聯(lián):
[0056] K=(Ko| |Ki| |K2| |K3);IV=(IVo| |IVi| |IV2| |IV3)
[0057] SPRR中PRR的初值為AQ=(ao| |ai| |a2| |&3)=1〇¥。其反饋模式為:
[0058] For k = l to 19
[0059] {先求和:〇k = akn-1+…+akn-nmod 2m;其中k^l,n = 4,m=32;
[0060] 然后并行計(jì)算4個(gè)字:F〇r i = 〇 to n_l {j = kn+i ;aj= [0k< < < (j mod m) ]+aj-n+ i mod 2m}}〇
[0061 ] 4個(gè)NRR的初值分別為:Bo= (ai+64+Ko) | | ai+681 | ai+721 | ai+751 | (ai+77+Κι);
[0062] Do= (ai+65+K2) | | ai+691 | ai+731 | (ai+76+K3);
[0063] Eo= (ai+66) | | (ai+7。)| | (ai+74);
[0064] Fo= (ai+671 | ai+71) 〇
[0065] 對(duì)于i多0,4個(gè)NRR的反饋模式分別為:
[0066] bi+5={[(bi.4<<<ji)+bi]+l}mod 232,其中ji = i+5mod 32;
[0067] di.4={[(di.3<<<j2)+di]+3}mod 232,其中j2 = i+llmod 32;
[0068] ei.3={[(ei.2<<<j3)+ei]+5}mod 232,其中j3 = i+17mod 32;
[0069] fi+2={[(fi+1<<<j4)+fi]+7}mod 232,其中j4=i+23mod 32〇
[0070] SPRR的輸出密鑰流由4個(gè)NRR的輸出進(jìn)行模加來產(chǎn)生:KS,_ =汍+5 θ?/,·+4? ei+3 ? /+2)。
【主權(quán)項(xiàng)】
1. 基于并行循環(huán)移位寄存器PRR的流密碼SPRR,其總體特征是:采用了 1個(gè)PRR和4個(gè)非 線性循環(huán)移位寄存器NRR,5個(gè)寄存器的字長(zhǎng)m均為32b (比特),級(jí)數(shù)η分別為4、5、4、3、2;其中 PRR用于密鑰編排來產(chǎn)生4個(gè)NRR的初倌,而4個(gè)NRR的輸出講行模加來產(chǎn)生密鑰流KS,即其中 i 彡 O,bi+5、cU+4、ei+3、fi+2分別為4 個(gè)NRR的輸出,KSi 和bi+5、cU+4、ei+3、fi+2 都是 32位數(shù)。2. 根據(jù)權(quán)利要求1所述的流密碼SPRR,其采用的非線性循環(huán)移位寄存器NRR的特征是: 當(dāng)字長(zhǎng)為m比特時(shí),η級(jí)NRR采用以下反饋模式由前η個(gè)字的首尾2字遞推下一個(gè) 字&i+n上式中,i>〇,n彡2,字長(zhǎng)m取平臺(tái)的位數(shù)32;模運(yùn)算mod表示求余數(shù);< < < j表示循環(huán) 左移j位,j在〇~m-Ι之間循環(huán)變化,即j = i mod m; ?表示模加;c為1~2m-l之間的奇數(shù);輸 入的初始η個(gè)字ao~au取值都不限,輸入的每個(gè)字都是任意m比特長(zhǎng)的數(shù)。3. 根據(jù)權(quán)利要求1所述的流密碼SPRR,其產(chǎn)生密鑰流KS的過程用KS = SPRR(K,IV)表示; 其中輸入?yún)?shù)K為長(zhǎng)度Lk多16B(字節(jié))的密鑰;IV是保密通信中用于抗重放攻擊的初始向 量,與密鑰K等長(zhǎng);對(duì)于16B的密鑰和32位平臺(tái),將密鑰K和初值IV表示成4個(gè)32位字級(jí)聯(lián): κ=(κ〇| |Κι| |κ2| |κ3);ιν=(ιν〇| |iVi| |iv2| |iv3) SPRR算法中PRR的特征是:初值為AQ=(ao| |ai| |a2| |a3)=K~IV;其反饋模式為: For k=l to 19 {先求和:〇k = akn-1+…+akn-nmod 2m;其中k彡 I,n = 4,m=32; 然后并行計(jì)算4個(gè)字:For i = 0 to n_l{j = kn+i;aj=[〇k<<<(j mod m)]+aj-n+i mod 2m}} 〇4. 根據(jù)權(quán)利要求3所述的流密碼SPRR,用于產(chǎn)生密鑰流KS的4個(gè)NRR的特征是: 其初值分別為Bo=(ai+64+K())| |ai+68| |ai+72! |ai+7s| |(ai+77+Ki); Do= (ai+65+K2) I I ai+69 I I ai+73 I I (ai+76+K3); Eo= (ai+66) I I (ai+70) I I (m+74); Fo= (ai+671 I ai+71) 對(duì)于i >0,4個(gè)NRR的反饋模式分別為 bi+5={[(bi+4<<<ji)+bi]+l}mod 232 ,其中ji=i+5 mod 32; di+4={[(di+3<<<j2)+di]+3}mod 232 ,其中j2=i+ll mod 32; ei+3={[(ei+2<<<j3)+ei]+5}mod 232 ,其中j3=i+17 mod 32; fi+2={[(fi+i<<<j4)+fi]+7}mod 232 ,其中j4=i+23 mod 32 SPRR算法的輸出密鑰流由4個(gè)NRR的輸出進(jìn)行模加來產(chǎn)生:KS,_H5?忒+4Θ~ 3Θ/+2)。
【文檔編號(hào)】H04L9/06GK105897403SQ201610209831
【公開日】2016年8月24日
【申請(qǐng)日】2016年4月1日
【發(fā)明人】黃玉劃, 張寧, 代學(xué)俊, 蘇菲, 丁莉莉
【申請(qǐng)人】蘇州中科啟慧軟件技術(shù)有限公司