莊雪亞,王興宏,閆 華
(1.中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214072;2.無(wú)錫中微億芯有限公司,江蘇無(wú)錫214072)
一種基于FPGA的高效安全配置模式的設(shè)計(jì)
莊雪亞1,王興宏1,閆 華2
(1.中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214072;2.無(wú)錫中微億芯有限公司,江蘇無(wú)錫214072)
隨著FPGA的應(yīng)用場(chǎng)合不斷擴(kuò)展,對(duì)安全可靠下載比特流的研究也在不斷深入和擴(kuò)展?;贏ES算法,采用SRAM和EFUSE兩種存儲(chǔ)器存儲(chǔ)Encryption KEY,并配合兩種解密電路,完成了基于FPGA的高效安全配置模式電路設(shè)計(jì)。該設(shè)計(jì)實(shí)現(xiàn)了將Encrypted比特流更高效、更安全、更靈活地下載到FPGA內(nèi)的配置SRAM中。經(jīng)過(guò)數(shù)字仿真波形分析,驗(yàn)證了設(shè)計(jì)方法的可行性和正確性。
AES算法;SRAM;EFUSE;FPGA;配置;加密
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,數(shù)據(jù)存儲(chǔ)的容量也呈幾何倍數(shù)增長(zhǎng),所以海量數(shù)據(jù)對(duì)信息的安全性、可靠性提出了更高的要求。2000年10月,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所NIST宣布AES取代1977年定制的DES標(biāo)準(zhǔn),作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn),其匯聚了強(qiáng)安全性、高性能、高效性、易用靈活等優(yōu)點(diǎn),根據(jù)使用的密碼長(zhǎng)度,一般AES設(shè)計(jì)時(shí)采用128、192、256位寬[5]。由于FPGA在配置的過(guò)程中容易被非法攻擊,檢測(cè)下載數(shù)據(jù)線,非法得到bitstream,導(dǎo)致用戶不必要的損失,本文在基于現(xiàn)有的AES加密方法的基礎(chǔ)上設(shè)計(jì)了一個(gè)更便捷、更高效的解密結(jié)構(gòu)。
無(wú)論是網(wǎng)絡(luò)傳輸中使用的安全傳輸協(xié)議還是安全手段或安全措施,它們都需要加密和解密的過(guò)程。本文中AES系統(tǒng)通過(guò)軟件工具產(chǎn)生Encryption Key,連接JTAG下載至SRAM存儲(chǔ)邏輯單元中,通過(guò)配置來(lái)選擇解密邏輯,輸出比特流,這一過(guò)程在本文中為通用加解密流程,不論是在加密還是解密中,當(dāng)系統(tǒng)遇到不可恢復(fù)操作引起重啟時(shí)存儲(chǔ)在SRAM中的數(shù)據(jù)會(huì)因斷電而丟失,因此需要通過(guò)電源供電維持SRAM存儲(chǔ)單元來(lái)確保所下載密鑰不丟失,如圖1所示。本文改進(jìn)了傳統(tǒng)的通用存儲(chǔ)方式[1]。同時(shí)圖中也提供了另外一種加解密流程,Encryption Key通過(guò)JTAG寫(xiě)入SRAM中,同時(shí)可選擇進(jìn)入安全存儲(chǔ)模式,將Encryption Key寫(xiě)入EFUSE中,更高效地利用其斷電不丟失存儲(chǔ)的特點(diǎn),解密時(shí)可通過(guò)配置寄存器COR (Configuration Operation Register)選擇不同的解密模式,分別從SRAM存儲(chǔ)和EFUSE存儲(chǔ)單元中選擇通用CBC解密還是專(zhuān)用OFB解密。
圖1 加解密設(shè)計(jì)流程
高效安全配置模式的設(shè)計(jì)是在普通AES加解密設(shè)計(jì)基礎(chǔ)上,采用EFUSE可實(shí)現(xiàn)斷電不丟失存儲(chǔ),突破SRAM電池供電的缺陷;采用新型解密電路,實(shí)現(xiàn)高安全性、強(qiáng)兼容性的解密功能[2]。在整個(gè)系統(tǒng)上電復(fù)位之后,通過(guò)JTAG下載由軟件產(chǎn)生的加密數(shù)據(jù)Encryption Key,這時(shí)有兩種存儲(chǔ)單元可供選擇,如圖2所示,設(shè)計(jì)具有兩個(gè)存儲(chǔ)結(jié)構(gòu)的加解密邏輯。SRAM靜態(tài)存儲(chǔ)器需要使用電池供電才能起到存儲(chǔ)的功能,為了具有很好的兼容性,這里仍然保留SRAM進(jìn)行存儲(chǔ)[3];EFUSE區(qū)別于普通的SRAM陣列,其采用I/O電路的片上電壓,僅僅一個(gè)持續(xù)200 μs的10 mA直流脈沖就足以編程單根熔絲[4]。其最大的優(yōu)點(diǎn)是可以在斷電情況下不丟失保存Encryption KEY,這樣設(shè)計(jì)可以更好地滿足用戶的需求,用戶可以選擇一種適合自己的存儲(chǔ)模式。在用戶需要完成解密算法的設(shè)計(jì)中,通過(guò)配置又提供了CBC解密結(jié)構(gòu)和OFB解密結(jié)構(gòu)。
圖2 加解密結(jié)構(gòu)
FPGA配置寄存器共有32位,在未分配功能的最高3位中,巧妙利用第29、30兩位來(lái)控制下載數(shù)據(jù)模式選擇和解密模式選擇。默認(rèn)情況下值都是0,配置寄存器的分配情況如表1所示,表2指出了每個(gè)狀態(tài)的配置說(shuō)明。
表1 配置寄存器
表2 配置寄存器說(shuō)明
EFUSE陣列如圖3所示,256個(gè)EFUSE存儲(chǔ)單元分別分配在A0~A7這8個(gè)地址中,一次32 bit數(shù)據(jù)寫(xiě)入,分8次完成寫(xiě)256 bit加密數(shù)據(jù)。從存儲(chǔ)陣列設(shè)計(jì)到解密的實(shí)現(xiàn),都緊緊圍繞數(shù)據(jù)的寫(xiě)入與讀出,通過(guò)EFUSE_OUT0~EFUSE_OUT7讀出數(shù)據(jù),開(kāi)始進(jìn)入數(shù)據(jù)的解密過(guò)程。高級(jí)加密標(biāo)準(zhǔn)AES算法大致可分為電碼本模式(ECB)、密碼分組鏈接模式(CBC)、計(jì)算器模式(CTR)、密碼反饋模式(CFB)、輸出反饋模式(OFB)。通常在AES中用到的算法為密碼分組鏈接模式(CBC),這種模式是先將明文切分成若干小段,然后每一小段與初始?jí)K或者上一段的密文段進(jìn)行異或運(yùn)算后再與密鑰進(jìn)行加密。這種模式的優(yōu)點(diǎn)是不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長(zhǎng)度長(zhǎng)的數(shù)據(jù)。缺點(diǎn)是不利于并行計(jì)算,誤差傳遞,需要初始化密鑰向量。此加密已經(jīng)通過(guò)軟件應(yīng)用于FPGA下載bitstream中,在本文中將此加密模式的反過(guò)程稱(chēng)為CBC解密。下面同樣也從加密原理討論OFB解密。輸出反饋模式(OFB)解密可以將塊密碼變成同步的流密碼,并形成密鑰流的塊邏輯,然后將其與明文塊邏輯進(jìn)行異或,得到密文。與其他流密碼一樣,解密時(shí)密文中一個(gè)位的翻轉(zhuǎn)會(huì)使明文中同樣位置的位也產(chǎn)生翻轉(zhuǎn)。這種特性使得許多錯(cuò)誤校正碼可以得出正確的結(jié)果,例如奇偶校驗(yàn)位。每個(gè)使用OFB的輸出塊與其前面所有的輸出塊相關(guān),因此不能進(jìn)行并行化處理。然而,由于明文和密文只在最終的異或過(guò)程中使用,因此可以事先對(duì)密鑰初始向量進(jìn)行加密,最后將明文或者密文進(jìn)行并行的異或處理??梢岳幂斎肴?的CBC模式產(chǎn)生OFB模式的密鑰流。這種方法十分實(shí)用,因此可以利用快速的CBC硬件實(shí)現(xiàn)來(lái)加速OFB模式的加密過(guò)程,OFB模式的優(yōu)點(diǎn)是相對(duì)于CBC模式減少了初始化密鑰向量。
圖4、圖5分別為EFUSE寫(xiě)過(guò)程、讀過(guò)程的時(shí)序圖,圖中對(duì)信號(hào)的建立時(shí)間和保持時(shí)間都進(jìn)行了標(biāo)注。其中Efuse_pd_o為下電過(guò)程,只有當(dāng)此信號(hào)為低電平時(shí)才開(kāi)始讀寫(xiě)操作;Efuse_ps_o在寫(xiě)過(guò)程中為高,表示滿足寫(xiě)操作的電壓;Efuse_csb_o為片選使能;A[7]~A[0]為地址線;VQPS為2.5 V電壓;Efuse_pgenb_o為寫(xiě)使能信號(hào);Efuse_load_o為數(shù)據(jù)放大器開(kāi)啟使能;Efuse_storbe_o為讀寫(xiě)操作使能端。
采用基于verilog行為級(jí)描述的RTL代碼建立整個(gè)仿真驗(yàn)證環(huán)境,利用Cadence公司仿真工具NC[3]進(jìn)行設(shè)計(jì)仿真驗(yàn)證。圖6通過(guò)仿真介紹了加密KEY的下載過(guò)程,可以看出,密鑰是通過(guò)每32位一個(gè)地址并行加載密鑰,分8次完成,并將256位加密KEY完整地輸出。圖7仿真介紹了在下載bitstream之前需要加載加密初始向量,在完成初始向量加載之后開(kāi)始下載加密數(shù)據(jù),每4組32 bits數(shù)據(jù)進(jìn)行解密一次。圖7為將密文解密輸出放大圖,例如當(dāng)加載的密文為F7F66641時(shí),可以看出解出的明文為00000000,完成數(shù)據(jù)解密。
圖3 EFUSE存儲(chǔ)陣列
圖4 EFUSE寫(xiě)接口時(shí)序
圖5 EFUSE讀接口時(shí)序
圖6 加載加密KEY
圖7 解密數(shù)據(jù)
本文基于AES算法,設(shè)計(jì)了高效安全的配置模式,分別采用SRAM和EFUSE兩種存儲(chǔ)器存儲(chǔ)Encryption KEY,實(shí)現(xiàn)高效存儲(chǔ);采用不同解密模式對(duì)加密數(shù)據(jù)進(jìn)行更安全的解密處理,將 Encrypted bitstream更靈活地下載到FPGA內(nèi)的配置SRAM中,實(shí)現(xiàn)了具有高效、安全、兼容性強(qiáng)等特點(diǎn)的FPGA配置模式。
[1]Joan Daemen,Vincent Rijmen.高級(jí)加密標(biāo)準(zhǔn)(AES)算法——Rijndael的設(shè)計(jì)[M].谷大武,徐勝波,譯.北京:清華大學(xué)出版社,2003:65-72.
[2]胡向東,魏琴芳,著.應(yīng)用密碼學(xué)教程[M].北京:電子工業(yè)大學(xué),2005:78-94.
[3]Rabaey,JM.數(shù)字集成電路——電路、系統(tǒng)與設(shè)計(jì) (第二版)[M].周潤(rùn)德,等譯.北京:電子工業(yè)出版社,2004: 319-357.
[4]VAND G.Using march test to test SRAM[J].IEEE Design &Test,1993,10(1):8-14.
[5]崔建雙,李鐵克,張文新.對(duì)稱(chēng)加密算法Rijndael及其編程實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,13:5-10.
Design of an FPGA-based Efficient and Safe Configuration Mode
ZHUANG Xueya1,WANG Xinghong1,YAN Hua2
(1.China Electronics Technology Group Corporation No.58 Research Institute,Wuxi214072,China;2.East Technologies,inc.Wuxi214072,China)
With the application field of FPGA constantly expanding,researches of downloading bitstream securely and reliably are also expanding.In the paper develops an FPGA-based circuit based on AES algorithm using SRAM and EFUSE storage to store Encryption KEY and two kinds of decryption circuits.The new design downloads the encryption bitstream to SRAM within the FPGA more efficiently,securely and flexibly.The new design is proved to be feasible and practical after the analysis of corresponding digital simulation waveform.
AES algorithm;SRAM;EFUSE;FPGA;configuration;encryption
TN402
A
1681-1070(2017)04-0020-04
莊雪亞(1986—),男,江蘇江陰人,本科,工程師,研究方向?yàn)榍f(wàn)門(mén)級(jí)FPGA設(shè)計(jì)與驗(yàn)證。
2016-12-02