国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

NBC分組密碼算法的FPGA高速實現(xiàn)

2021-10-30 07:00:02孟祥興
關(guān)鍵詞:狀態(tài)機明文分塊

孟祥興,曹 欣

(北京電子科技學院電子與通信工程系, 北京 100070)

密碼是我們黨和國家的命脈,是我國重要的戰(zhàn)略資源.在智能物聯(lián)背景下的大數(shù)據(jù)信息時代,數(shù)據(jù)的保密性與安全性顯得更加重要.在全球各國密碼科研人員的努力下,近年來涌現(xiàn)出各種各樣實現(xiàn)方式的機密性、完整性、真實性和不可否認性皆優(yōu)秀的高性能密碼算法.NBC分組密碼算法就是我國自主研發(fā)的最新密碼算法.

可編程邏輯器件(programmable logic device,PLD)是20世紀70年代發(fā)展起來的一種新型器件,PLD在簡化電路設計、降低開發(fā)成本、提高系統(tǒng)可靠性等方面起到了重要的作用.現(xiàn)場可編程門陣列(field programmable gate array,FPGA)是美國Xilinx公司于1985年推出的采用單元型結(jié)構(gòu)的PLD器件.FPGA采用CMOS、SRAM工藝制作,其內(nèi)部由許多獨立的可編程邏輯單元構(gòu)成,各邏輯單元之間可以靈活地相互連接,具有密度高、速度快、編程靈活、可重新配置等優(yōu)點,是目前主流的PLD器件之一.

分組密碼算法是一種對稱加密算法,其明文信息具有良好的可擴展性,不需要密鑰同步,具有較強的適用性.但是,加密速度慢、錯誤擴散傳播等缺點使其在互聯(lián)網(wǎng)的應用較少.因此,快速實現(xiàn)分組密碼算法成為分組密碼工程應用必須解決的問題.結(jié)合FPGA器件的優(yōu)點和分組密碼算法的不足,用FPGA實現(xiàn)分組密碼算法成為解決分組密碼算法加密速度慢的有效手段,并在工程領(lǐng)域得到了廣泛應用.

本文研究NBC分組密碼算法的FPGA高速實現(xiàn).針對分組密碼特點,結(jié)合有限狀態(tài)機技術(shù)、非阻塞賦值技術(shù)和流水線技術(shù),用分時鐘、分塊明文、密鑰輸入的方式對NBC密碼算法進行FPGA編程實現(xiàn).

1 NBC算法介紹

NBC算法[1]采用改進的第二類廣義Feistel結(jié)構(gòu),輪函數(shù)和F函數(shù)如圖1和圖2所示,其中S為16比特的S盒.NBC算法以16比特為基本處理單元,將分組長度為128比特、密鑰長度為128比特的NBC算法記為NBC 128/128.

圖1 NBC算法輪函數(shù)

圖2 F函數(shù)(0≤l≤3)

1.1 輪函數(shù)

為保證加解密的一致性,最后一輪不進行塊置換.輸入明文為P=X0,輸出密文為C=X32.置換塊為π8=(30147256),其中,3表示輸入的第0塊移到輸出的第3塊的位置,其余依此類推.

1.2 S盒

NBC算法的S盒由基于16級的非線性反饋移位寄存器(NFSR)來構(gòu)造.記S盒的16比特輸入為S0,S1,…,S15,將該16比特從左至右依次填充至16個寄存器內(nèi),寄存器迭代20拍后的全體內(nèi)部狀態(tài)即為S盒的輸出.

(1)

(2)

(3)

(4)

{13,14,15}

(5)

寄存器迭代20拍可以保證S盒各分量的代數(shù)次數(shù)都達到最大值15,并且具有好的差分盒線性性質(zhì).

1.3 密鑰擴展算法

NBC 128/128密鑰擴展算法的設計與S盒類似,采用基于8比特的16級非線性反饋移位寄存器,引入模28加法代替比特與,增加循環(huán)移位以保證不同字之間的充分混淆,增加輪常數(shù)以避免出現(xiàn)弱密鑰(如全零子密鑰).密鑰擴展算法中用到的非線性反饋移位寄存器的狀態(tài)字wj(0≤j≤15)和常數(shù)cl(0≤l≤3)中各比特都是按照高位在前、低位在后的順序存放.

