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

?

ZUC?256 流密碼輕量級硬件設(shè)計與實現(xiàn)

2022-06-16 02:32崔益軍倪子穎王成華劉偉強
數(shù)據(jù)采集與處理 2022年3期
關(guān)鍵詞:寄存器密碼向量

李 沐,崔益軍,倪子穎,王成華,劉偉強

(1.北京衛(wèi)星信息工程研究所,北京 100086;2.南京航空航天大學(xué)電子信息工程學(xué)院/集成電路學(xué)院,南京 211106)

引 言

流密碼是一種對稱性的密碼算法[1],它可以很容易地在硬件中實現(xiàn)并且得到很高的性能。由于流密碼在加密和解密過程中速度快,并且在傳播過程中誤差小,所以經(jīng)常被用于無線通信。ZUC?128[2]和ZUC?256[3]都是流密碼。ZUC?128 算法能夠提供128 位的安全性,但由于下一代5G 通信和量子化的發(fā)展,ZUC?128 在不久的將來將無法滿足要求?;谝陨显?,作為ZUC?128 的升級版本,ZUC?256 算法于2018 年被提出。ZUC?256 算法一共包括2 個子算法,分別是ZUC 流密碼(ZUC)和完整性算法(EIA3)[3]。ZUC?256 算法的輸入來自1 個256 位的密鑰和1 個184 位的初始向量,在輸出階段每個周期輸出1 個32 位的流密碼。EIA3 算法基于ZUC 流密碼產(chǎn)生的結(jié)果,可以通過判斷信息的每1 個比特來計算出1 個Tag 結(jié)果。

目前關(guān)于ZUC?256 硬件實現(xiàn)的研究較少,而對于ZUC?128 的硬件設(shè)計已經(jīng)有了大量的研究,對于ZUC?256 的硬件設(shè)計具有一定參考價值。Wang 等[4]在2011 年提出了3 種不同的優(yōu)化架構(gòu)來實現(xiàn)ZUC?128,并且比較了這3 種架構(gòu)的整體性和復(fù)雜性;在2012 年提出一種高吞吐率的結(jié)構(gòu)[5],但其會消耗較多資源。2016 年,一個基于ZUC?128 的機密性算法(EEA3)架構(gòu)被提出[6]。2020 年Wang 等[7]提出一種五級流水的ZUC?256 流密碼實現(xiàn)方案,其吞吐率達到了3.687 Gb/s。由于ZUC 算法主要用于通信傳輸信息的加密,因此常用于資源受限設(shè)備,所以對于ZUC 算法的低資源設(shè)計尤為關(guān)鍵?;诖耍疚幕贔PGA(Xilinx Kintex?7)架構(gòu)設(shè)計并實現(xiàn)了2 種ZUC?256 的流密碼結(jié)構(gòu)和1 種EIA3 算法結(jié)構(gòu)。

1 ZUC?256 流密碼算法和EIA3 算法

1.1 ZUC?256 流密碼

ZUC?256 流密碼算法[3]包括3 個邏輯層次:線性反饋移位寄存器(Linear feedback shift register,LF?SR)、位重組(Bit recombination,BR)和有限狀態(tài)自動機(Finite state machine,F(xiàn)SM),記 為F。ZUC?256 流密碼將1 個256 位的原始密匙K和1 個184 位的初始向量IV作為輸入,并在每個循環(huán)內(nèi)輸出32 位密碼。

LFSR 層有16 個31 位的向量(s0,s1,…,s15),并包含2 個階段,分別為初始化階段和工作階段。在初始化階段,LFSR 層的每個向量是由位常數(shù)D、256 位初始密鑰K和184 位初始向量IV組成。然后,LFSR 通過將s15、s13、s10、s4、s0合并計算,得到的結(jié)果與F層中的1 個31 位輸入u相加得到新的s0。u是通過將W向右移動1 位得到,而W來自于有限狀態(tài)自動機F。在16 個向量向右移動后,s15得到1 個新的數(shù)值。工作階段與初始化階段的區(qū)別是在工作階段時W將被設(shè)置為0。

