??? 摘? 要: 設(shè)計了一種高安全性的便攜式USB存儲加密系統(tǒng)。該系統(tǒng)基于嵌入式USB主機(jī)CH375設(shè)計,采用智能卡實(shí)現(xiàn)人機(jī)安全認(rèn)證和密鑰的安全存儲,采用反熔絲型FPGA 芯片AX250高速實(shí)現(xiàn)3DES算法,能夠在完全脫離PC機(jī)的情況下對USB存儲設(shè)備中的文件進(jìn)行加解密,具有很高的安全性和整體性,并可滿足野外或移動應(yīng)用的需求。?
??? 關(guān)鍵詞: USB存儲加密; 嵌入式USB主機(jī); 智能卡; 安全認(rèn)證; 反熔絲型FPGA
?
??? 日益增加的信息安全要求,需對USB移動存儲設(shè)備中的個人隱私或敏感信息進(jìn)行加解密。傳統(tǒng)的USB存儲加密系統(tǒng)基于PC機(jī)。PC機(jī)是USB拓?fù)浣Y(jié)構(gòu)中的主機(jī)(Host),加解密時明文和密文必須經(jīng)過PC機(jī),PC機(jī)的軟硬件安全性給文件的加解密留下了很大的安全隱患。因此,傳統(tǒng)的USB存儲加密系統(tǒng)安全性較低,且不能滿足野外或移動應(yīng)用的需求?;谇度胧皆O(shè)計的本系統(tǒng),可以完全脫離PC機(jī)工作,并且采用智能卡、反熔絲型FPGA實(shí)現(xiàn)USB文件安全、高速的加解密,提高了系統(tǒng)的安全性和整體性能,提供了便攜使用性,具有較高的實(shí)用價值和良好的應(yīng)用前景。?
1 系統(tǒng)總體結(jié)構(gòu)?
??? 系統(tǒng)總體結(jié)構(gòu)框圖如圖1所示。系統(tǒng)由智能卡和加密機(jī)兩大部分構(gòu)成,智能卡通過ISO 7816接口與加密機(jī)相連。加密機(jī)主要由51單片機(jī)、嵌入式USB主機(jī)、FPGA、智能卡接口電路、電源電路和按鍵、LED等人機(jī)交互接口電路構(gòu)成。嵌入式USB主機(jī)作為USB拓?fù)浣Y(jié)構(gòu)中的主機(jī)(Host),完成USB存儲設(shè)備的訪問管理和USB文件的讀寫。USB文件的加解密由FPGA高速實(shí)現(xiàn)3DES算法來完成。智能卡實(shí)現(xiàn)系統(tǒng)的安全管理。智能卡接口電路實(shí)現(xiàn)ISO 7816接口到并行接口的轉(zhuǎn)換。51單片機(jī)通過并行總線與嵌入式USB主機(jī)、FPGA和智能卡接口電路相連,負(fù)責(zé)整個系統(tǒng)的管理和控制。?
?
?
2 系統(tǒng)安全性設(shè)計?
??? 安全性是加密系統(tǒng)一項(xiàng)至關(guān)重要的性能指標(biāo)。本系統(tǒng)從以下幾方面進(jìn)行了嚴(yán)密的安全性設(shè)計,確保系統(tǒng)的高安全性。?
2.1 工作模式?
??? 基于嵌入式USB主機(jī)設(shè)計,實(shí)現(xiàn)可完全脫離PC機(jī)運(yùn)行的嵌入式工作模式,從而消除了PC機(jī)軟硬件安全隱患,提高了系統(tǒng)的安全性。?
2.2 安全認(rèn)證?
??? 安全認(rèn)證包括加密機(jī)與智能卡之間的設(shè)備認(rèn)證和智能卡與操作者之間的身份認(rèn)證。?
??? 設(shè)備認(rèn)證通過對比加密機(jī)和智能卡中存放的設(shè)備認(rèn)證碼來實(shí)現(xiàn)。每個加密機(jī)與唯一一個智能卡配對使用,均存放著相同的設(shè)備認(rèn)證碼,且不同的加密機(jī)和智能卡有不同的設(shè)備認(rèn)證碼,通過對比各自存放的設(shè)備認(rèn)證碼可對智能卡的合法性進(jìn)行認(rèn)證。?
??? 身份認(rèn)證通過智能卡的口令驗(yàn)證實(shí)現(xiàn),只有輸入正確的智能卡口令才能通過口令驗(yàn)證,從而對操作者的合法性進(jìn)行認(rèn)證。?
??? 在安全認(rèn)證過程中,任何一個認(rèn)證若不通過加密機(jī),則結(jié)束操作。因此只有當(dāng)密碼機(jī)、唯一與之配對的智能卡和正確的智能卡口令三個要素同時具備時,才能通過認(rèn)證。缺乏其中任何一個要素,認(rèn)證都將失敗,加密機(jī)結(jié)束操作,從而使系統(tǒng)的安全性大大提高。?
2.3 加解密算法的安全性?
??? 加解密算法的安全性包括算法自身的安全性以及算法存放和調(diào)用的安全性。?
??? 本系統(tǒng)的加解密算法選用3DES算法。3DES算法的密鑰長度為168位,用窮舉搜索結(jié)果攻擊密文需要測試2 168次,可以有效克服窮舉攻擊,并且增強(qiáng)了抗差分分析和線性分析能力,具有極其強(qiáng)大的安全性[1]。?
??? 算法存放和調(diào)用的安全性依賴于器件自身具有的安全防護(hù)能力。本系統(tǒng)選用ACTEL公司反熔絲型FPGA芯片AX250存放和調(diào)用算法。反熔絲型FPGA不需要專門的編程芯片,且具有編程內(nèi)容不可讀、運(yùn)行時不能改的性能,可有效地保護(hù)算法,從而提高系統(tǒng)的安全性。?
2.4 密鑰的安全性?
??? 本系統(tǒng)選用智能卡實(shí)現(xiàn)密鑰的安全存放和調(diào)用。智能卡中集成了微處理器、存儲單元以及芯片操作系統(tǒng)COS(Chip Operating System),從而構(gòu)成一個完整的計算機(jī)系統(tǒng)。它不僅具有數(shù)據(jù)存儲功能,同時還具有命令處理和數(shù)據(jù)安全保護(hù)等功能,因此安全性大大增強(qiáng)。本系統(tǒng)選用智能卡作為密鑰存放的介質(zhì),密鑰的調(diào)用受卡內(nèi)COS操作系統(tǒng)的安全保護(hù),利用智能卡自身的物理安全機(jī)制和COS操作系統(tǒng)的安全體系為密鑰的存放和調(diào)用提供雙重的安全保證。?
2.5 其他安全防范措施?
??? (1)設(shè)備認(rèn)證碼的存放和調(diào)用受AX250和智能卡的保護(hù),避免外部訪問。?
??? (2) 加密機(jī)與智能卡可分離存放,減少失密的可能。?
??? (3)在系統(tǒng)開機(jī)時對算法和密鑰聯(lián)合運(yùn)行的正確性進(jìn)行自檢,防止加解密錯誤。?
3 系統(tǒng)硬件設(shè)計?
3.1 51單片機(jī)電路設(shè)計?
??? 51單片機(jī)選用CYGNAL公司的C8051F023。C8051F023是完全集成的系統(tǒng)級SoC芯片,具有25 MIPS的CIP-51內(nèi)核,內(nèi)部資源豐富、功耗低、可提高系統(tǒng)的可靠性和便攜性。?
??? 單片機(jī)電路原理如圖2所示。C8051F023外接25 MHz晶振,程序執(zhí)行速度可高達(dá)25 MIPS。為提高數(shù)據(jù)通信速率,單片機(jī)通過8位非復(fù)用并行總線與嵌入式USB主機(jī)、FPGA和智能卡接口電路通信。因外部所需地址空間較少,單片機(jī)采用線選的方式進(jìn)行片選,A15片選USB主機(jī),端口地址范圍為6000H~7FFFH;A14片選FPGA,端口地址范圍為A000H~BFFFH;A13片選智能卡接口電路,端口地址范圍為C000H~DFFFH。?
?
?
3.2 嵌入式USB主機(jī)電路設(shè)計?
??? 嵌入式USB主機(jī)選用CH375。CH375是一款USB通用接口芯片,支持Host主機(jī)方式和Slave設(shè)備方式,主機(jī)端點(diǎn)輸入和輸出緩沖區(qū)各為64 B。在Host主機(jī)方式下支持各種常用的USB全速設(shè)備,外部處理器可以方便地通過CH375按照相應(yīng)的USB協(xié)議與USB設(shè)備通信[2]。?
??? 嵌入式USB主機(jī)電路原理如圖3所示。TXD管腳接地,CH375通過并行接口與C8051F023通信。地址輸入線A0連接至單片機(jī)的地址線A0,當(dāng)A0為高電平時選擇命令端口,可以寫入命令;當(dāng)A0為低電平時選擇數(shù)據(jù)端口,可以讀寫數(shù)據(jù),因此CH375命令端口的訪問地址為6XX1H或7XX1H,數(shù)據(jù)端口的訪問地址為6XX0H或7XX0H。中斷請求INT連接到單片機(jī)的中斷輸入/INT0。V3管腳接3.3 V,選擇工作電壓為3.3 V,從而與接口的C8051F023保持電平兼容。接插件J201為通用USB插座,外接待加解密的USB存儲設(shè)備。
?
?
3.3? FPGA電路設(shè)計?
??? FPGA選用反熔絲型FPGA芯片AX250。該芯片除具有較高的安全性,還具有資源豐富、速度快、功耗低、抗輻射能力強(qiáng)和耐高低溫等優(yōu)點(diǎn),可大幅提高系統(tǒng)的整體性能[3]。?
??? FPGA電路原理如圖4所示。AX250通過8位并行接口與單片機(jī)C8051F023通信。內(nèi)部工作電壓VCC PL接1.5 V,保證芯片低功耗運(yùn)行。外部IO電壓VCC IB接3.3 V,保持與C8051F023電平兼容。AX250的時鐘由晶振CRY301輸入,時鐘頻率根據(jù)FPGA內(nèi)部程序邏輯綜合后的時鐘頻率而定,系統(tǒng)最終實(shí)現(xiàn)的頻率為33 MHz。因單片機(jī)只有兩個外部中斷,F(xiàn)PGA與智能卡接口電路共用同一個中斷為智能卡接口電路的中斷請求。系統(tǒng)在FPGA中設(shè)置一中斷標(biāo)志寄存器,當(dāng)FPGA或智能卡接口電路請求中斷時會分別置對應(yīng)的中斷標(biāo)志位為1,單片機(jī)通過查詢中斷標(biāo)志寄存器即可確定的中斷源。?
?
?
3.4智能卡接口電路設(shè)計?
??? 智能卡接口電路選用Philips公司的TDA8007。TDA8007能夠提供兩個滿足ISO7816 標(biāo)準(zhǔn)的智能卡接口,并通過并行總線與微處理器通信,可實(shí)現(xiàn)ISO7816接口到8位并行接口的轉(zhuǎn)換。TDA8007 內(nèi)部集成的電源管理功能允許TDA8007的供電范圍可達(dá)2.7~6.0 V,并且通過電源管理可以給智能卡提供5.0 V、3.0 V及1.8 V電源,以適合不同工作電壓的智能卡應(yīng)用[4]。?
??? 智能卡接口電路原理如圖5所示。工作電壓選擇3.3 V,保持與接口的C8051F023電平兼容。并行總線接口為非復(fù)用方式,ALE信號接高電平,AD0~AD3與單片機(jī)A0~A3相連。中斷請求連至FPGA,與FPGA共用單片機(jī)的同一中斷。接插件J401為智能卡ISO7816接口插座。?
?
?
4 系統(tǒng)軟件設(shè)計?
4.1 單片機(jī)C8051F023軟件設(shè)計?
??? C8051F023是本系統(tǒng)的控制核心,負(fù)責(zé)管理及協(xié)調(diào)系統(tǒng)其他各部分的工作,程序流程圖如圖6所示。其中與USB有關(guān)的操作由單片機(jī)控制CH375完成,自檢、安全認(rèn)證和數(shù)據(jù)加解密等操作由單片機(jī)控制智能卡和FPGA完成。?
?
?
4.2 3DES算法的實(shí)現(xiàn)?
??? 3DES算法用硬件描述語言VHDL編程實(shí)現(xiàn),算法實(shí)現(xiàn)的整體結(jié)構(gòu)框架如圖7所示。加解密密鑰K1、K2、K3存儲在密鑰存儲RAM中,經(jīng)子密鑰產(chǎn)生模塊產(chǎn)生三組子密鑰SUBK1、SUBK2、SUBK3,分別提供給3個DES模塊。待加解密數(shù)據(jù)存儲在輸入FIFO中,在控制模塊的控制下每次讀取64位送到DES模塊1,經(jīng)DES模塊1、DES模塊2和DES模塊3處理完后,把加解密的結(jié)果送到輸出FIFO中,從而完成一組數(shù)據(jù)的3DES加解密。
?
?
??? 此設(shè)計采用循環(huán)全部打開和流水線結(jié)構(gòu)來設(shè)計單個的DES模塊。循環(huán)打開后,實(shí)現(xiàn)DES模塊的全部16輪圈函數(shù)便級聯(lián)在一起,上一圈函數(shù)的輸出作為下一圈函數(shù)的輸入,然后在每輪的中間加上寄存器來實(shí)現(xiàn)流水線,從而最多可有16個數(shù)據(jù)分組被同時執(zhí)行圈函數(shù)運(yùn)算,流水線的各個圈函數(shù)以重疊并行的方式工作[5]。這樣,在理想的流水線操作情況下,完成一個數(shù)據(jù)分組的DES運(yùn)算相當(dāng)于只需1個時鐘,每個DES模塊的加解密速度提高近16倍。同理,3個DES模塊之間的級聯(lián)也采用流水線結(jié)構(gòu)來設(shè)計。通過采用三級流水,可以使3個DES模塊同時并行工作,從而進(jìn)一步提高3DES算法的加解密速度。?
5 結(jié)果測試?
5.1 安全認(rèn)證測試?
??? 在以下幾種情況下使用本系統(tǒng)對USB存儲設(shè)備進(jìn)行加解密:?
??? (1)不插入智能卡,只使用加密機(jī)。?
??? (2)使用不配對的加密機(jī)、智能卡。?
??? (3)使用配對的加密機(jī)、智能卡,但不輸入或輸入錯誤的智能卡口令。?
??? 測試結(jié)果顯示,以上3種情況下系統(tǒng)均不能通過安全認(rèn)證,加密機(jī)停止操作,無法完成USB存儲設(shè)備的加解密。?
5.2 保密數(shù)據(jù)的安全性測試?
??? 通過多種訪問途徑或接口方式,嘗試從系統(tǒng)外部訪問智能卡和FPGA中存放的密鑰、算法和設(shè)備認(rèn)證碼等保密數(shù)據(jù),結(jié)果顯示均失敗,保密數(shù)據(jù)無法被外部訪問。?
5.3 加解密性能測試?
??? 加解密性能測試包括準(zhǔn)確性測試和速度測試。使用本系統(tǒng)對U盤中100個不同大小的文件進(jìn)行加密操作,將得到的密文與正確的密文進(jìn)行對比;再將得到的密文進(jìn)行解密操作,將得到的明文與原有文件進(jìn)行對比。結(jié)果顯示全部正確,系統(tǒng)具有很高的加解密準(zhǔn)確性。記錄下各文件加解密的時間,測得系統(tǒng)的平均加解密速度為355 kb/s,系統(tǒng)具有較快的加解密速度。?
??? 本文采用嵌入式USB主機(jī)CH375、智能卡和反熔絲型FPGA芯片AX250設(shè)計并實(shí)現(xiàn)了一種高安全性的便攜式USB存儲加密系統(tǒng)。該系統(tǒng)可以完全脫離PC機(jī)工作,安全性高、便攜性好、加解密速度快、整體性能良好。?
參考文獻(xiàn)?
[1] 吉杰,林洽欣.用三重DES加密.NET數(shù)據(jù)庫連接字符串[J].計算機(jī)工程與設(shè)計,2007,28(4):817-819.?
[2] 李海軍.基于USB總線接口芯片CH375的虛擬儀器設(shè)計[J].三峽大學(xué)學(xué)報(自然科學(xué)版),2005,27(2):168-170.?
[3] 卿輝,肖紅躍.反熔絲FPGA在密碼芯片設(shè)計中的運(yùn)用[J]. 通信技術(shù),2001(1):62-63.?
[4] 飛利浦半導(dǎo)體公司.TDA8007 Multiprotocol smart card?interface [EB/OL] . http://www.semiconductors.philips.com/products/TDA8007.html.?
[5] 王簡瑜,張魯國.基于FPGA實(shí)現(xiàn)DES算法的性能分析[J]. 微計算機(jī)信息,2007,23(3-2):217-218.