摘 要: 基于FPGA的可加密USB存儲(chǔ)設(shè)備的設(shè)計(jì)過(guò)程,,介紹了FPGA芯片EP1C3T100,、USB接口芯片AU6983等各個(gè)模塊的功能及硬件電路設(shè)計(jì)。對(duì)AES加密算法作了詳細(xì)說(shuō)明,,并對(duì)硬件FPGA實(shí)現(xiàn)進(jìn)行了設(shè)計(jì)和優(yōu)化,。該設(shè)備由FPGA芯片通過(guò)硬件來(lái)完成數(shù)據(jù)加密過(guò)程,由高速傳輸總線進(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ǔ)變得越來(lái)越不安全,導(dǎo)致頻繁出現(xiàn)無(wú)法挽回的損失和不堪設(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芯片對(duì)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),通過(guò)FPGA將存入Flash中的數(shù)據(jù)進(jìn)行加密、解密。將主設(shè)備上需要加密的數(shù)據(jù)通過(guò)USB接口發(fā)送到FPGA加密芯片,,加密芯片根據(jù)控制信號(hào)的信息分析出應(yīng)該采用何種加密算法,,加密數(shù)據(jù)產(chǎn)生后,給出標(biāo)志信號(hào),,然后輸出加密好的數(shù)據(jù),。
FPGA芯片是系統(tǒng)的核心,主要實(shí)現(xiàn)3個(gè)主要功能:
(1)用于實(shí)現(xiàn)加密過(guò)程中的Flash讀寫(xiě)時(shí)序控制,,包括輸入的數(shù)據(jù)加密,、加密算法的模式選擇等。
(2)用于加密算法的實(shí)現(xiàn),,需要加密的數(shù)據(jù)通過(guò)USB接口發(fā)送到FPGA芯片,,F(xiàn)PGA芯片根據(jù)控制信號(hào)判讀是否需要對(duì)數(shù)據(jù)加密,如果需要加密則運(yùn)行加密算法,,加密數(shù)據(jù)產(chǎn)生后,,輸出加密好的數(shù)據(jù),并且輸出標(biāo)志信號(hào),。
(3)實(shí)現(xiàn)與USB接口芯片進(jìn)行數(shù)據(jù)通信,。FPGA和USB之間的通信通過(guò)8 bit數(shù)據(jù)總線加上若干控制信號(hào)實(shí)現(xiàn),只要FPGA產(chǎn)生符合USB輸入/輸出時(shí)序的脈沖,,即可實(shí)現(xiàn)兩者之間的通信[2-3],。
2 系統(tǒng)硬件設(shè)計(jì)
設(shè)備的核心部分是FPGA芯片。加密,、解密功能通過(guò)FPGA設(shè)計(jì)工具中硬件描述語(yǔ)言進(jìn)行描述,,在集成軟件環(huán)境下進(jìn)行編譯、調(diào)試及綜合,,使用專用下載電纜將程序代碼下載存儲(chǔ)在FPGA芯片中,,一旦USB設(shè)備與PC機(jī)相連,F(xiàn)PGA芯片中的算法程序會(huì)對(duì)寫(xiě)入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),,通過(guò)JTAG就可以直接把代碼固化在片子里面。FPGA下載到片子中的代碼存放在RAM里,,所以斷電后這些代碼即刻消失,。由于可用來(lái)調(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ǔ)器用來(lái)存放代碼,,每次上電后把代碼從配置芯片讀入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ǔ)單元,,每頁(yè)2 KB+64 B,每128頁(yè)形成1個(gè)塊,,1塊就是256 KB+8 KB,。
2.3 USB接口設(shè)計(jì)
本設(shè)計(jì)中USB接口芯片采用安國(guó)公司的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的電源指示燈,,表示電源是否正常。另有防反插二極管,,防止電源反插,,對(duì)器件造成損壞。
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ì)
各種功能通過(guò)在FPGA設(shè)計(jì)工具中用Verilog HDL語(yǔ)言進(jìn)行描述,,在集成軟件環(huán)境Quartus II中進(jìn)行編譯、調(diào)試及綜合,,使用專用下載電纜將程序代碼下載到FPGA芯片中,。在系統(tǒng)工作前,先檢查設(shè)備是否連接好之后,,開(kāi)始FPGA芯片及配置芯片的初始化,。根據(jù)用戶需要進(jìn)行讀操作或?qū)懖僮鳎绻麢z測(cè)到寫(xiě)信號(hào)線有效時(shí),,則還需要判斷此時(shí)寫(xiě)數(shù)據(jù)還是寫(xiě)命令,,如果是寫(xiě)數(shù)據(jù),則啟動(dòng)加密功能,,并存入Flash,;如果是寫(xiě)命令,則不能啟動(dòng)加密功能,。如果檢測(cè)到讀信號(hào)線有效時(shí),,也需要判斷此時(shí)是讀數(shù)據(jù)還是讀命令或讀Flash的ID,如果是讀數(shù)據(jù),,即啟動(dòng)解密功能,,并從Flash中讀出數(shù)據(jù);而是讀命令,,則不能啟動(dòng)解密功能,。系統(tǒng)軟件流程圖如圖3所示。
對(duì)于加密算法的選擇,目前常見(jiàn)的加密算法主要有DES和AES 2種,。DES出現(xiàn)得比較早,,資源豐富、算法成熟,。但是AES作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn),其安全性、效率明顯高于DES,,同時(shí)由于AES算法的簡(jiǎn)潔性,,對(duì)內(nèi)存的需求非常低,使得它的實(shí)現(xiàn)更為容易,。綜合各方面考慮,,在本設(shè)計(jì)方案中采用AES算法[5-7]。
4 調(diào)試與仿真
本文中的設(shè)計(jì)使用Verilog HDL語(yǔ)言進(jìn)行功能仿真和功能驗(yàn)證,,利用Quartus II可以對(duì)源程序進(jìn)行驗(yàn)證和綜合,。其加密程序的仿真結(jié)果如圖4所示。圖中,,I/O1是輸入的數(shù)據(jù),,I/O2是經(jīng)過(guò)加密后輸出的數(shù)據(jù)。
本文介紹了一種具有數(shù)據(jù)實(shí)時(shí)自動(dòng)加密的USB存儲(chǔ)設(shè)備設(shè)計(jì)過(guò)程,,開(kāi)創(chuàng)了USB安全通信的新領(lǐng)域,。本系統(tǒng)以大規(guī)模可編程邏輯FPGA為平臺(tái),,用Verilog HDL硬件描述語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)加密,,由于加密算法中大量使用了復(fù)雜的按位運(yùn)算,而通常這類運(yùn)算不適合在通用處理器上運(yùn)行,,但在本系統(tǒng)中使用的FPGA芯片能夠進(jìn)行大量邏輯運(yùn)算,,非常適合作為加密算法的硬件載體。用硬件實(shí)現(xiàn)加密算法,,并且封裝到芯片中,,不易被外部攻擊者讀取或更改,有較高的物理安全性,。
安全性,、可靠性相對(duì)較高的USB存儲(chǔ)設(shè)備將會(huì)對(duì)金融、通信等領(lǐng)域提供很大的幫助,。因此,,基于FPGA的硬件加密是極具研究意義的,它能夠提高U盤的安全性,、可靠性,,同時(shí)也不會(huì)影響U盤的讀寫(xiě)速度。
參考文獻(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] 鄭志安,,夏國(guó)榮.基于FPGA的高級(jí)數(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).