BR 層使用8 個31 位來 自與LFSR 層的向量來計 算出4 個32 位 的數(shù)據(jù),分別為X0、X1、X2和X3。在ZUC?256 中,選取s0、s2、s5、s7、s9、s11、s14、s15作為輸入,生成的4 個結(jié)果分別滿足:X0=s15H||s14L;X1=s11L||s9H;X2=s7L||s5H和X3=s2L||s0H。

有限狀態(tài)自動機F包含2 個存儲單元R1和R2,分別來自于BR 層的輸出X0、X1、X2和X3,并且由這2個存儲單元來生成新的W值。存儲單元的初始值均設(shè)置為0。在FSM 層中,需要通過加法、異或和S?box 運算得到結(jié)果。在ZUC?256 中,S?box 的值與ZUC?128 相比沒有發(fā)生變化,依舊使用2 個不同的S?box,每個S?box 使用2 次。

ZUC?256 流密碼在工作狀態(tài)下的結(jié)構(gòu)圖如圖1 所示。圖中S表示S?box 的值,L1、L2表示異或運算。ZUC?256 流密碼每次運算需要進行32 輪的初始化運算,前32 輪的計算使用W移位1 位得到新的16 個向量組合來產(chǎn)生新的s15向量,然后將LFSR 層中的16 個向量逐一向右移動。在第33 輪中執(zhí)行與前32輪相同的操作但是此時W的值應(yīng)被設(shè)置為0。之后,每一輪的運算都可以連續(xù)產(chǎn)生32 位流密碼結(jié)果。ZUC 算法在初始化階段不輸出結(jié)果。

圖1 ZUC?256 流密碼的工作階段Fig.1 Work stage of ZUC?256 stream cipher

1.2 EIA3 算法

EIA3 算法使用通用哈希算法原理生成Tag 標(biāo)簽值。如同任何其他形式的哈希算法加密,EIA3 算法可以將任意長度的信息轉(zhuǎn)化為指定長度的標(biāo)簽值,信息的微小變化會導(dǎo)致Tag 標(biāo)簽值發(fā)生顯著變化,常用于數(shù)字簽名中。

在EIA3 算法中,根據(jù)信息中的每個比特值對Tag 值進行迭代。對于ZUC?256 的EIA3 算法來說,如果當(dāng)前信息的值為‘1’,那么新的Tag 值就是舊的Tag 值和32 位流密碼的異或結(jié)果,且用于計算的32位流密碼每次只向右移動1 位。當(dāng)信息檢索完成后,ZUC?256 流密碼再向右移動1 位,并且執(zhí)行同樣的操作。在ZUC?256 中,Tag 值的長度一共有3 個版本,分別為32 位、64 位和128 位。Tag 的初始值被定義為32 位流密碼的第1 組,設(shè)置信息M的長度為L。EIA 算法過程如算法1 所示。

算法1EIA3 算法

2 兩種ZUC?256 流密碼和EIA3 算法硬件結(jié)構(gòu)

2.1 ZUC?256 流密碼硬件結(jié)構(gòu)

本文研究目的是在硬件上對ZUC?256 流密碼進行高性能實現(xiàn)。在ZUC?256 的結(jié)構(gòu)中,整體結(jié)構(gòu)運行的主要時延來自于LFSR 層中的7 個數(shù)相加取模運算。對于BR 層來說,因為只需要改變LFSR 層向量的位置,基本上不會產(chǎn)生很大的關(guān)鍵路徑延時。有限狀態(tài)機的FSM 計算來自于加法運算、異或運算和S?box 檢索替換操作,所以F層的電路延遲比LFSR 層小得多。因此,本設(shè)計的關(guān)鍵路徑延遲是在LFSR 層,為了實現(xiàn)ZUC?256 的高性能設(shè)計,應(yīng)該減少這部分延遲。

ZUC 算法中的LFSR 層中包含2 個階段,分別為初始化階段和工作階段。在初始化階段,LFSR 層需要計算

