基于PCI總線加密卡硬件設(shè)計
PCI加密卡是基于加解密芯片和PCI總線卡技術(shù)實現(xiàn)的安全保密設(shè)備,為計算機提供數(shù)據(jù)加密、數(shù)據(jù)完整性、數(shù)字簽名、訪問控制等安全功能,可用于計算機文件保護、電子郵件系統(tǒng)安全保密、辦公自動化安全保密、數(shù)據(jù)庫保護、網(wǎng)絡(luò)加密等。主要用于帶PCI插槽的臺式PC機和工作站, 在防火墻、VPN加密機等方面具有極為廣泛的應(yīng)用前景[1][2]。
PCI加密卡的數(shù)據(jù)加密分為軟件實現(xiàn)和硬件實現(xiàn)兩種方式,軟件實現(xiàn)是指在PCI配置嵌入式微處理器或DSP芯片實現(xiàn)加密算法;硬件實現(xiàn)是指采用密碼算法芯片實現(xiàn)加/解密、簽名算法,具有處理速度快,安全性好的特點。在上述硬件實現(xiàn)中,PCI總線接口可以采用專門的接口芯片,例如PCI9054實現(xiàn);也可以采用PCI接口IP核在密碼專用芯片中實現(xiàn)。本文采用一片Altera的Cyclone 系列FPGA實現(xiàn)了加解密算法和PCI接口,并為加密卡開發(fā)了WDM驅(qū)動程序,設(shè)計了一個能為PC機提供數(shù)據(jù)加密、數(shù)據(jù)完整性、訪問控制等安全功能的PCI加密卡。
1 系統(tǒng)硬件架構(gòu)設(shè)計
整個PCI加密卡硬件以一片F(xiàn)PGA為中心,配以FPGA配置芯片、時鐘等模塊構(gòu)成。PCI接口、3DES、MD5算法等全部在FPGA內(nèi)部實現(xiàn)。整個加密卡的硬件結(jié)構(gòu)如圖1所示,系統(tǒng)主要設(shè)計任務(wù)在FPGA內(nèi)部的邏輯功能完成,包括:PCI接口模塊、控制模塊、輸入輸出緩存模塊和數(shù)據(jù)加密模塊。PCI接口模塊由IP軟核實現(xiàn),主要功能是控制和實現(xiàn)數(shù)據(jù)的雙向傳輸;控制模塊主要控制PCI接口與數(shù)據(jù)加密模塊之間的數(shù)據(jù)傳輸;輸入輸出緩存模塊主要用于寄存由PCI接口模塊輸入后等待處理的數(shù)據(jù),以及系統(tǒng)內(nèi)部運算后等待輸出的數(shù)據(jù)結(jié)果;數(shù)據(jù)加密模塊主要包含硬件實現(xiàn)后的加密算法,用于對輸入的數(shù)據(jù)進行加解密運算。
在各個主要模塊中,密碼運算模塊的速度將直接影響到整個加密系統(tǒng)的工作效率。此外,由于控制模塊的主要功能是控制輸入輸出緩存中的數(shù)據(jù)依次進入加密模塊,同時,根據(jù)加密模塊反饋的狀態(tài)信息發(fā)出相應(yīng)的控制信息,所以,控制模塊的設(shè)計在整個加密設(shè)備的設(shè)計實現(xiàn)中十分重要。
2 PCI接口IP核及其應(yīng)用方法
PCI總線接口有兩種設(shè)計方案,一是采用專門的PCI接口芯片(例如PCI9054或PCI9052)實現(xiàn),二是采用PCI接口IP核在密碼專用芯片中實現(xiàn)[3]。本加密卡采用第二種方案,由VHDL描述的軟核下載到FPGA中實現(xiàn)。該PCI接口IP核符合標(biāo)準(zhǔn)的PCI2.2協(xié)議,支持I/O操作、配置讀、寫操作、總線BUS_MASTER讀、BUS_MASTER寫以及DMA中斷方式和DMA數(shù)據(jù)傳輸方式。該IP核設(shè)計主要采用有限狀態(tài)機實現(xiàn),包括中斷應(yīng)答、突發(fā)讀操作、突發(fā)寫操作、配置讀操作、配置寫操作、I/O讀寫傳輸、存儲器讀寫傳輸7個狀態(tài)機組成。其工作流程如圖2所示。收到幀開始信號(#FRAM信號為低)后,根據(jù)PCI總線C/BE[3..0]上的命令,分別進入7個狀態(tài)機中的一個。操作結(jié)束后,主機發(fā)出幀結(jié)束信號(#FRAM為信號低),進入等待狀態(tài),進入下個操作。
利用該PCI接口IP核完成加密卡設(shè)計,必須先確定數(shù)據(jù)傳輸?shù)膶崿F(xiàn)方式。該PCI接口IP核支持兩個256K字節(jié)的I/O空間;支持一個4M字節(jié)的PCI內(nèi)存空間。在PCI的數(shù)據(jù)傳輸中,主要依靠I/O讀、I/O寫、存儲器讀、存儲器寫等操作完成數(shù)據(jù)傳輸。I/O讀、寫命令用來從一個映射到I/O地址空間的設(shè)備中讀、寫數(shù)據(jù)。存儲器讀、寫命令用來從一個映射到存儲器地址空間的設(shè)備讀、寫數(shù)據(jù)。在加密卡初期設(shè)計中,數(shù)據(jù)都被映射到I/O地址空間進行操作。系統(tǒng)工作的基本過程如下:數(shù)據(jù)從PC機進入PCI接口模塊,先存入PCI接口模塊中指定的I/O存儲單元中;在控制模塊的控制下,依次進入密碼算法模塊,數(shù)據(jù)經(jīng)過處理后輸出到輸出緩存之中,由驅(qū)動程序?qū)⑦\算結(jié)果傳輸給應(yīng)用程序。
確定了數(shù)據(jù)傳輸方式后,下一步的工作是完成加密算法模塊設(shè)計,并設(shè)計適當(dāng)?shù)慕涌诳刂颇K,按照事先確定的數(shù)據(jù)傳輸方式將其連接到PCI接口模塊。
3 密碼算法模塊設(shè)計
密碼算法模塊是整個加密卡設(shè)計的核心,其設(shè)計的優(yōu)劣直接關(guān)系到加密卡的性能和安全性。下面以3DES算法為例,介紹密碼算法模塊的設(shè)計方法。
評論