基于非線性循環(huán)移位寄存器的輕量級(jí)流密碼技術(shù)lsnrr的制作方法
【技術(shù)領(lǐng)域】
[0001] 基于非線性循環(huán)移位寄存器NRR的輕量級(jí)流密碼LSNRR是保密通信領(lǐng)域的一種對(duì) 稱(chēng)密碼,主要用于網(wǎng)絡(luò)與信息系統(tǒng)安全中的數(shù)據(jù)加解密,適合資源不受限的終端與資源受 限終端互通。
【背景技術(shù)】
[0002] 密碼技術(shù)分為對(duì)稱(chēng)密碼和非對(duì)稱(chēng)密碼。由于非對(duì)稱(chēng)密碼的加密速度遠(yuǎn)小于對(duì)稱(chēng)密 碼,因此網(wǎng)絡(luò)與信息系統(tǒng)安全中的數(shù)據(jù)加解密盡量采用對(duì)稱(chēng)密碼,以提高效率。對(duì)稱(chēng)密碼分 為流密碼和分組密碼,2種對(duì)稱(chēng)密碼各有優(yōu)缺點(diǎn)。設(shè)計(jì)流密碼的一種常用密碼部件是移位 寄存器,有線性反饋移位寄存器LFSR[1]和非線性反饋移位寄存器NLFSRra等,以下合稱(chēng)(N) LFSR。例如,第2代移動(dòng)通信系統(tǒng)GSM的加密標(biāo)準(zhǔn)A5算法[3'4]、藍(lán)牙加密標(biāo)準(zhǔn)EO算法[4]和 流密碼國(guó)際標(biāo)準(zhǔn)SN0W2算法[3]都采用了LFSR;Hash函數(shù)標(biāo)準(zhǔn)SHAl和SHA2的消息擴(kuò)展算 法[3]以及第3代標(biāo)準(zhǔn)SHA3的多個(gè)候選算法采用了(N)LFSR或其它發(fā)生器。
[0003] n級(jí)(N)LFSR的當(dāng)前輸出比特都是前n比特的邏輯函數(shù),這樣的邏輯函數(shù)共有22° 個(gè),其中線性的有2"個(gè),非線性的有22" -2"個(gè)。LFSR采用以下反饋模式由前n比特ai~an+1: 線性遞推下一比特an+1:
[0004] an+i= a ; cn而+1 ? ? ? C^anM J
[0005] 其中,常數(shù)Ck= 0或1,1彡k彡n-1,'是異或即模2加法。如果輸入的初始n比 特a。~an丨全為0,則LFSR輸出恒為0,因此,n級(jí)LFSR的最大周期為2n-l。當(dāng)且僅當(dāng)LFSR 的反饋多項(xiàng)式為本原多項(xiàng)式時(shí),LFSR的周期才達(dá)到最大。產(chǎn)生一個(gè)本原多項(xiàng)式并不容易, 需借助數(shù)學(xué)軟件包。SHAl的消息擴(kuò)展算法采用以下模式由前16個(gè)字Wt16~wti遞推下 一個(gè)字wt:wt= (wt3~wts~wt14~wt16) <<< 1其中,<<< 1表示循環(huán)左移1位,字長(zhǎng)m為 32b(比特)。這相當(dāng)于字長(zhǎng)m為32b的16級(jí)發(fā)生器,如果輸入的初始16個(gè)字w。~w15全 為〇,則輸出恒為〇,因此,其最大周期小于等于(232) 16_1。n級(jí)NLFSR的最大周期為2n。非 線性循環(huán)移位寄存器NRR是一種新型反饋移位寄存器。當(dāng)字長(zhǎng)為m比特時(shí),n級(jí)NRR的周 期大于(2m)n。(N)LFSR軟件實(shí)現(xiàn)慢,解決的辦法是并行m個(gè)(N)LFSR,相當(dāng)于字長(zhǎng)為m比特, 但最大周期還是小于等于2n,除非象SN0W2-樣采用模2m的本原多項(xiàng)式,最大周期才小于等 于(2m)n。也就是說(shuō),對(duì)于不同的字長(zhǎng)m和不同的級(jí)數(shù)n,(N)LFSR要尋找不同的反饋模式, 周期才能達(dá)到最大。不管字長(zhǎng)m和級(jí)數(shù)n為多大,NRR存在統(tǒng)一的反饋模式,無(wú)須尋找達(dá)到 最大周期的反饋模式,可以直接適應(yīng)各種平臺(tái),包括將來(lái)128位以上的平臺(tái)。在32位平臺(tái) 下(2. 4GHz雙核CPU、2GB內(nèi)存、WindowsXP、C語(yǔ)言),SN0W2 的LFSR速度為 630MB/s;SHA1 和SHA256的消息擴(kuò)展算法速度都小于400MB/s;NRR的速度為700MB/s。對(duì)于A5和EO算法 采用的LFSR,除非同時(shí)并行32個(gè)LFSR,效率才和NRR相當(dāng)。對(duì)于周期達(dá)到最大的(N)LFSR, 其輸出是絕對(duì)均勻的,遍歷了所有狀態(tài)才會(huì)重復(fù),不可預(yù)測(cè)性差。測(cè)試表明,NRR產(chǎn)生的輸 出是偽隨機(jī)均勻的,又能遍歷所有狀態(tài),不可預(yù)測(cè)性好。
[0006]本發(fā)明采用4個(gè)非線性循環(huán)移位寄存器NRR,設(shè)計(jì)了一種輕量級(jí)流密碼LSNRR。
[0007] [1](美)SchneierB.應(yīng)用密碼學(xué)一一協(xié)議、算法與C源程序.吳世忠等譯.機(jī)械 工業(yè)出版社,2000-1. 264~269
[0008] [2](中)王育民,劉建偉.通信網(wǎng)的安全一一理論與技術(shù).西安電子科技大學(xué)出 版社,1999-04. 81 ~82
[0009] [3](中)谷利澤,鄭世慧,楊義先.現(xiàn)代密碼學(xué)教程.北京郵電大學(xué)出版社, 2009-08. 169 ~175,189 ~204
[0010] [4](中)徐勝波,馬文平,王新梅.無(wú)線通信網(wǎng)中的安全技術(shù).人民郵電出版社, 2003-07. 149 ~150,183 ~187
【發(fā)明內(nèi)容】
[0011] 【發(fā)明目的】
[0012] 為了設(shè)計(jì)安全高效的對(duì)稱(chēng)密碼,用于網(wǎng)絡(luò)與信息系統(tǒng)安全中的數(shù)據(jù)加解密,基于 非線性循環(huán)移位寄存器NRR的輕量級(jí)流密碼LSNRR相比其它對(duì)稱(chēng)密碼而言,擴(kuò)大了輸出序 列的周期,增強(qiáng)了多平臺(tái)適應(yīng)性,提高了效率。
[0013] 特別地,普通密碼技術(shù)適合資源不受限的普通終端加解密,不適合資源受限終端, 也就是不適合資源不受限的終端與資源受限終端互通。物聯(lián)網(wǎng)等無(wú)線網(wǎng)絡(luò)中的資源受限 終端加解密需要輕量級(jí)密碼,但常見(jiàn)輕量級(jí)密碼用于資源不受限的終端與資源受限終端互 通,發(fā)揮不了資源不受限終端的資源優(yōu)勢(shì),效率低,會(huì)加重不受限終端的負(fù)擔(dān)。本發(fā)明的最 大目的是設(shè)計(jì)一種能充分利用資源不受限終端的資源優(yōu)勢(shì)、又適合資源受限終端的、效率 能達(dá)到普通密碼級(jí)別的輕量級(jí)密碼。
[0014] 【技術(shù)方案】
[0015] 本發(fā)明中的非線性循環(huán)移位寄存器NRR采用的技術(shù)方案是:當(dāng)字長(zhǎng)為m比特時(shí),n 級(jí)NRR采用以下反饋模式由前n個(gè)字ai~a1+n:中的首尾2個(gè)字遞推下一個(gè)字a1+n
[0016] a,+" = {[(a,+?~i?<y') ? ?, ] +c}mod2m
[0017] 其中,i彡0,n彡2,字長(zhǎng)m取平臺(tái)的位數(shù);模運(yùn)算mod表示求余數(shù);<<<j表示 循環(huán)左移j位,j在0~m-1之間循環(huán)變化,即j=imodm;?表示模加;c為1~2m-l之 間的奇數(shù);輸入的初始n個(gè)字a。~ani取值都不限,輸入的每個(gè)字都是任意m比特長(zhǎng)的數(shù)。
[0018] 本發(fā)明中的NRR與傳統(tǒng)的(N)LFSR不同之處在于:(1)循環(huán)移位數(shù)j循環(huán)變化;(2) 計(jì)數(shù)加c; (3)初值不受限。
[0019] 流密碼的加密方式為:密文C=P~KS;解密方式為:明文P=C~KS。其中KS為 密鑰流,所以其關(guān)鍵是如何產(chǎn)生密鑰流。LSNRR采用了 4個(gè)NRR。4個(gè)NRR的字長(zhǎng)m均為 32b(比特),級(jí)數(shù)n分別為4、5、4、3。其中第1個(gè)冊(cè)1?用于密鑰編排,另3個(gè)冊(cè)1?的輸出進(jìn) 行模加來(lái)產(chǎn)生密鑰流。LSNRR產(chǎn)生密鑰流的過(guò)程用KS=LSNRR(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):K= (k0|Ik1I|k2| |k3) ;iv=(ivjIiv1IIiv2I|iv3)。
[0020] LSNRR中第 1 個(gè)NRR的初值為A。= (a。IIaiIIa21Ia3) =K~IV。其反饋模式為:
[0021] ai+4={[(ai+3<<<j)~aJ+llmod232,其中i彡 0,j=imod32, ~ 表示逐位異 或運(yùn)算。
[0022] 另3個(gè)NRR的初值分別為:
[0023]B0= (b〇|Ib1I|b2| |b31 |b4) = (B1^K1) |a1+67+K21 |a1+70+K31 |a1+73+K〇) | | (a1+75+K2);
[0024]D0=(djId1I|d2| |d3) = (a1+65+K2)II(a1+6S+K3)II(a1+71+K。)II;
[0025]E0= (e0| |e」|e2) = (a1+66+K3)II(a1+69+K0)II(B1JK1)〇
[0026] 對(duì)于i彡0,后3個(gè)NRR的反饋模式分別為
[0027]bi+5= {[(bi+4<<< jD+bJ+Slmod 232,其中J、= imod32 ;
[0028]di+4= {[(di+3<<< j2)+dj+5}mod 232,其中j2= i+11mod 32 ;
[0029]ei+3= {[(ei+2< < < j3)+ej+7}mod 232,其中j3= i+23mod 32
[0030]LSNRR的輸出密鑰流由后3個(gè)NRR的輸出進(jìn)行模加來(lái)產(chǎn)生:KS,=0,+5?4+4 ?e,+3)。
[0031]【有益效果】
[0032] 相比常用對(duì)稱(chēng)密碼,流密碼LSNRR有以下優(yōu)點(diǎn):
[0033] (1)周期更大、安全性更高。由于乘法系數(shù)b和循環(huán)移位數(shù)j不固定,字長(zhǎng)為m比 特時(shí),n級(jí)NRR的周期大于(2m)n。對(duì)于反饋模式ai+n= [(a^CCCjO+ai+Umod2m,當(dāng) 字長(zhǎng)為8b(比特)時(shí),測(cè)試得2級(jí)NRSR的周期為484192 > 21?(字節(jié));3級(jí)NRR的周期 為 81,782456 > 224(16MB) ;4 級(jí)NRR的周期為 27, 251403552 > 232 (4GB)。當(dāng)字長(zhǎng)為 16b 時(shí),2級(jí)NRR的周期為37, 540033008 > 4G個(gè)短整數(shù)。對(duì)于反饋模式a1+n= [(bXa1+nJ+ (&1 <<<j)+l]mod2m,當(dāng)字長(zhǎng)為8b時(shí),b取I~2m-l之間循環(huán)變化的奇數(shù),測(cè)試得2級(jí)NRR 的周期為4, 765440 > 216(64KB)。如果b取3~2m-l之間循環(huán)變化的奇數(shù),周期更大。測(cè) 試表明,周期與寄存器的初值、循環(huán)移位數(shù)j的初值及乘法系數(shù)b的初值無(wú)關(guān)。
[0034] 對(duì)于周期達(dá)到最大的LFSR,其輸出狀態(tài)1~2n_l是絕對(duì)均勻的;對(duì)于周期達(dá)到最 大的NLFSR,其輸出狀態(tài)0~2n-l是絕對(duì)均勻的,遍歷了所有狀態(tài)才會(huì)重復(fù),不可預(yù)測(cè)性差。 測(cè)試表明,NRR產(chǎn)生的輸出是偽隨機(jī)均勻的,沒(méi)有遍歷所有狀態(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è)性和安全性?xún)?yōu)于(N)LFSR。
[0035]NRR輸入的初始n個(gè)字a。~ani取值都不限。對(duì)于雜湊(Hash)函數(shù)標(biāo)準(zhǔn)SHAl和 SHA2的消息擴(kuò)展算法,如果初始消息全為0,則擴(kuò)展消息也全為0。NRR不存在該問(wèn)題。
[0036] 另外,有個(gè)分組密碼叫RC6,需要5輪加密才能實(shí)現(xiàn)偽隨機(jī)性。其加密輪函數(shù)f(i, a,b,c,d)為:
[0037] {u= [d(2d+l) ] <<<5;t=[b(2b+l) ] <<<5;a= [(a't) <<<u]+k[i]; c= [(c'u) <<<t]+k[i+l] ;}
[0038]用NRR直接取代2個(gè)緩