對于式(1),可以看成計算多次(A+B)mod(231-1),其中A、B表示2 個31 位輸入數(shù)據(jù)。針對2 個數(shù)的相加取模,圖2 中的2 種加法器均可以完成以上操作。對于串行模加結(jié)構(gòu),一共使用2 個31 位加法器,第1 個加法器對輸入數(shù)據(jù)進行加法操作,第2 個加法器對第1 步得到的進位和加法和進行相加,得到模約減后的結(jié)果。該結(jié)構(gòu)一共使用了2 個加法器,關(guān)鍵路徑同樣是來自于2 個級聯(lián)的加法器。對于并行模加結(jié)構(gòu),同樣使用了2 個加法器,分別計算A+B和A+B+1,再通過A+B的加法器中產(chǎn)生的進位來選擇最終加法結(jié)果。相較于串行模加結(jié)構(gòu),該加法器同樣使用了2個加法器,但是第2 個加法器的輸入為3 個,這會造成該次加法的關(guān)鍵路徑增加,但是由于加法器是并行結(jié)構(gòu),關(guān)鍵路徑顯著少于串行模加結(jié)構(gòu)?;谝陨? 種不同的加法器,本文設(shè)計了2 種ZUC?256 流密碼的結(jié)構(gòu)。

圖2 ZUC?256 中使用的2 種加法器Fig.2 Two different adders used in ZUC?256

2.1.1 ZUC?256 結(jié)構(gòu)1

在LFSR 層的初始化階段,一共需要對7 個數(shù)字進行加法操作,而在工作階段則需要加6 個數(shù)字。因此,如果直接使用MA 和FMA 加法器,產(chǎn)生的電路關(guān)鍵路徑延遲將不可忽略。但是對于多個數(shù)據(jù)相加,只需要在最后階段計算出精確的數(shù)值,在中間階段只需要盡量減少數(shù)據(jù)相加帶來的關(guān)鍵路徑延時即可。進位保存加法器(Carry save adder,CSA)是一種關(guān)鍵路徑延時很小,并且可以將多個數(shù)據(jù)組合相加的加法器,同樣該加法器無法得到最終的加法和。該加法器的原理是,進位和加法和的每1 位都是獨立產(chǎn)生的,當(dāng)加法器的位數(shù)增加后,對于關(guān)鍵路徑?jīng)]有任何影響,只會增加加法器的資源面積,每次加法產(chǎn)生結(jié)果只需要幾個門的延時,并且生成3 個數(shù)據(jù)相加的進位和加法和。當(dāng)輸入的數(shù)據(jù)為3 個時,將1 個CSA 加法器和1 個普通加法器級聯(lián)可以快速得到3 個數(shù)據(jù)的加法結(jié)果。

使用這樣級聯(lián)的加法器可以快速完成7 個輸入數(shù)據(jù)的加法操作。在本設(shè)計中一共使用了包含CSA 加法器的2 層級聯(lián)結(jié)構(gòu),在每1 層中輸入輸出的長度被擴大4 位。當(dāng)所有的加法都完成后,再使用串行模加結(jié)構(gòu)對數(shù)據(jù)進行模約減操作。由于進位和加法和的結(jié)果小于231,該結(jié)構(gòu)只需要進行一次模約減操作。

ZUC?256 結(jié)構(gòu)1 的LFSR 層結(jié)構(gòu)如圖3 所示,其中A~F分別表示31 位輸入數(shù)據(jù)。該結(jié)構(gòu)中每輪計算一共使用3 個時鐘周期:在第1 個時鐘周期中除了u=W?1 以外的6 個數(shù)字將被相加,同時計算出u。在第2 個時鐘周期中將第1 步得到的6 個數(shù)據(jù)相加的結(jié)果再與u相加;在第3 個周期中對16 個寄存器中的數(shù)據(jù)進行移位操作,最后得到新的s15值。對于FSM 層,需要進行加法、異或和S?box 等操作。與BR 層相比,F(xiàn)SM 層的電路延遲較大。由于LFSR 層在每個迭代中使用3 個時鐘,因此可以將F層的計算分解成3 個時鐘來完成。