初始種子密鑰為128比特,分成16個8比特字K=(k0‖k1‖…‖k15).用它們填充密鑰寄存器的初始狀態(tài),即有wj=kj,0≤j≤15.提取密鑰寄存器前64比特作為初始輪的子密鑰,之后寄存器每迭代4拍,輸出一輪輪子密鑰,每次選取密鑰寄存器前64比特作為輪子密鑰.要產(chǎn)生r輪加密的所有輪子密鑰,密鑰寄存器總共需要迭代4(r-1)拍.輪子密鑰的具體產(chǎn)生方式為:對0≤j≤15,令wj=kj;輸出密鑰寄存器的前64比特作為第0輪的輪子密鑰K0;對1≤i≤r-1,順序執(zhí)行下列步驟,產(chǎn)生后r-1輪的輪子密鑰Ki.

1) 寄存器迭代4拍,按下列方式更新寄存器狀態(tài):

(w4<<<3)⊕c1

(6)

w7⊕(w9<<<7)⊕c2

(7)

(w14>>>3)⊕c3

(8)

(w3<<<2)⊕c4

(9)

{9,10,11}∪{13,14,15}

(10)

2) 選取密鑰寄存器的前64比特作為第i輪的輪子密鑰:

Ki=(w0‖w1‖w2‖w3‖w4‖w5‖w6‖w7)=

運用到的符號說明見表1.

表1 符號說明

1.4 算法改進

為了方便密碼算法的C語言實現(xiàn),原始NBC 128/128算法采用大端字節(jié)序設計.本文使用小端字節(jié)序?qū)BC 128/128密碼算法進行FPGA實現(xiàn),更節(jié)省時鐘資源[2]、降低邏輯資源耗用.

2 NBC算法的FPGA高速實現(xiàn)

NBC算法的FPGA實現(xiàn)主要需要解決以下問題:1) 輸入、輸出數(shù)據(jù)占用引腳過多問題[3];2) 算法各個過程時鐘配合問題;3) 邏輯資源塊占用問題;4) 系統(tǒng)整體運行頻率問題.本文使用數(shù)據(jù)分塊輸入技術(shù)、有限狀態(tài)機技術(shù)、流水線技術(shù)設計一種高穩(wěn)定性、高頻率、邏輯資源占用少、綜合速度快的NBC 128/128密碼算法FPGA實現(xiàn).

2.1 分時鐘輸入設計

本研究的輸入明文數(shù)據(jù)為128比特、輸入初始密鑰為128比特.考慮用4個時鐘,每次時鐘輸入32比特明文和32比特密鑰,實現(xiàn)數(shù)據(jù)分塊輸入效果,效果圖如圖3所示.

圖3 數(shù)據(jù)分塊輸入效果圖

除了輸入數(shù)據(jù)分塊,還考慮輸出數(shù)據(jù)分塊[4],輸出數(shù)據(jù)分塊需要嚴密的時鐘控制,要求計算好在特定的時鐘下進行數(shù)據(jù)輸出.將NBC 128/128的FPGA系統(tǒng)在同一個時鐘下重復調(diào)用n(n∈Z+)次實現(xiàn)明文為128比特的n倍數(shù)據(jù)加密,也可以在n個時鐘下分時實現(xiàn)明文為128比特的n倍數(shù)據(jù)加密.本文提出的NBC算法系統(tǒng)頻率高,推薦使用在n個時鐘下分時實現(xiàn)明文為128比特的n倍數(shù)據(jù)加密的方法以減少硬件的耗用.

2.2 有限狀態(tài)機設計

NBC 128/128密碼算法的復雜性主要體現(xiàn)在32次迭代輪數(shù)與20次S盒迭代次數(shù)[5].將每一個迭代輪數(shù)都用FPGA實現(xiàn)將會導致FPGA邏輯資源塊占用量過大、系統(tǒng)綜合時間過長、系統(tǒng)運行頻率低等缺點.因此,使用有限狀態(tài)機技術(shù),用狀態(tài)來控制32次迭代輪數(shù),每一次迭代輪數(shù)實現(xiàn)一次輪函數(shù),解決了密碼算法的復雜性問題,將整個系統(tǒng)輪廓用有限狀態(tài)機技術(shù)有效實現(xiàn).系統(tǒng)結(jié)構(gòu)框圖如圖4所示.

圖4 有限狀態(tài)機狀態(tài)設計流程圖

