李 斌, 朱浩文, 邢鑫怡, 程 心
(合肥工業(yè)大學(xué) 電子科學(xué)與應(yīng)用物理學(xué)院,安徽 合肥 230601)
物聯(lián)網(wǎng)(Internet of Things,IoT)設(shè)備數(shù)量的快速增長和邊緣計算的發(fā)展在給日常生活帶來便利的同時也帶來了數(shù)據(jù)安全性問題[1-2]。分組加密算法作為主流的數(shù)據(jù)加密方法可以保障數(shù)據(jù)傳輸安全。傳統(tǒng)的高級加密標準(advanced encryption standard,AES)雖然廣泛應(yīng)用于需要進行數(shù)據(jù)加密的場景中,但是存在加密流程較為復(fù)雜,進行硬件實現(xiàn)時消耗資源較多的缺點[3-7]。大量IoT設(shè)備需要采用小尺寸的電池甚至自供電的能量收集電路保障系統(tǒng)運行,由此產(chǎn)生了結(jié)構(gòu)緊湊、適用于資源受限平臺的輕量級密碼算法[8-10]。SIMON輕量級密碼算法作為一種新型的分組密碼算法可提供10種可選的分組和密鑰長度以滿足不同安全性能要求的應(yīng)用場景,因此已成為輕量級密碼領(lǐng)域的研究熱點之一[11-14]。
文獻[11]提出了一種位串行結(jié)構(gòu)的SIMON加密電路,僅需使用36個Slices,但存在吞吐率低的缺陷,無法滿足IoT場景中大量的數(shù)據(jù)交互需求。文獻[12-13]均設(shè)計實現(xiàn)了緊湊的低功耗SIMON加密電路,但所設(shè)計的電路只能支持固定分組和密鑰長度,無法滿足各類對數(shù)據(jù)加密性能要求迥異的IoT應(yīng)用,缺乏應(yīng)用靈活性。此外,上述有關(guān)SIMON算法的硬件實現(xiàn)均只實現(xiàn)了加密電路部分,沒有考慮分組密碼的迭代方式[15]。
綜上所述,目前對SIMON加密算法的硬件實現(xiàn)研究主要集中在僅涉及加密電路的位串行結(jié)構(gòu)和單一配置模式上,沒有針對分組密碼的迭代方式進行支持,難以滿足多樣化的IoT應(yīng)用需求和分組密碼實際運行需要。本文針對硬件實現(xiàn)功能單一、靈活性低、位串行結(jié)構(gòu)吞吐率低和沒有支持安全的分組迭代的缺點進行改進,設(shè)計了一種基于位并行結(jié)構(gòu)并結(jié)合數(shù)據(jù)路徑復(fù)用技術(shù)的可支持輸出反饋(output feedback, OFB)及計數(shù)器(CTR)模式的高性能輕量級SIMON加密電路。所設(shè)計的電路在Xilinx XC7A35T 現(xiàn)場可編程門陣列(field programmable gate array,FPGA)上進行測試,在保證硬件資源開銷較小的前提下,具備支持動態(tài)密鑰更新、支持OFB和CTR迭代方式、分組和密鑰長度可配置和高吞吐率的特點,適用于各類資源受限的IoT設(shè)備。
SIMON算法是一種輕量級的對稱分組加密算法,主要包括輪函數(shù)運算和密鑰調(diào)度2個部分。SIMON算法根據(jù)所支持的分組長度和密鑰長度的不同有10種不同的配置,記作SIMON 2n/mn,其中:2n為分組長度;mn為密鑰長度;n位稱為1個字。例如,SIMON 64/128模式代表1個字的長度為32,密鑰由4個字構(gòu)成,即m為4。SIMON加密算法的分組長度、密鑰長度以及必要的參數(shù)配置見表1所列。
表1中,輪常數(shù)的目的是消除循環(huán)移位帶來的滑動特性,輪數(shù)表示完成1個分組的加密所需的迭代次數(shù)。
表1 SIMON密碼算法參數(shù)
SIMON加密算法采用Feistel結(jié)構(gòu),主要由按位異或、按位與及非線性的循環(huán)移位構(gòu)成,具體算法為:
Rk(x,y)=(y?(Sx&S8x)?S2x?k,x)
(1)
(2)
其中:Rk為輪函數(shù);Si表示循環(huán)左移i位;k為密鑰。 輪函數(shù)運算對2n位輸入分組長度的數(shù)據(jù)首先等分為高n位XL和低n位XR,XL循環(huán)左移1位和循環(huán)左移8位后的數(shù)據(jù)進行按位與后和XR進行異或,所得數(shù)據(jù)再與XL循環(huán)左移2位的數(shù)據(jù)進行異或,結(jié)果與相應(yīng)輪密鑰進行異或操作后對原XL數(shù)據(jù)進行更新,同時原XL數(shù)據(jù)直接覆蓋原XR。重復(fù)上述輪函數(shù)操作流程直至迭代次數(shù)達到表1所規(guī)定的相應(yīng)輪數(shù)R,即完成1次加密。
對特定的SIMON 2n/mn,密鑰調(diào)度的方法取決于m的取值,m的3種取值對應(yīng)的具體密鑰調(diào)度方法有所區(qū)別。將輸入初始密鑰等分為m組,當m=2/3時,對最高n位循環(huán)右移3位后與低n位進行異或得到中間值,同時在循環(huán)右移3位的基礎(chǔ)上再右移1位與上述中間值再次異或,最終異或上輪常數(shù)的第i位后再異或常量M,并更新密鑰寄存器的最高n位,同時各組密鑰寄存器分別由上一組密鑰寄存器的值進行覆蓋更新。而對m=4的密鑰調(diào)度方案,KR3寄存器的更新過程與m=2/3時有所不同。
本文設(shè)計的可配置分組和密鑰長度的SIMON加密電路主要分為加密控制單元、密鑰調(diào)度單元和輪函數(shù)運算單元3個部分,如圖1所示。該加密電路接收外部輸入時鐘信號CLK、復(fù)位信號RST-n、輸入明文DIN、初始密鑰SEED、加密使能信號EN和模式選擇信號MODE,輸出加密完成信號DONE及密文DOUT。
圖1 SIMON加密電路架構(gòu)
加密控制單元主要提供密鑰調(diào)度單元和輪函數(shù)運算單元所需的控制信號,具體包括由加密輪數(shù)計數(shù)器值、加密進程指示信號共同構(gòu)成的控制信號總線CTRL以及DONE信號。
加密控制單元的內(nèi)部主要由增量計數(shù)器、預(yù)存加密輪數(shù)數(shù)值的只讀存儲器(read only memory,ROM)和比較器構(gòu)成,在時鐘上升沿,EN信號有效后計數(shù)器從0開始遞增計數(shù)。同時,MODE信號輸入到預(yù)存加密輪數(shù)的ROM將完成相應(yīng)模式需要的輪數(shù)值作為比較器的一個輸入,計數(shù)器輸出作為比較器的另一路輸入,待計數(shù)器輸出與加密輪數(shù)相等,輸出DONE信號。加密控制單元還輸出一路加密電路內(nèi)部使用的CTRL信號給密鑰調(diào)度單元和輪函數(shù)運算單元,從而控制內(nèi)部的寄存器在加密完成后保持寄存器輸出狀態(tài),減小動態(tài)功耗。
密鑰調(diào)度單元接收加密控制單元傳遞的EN信號進入密鑰更新狀態(tài),并根據(jù)輸入MODE的值對內(nèi)部數(shù)據(jù)通路進行選擇,從而實現(xiàn)不同m取值下的調(diào)度方法及不同的有效密鑰長度。密鑰調(diào)度模塊可以接收外部輸入的SEED,避免了長期采用固定密鑰帶來的安全隱患,從而進行動態(tài)密鑰更新。
密鑰調(diào)度過程需要使用的輪常數(shù)Z[j]利用ROM預(yù)存,每個輪常數(shù)均擴展為72位,從而滿足需要最長72位輪常數(shù)的模式。MODE作為尋址輪常數(shù)ROM的地址,取出對應(yīng)的輪常數(shù)并在時鐘控制下并行存入移位寄存器進行逐位右移。
密鑰調(diào)度單元如圖2所示。
圖2 密鑰調(diào)度單元
由表1可知最大密鑰長度為256位,因此位并行實現(xiàn)的密鑰調(diào)度單元使用256位寄存器,并均分為4組。EN有效時,加載SEED信號,若密鑰長度不滿256位,則按照高位優(yōu)先填充的方式加載到相應(yīng)寄存器中。每個時鐘周期,各個寄存器數(shù)據(jù)通過輸入端的多路選擇器(MUX)選擇下個周期的數(shù)據(jù)輸入來源。MUX的控制端切換取決于當前工作模式下MODE信號的取值。當m=2時,KR3寄存器的輸出經(jīng)MUX直接輸入到KR0,KR1和KR2寄存器不使用;當m=3時,KR3數(shù)據(jù)輸出經(jīng)MUX輸入KR1,而KR1的輸出作為KR0的輸入,KR2不使用;當m=4時,KR3、KR2、KR1、KR0經(jīng)MUX順序連接構(gòu)成移位寄存器形式,對3種m的不同取值,采用圖2的寄存器設(shè)計可以保證只對KR3進行循環(huán)右移的操作,使得3種密鑰調(diào)度方法實現(xiàn)的資源復(fù)用。當m=4時,只需對KR1寄存器進行額外的循環(huán)右移1位的操作,具體使用KR3循環(huán)右移3位的結(jié)果或KR1循環(huán)右移1位與KR3循環(huán)右移4位再異或后的結(jié)果是通過MUX完成的,從而滿足不同密鑰調(diào)度方法的需要。
此外,密鑰調(diào)度單元中KR3的更新還需要輪常數(shù)Z[j]以及常量M的參與。由于M是最低兩位為0、高位均為1的比特串,與M的異或可以簡化為對數(shù)據(jù)高位取反并保持最低兩位不變。因此,原本所需65個兩輸入異或門減至62個反相器和1個兩輸入異或門。
輪函數(shù)運算單元的狀態(tài)取決于128位寄存器{XL,XR},該寄存器存儲外部輸入的DIN以及在輪函數(shù)運算迭代更新過程的中間值,從而實現(xiàn)原位計算,減小寄存器資源的開銷。XL被用來存儲數(shù)據(jù)的高64位,XR存儲數(shù)據(jù)的低64位。由加密控制單元輸出的MODE信號控制輪函數(shù)運算單元內(nèi)部數(shù)據(jù)通路的MUX,實現(xiàn)多模式可配置并充分復(fù)用運算資源。輪函數(shù)操作可抽象為數(shù)據(jù)傳遞和數(shù)據(jù)更新2個步驟。輪函數(shù)運算單元如圖3所示,數(shù)據(jù)傳遞將XL數(shù)據(jù)復(fù)制給XR,而數(shù)據(jù)更新涉及XL和XR以及密鑰調(diào)度單元傳遞的輪密鑰KEY。
圖3 輪函數(shù)運算單元
{XL,XR}寄存器輸入數(shù)據(jù)的更新由MUX控制。EN信號優(yōu)先級最高,當EN有效時,DIN信號被選中,從而一個新的分組加密過程開始。若輸入明文長度不滿128位,則按照高位優(yōu)先填充的方式將明文均分為2個部分,低位補0后分別加載到XL和XR寄存器中。明文加載完成后輪函數(shù)運算單元開始迭代過程,此時MUX選中輪函數(shù)運算結(jié)果,即XL輸入為SIMON輪函數(shù)運算的結(jié)果,從而完成數(shù)據(jù)更新步驟,而XR輸入上一個周期結(jié)束時XL的數(shù)據(jù),從而完成數(shù)據(jù)傳遞步驟。當加密控制單元DONE信號有效時,寄存器{XL,XR}將對當前值進行保持,即DOUT不變,便于外部系統(tǒng)取用密文,同時不處于加密工作狀態(tài)時,整個電路的寄存器輸出不發(fā)生信號跳變,從而降低系統(tǒng)的功耗。
基于上述SIMON加密電路,本文設(shè)計了支持OFB和CTR分組迭代方式的SIMON加密電路,支持實際分組密碼迭代操作的需要。擴展后的SIMON加密電路如圖4所示。通過引入初始值INT-VAL信號及OFB-CTR-SEL信號,切換不同的輸入初始值并改變加密迭代數(shù)據(jù)流向,從而在基本SIMON加密電路基礎(chǔ)上支持分組加密的OFB和CTR迭代。
圖4 擴展后的SIMON加密電路
為了測試所提出的SIMON加密電路的功能和性能指標,本文通過Verilog HDL進行設(shè)計描述并使用Artix-7 XC7A35T FPGA作為實驗平臺進行功能和性能測試。
本文提出的可動態(tài)密鑰更新且支持多模式可配置的SIMON加密電路,在該FPGA平臺上最大工作頻率為350 MHz,各類資源消耗分別為816LUTs、473FFs和245Slices,其中LUTs、FFs和Slices分別代表FPGA的查找表、寄存器和切片數(shù)。吞吐率的計算公式為:
Tp=fω/τ
(3)
其中:f為電路的工作頻率;ω為有效的數(shù)據(jù)路徑寬度;τ為加密過程的延時周期。
MODE分別為4’d0、4’d7及4’d9,對應(yīng)SIMON 32/64(模式0)、SIMON 128/128(模式7)以及SIMON 128/256(模式9)的測試結(jié)果如圖5所示,輸出密文與官方測試標準數(shù)據(jù)一致,即SIMON加密電路正確完成了加密功能。
圖5 多模式可配置SIMON加密電路測試波形
與文獻[11]提出的位串行結(jié)構(gòu)實現(xiàn)的SIMON加密電路相比,雖然消耗的資源提高了6.8倍,但最大吞吐率提升了183倍,在10種分組長度和密鑰長度配置模式下的吞吐率及延時如圖6所示。由圖6可知:模式0下的吞吐率為350.0 Mb/s;模式7下達到最大吞吐率為658.8 Mb/s,比模式0吞吐率提升1.88倍;模式9下達到最大延時為205.7 ns。
圖6 多模式配置下的吞吐率與延時
本文方法與相關(guān)研究的比較見表2所列。
表2 SIMON加密電路性能對比
相較于文獻[12-13]所提出的單一模式的加密電路來說,多模式可配置的硬件設(shè)計實現(xiàn)了對變長明文分組長度和密鑰長度的支持,從而可以廣泛應(yīng)用于對加密性能有不同需求的資源受限的IoT設(shè)備。
從表2可以看出,本文所提出的SIMON加密電路性能更優(yōu),其中文獻[12]選取了所提出的64位并行實現(xiàn)方案,吞吐率數(shù)據(jù)由本文(3)式計算得出?;赟IMON加密電路擴展對分組密碼OFB和CTR迭代的支持后,Slices資源僅提高了19.6%。
本文提出了一種基于SIMON密碼算法的多模式可配置的輕量級加密電路,在Xilinx Artix-7 XC7A35T FPGA上進行硬件實現(xiàn)和性能測試。實驗結(jié)果表明,所設(shè)計的SIMON加密電路最大頻率可達350 MHz,在僅消耗245 Slices的情況下,10種模式下的吞吐率均超過350.0 Mb/s,其中最大吞吐率為658.8 Mb/s。此外該電路經(jīng)擴展支持分組迭代的OFB和CTR后,資源消耗僅提高19.6%,不僅可滿足IoT場景中的各類有數(shù)據(jù)加密需求的應(yīng)用,還在保持較小硬件開銷的同時具備充分的靈活性。