圖3 ZUC?256 結(jié)構(gòu)1 中LFSR 層結(jié)構(gòu)Fig.3 LFSR layer architecture of ZUC?256 Structure 1

當(dāng)電路運行在工作階段時,由于生成的密鑰在每4 個周期內(nèi)只產(chǎn)生1 次,在第1 個周期和最后2 個時鐘周期中會產(chǎn)生不需要的值。因此,需要在第2 和第3 個時鐘周期設(shè)置1 個信號,以確保在計算EIA3 算法時可以使用準(zhǔn)確的密鑰。

2.1.2 ZUC?256 結(jié)構(gòu)2

在ZUC?256 結(jié)構(gòu)1 的設(shè)計中,如果每個CSA 加法器的進位和加法和并不完全計算出來,等到最后時刻再計算,那么電路的關(guān)鍵路徑將會極大減少。受文獻[7]啟發(fā),本文設(shè)計了ZUC?256 結(jié)構(gòu)2,使用多個CSA 加法器級聯(lián),并且由于單個CSA 加法器的關(guān)鍵路徑很低,在同一個周期中計算多個級聯(lián)CSA 加法器。

ZUC?256 結(jié)構(gòu)2 的LFSR 層結(jié)構(gòu)如圖4 所示。在第1 層中,該結(jié)構(gòu)使用2 個CSA 加法器對于6 個數(shù)據(jù)同時進行加法操作,這樣產(chǎn)生了2 個進位和2 個加法和。對于前一級中CSA 加法器產(chǎn)生的進位在后級中進行加法操作,需要將進位值向左移動1 位。當(dāng)6 個數(shù)值的加法計算結(jié)束之后,首先將最后一級CSA 加法器中的進位和加法和相加。這里的加法操作使用1 次并行模加結(jié)構(gòu)的加法器,因此得到的結(jié)果就是模約減后的結(jié)果。

圖4 ZUC-256 結(jié)構(gòu)2 中LFSR 層結(jié)構(gòu)Fig.4 LFSR layer architecture of ZUC-256 Structure 2

由于本文設(shè)計目的是通過達到更高的頻率來提高ZUC?256 流密碼的吞吐率,因此對于電路結(jié)構(gòu)的設(shè)計思路是在初始化階段將LFSR 層的計算分割成3 個周期,但是在工作階段由于W不參與計算,將其分割成2 個周期。在初始化階段,用第1 個周期來計算3 層級聯(lián)的4 個CSA 加法器和u;在第2 個周期中,使用1 個并行模加加法器來計算6 個輸入數(shù)據(jù)之和的模約減;在第3 個周期中,同樣再使用1 次并行模加加法器,并得到最終結(jié)果。在工作階段,W值不再參與運算,此時只需要計算6 個數(shù)字的總和,當(dāng)?shù)? 個并行模加加法器計算完成后,這個結(jié)果便是最終結(jié)果。同樣地,由于LFSR 層的周期減少,使得該結(jié)構(gòu)不能使用3 個周期內(nèi)計算BR 層和FSM 層。幸運的是,這2 層的電路延遲很小,可以在2 個周期內(nèi)完成并且不影響整體運行的頻率。對于這2 層,在第1 個周期計算w1=(R1+X1)mod 232和w2=(R2+X2)mod(231-1),然后重新組合,最后進行線性變換;在第2 個周期中,該結(jié)構(gòu)只進行S?box 操作。

2.2 EIA3 算法的硬件實現(xiàn)

EIA3 算法的Tag 值是基于ZUC?256 流密碼算法進行計算,并且相較于ZUC?128 中的算法做出了較大改動。在本文設(shè)計中,EIA3 的輸出使用64 位的Tag 值。由于流密碼每輪輸出32 位,Tag 值的加載需要2 個周期。從算法1 可以看出,如果Tag 的長度為64 位,Tag 的第1 次計算將從第64 位開始。所以該結(jié)構(gòu)需要在第5 個周期計算Tag 值。由于Tag 值的計算在每個迭代中只移動1 位,這樣在每個周期中只計算一次會拖慢運算速度,因此本文設(shè)計中單個周期可以對32 位的信息進行處理。