本文使用摩爾型有限狀態(tài)機,整體系統(tǒng)設計具有速度高、結(jié)構(gòu)清晰、可靠性高[6]等優(yōu)點.

2.3 流水線設計

NBC 128/128分組密碼算法采用迭代非線性反饋移位寄存器(nonlinear feedback shift register,NFSR)實現(xiàn)S盒與密鑰擴展.因此S盒與密鑰擴展兩個模塊本身無法采用流水線結(jié)構(gòu)設計.在S盒與密鑰擴展模塊之間進行流水線設計,使得S盒模塊與密鑰擴展模塊能夠高速實現(xiàn),流水線設計主要就是把密鑰擴展算法的第n+1輪的4次迭代與S盒的第n輪的前4次迭代一起執(zhí)行.S盒第n輪的前5次迭代取出第n+1輪的密鑰,使得密鑰擴展算法的實現(xiàn)在S盒實現(xiàn)的時鐘內(nèi)部進行,省掉了密鑰擴展算法占用的時鐘,提高了整個NBC 128/128系統(tǒng)的運行頻率.

3 系統(tǒng)仿真及結(jié)果分析

使用Quartus Ⅱ?qū)BC 128/128系統(tǒng)進行綜合運算,得到系統(tǒng)綜合性能參數(shù)如圖5所示,本設計使用更少的邏輯塊實現(xiàn)了更好的分組加密效果,且NBC分組密碼算法較AES算法更優(yōu).

圖5 系統(tǒng)綜合性能參數(shù)圖

采用時鐘分段數(shù)據(jù)輸入方法,大大提高了具有同數(shù)量級端口引腳硬件電路的數(shù)據(jù)吞吐量,整體設計電路如圖6所示.電路端口聲明如表2所示.

圖6 整體電路設計圖

表2 電路端口聲明

本研究使用流水線技術(shù)和非阻塞賦值技術(shù)[7-8],系統(tǒng)時鐘頻率得到顯著提高,最高頻率可達245.58 MHz.將該設計模塊并聯(lián)使用時將達到更高速的加密效果[9],這在實時性要求高的特定工作環(huán)境下有非常高的使用價值.

在完成FPGA電路設計后,利用仿真工具對該電路模塊進行了功能性時序仿真[10],如圖7所示.結(jié)合C語言程序的運行結(jié)果,可以看出該電路模型運行結(jié)果準確無誤.

(a) 數(shù)據(jù)輸入部分

4 結(jié)語

本文通過FPGA高速實現(xiàn)了國內(nèi)自主研發(fā)的分組密碼算法NBC 128/128的加密過程,對NBC 128/128算法的字節(jié)序進行了更適用于FPGA的優(yōu)化[11],從算法層面縮減了硬件邏輯塊資源的占用.在FPGA設計過程中使用分時、分塊數(shù)據(jù)輸入技術(shù)、有限狀態(tài)機技術(shù)、流水線技術(shù)和非阻塞賦值技術(shù)實現(xiàn)了NBC128/128的高速電路,電路的可擴展性能夠滿足明文與密鑰長度的倍數(shù)增加,大大提高了密碼算法的工作效率及其安全保障[12].本文通過硬件電路時序仿真工具驗證了整體設計的可行性和準確性.

猜你喜歡
狀態(tài)機明文分塊
分塊矩陣在線性代數(shù)中的應用
基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
奇怪的處罰
反三角分塊矩陣Drazin逆新的表示
奇怪的處罰
基于自適應中值濾波的分塊壓縮感知人臉識別
四部委明文反對垃圾焚燒低價競爭
基于多分辨率半邊的分塊LOD模型無縫表達
FPGA設計中狀態(tài)機安全性研究
黑龍江科學(2011年2期)2011-03-14 00:39:36
峨山| 尉犁县| 台州市| 霍邱县| 叶城县| 宁德市| 屯留县| 汉源县| 黄浦区| 布尔津县| 长沙市| 大方县| 两当县| 鄂尔多斯市| 博白县| 遵义市| 岑溪市| 岗巴县| 晴隆县| 上思县| 余姚市| 承德市| 临夏县| 登封市| 德惠市| 百色市| 锡林郭勒盟| 潍坊市| 古浪县| 丁青县| 凉城县| 南川市| 图片| 邹平县| 内丘县| 黄冈市| 马龙县| 和硕县| 武宣县| 大英县| 洞口县|