摘要:提出一種基于FPGA的PCI硬件加解密卡的設(shè)計方案,用硬件加解密取代了傳統(tǒng)的軟件加解密,將加解密模塊和PCI接口模塊集成在一個FPGA芯片內(nèi)實現(xiàn)。分析了PCI加解密卡的軟硬件的結(jié)構(gòu)和原理,詳細介紹了DESX加解密算法的原理、步驟和硬件實現(xiàn)、PCI接口模塊的IP核設(shè)計以及USB接口模塊的電路連接。系統(tǒng)硬件以FPGA為核心,使用QuartusII7.2軟件和VHDL語言設(shè)計,軟件由DriverStudio2.7和VisualC++6-.0設(shè)計。采用192位密鑰的DESX分組對稱加解密算法來取代64位DES算法,密文和密鑰在專用硬件中存儲,計算機內(nèi)只有明文,有效防止黑客攻擊,保護數(shù)據(jù)安全。設(shè)計采用邏輯綜合式取代時鐘驅(qū)動級聯(lián)式來實現(xiàn)DESX算法,使加密一組數(shù)據(jù)的時間由16
個周期縮短為1個周期。
關(guān)鍵詞:DESX算法;硬件加解密;FPGA;PCI;USB
數(shù)據(jù)加解密分為軟件加解密和硬件加解密兩種。目前,采用軟件加解密的方法對數(shù)據(jù)進行加解密較為普遍,原因是軟件加解密方法實現(xiàn)起來較為簡單和經(jīng)濟,但其弱點是軟件加解密的明文、密文和密鑰都需要在計算機內(nèi)存儲,容易被竊取、攻擊和破譯,難以應用到需要高級保密的商業(yè)機密和軍事機密中。硬件加解密可以較好解決軟件加解密的不足。硬件加解密的密文和密鑰可以在專用硬件中存儲,計算機內(nèi)只有明文,而且硬件加解密基于硬件層處理,CPU不參與加解密的執(zhí)行過程,不會占用系統(tǒng)資源。因此使用硬件加解密方法,更為安全可靠,是保證數(shù)據(jù)安全的根本方法,適用于軍事機密和高級商業(yè)機密。
但同時硬件加解密實現(xiàn)起來較為困難,主要表現(xiàn)在其較高的生產(chǎn)成本、加解密的硬件實現(xiàn)、加解密速度的提高。以及在調(diào)試時不易做分級驗證等。另外,在本PCI加解密卡的接口模塊設(shè)計中用到了復雜的USB、PCI協(xié)議,增加了開發(fā)的難度。
1 設(shè)計思想
PCI硬件加解密卡是基于加解密器件和PCI總線技術(shù)的安全保密設(shè)備,為重要的計算機信息提供加密、解密、存儲和分發(fā)的功能,有效防止機密信息的截獲和破譯,可以應用在需要高級保密級別的商業(yè)和軍事領(lǐng)域。系統(tǒng)采用硬件加密方式對數(shù)據(jù)進行加密存儲和解密讀取。加解密過程在專用硬件中進行,加密強度較高。系統(tǒng)最大特點是密鑰和密文均不在計算機中存儲,而是存儲在專用硬件中,計算機中只存有明文,可有效防止竊取、攻擊和破譯。
加密操作時,PC機的明文數(shù)據(jù)通過PCI接口傳輸?shù)紽PGA內(nèi)的加解密模塊進行硬件加密,加密后的密文通過USB接口送到密文載體中存儲和分發(fā)。解密操作時,數(shù)據(jù)的傳輸過程相反。加解密算法采用DESX分組對稱密鑰加密算法.密鑰為192位二進制數(shù),與傳統(tǒng)的DES相比,更為安全、可靠。密鑰存儲在PCI卡上的非易失存儲器(EEPROM)中,當密鑰由于不再安全或者過期等原因需要更新時,通過執(zhí)行相應軟件來更新EEPROM上的密鑰信息,而不需要拆卸硬件。系統(tǒng)加密存儲和解密讀取的工作原理圖如圖l所示。
2 系統(tǒng)硬件結(jié)構(gòu)和實現(xiàn)
2.1 硬件結(jié)構(gòu)
加解密卡為PC機PCI卡形式,通過PCI插槽與PC機相連,密文載體與PCI卡的USB接口相連。其硬件主要由三部分組成:加解密模塊、PCI接口模塊和USB接口模塊。其中,加解密模塊和PCI接口模塊在FPGA內(nèi)實現(xiàn),F(xiàn)PGA型號是EP1C12Q240C8,設(shè)計軟件為QuartusⅡ7.2,采用自頂向下(Top-Down)的實現(xiàn)方式,編輯語言為VHDL。
2.2 加解密算法的硬件實現(xiàn)
硬件加解密是本系統(tǒng)的核心部分。DES算法在加解密和密鑰生成過程中全部使用邏輯運算和查表運算,F(xiàn)PGA在實現(xiàn)算法方面具有靈活性、物理安全性和比軟件更高的速度,而且可移植性好,便于升級,因此FPGA已成為硬件實現(xiàn)DES算法的最佳選擇。
DES算法的加密過程分為4步:初始置換、迭代過程、子密鑰生成和逆置換。DES算法16層加密變換框圖如圖2所示。
若采用時鐘驅(qū)動級聯(lián)式來實現(xiàn)DES算法,數(shù)據(jù)在時鐘的驅(qū)動下從上一級的輸出送入下一級循環(huán)的輸入,那么對同一組數(shù)據(jù)完成加解密需要16輪時鐘循環(huán),至少需要16個時鐘周期才能完成,加解密時間長。為了提高速度,采用了邏輯綜合式進行DES設(shè)計。采用循環(huán)嵌套展開的方式完成16輪循環(huán)。利用編譯綜合器將16輪循環(huán)的整體邏輯結(jié)果用等效的邏輯電路來實現(xiàn),當輸入數(shù)據(jù)和密鑰有效后,邏輯直接輸出16輪循環(huán)的邏輯結(jié)果,使加密一組數(shù)據(jù)的時間由16個周期縮短為1個周期,時間延遲僅僅取決于電路的邏輯延遲。這種方法的缺點是占用了較多的系統(tǒng)資源,而且開發(fā)過程中不易做分級驗證。
本系統(tǒng)使用的DESX算法是在DES基礎(chǔ)上改進的加密算法。將DES的64位密鑰擴展到192位,即使用3把64位的密鑰。KEYl、KEY2和KEY3對數(shù)據(jù)塊進行3次加密,充分保證了數(shù)據(jù)的安全。DESX加密過程分為3個步驟:1)使用KEYl對數(shù)據(jù)塊做XOR運算;2)使用KEY2對上一步的結(jié)果再做XOR運算;3)使用KEY3對第二步的結(jié)果進行DES加密從而得到密文。與DES和3DES相比,只做一次DES運算。但密鑰長度提高到192位,在保證安全性的前提下,最大限度提高了加解密的執(zhí)行效率。DESX的解密過程與加密過程相反,其加解密流程如圖3所示。圖4是對數(shù)據(jù)0x0123456789-ABCDEF進行加密測試的仿真圖,其系統(tǒng)時鐘為50 MHz。
2.3 PCI接口模塊設(shè)計
PCI接口模塊是PCI總線與加解密卡之間的轉(zhuǎn)換接口,也可認為其主要功能是起一個橋梁作用,完成用戶設(shè)備與PCI總線之間的數(shù)據(jù)傳輸。從技術(shù)要求和成本方面考慮,以及本數(shù)據(jù)采集卡的特點,可以將加解密模塊和PCI接口模塊在一個FPGA內(nèi)實現(xiàn),用戶可以按需要進行配置,而且提高了系統(tǒng)集成度,可移植性好。
PCI接口模塊采用自頂而下的設(shè)計方法,在數(shù)據(jù)流和控制流分析的基礎(chǔ)上,按照PCI接口的內(nèi)部邏輯功能及結(jié)構(gòu),分成幾個單獨的模塊,結(jié)構(gòu)清晰,便于單獨模塊的測試。在設(shè)計PCI接口模塊時,需要考慮支持PCI總線協(xié)議中的有關(guān)內(nèi)容。PCI接口模塊可以只包含PCI-Slave(從PCI),也可以選擇同時包含PCI-Mater(主PCI)。其中,PCI-Slave是接口模塊必須的,PCI-Mater是可選的,但是如果實現(xiàn)PCI-Mater,則Arbiter(仲裁器)就是必須的。完整的PCI接口模塊電路如圖5所示。
PCI接口模塊的核心設(shè)計分為時序控制和配置空間兩部分。時序控制部分保證了板卡能按正常的PCI時序工作,配置空間部分保證了PCI卡的即插即用功能。在時序控制程序中采用狀態(tài)機模型來實現(xiàn)不同時序的轉(zhuǎn)換,各種命令、數(shù)據(jù)交換、控制均在狀態(tài)機的管理下進行工作。本設(shè)計中的狀態(tài)機主要由中斷應答、突發(fā)讀操作、突發(fā)寫操作、配置讀操作、配置寫操作、I/O讀寫傳輸、存儲器讀寫傳輸?shù)?個部分組成,工作流程如圖6所示。
2.4 USB接口模塊設(shè)計
本系統(tǒng)的USB選用CH375B,工作于USB-HOST主機方式,采用并行接口。在USB主機方式下,CH375B支持各種常用的USB全速設(shè)備,外部單片機需要編寫固件程序按照相應的USB協(xié)議與USB設(shè)備通訊。USB接口模塊電路圖如圖7所示。
CH375B并行接口信號線包括:8位雙向數(shù)據(jù)總線D7~DO、讀選通輸入引腳RD#、寫選通輸入引腳WR#、片選輸入引腳CS#、中斷輸出引腳INT#以及地址輸入引腳A0。CH375B的RD#和WR#可以分別連接到單片機的讀選通輸出引腳和寫選通輸出引腳,CS#由地址譯碼電路驅(qū)動,INT#輸出的中斷請求是低電平有效,可以連接到單片機的中斷輸入引腳,單片機使用中斷方式獲知中斷請求。當WR#為高電平并且CS#和RD#及A0都為低電平時,CH375B中的數(shù)據(jù)通過D7~DO輸出;當RD#為高電平并且CS#和wR#以及A0都為低電平時,D7~DO上的數(shù)據(jù)被寫入CH375B中;當RD#為高電平并且CS#和WR#都為低電平而AO為高電平時,D7~DO上的數(shù)據(jù)被作為命令碼寫入CH375B中。
3 軟件的設(shè)計與實現(xiàn)
軟件主要分為驅(qū)動程序和應用程序兩部分,分別用DriverStudio和Visual C++開發(fā)。驅(qū)動程序的設(shè)計關(guān)鍵是如何完成硬件操作。基本功能包括設(shè)備的初始化、IO端口的讀寫操作、內(nèi)存讀寫操作、中斷的設(shè)置響應和調(diào)用等部分。PCI卡插入主機時,從設(shè)備中讀出產(chǎn)品ID(PlD)和廠商ID(VID),由這2個值來搜索匹配的inf文件,再由inf文件加載相應的驅(qū)動。應用程序通過調(diào)用Win32 API函數(shù)CreatFile來打開設(shè)備,然后使用DeviceloControl與驅(qū)動程序通信。在應用程序退出前使用CloseHandle關(guān)閉設(shè)備。DeviceIoControl使用不同的IOCTL命令來調(diào)用驅(qū)動程序完成不同的任務(wù)。
4 結(jié)束語
經(jīng)測試,本PCI加解密卡數(shù)據(jù)加密存儲速度為612 KByte/s,解密讀取速度為630 KByte/s。FPGA使用情況:total logicelements 903l/12060(75%),total pin 84/173(49%)。在以后的設(shè)計中,應重點解決系統(tǒng)加解密速度較慢的問題,另外,F(xiàn)PGA和USB的選型、加解密算法的優(yōu)化等有待改進。
本設(shè)計的創(chuàng)新點在于用硬件加解密方法取代了通常的軟件加解密方法,采用更為安全可靠的DESX算法來彌補DES算法的不足,使用了FPGA的IP軟核設(shè)計方法實現(xiàn)DESX加解密模塊和PCI接口模塊,提高了系統(tǒng)集成度,可移植性好,便于系統(tǒng)升級。在加解密速度方面,用邏輯綜合式取代時鐘驅(qū)動級聯(lián)式,使加解密一組數(shù)據(jù)的時間由16個周期縮短為1個周期。本系統(tǒng)在需要高級保密的商業(yè)和軍事領(lǐng)域,有著較好的應用前景。