因為流密碼每次產(chǎn)生32 位,而Tag 值的長度是64位,在該結(jié)構(gòu)中使用1 個96 位的寄存器來保存連續(xù)3個周期中產(chǎn)生的各32 位流密碼。每當(dāng)產(chǎn)生1 個新的32 位流密碼時,將該流密碼的值從96 位寄存器的低32位處輸入,同時將該寄存器的高32 位輸出拋棄。如圖5 所示,每個信息被設(shè)計成1 個選擇器,圖中W0~Wi均表示64 位寄存器。如果信息的i位為0,Wi寄存器將被設(shè)置為0;如果信息的i位為1,Wi寄存器將被設(shè)置為本周期內(nèi)96 位寄存器右移i位的最后32 位。這樣1個時鐘周期可以并行處理32 位消息,可以節(jié)省大量的計算時間。

圖5 EIA3 算法的硬件結(jié)構(gòu)Fig.5 Hardware structure of EIA3 algorithm

需要注意的是,當(dāng)最后一組信息進入該結(jié)構(gòu)時,需要在信息的最后1 位加上1 個比特“1”,然后通過上述方法得到最終的迭代結(jié)果。最后,通過計算Tag初始值和最后的迭代結(jié)果來得到最終的Tag 值。

3 ZUC?256 流密碼硬件實現(xiàn)與性能對比

本節(jié)使用FPGA 對于ZUC?256 的2 種結(jié)構(gòu)和基于ZUC?256 的EIA3 算法結(jié)構(gòu)進行實現(xiàn)。所有設(shè)計均使用Vivado 2020.1 進行綜合,并且在Kintex?7 FPGA 平臺上進行實現(xiàn),然后通過后仿真對其性能進行對比。由于ZUC?256 相關(guān)的硬件設(shè)計結(jié)果較少,在本文中引入部分關(guān)于ZUC?256 的軟件設(shè)計結(jié)果進行對比。為了公平起見,對于ZUC?256 流密碼的設(shè)計,資源部分不包含EIA3 算法資源。圖6 是包含EIA3 計算的完整實現(xiàn)仿真圖。圖6 中最開始進行ZUC 的31 輪初始化運算,之后產(chǎn)生連續(xù)的32 位ZUC流密碼。當(dāng)?shù)? 個流密碼產(chǎn)生后,多Tag 進行初始化,然后單次對32 位信息進行處理,最終得到Tag結(jié)果。

圖6 ZUC?256 FPGA 實現(xiàn)仿真時序圖Fig.6 Simulation timing diagram of ZUC?256 implementation on FPGA

本文的ZUC?256 硬件實現(xiàn)與對比結(jié)果如表1 所示。由表1 可見,結(jié)構(gòu)1 可以達到更高的頻率,并且使用了更少的資源,但是由于其在4 個周期中才會產(chǎn)生1 次有效的結(jié)果,因此吞吐率只有4.78 Gb/s。而對于結(jié)構(gòu)2 來說,由于改進了其流水線結(jié)構(gòu),使用了更短的流水線,盡管在頻率上不及結(jié)構(gòu)1,但卻獲得更高的吞吐率,達到6.72 Gb/s。與現(xiàn)有其他ZUC?256 的硬件設(shè)計相比,本文ZUC?256 結(jié)構(gòu)2 吞吐率提升了45.24%。與其他基于RISC?V 平臺的ZUC?256 結(jié)構(gòu)相比,本文結(jié)構(gòu)在吞吐率方面也有顯著提升。

表1 本文ZUC?256 結(jié)構(gòu)與其他ZUC?256 結(jié)構(gòu)性能對比Table 1 Performance comparison of designed and previous ZUC?256 structures

