《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的可加密USB存儲(chǔ)設(shè)備設(shè)計(jì)
基于FPGA的可加密USB存儲(chǔ)設(shè)備設(shè)計(jì)
王 鵬1, 呂志剛1, 黃 健2
1. 西安工業(yè)大學(xué) 電子信息工程學(xué)院信息通信系, 陜西 西安710032;2. 西安科技大學(xué) 通信學(xué)
摘要: 基于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)。
Abstract:
Key words :

摘  要:  基于FPGA的可加密USB存儲(chǔ)設(shè)備的設(shè)計(jì)過(guò)程,介紹了FPGA芯片EP1C3T100USB接口芯片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盤(pán)泄露。
    雖然現(xiàn)在很多廠商推出的各種U盤(pán)產(chǎn)品均提供了加密功能以提高數(shù)據(jù)的安全性,但很多均停留于軟件加密層面,不僅需要另外安裝軟件,而且數(shù)據(jù)安全性也打了折扣,在某程度上仍不能防范數(shù)據(jù)被盜竊。本文選擇FPGA芯片對(duì)U盤(pán)進(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ū)懖僮?,如果檢測(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ī)??删幊踢壿婩PGA為平臺(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盤(pán)的安全性、可靠性,同時(shí)也不會(huì)影響U盤(pán)的讀寫(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).

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。