吳 軍,沈珊瑚,何 忠
(杭州師范大學杭州國際服務工程學院,浙江杭州 311121)
?
基于SOPC的U盤加解密系統(tǒng)實現(xiàn)
吳軍,沈珊瑚,何忠
(杭州師范大學杭州國際服務工程學院,浙江杭州 311121)
摘要:U盤是一種能夠進行數(shù)據(jù)交互的主流便攜式存儲設(shè)備,設(shè)計對U盤數(shù)據(jù)進行加密和解密的系統(tǒng)能夠帶來更為安全的移動存儲.本文利用SOPC(System On a Programmable Chip )技術(shù)設(shè)計實現(xiàn)了一種U盤加解密系統(tǒng),AES算法實現(xiàn)利用Verilog HDL語言,硬件部分采用Altera公司的Cyclone IV EP4CE15F17C8 FPGA芯片,與PC機的交互利用Nios II軟核完成.由于加解密處理器和控制器都以IP軟核的形式嵌入到FPGA中,整個系統(tǒng)具有高度的可配置性和兼容性.實驗驗證了該系統(tǒng)的加解密功能的正確性.
關(guān)鍵詞:SOPC; U盤加解密; FPGA; Nios II
隨著人們對信息安全的重視,數(shù)據(jù)加解密系統(tǒng)顯得越來越重要,特別是當信息存儲在某種便攜式設(shè)備(如U盤)上時,由于缺少獨立的數(shù)據(jù)保護系統(tǒng),在進行數(shù)據(jù)交互時容易發(fā)生信息泄露的現(xiàn)象,如果能為這些便攜式設(shè)備加上一個加解密系統(tǒng),就能有效的保護信息安全.目前興起的互聯(lián)網(wǎng)云計算移動存儲就迫切需要這類硬件加密方式.
一個好的加解密系統(tǒng)在于有一個幾乎不能夠被攻破的加密算法,AES(Advanced Encryption Standard)算法就是當今被業(yè)界所承認的比較安全的算法之一,是由美國國家標準和技術(shù)學會于2002正式公布的高級加密標準[1],由于此算法設(shè)計簡單、安全性良好和可以抵抗目前所有的已知攻擊,現(xiàn)已廣泛應用于語音、視頻信息加密,數(shù)據(jù)庫中數(shù)據(jù)加密以及硬盤數(shù)據(jù)加密等方面[1-4].SOPC(System On Programmable System)是可編程片上系統(tǒng),近幾年低成本的FPGA不斷推陳出新,利用EDA工具對FPGA芯片進行多樣性設(shè)計,并逐步向系統(tǒng)級設(shè)計發(fā)展是一大趨勢[5-6].
文中所實現(xiàn)的這種能夠?qū)盤中數(shù)據(jù)進行加密和解密的系統(tǒng),在使用時將計算機和U盤一同與加密器相連接,輸入正確密鑰后,即可進行數(shù)據(jù)的加解密和存儲等操作.加密裝置包括數(shù)據(jù)解壓縮模塊,存儲設(shè)備控制模塊,加解密模塊,密鑰管理模塊,電源,時鐘電路,以及負責與主機通信并帶有USB接口的設(shè)備,與存儲端通信并帶有USB插槽的設(shè)備等.其中加解密模塊采用多密碼引擎的并行方式進行加解密.由于提供了基于AES算法對U盤中數(shù)據(jù)進行加解密的實現(xiàn)方法,具有很高的安全性、兼容性和高速存儲性等特點[7-8].
1系統(tǒng)硬件結(jié)構(gòu)
本系統(tǒng)實現(xiàn)的硬件包括黑金開發(fā)板四代,ALTERA Cyclone IV EP4CE15F17C8芯片,主要應用到的軟件有:Quartus II、NIOS II IDE和Modelsim10.1等,其中Quartus II用來實現(xiàn)Verilog 硬件主要模塊,如:AES加解密,密鑰保存,串并轉(zhuǎn)換等;NIOS II IDE主要用來控制U盤文件操作和串口通信,Modelsim10.1主要用來對Verilog模塊進行行為仿真.
圖1系統(tǒng)連接關(guān)系圖
Fig. 1Diagram of system connection relationship
如圖1所示,將開發(fā)板分別與PC和外部存儲設(shè)備相連,其中PC與FPGA之間通過串口相互進行信息交互,PC負責發(fā)送命令至FPGA板,然后FPGA板對接受的命令進行判斷和執(zhí)行;U盤與FPGA開發(fā)板直接相連,在進行加解密的過程中可以對U盤里面的文件進行相應的操作.
系統(tǒng)硬件框架分析:
圖2 系統(tǒng)框架Fig. 2 System Frame
U盤數(shù)據(jù)加解密系統(tǒng)框架如圖2所示,它包括USB公口端、USB母口端、數(shù)據(jù)解壓縮模塊、存儲設(shè)備控制模塊、加解密模塊、密鑰管理模塊、電源及時鐘的產(chǎn)生電路.
圖2中USB公口端含有USB公口及USB數(shù)據(jù)傳輸協(xié)議,與數(shù)據(jù)解壓縮模塊相連接;USB母口端含有USB母口及USB數(shù)據(jù)傳輸協(xié)議,與存儲設(shè)備控制模塊相連接;加解密模塊含有加密算法,并采用多加解密引擎的方式對送入的數(shù)據(jù)分組進行加解密操作,與存儲設(shè)備控制模塊相連接;密鑰管理模塊與存儲設(shè)備控制模塊相連接,對密鑰進行安全管理;電源及時鐘的產(chǎn)生電路分別與所述的存儲設(shè)備控制模塊和加解密模塊相連接,用于產(chǎn)生加解密模塊所需要的電壓和時鐘.
2系統(tǒng)軟件分析
本文以Altera公司的EP4CE15F17C8芯片為基礎(chǔ),構(gòu)建了一個能對U盤中數(shù)據(jù)進行加解密處理的SOPC系統(tǒng).整個SOPC系統(tǒng)如圖3所示.
AES-128加密算法系統(tǒng)每次將128bit(bit:位)的明文塊和128bit的密鑰經(jīng)過10輪迭代最終產(chǎn)生128bit的密文塊輸出,解密過程則相反[7];AES加密IP核是用SOPC Builder構(gòu)建的,根據(jù)AES算法內(nèi)部設(shè)計的理論,處理時延時2ns,但為了安全穩(wěn)定起見,同時也考慮到FPGA板能夠跑在100M,故時鐘設(shè)為100MHZ,完成128bit的加密需要13個時鐘周期,按照以上時鐘計算,滿負荷運行加密時的速度可以達到985M bit/s(123M byte/s)[8],從而可以實現(xiàn)高速穩(wěn)定的加解密運算.放大圖A中,“AES”是AES加密模塊,負責數(shù)據(jù)的加密;“port8to128”是串并轉(zhuǎn)換模塊,負責串并轉(zhuǎn)換;“keybox”是密鑰管理驗證模塊,用于驗證密鑰的正確性;放大圖B中,aes_inv_cipher_top為AES解密模塊,負責數(shù)據(jù)的解密;port8to128為串并轉(zhuǎn)換模塊,負責串并轉(zhuǎn)換.
圖3 SOPC 系統(tǒng), 解密模塊(左下圖),加密模塊(右下圖)Fig. 3 SOPC system, decryption module (bottom left), encryption module (bottom right)
2.2.1AES加密核接口時序圖
如圖4所示,一次128bit字節(jié)的加密可以在12個時鐘周期內(nèi)完成(10個周期用于輪循環(huán),1個時鐘周期用于初始化密鑰擴展,1個時鐘周期用于輸出階段).AES加密模塊內(nèi)部一旦接受到ld管腳信號為高,會在text_in和key總線上分別采樣128bit明文和密鑰.通過加密密核的運算,在12個時鐘周期后,AES加密核會將done管腳信號拉高,告訴外部加密完成,用戶可以根據(jù)該信號的完成情況來讀出text_out數(shù)據(jù)線上的密文數(shù)據(jù)使用.
圖4 AES 加密核接口時序Fig. 4 Time sequence of AES encryption core interface
圖5 密鑰裝入時序Fig. 5 Time sequence of key input
2.2.2密鑰裝入時序圖
如圖5所示,由于解密過程需要將子密鑰擴展以后再反序,所以子密鑰要在開始解密過程前已經(jīng)反序完成,一旦密鑰開始裝入,密鑰擴展就會產(chǎn)生并存取在內(nèi)部緩存中.擴展的密鑰可以被以后的解密反序列重復使用.其中key在kld信號拉高時裝入,一旦密鑰擴展完成以后,kdone信號就會在下一個時鐘拉高.kdone拉高意味著可以進行解密操作了(由于密鑰裝入和加密序列不能并行發(fā)生,所以一個密鑰裝入總是在解密序列被執(zhí)行前執(zhí)行).
2.2.3解密序列圖
圖6 解密時序Fig. 6 Time sequence of decryption
如圖6所示,一次128bit字節(jié)的解密可以在12個時鐘周期內(nèi)完成(10個周期用于輪循環(huán),1個時鐘周期用于初始化密鑰擴展,1個時鐘周期用于輸出階段).AES加密模塊內(nèi)部一旦接受到ld管腳信號為高,會在text_in和總線上分別采樣加密后的數(shù)據(jù).通過解密密核的運算,在12個時鐘周期后,AES解密核會將done管腳信號拉高,標志著外部解密完成.
2.3.1加密驗證
如圖7所示,加密過程在12個周期內(nèi)完成了,其中數(shù)據(jù)在10個周期內(nèi)共加密了10次,直至第10輪為最終加密所得的結(jié)果,通過圖7可以看到加密的結(jié)果為text_out=43bb23ec8907e79409ad11086533cfa4;在rst為1前,所有的輸出都為高阻態(tài),當rst=1時才會開始加密過程,ld為數(shù)據(jù)加載信號,當ld=1時開始加載數(shù)據(jù),可以看到text_in在其等于1時加載了數(shù)據(jù):text_in=128′h000102030405060708090A0B0C0D0E0F;kld為密鑰載入信號,當其為1時開始載入密鑰,可以看到載入的密鑰key=128’h3ca10b2157f01915902e 1380acc107bd,密鑰載入信號一般都是與數(shù)據(jù)加載信號同步,從而利于一有數(shù)據(jù)載入就能開始加密;done為加密完成信號,當done=1時,表明加密過程完成,可以進行解密過程.
圖7 加密仿真結(jié)果Fig. 7 Encryption simulation result
2.3.2解密驗證
如圖8所示,令數(shù)據(jù)輸入text_in=128’h43bb23ec8907e79409ad11086533cfa4,等待14個周期后,ld=1,開始載入數(shù)據(jù),解密過程耗時12個周期,在后10個周期內(nèi)將進行10次變換,并在第10次輸出最終結(jié)果text_out=128’h 000102030405060708090a0b0c0d0e0f,由圖8可以看出,數(shù)據(jù)經(jīng)過加密和解密過程后其值保持不變,從而驗證了加解密的正確性.
圖8 解密仿真結(jié)果Fig. 8 Decryption simulation result
3實驗結(jié)果
整個實驗在NIOS II IDE中進行,其中用的工具還有串口調(diào)試助手和AES加密解密計算工具;串口調(diào)試助手用于輸入命令進行與主機和FPGA之間的信息交互,AES加密解密計算工具用于驗證實驗結(jié)果的正確性.
程序共有4個主要命令:
1) 設(shè)置密鑰,命令:k(密鑰如果不正確沒有操作權(quán)限);2) 遍歷文件,命令:m;3) 讀取文件,命令:r;4) 加密演示.命令:e.
3.2.1密鑰的設(shè)置與驗證
圖9顯示,利用串口調(diào)試助手輸入命令k后,在NIOS II IDE軟件的console窗口可以看出輸入了兩次k命令,在驗證標識fanhui1沒有等于1前是沒有權(quán)限進行其他命令操作的,這點可以從圖9輸入命令的情況看出.
圖9 密鑰設(shè)置與驗證Fig. 9 Key setting and verification
3.2.2文件的讀取
圖10顯示,在窗口調(diào)試助手里輸入命令r后,就會提示輸入要讀取文件的文件名,讀取的是TEST這個文本文檔里的內(nèi)容:You cannot improve your past, but you can improve your future.其中SrcFileSz表示文本文檔里面內(nèi)容的大小,單位為字節(jié).
圖10 文件讀取Fig. 10 File reading
圖11 枚舉文件Fig. 11 File listing
圖12 加密文件Fig. 12 Encryption files
3.2.3枚舉文件列表
圖11顯示,在串口調(diào)試助手里輸入m命令后,就會列舉出當前U盤里所有的文件的文件名,文件夾顯示名稱,文件顯示名稱加文件后綴名.
圖13 軟件驗證結(jié)果Fig. 13 Software verification result
3.2.4加密文件
圖12顯示,在串口調(diào)試助手里輸入命令e后,就會提示請輸入要加密的文件名,以TEST文本文檔為例,對其里面的文件進行加密處理,結(jié)果以十六進制顯示(方便驗證),從圖12可以看出,密鑰為:hellohellohelloh,明文為:worldworldhelloh,密文為:bce82becdd02e0263dad27b317586654.
3.2.5驗證結(jié)果
用AES加密解密計算工具對上面的結(jié)果進行驗證,如圖13顯示,可以發(fā)現(xiàn)在點擊開始加密后,出來的密文與上面的結(jié)果是一致的,從而說明結(jié)果是正確的.至此,完成了對U盤里數(shù)據(jù)進行加解密的功能驗證.
4總結(jié)
本文基于AES算法,利用SOPC技術(shù)設(shè)計出具有對U盤數(shù)據(jù)加解密功能的加解密系統(tǒng),提供了一種對U盤數(shù)據(jù)加解密的加密器和加解密方法,當用戶使用時,只要與加密器中已存的密鑰一致就可以開始使用該加密系統(tǒng)進行加密,進而實現(xiàn)對U盤中的數(shù)據(jù)進行加解密操作,具有很高的安全性、兼容性、普遍性、通用性,高速存儲、節(jié)省外部存儲空間等優(yōu)點.未來將改進現(xiàn)有系統(tǒng)密鑰需要手動輸入的弱點,并基于此系統(tǒng)對密鑰管理進一步研究,即利用FPGA芯片本身時延等特性進行硬件固有安全的研究.
參考文獻:
[1] 肖國鎮(zhèn),白恩鍵,劉曉娟.AES密碼分析的若干新進展[J].電子學報,2003,31(10):1550-1554.
[2] 劉凌波,代江濱.現(xiàn)代密碼理論新動向[J].計算機時代,2004(2):1-2.
[3] MENEZES A J, VAN OORSCHOT P C,VANSTONE S A.應用密碼學手冊[M].胡磊,王鵬,譯.北京:電子工業(yè)出版社,2005:201-245.
[4] 付華杰,劉麗君,張遂南.高速USBIP核的設(shè)計與開發(fā)[J].微電子學與計算機,2008,25(7):127-129.
[5] 戴迎珺.基于SOPC的USB設(shè)備控制器IP核設(shè)計[J].計算機工程與設(shè)計,2008(20):5234-5236.
[6] 劉連東,郁濱,羅長遠. 基于NIOS II的嵌入式USB主機設(shè)計與研究[J].計算機工程與設(shè)計,2007,28(9):2100-2102.
[7] EIBIRT A J, YIP W, CHETWYND B, et al. An FPGA-based performance evaluation of the AES block cipher candidate algorithm finalists[J]. IEEE Transactions on Very Large Scale Integration (VLSI) Systems,2001,9(4):545-557.
[8] CALTAGIRONE C, ANANTHA K. High throughput, parallelized 128-bit AES encryption in a resource-limited FPGA[C]//Proceedings of the fifteenth annual ACM symposium on Parallel algorithms and architectures.[S.l.]:ACM,2003:240-241.
[9] SAGGESE G P, MAZZEO A, MAZZOCCA N, et al. An FPGA-based performance analysis of the unrolling, tiling, and pipelining of the AES algorithm[C]//Field Programmable Logic and Application. Berlin: Springer-Verlag,2003:292-302.
Implementation of USB Disk Encryption and Decryption System Based on SOPC
WU Jun, SHEN Shanhu, HE Zhong
(Hangzhou Institute of Service Engineering, Hangzhou Normal University, Hangzhou 311121, China)
Abstract:USB disk is a mainstream portable storage device that can carry out data interactions, and it brings safer mobile storage with the design of encryption and decryption system for the USB disk. This paper implementes a USB disk encryption and decryption system with SOPC (System on a Programmable Chip) technology, AES algorithm is implemented with Verilog HDL language, the core part adopts Altera Cyclone IV EP4CE15F17C8 FPGA chip, and the interaction with PC engine uses Nios II soft core. Since the encryption and decryption processor and controller are embedded in the FPGA chip in the form of IP soft core, the whole system is highly reconfigurable and compatible. Experimentations verify the functional correctness of the whole system.
Key words:SOPC; USB disk encryption and decryption; FPGA; Nios II
文章編號:1674-232X(2016)01-0095-07
中圖分類號:TP368
文獻標志碼:A
doi:10.3969/j.issn.1674-232X.2016.01.018
通信作者:沈珊瑚(1981—)女,講師,博士,主要從事安全芯片實現(xiàn)相關(guān)研究.E-mail:shshen88@163.com
基金項目:杭州師范大學科研啟動基金項目(PF14002004005); 浙江省信息安全聯(lián)盟課題(kz13013003).
收稿日期:2015-04-02