段志剛 ,佟 晶
(1.深圳市龍圖軟件有限公司,黑龍江 哈爾濱 150001;2.中航工業(yè)哈爾濱軸承有限公司 研發(fā)中心,黑龍江 哈爾濱150036)
流密碼(stream cipher)也稱序列密碼,它是對稱密碼算法的一種。由于流密碼長度可靈活變化,且具有運算速度快、密文傳輸中沒有差錯等優(yōu)點,目前仍是國際密碼應用的主流,而基于偽隨機序列的流密碼是當今最通用的密碼系統(tǒng)。本文采用基于LFSR和非線性組合函數(shù)的方法設計密鑰流生成器,不僅便于從理論上分析其安全性,而且易于硬件實現(xiàn)。經(jīng)嚴格測試表明,該加密設計能產(chǎn)生高質(zhì)量、高速的偽隨機密鑰流,它在保密學領(lǐng)域有廣泛的應用。
流密碼有以下優(yōu)勢:密鑰的產(chǎn)生與使用簡單,流密碼按單個字符加密,不需要太多的緩存,不會在明文中產(chǎn)生錯誤擴散,實時性好,運算速度快,硬件實現(xiàn)的復雜度要低等,因此,流密碼在相當長的時間內(nèi)是人們使用的主要加密方法,目前仍是各國政府、軍事、外交等核心部門使用的主流密碼。流密碼加密、解密框圖如圖1所示。
圖1 流密碼加密解密框圖
Geffe流密碼電路框圖如圖2 所示。這個發(fā)生器使用了六個LFSR,他們以非線性方式組合而成,LFSR1、LFSR2、LFSR3、LFSR4作為復合器的輸八,LFSR5、LFSR6控制復合器的輸出。LFSR5、LFSR6在四個LFSR中進行選擇,且LFSR5、LFSR6比其它四個運行快1倍。
圖2 Geffe模塊
為了實驗簡易方便,六個LFSR的級數(shù)分別選為:2,3,4,5,6,7;它們的特征多項式分別為 f1(x)=x2+x+1,f2(x)=x3+x+1 ,f3(x)=x4+x+1 ,f4(x)=x4+x2+1 ,f5(x)=x6+x+1 ,f6(x)=x7+x3+1 ,并通過數(shù)據(jù)選擇器控制輸出。所有輸入均共用同一個CP脈沖。這樣既能使得該序列某些統(tǒng)計特性不被破壞,如偽隨機序列重要特性0與1的平衡性、序列相關(guān)性等,又能對多個LFSR進行控制輸出,起到非線性系統(tǒng)作用;可設置密鑰的控制參數(shù),改變此參數(shù)可改變相應的輸出,這樣可使整個密碼系統(tǒng)構(gòu)成多級密鑰關(guān)系,使流密碼的保密性進一步加強。
Geffe模塊共六組輸入,這樣較單個m序列相比提高其輸出周期和增加密鑰空間。
六個LFSR的周期分別為 22-1,23-1,24-1,25-1,26-1,27-1 ,而Geffe發(fā)生器的周期是這六個LFSR的周期的最小公倍數(shù)。
用Quartus II來實現(xiàn)Geffe模塊電路原理設計圖如圖3 所示。
圖3 Geffe模塊電路圖
設計中用到的LFSR1至LFSR6都是在Quartus II環(huán)境下由原理圖輸入法D觸發(fā)器形成的。圖4選擇器MUX是用VHDL語言生成的。程序設計如下:
編完程序后在“File”中選擇“Create/-Update—Create Symbol Files for Current file”即生成選擇器,見圖3。設計完成后對其進行仿真,仿真結(jié)果如圖4 所示。
圖4 仿真結(jié)果
其中cp為時鐘信號,rst為復位信號。m2至m7為初始密鑰輸入,其中初始密鑰分配如下:m2提供給了LFSR1; m3提供給了LFSR2; m4提供給了LFSR3;m5提供給了LFSR4;m6提供給了LFSR5;m7提供給了LFSR6。Out為Geffe流密碼序列輸出,可從仿真結(jié)果可以看出:輸出序列為一偽隨機序列,利用此序列可與明文序列進行加密然后傳輸,利用Geffe流密碼產(chǎn)生的偽隨機碼較傳統(tǒng)m序列有周期長,輸出序列復雜等良好性能。
此模塊可以下載到FPGA器件中設計成加密芯片,考慮到FPGA配置文件數(shù)據(jù)比較大,為了加快配置速度,采用的是EPFlOK20生成Geffe流密碼模塊,該模塊可應用于計算機網(wǎng)絡和通信系統(tǒng)中,提高信息傳輸?shù)陌踩?。通過改變輸入?yún)?shù)可以模擬不同的非線性函數(shù),避免了在傳統(tǒng)電路設計中,模擬不同的非線性函數(shù)須變換不同電路的缺點。
本論文在深入學習和研究現(xiàn)代密碼學理論特別是流密碼理論與技術(shù)的基礎上,完成了Geffe流密碼分析與實現(xiàn)。利用FPGA工具對Geffe流密碼進行設計,用Quartus II來實現(xiàn)Geffe模塊的設計,并用VHDL語言實現(xiàn)了其功能,為流密碼輸出奠定了基礎,利用VHDL設計了數(shù)據(jù)選擇器并完成其功能,通過實驗可看出產(chǎn)生輸出序列,驗證了所設計電路的正確性,為流密碼芯片的實際開發(fā)與應用奠定了基礎。
[1]C.E.Shannon. Communication theory of secrecy systems[J].Bell System Technology Jounal Vol.28.1949,20(2): 656-715.
[2]丁存生,肖國鎮(zhèn).流密碼及其應用[M].上海:國防工業(yè)出版社,1994:163-224.
[3]張文政.布爾函數(shù)若干設計準則的研究[C].張文政.通信保密.北京:清華大學出版社,1994(2):105-138.