摘 要: 基于FPGA的可加密USB存儲設備的設計過程,介紹了FPGA芯片EP1C3T100、USB接口芯片AU6983等各個模塊的功能及硬件電路設計。對AES加密算法作了詳細說明,并對硬件FPGA實現進行了設計和優化。該設備由FPGA芯片通過硬件來完成數據加密過程,由高速傳輸總線進行數據傳輸。具有實時性好、安全性高等優點。
關鍵詞: FPGA; USB接口; AES算法; 數據加密
USB移動存儲設備,由于其容量大、使用方便等優點得到廣泛的應用。但隨著電子資料和電子信息的不斷增多,USB移動存儲設備的使用可能會造成存儲的重要信息或私密文件被竊取,使個人資料的存儲變得越來越不安全,導致頻繁出現無法挽回的損失和不堪設想的后果。而加密 USB存儲設備的出現則可以有效防止個人或企業數據經由U盤泄露。
雖然現在很多廠商推出的各種U盤產品均提供了加密功能以提高數據的安全性,但很多均停留于軟件加密層面,不僅需要另外安裝軟件,而且數據安全性也打了折扣,在某程度上仍不能防范數據被盜竊。本文選擇FPGA芯片對U盤進行硬件加密[1]。
1 系統設計
1.1 系統組成
系統主要由兩部分組成:PC機與USB存儲設備。USB存儲設備由USB接口芯片、FPGA芯片、Flash芯片、電源電路組成。系統原理框圖如圖1所示。
1.2 系統工作原理
基于FPGA的加密USB存儲設備,在Flash與USB接口芯片之間加1個FPGA芯片用于各種加密算法的實現,通過FPGA將存入Flash中的數據進行加密、解密。將主設備上需要加密的數據通過USB接口發送到FPGA加密芯片,加密芯片根據控制信號的信息分析出應該采用何種加密算法,加密數據產生后,給出標志信號,然后輸出加密好的數據。
FPGA芯片是系統的核心,主要實現3個主要功能:
(1)用于實現加密過程中的Flash讀寫時序控制,包括輸入的數據加密、加密算法的模式選擇等。
(2)用于加密算法的實現,需要加密的數據通過USB接口發送到FPGA芯片,FPGA芯片根據控制信號判讀是否需要對數據加密,如果需要加密則運行加密算法,加密數據產生后,輸出加密好的數據,并且輸出標志信號。
(3)實現與USB接口芯片進行數據通信。FPGA和USB之間的通信通過8 bit數據總線加上若干控制信號實現,只要FPGA產生符合USB輸入/輸出時序的脈沖,即可實現兩者之間的通信[2-3]。
2 系統硬件設計
設備的核心部分是FPGA芯片。加密、解密功能通過FPGA設計工具中硬件描述語言進行描述,在集成軟件環境下進行編譯、調試及綜合,使用專用下載電纜將程序代碼下載存儲在FPGA芯片中,一旦USB設備與PC機相連,FPGA芯片中的算法程序會對寫入Flash芯片中的數據進行加密或解密。
2.1 FPGA接口設計
本設計中選用的FPGA芯片為EP1C3T100,其中為100個管腳封裝,I/O的電源為3.3 V,內核電壓為1.5 V,只有1個鎖相環(PLL),2個專用全局時鐘輸入管腳CLK0、CLK1,5個雙重用途時鐘管腳DPCLK。所有管腳中有一些是專用配置管腳。其中,nCSO、DATA0、DCLK、ASDI是與配置芯片EPCS4相連的;TCK、TDO、TMS、TDI等管腳則與JTAG相連。
FPGA 是SRAM型的可編程邏輯器件(不是ROM型可編程器件CPLD),通過JTAG就可以直接把代碼固化在片子里面。FPGA下載到片子中的代碼存放在RAM里,所以斷電后這些代碼即刻消失。由于可用來調試FPGA,所以能夠在系統運行時或系統運行之前的任意時刻內,為所有的輸入、輸出管腳更新I/O標準。在調試階段采用JTAG模式。基于JTAG下載模式的易失性,FPGA就需要非易失性存儲器用來存放代碼,每次上電后把代碼從配置芯片讀入FPGA 然后運行。本設計選用ALTERA公司配套的AS模式的配置存儲器EPCS4,成本比較低,并且很容易配置[4]。
2.2 Flash芯片接口設計
本設計選用三星公司的NAND Flash芯片K9G8G08U0M,容量為1 GB。NAND Flash 的數據以bit 的方式保存在存儲單元,每頁2 KB+64 B,每128頁形成1個塊,1塊就是256 KB+8 KB。
2.3 USB接口設計
本設計中USB接口芯片采用安國公司的AU6983,其芯片質量和可靠性較高,該芯片最多可以接2片Flash芯片。接口電路如圖2所示。
2.4 電源電路設計
USB接口提供5 V電源,FPGA的I/O電源是3.3 V,內核的電壓是1.5 V。使用2個LDO,1個將5 V轉到3.3 V;另1個將3.3 V轉為1.5 V,加上一些濾波電容,板上的其他外設電源均是3.3 V。另外有3.3 V的電源指示燈,表示電源是否正常。另有防反插二極管,防止電源反插,對器件造成損壞。
LT1086能更好地提供高效率1.5 A電流,其所有的內部電路設計將輸入、輸出端之間的壓降控制在1 V左右,起到穩壓作用。LT1587-1.5是1個低壓差三端穩壓器,有固定的1.5 V的輸出電壓和3 A輸出電流的性能。
3 系統軟件設計
各種功能通過在FPGA設計工具中用Verilog HDL語言進行描述,在集成軟件環境Quartus II中進行編譯、調試及綜合,使用專用下載電纜將程序代碼下載到FPGA芯片中。在系統工作前,先檢查設備是否連接好之后,開始FPGA芯片及配置芯片的初始化。根據用戶需要進行讀操作或寫操作,如果檢測到寫信號線有效時,則還需要判斷此時寫數據還是寫命令,如果是寫數據,則啟動加密功能,并存入Flash;如果是寫命令,則不能啟動加密功能。如果檢測到讀信號線有效時,也需要判斷此時是讀數據還是讀命令或讀Flash的ID,如果是讀數據,即啟動解密功能,并從Flash中讀出數據;而是讀命令,則不能啟動解密功能。系統軟件流程圖如圖3所示。
對于加密算法的選擇,目前常見的加密算法主要有DES和AES 2種。DES出現得比較早,資源豐富、算法成熟。但是AES作為新一代的數據加密標準,其安全性、效率明顯高于DES,同時由于AES算法的簡潔性,對內存的需求非常低,使得它的實現更為容易。綜合各方面考慮,在本設計方案中采用AES算法[5-7]。
4 調試與仿真
本文中的設計使用Verilog HDL語言進行功能仿真和功能驗證,利用Quartus II可以對源程序進行驗證和綜合。其加密程序的仿真結果如圖4所示。圖中,I/O1是輸入的數據,I/O2是經過加密后輸出的數據。
本文介紹了一種具有數據實時自動加密的USB存儲設備設計過程,開創了USB安全通信的新領域。本系統以大規模可編程邏輯FPGA為平臺,用Verilog HDL硬件描述語言實現數據加密,由于加密算法中大量使用了復雜的按位運算,而通常這類運算不適合在通用處理器上運行,但在本系統中使用的FPGA芯片能夠進行大量邏輯運算,非常適合作為加密算法的硬件載體。用硬件實現加密算法,并且封裝到芯片中,不易被外部攻擊者讀取或更改,有較高的物理安全性。
安全性、可靠性相對較高的USB存儲設備將會對金融、通信等領域提供很大的幫助。因此,基于FPGA的硬件加密是極具研究意義的,它能夠提高U盤的安全性、可靠性,同時也不會影響U盤的讀寫速度。
參考文獻
[1] Altera. Pin Information for the cyclone EP1C3T100 device version 1.5[S]. 2006.
[2] NIST. Advanced encryption standard(AES)[M]. Federal Information Processing Standards Publication,2001
[3] 莫林利.基于FPGA模式的USB接口數據加密系統的設計與實現[J]. 計算機與現代化, 2005(2).
[4] 呂振,程千里,馬艷南.基于FPGA+USB接口的硬件加密系統[D].遼寧工程技術大學電氣與控制工程學院, 2007.
[5] 趙彬,謝濤.基于FPGA的身份認證智能卡設計[J].微計算機信息, 2006(8).
[6] 鄭志安,夏國榮.基于FPGA的高級數據加密AES中的字節替換設計[J].電子設計工程,2005(8).
[7] 李雪梅,路而紅,歐海文.AES算法的快速硬件設計與實現[J].電子技術應用,2006,32(5).