基于非線性循環移位寄存器的輕量級流密碼技術lsnr2的制作方法
【專利說明】基于非線性循環移位寄存器的輕量級流密碼技術LSNR2 -、技術領域
[0001] 基于非線性循環移位寄存器NRR的輕量級流密碼技術LSNR2是保密通信領域的一 種對稱密碼,主要用于網絡與信息系統安全中的數據加解密,適合資源不受限的終端與資 源受限終端互通。 二、【背景技術】
[0002] 密碼體制分為對稱密碼和非對稱密碼。由于非對稱密碼的加密速度遠小于對稱密 碼,因此網絡與信息系統安全中的數據加解密盡量采用對稱密碼算法,W提高效率。對稱密 碼分為流密碼和分組密碼,2種對稱密碼各有優缺點。設計流密碼的一種常用密碼部件是移 位寄存器,有線性反饋移位寄存器LFSRW和非線性反饋移位寄存器化FSRW等,W下合稱 (N)LFSR。例如,第2代移動通信系統GSM的加密標準A5算法n' 4^、藍牙加密標準EO算法W和流 密碼國際標準SN0W2算法[3]都采用了 LFSR;化Sh函數標準甜Al和SHA2的消息擴展算法[3]W 及第3代標準SHA3的多個候選算法采用了(N)LFSR或其它發生器。
[0003] n級(N)LFSR的當前輸出比特都是前n比特的邏輯函數,運樣的邏輯函數共有個, 其中線性的有2"個,非線性的有22n-2D個。LFSR采用W下反饋模式由前n比特曰1~an+1-i線性 遞推下一比特an+i:
[0004] an+i = ai~Cn-l£li+l- . . . - C化n+i-l
[0005] 其中,常數Ck = O或I,I < k < n-1,~是異或即模巧口法。如果輸入的初始n比特ao~ an-i全為0,則LFSR輸出恒為0,因此,n級LFSR的最大周期為2"-1。當且僅當LFSR的反饋多項 式為本原多項式時,LFSR的周期才達到最大。產生一個本原多項式并不容易,需借助數學軟 件包。SHAl的消息擴展算法采用W下模式由前16個字Wt 16~Wt-I遞推下一個字Wt:Wt = (Wt 3~ Wt 8~wt I4~wt 16)<<<1其中,<<<1表示循環左移1位,字長m為32b(比特)。運相當于字長 m為32b的16級發生器,如果輸入的初始16個字WO~W15全為0,則輸出恒為0,因此,其最大周 期小于等于(232)1 6-1。11級NLFSR的最大周期為2"。非線性循環移位寄存器NRR是一種新型反 饋移位寄存器。當字長為m比特時,n級NRR的周期大于UTd(N)LFSR軟件實現慢,解決的辦 法是并行m個(N)LFSR,相當于字長為m比特,但最大周期還是小于等于2",除非象SN0W2-樣 采用模2"的本原多項式,最大周期才小于等于(2m)n。也就是說,對于不同的字長m和不同的 級數n,(N化FSR要尋找不同的反饋模式,周期才能達到最大。不管字長m和級數n為多大,NRR 存在統一的反饋模式,無須尋找達到最大周期的反饋模式,可W直接適應各種平臺,包括將 來128位W上的平臺。在32位平臺下(2.4GHz雙核CPU、2GB內存、Windows XP、C語言),SN0W2 的LFSR速度為630MB/s;SHAl和細A256的消息擴展算法速度都小于400MB/s;NRR的速度為 700MB/S。對于A5和EO算法采用的LFSR,除非同時并行32個LFSR,效率才和NRR相當。對于周 期達到最大的(N)LFSR,其輸出是絕對均勻的,遍歷了所有狀態才會重復,不可預測性差。測 試表明,NRR產生的輸出是偽隨機均勻的,又能遍歷所有狀態,不可預測性好。
[0006] 本發明采用3個非線性循環移位寄存器NRR,設計了一種輕量級流密碼LSNR2。
[0007] [1](美)Schneier B.應用密碼學一一協議、算法與C源程序.吳世忠等譯.機械工 業出版社,2000-1. 264~269
[000引[2](中)王育民,劉建偉.通信網的安全一一理論與技術.西安電子科技大學出版 社,1999-04. 81 ~82
[0009] [3](中)谷利澤,鄭世慧,楊義先.現代密碼學教程.北京郵電大學出版社,2009- 08. 169~175,189~204
[0010] [4](中)徐勝波,馬文平,王新梅.無線通信網中的安全技術.人民郵電出版社, 2003-07. 149~150,183~187 H、
【發明內容】
[00川【發明目的】
[0012] 為了設計安全高效的對稱密碼,用于網絡與信息系統安全中的數據加解密,基于 非線性循環移位寄存器NRR的輕量級流密碼LSNR2相比其它對稱密碼而言,擴大了輸出序列 的周期,增強了多平臺適應性,提高了效率。
[0013] 特別地,普通密碼技術適合資源不受限的普通終端加解密,不適合資源受限終端, 也就是不適合資源不受限的終端與資源受限終端互通。物聯網等無線網絡中的資源受限終 端加解密需要輕量級密碼,但常見輕量級密碼用于資源不受限的終端與資源受限終端互 通,發揮不了資源不受限終端的資源優勢,效率低。本發明的最大目的是設計一種能充分利 用資源不受限終端的資源優勢、又適合資源受限終端的、效率能達到普通密碼級別的輕量 級密碼。
[0014] 【技術方案】
[0015] 本發明中的非線性循環移位寄存器NRR采用的技術方案是:當字長為m比特時,n級 NRR采用W下反饋模式由前n個字ai~ai+n-i中的首尾2個字遞推下一個字ai+n
[0016] 。加={[(a,+n. I <?7')史。,]+ C } mod 2。'
[0017]其中,i含0,n含2,字長m取平臺的位數;模運算mod表示求余數;< < < j表示循環 左移j位,j在0~m-1之間循環變化,即j = i mod m; $表示模加;C為1~2"-1之間的奇數;輸 入的初始n個字ao~an-i取值都不限,輸入的每個字都是任意m比特長的數。
[0018] 本發明中的NRR與傳統的(N)LFSR不同之處在于:(1)循環移位數j循環變化;(2)計 數加 C;(3)初值不受限。
[0019] 流密碼的加密方式為:密文C = P~KS;解密方式為:明文P = C~KS。其中KS為密鑰流, 所W其關鍵是如何產生密鑰流。LSNR2采用了 3個NRRd3個NRR的字長m均為32b(比特),級數n 分別為4、5、4。其中第1個NRR用于密鑰編排,另2個NRR的輸出進行模加來產生密鑰流。LSNR2 產生密鑰流的過程用KS = LSNR2化,IV)表示。其中輸入參數K為長度化> 16B(字節)的密鑰; IV是保密通信中用于抗重放攻擊的初始向量,與密鑰K等長。對于16B的密鑰和32位平臺,將 密鑰K和初值IV表示成4個32位字級聯:K=化01 IKil IK21 IK3); IV= (IVo M IVi I IIV2 M IV3)。
[0020] LSNR2中第1個NRR的初值為Ao=(ao| Iail |曰2| |a3)=K~IV。其反饋模式為:
[0021] ai+4={[(ai+3<<<j)-ai]+l}mod 232 ,其中i >〇,j = i mod 32,-表示逐位異或運 算。
[0022] 另2個NRR的初值分別為:
[0023] Bo=化01 I bi I I b21 I b31 I b4) = (ai+64+Ko I I ai+67+Ki I I ai+7〇+K21 I ai+73) I I (日1+75+拉);
[0024] Do=(do| |di| Icbl |d3) = (ai+65+K2)||(ai+68+K3)||(ai"i+Ko)M(aim+Ki)。
[002引對于i含0,后2個NRR的反饋模式分別為
[0026] bi+5={[(bi+4<<<ji)+bi]+3}mod 232,其中ji = i mod 32;
[0027] di+4={[(di+3<<<j2)+di]+5}mod 232,其中j'2 = i+17 mod 32
[002引 LSNR2的輸出密鑰流由后2個NRR的輸出進行模加來產生:KS, = (6W ?扣.4)。
[00巧]【有益效果】
[0030] 相比常用對稱密碼算法,流密碼算法LSNR2有W下優點:
[0031] (1)周期更大、安全性更高。由于循環移位數j不固定,字長為m比特時,n級NRR的周 期大于(2T。對于反饋模式ai+n=[(ai+n i<<<j)+ai+l]mod 2",當字長為8b(比特)時,巧U 試得2級NRSR的周期為484192>216b(字節);3級NRR的周期為81,782456>224(16MB);4級 NRR 的周期為 27,251403552>232(4GB)。當字長為 16b時,2 級NRR的周期為 37,540033008>4G 個短整數。測試表明,周期與寄存器的初值及循環移位數j的初值無關。
[0032] 對于周期達到最大的LFSR,其輸出狀態1~是絕對均勻的;對于周期達到最大 的化FSR,其輸出狀態0~2D-1是絕對均勻的,遍歷了所有狀態才會重復,不可預測性差。測 試表明,NRR產生的輸出是偽隨機均勻的,沒有遍歷所有狀態也可能出現重復。寄存器狀態 重復不一定是周期重復,當寄存器的狀態和循環移位數j的狀態同時重復才是周期重復。因 此,NRR的不可預測性和安全性優于(N) LFSR。
[0033] NRR輸入的初始n個字ao~an-i取值都不限。對于雜湊化ash)函數標準甜Al和細A2 的消息擴展算法,如果初始消息全為0,則擴展消息也全為OdNRR不存在該問題。
[0034] 另外,有個分組密碼叫RC6,需要5輪加密才能實現偽隨機性。其加密輪函數f(i,a, b,c,d)為:
[0035] {u= [d(2d+l) ] < < <5 ; t = [b(2b+l )]<<<5;a=[(a't)<<<u]+k[i];c = [(c'u)<<<t]+k[i+l] ;}
[0036] 用NRR直