此外,本文還將ZUC?256 的設(shè)計結(jié)果與ZUC?128 設(shè)計結(jié)果進行對比,如表2 所示。從表2 中可以看出,本文設(shè)計的結(jié)構(gòu)達到了更高的運行頻率。這是因為本文結(jié)構(gòu)分割了更多的流水線,使得整體結(jié)構(gòu)上的關(guān)鍵路徑減少。并且由于頻率的提高,盡管本文設(shè)計的結(jié)構(gòu)使用了更多的周期,但是吞吐率僅略低于文獻[8]的ZUC?128 結(jié)構(gòu)。同時本文結(jié)構(gòu)使用了更少的資源,因此在吞吐率/面積方面相較于文獻[4,8]的ZUC?128 結(jié)構(gòu)分別提升了43.58%和54.95%。對于ZUC?256 結(jié)構(gòu)1,在資源上相較于文獻[4,8]的ZUC?128 結(jié)構(gòu)分別減少38.48%和61.91%。

表2 本文ZUC?256 結(jié)構(gòu)與其他ZUC?128 結(jié)構(gòu)性能對比Table 2 Performance comparison of designed ZUC?256 structures and previous ZUC?128 structures

本文設(shè)計的EIA3 算法硬件實現(xiàn)主要使用了ZUC?256 結(jié)構(gòu)1 產(chǎn)生的ZUC?256 流密碼,算法性能如表3 所示,其中Tag 位寬均為64 位。從表3 可以看出,基于ZUC?256 的EIA3 算法結(jié)構(gòu)在資源上相較于單獨的ZUC?256 結(jié)構(gòu)2 僅增加37 個Slice 塊,運行頻率與ZUC?256 結(jié)構(gòu)1 保持一致。此外,該結(jié)構(gòu)使用流水線設(shè)計,一次性可以處理32 位數(shù)據(jù),對1 次128 位數(shù)據(jù)生成64 位簽名只需要0.71 μs。

表3 基于ZUC?256 的EIA3 算法的硬件實現(xiàn)及其性能Table 3 Hardware implementation of EIA3 algorithm based on ZUC?256 and its performance

4 結(jié)束語

本文設(shè)計了2 種不同流水線的ZUC?256 硬件實現(xiàn)電路:第1 種結(jié)構(gòu)使用三級流水線,使用了更少的資源,達到了更高的頻率;第2 種結(jié)構(gòu)使用兩級流水線,可以達到更大的吞吐率。與目前最快的ZUC?256 流密碼硬件設(shè)計相比,第2 種設(shè)計在吞吐率上提升54.95%。本文還設(shè)計了一種基于ZUC?256的EIA3 算法的硬件結(jié)構(gòu),僅僅使用37 個Slice 塊的資源,對1 次128 位數(shù)據(jù)生成64 位簽名只需要0.71 μs。本文設(shè)計的ZUC?256 結(jié)構(gòu)使用了更少的資源,因此更加適合于資源受限的場合。未來的工作將著眼于ZUC?256 在資源受限情況下的更高性能設(shè)計。

猜你喜歡
寄存器密碼向量
密碼里的愛
向量的分解
聚焦“向量與三角”創(chuàng)新題
Lite寄存器模型的設(shè)計與實現(xiàn)
二進制翻譯中動靜結(jié)合的寄存器分配優(yōu)化方法
密碼抗倭立奇功
移位寄存器及算術(shù)運算應(yīng)用
密碼藏在何處
向量垂直在解析幾何中的應(yīng)用
向量五種“變身” 玩轉(zhuǎn)圓錐曲線
故城县| 仪陇县| 高清| 蛟河市| 民和| 林州市| 蒙阴县| 柯坪县| 思茅市| 本溪市| 广宁县| 定州市| 阳信县| 若尔盖县| 克什克腾旗| 洪江市| 苍溪县| 谢通门县| 册亨县| 博罗县| 繁昌县| 沭阳县| 福清市| 图木舒克市| 乐安县| 南开区| 辰溪县| 邓州市| 阿鲁科尔沁旗| 鸡泽县| 万州区| 乌拉特前旗| 屏东市| 齐河县| 恭城| 呼伦贝尔市| 米脂县| 新竹县| 五指山市| 喜德县| 达日县|