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