《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 一種基于FPGA的PCI加密卡設計
一種基于FPGA的PCI加密卡設計
嚴迎建,徐金甫,徐勁松,李 偉
摘要: 利用FPGA設計實現了一種基于PCI總線接口的純硬件加密卡,為PC機提供加密、簽名等服務。對采用VHDL描述的PCI接口IP軟核及其應用方法進行了分析;采用VHDL設計了3DES、MD5等算法模塊,并設計了其與PCI接口IP核之間的通信控制模塊;利用Quartus II進行仿真、綜合后,下載到加密卡上的FPGA配置芯片,將上述各個模塊集成在一片FPGA上予以實現;最后,采用VC++為加密卡設計了驅動程序和測試程序,并對整個加密卡工作進行了功能測試。
關鍵詞: FPGA PCI總線 3DES算法
Abstract:
Key words :

  摘 要: 利用FPGA" title="FPGA">FPGA設計實現了一種基于PCI總線" title="PCI總線">PCI總線接口的純硬件加密卡,為PC機提供加密、簽名等服務。對采用VHDL描述的PCI接口IP軟核及其應用方法進行了分析;采用VHDL設計了3DES、MD5等算法模塊,并設計了其與PCI接口IP核之間的通信控制模塊;利用Quartus II進行仿真、綜合后,下載到加密卡上的FPGA配置芯片,將上述各個模塊集成在一片FPGA上予以實現;最后,采用VC++為加密卡設計了驅動程序和測試程序,并對整個加密卡工作進行了功能測試。
  關鍵詞: PCI總線 3DES算法" title="3DES算法">3DES算法 FPGA


  PCI加密卡是基于加解密芯片和PCI總線卡技術實現的安全保密設備,為計算機提供數據加密、數據完整性、數字簽名、訪問控制等安全功能,可用于計算機文件保護、電子郵件系統安全保密、辦公自動化安全保密、數據庫保護、網絡加密等。主要用于帶PCI插槽的臺式PC機和工作站, 在防火墻、VPN加密機等方面具有極為廣泛的應用前景[1][2]。
  PCI加密卡的數據加密分為軟件實現和硬件實現兩種方式,軟件實現是指在PCI配置嵌入式微處理器或DSP芯片實現加密算法;硬件實現是指采用密碼算法芯片實現加/解密、簽名算法,具有處理速度快,安全性好的特點。在上述硬件實現中,PCI總線接口可以采用專門的接口芯片,例如PCI9054實現;也可以采用PCI接口IP核在密碼專用芯片中實現。本文采用一片Altera的Cyclone 系列FPGA實現了加解密算法和PCI接口,并為加密卡開發了WDM驅動程序,設計了一個能為PC機提供數據加密、數據完整性、訪問控制等安全功能的PCI加密卡。
1 系統硬件架構設計
  整個PCI加密卡硬件以一片FPGA為中心,配以FPGA配置芯片、時鐘等模塊構成。PCI接口、3DES、MD5算法等全部在FPGA內部實現。整個加密卡的硬件結構如圖1所示,系統主要設計任務在FPGA內部的邏輯功能完成,包括:PCI接口模塊、控制模塊、輸入輸出緩存模塊和數據加密模塊。PCI接口模塊由IP軟核實現,主要功能是控制和實現數據的雙向傳輸;控制模塊主要控制PCI接口與數據加密模塊之間的數據傳輸;輸入輸出緩存模塊主要用于寄存由PCI接口模塊輸入后等待處理的數據,以及系統內部運算后等待輸出的數據結果;數據加密模塊主要包含硬件實現后的加密算法,用于對輸入的數據進行加解密運算。


  在各個主要模塊中,密碼運算模塊的速度將直接影響到整個加密系統的工作效率。此外,由于控制模塊的主要功能是控制輸入輸出緩存中的數據依次進入加密模塊,同時,根據加密模塊反饋的狀態信息發出相應的控制信息,所以,控制模塊的設計在整個加密設備的設計實現中十分重要。
2 PCI接口IP核及其應用方法
  PCI總線接口有兩種設計方案,一是采用專門的PCI接口芯片(例如PCI9054或PCI9052)實現,二是采用PCI接口IP核在密碼專用芯片中實現[3]。本加密卡采用第二種方案,由VHDL描述的軟核下載到FPGA中實現。該PCI接口IP核符合標準的PCI2.2協議,支持I/O操作、配置讀、寫操作、總線BUS_MASTER讀、BUS_MASTER寫以及DMA中斷方式和DMA數據傳輸方式。該IP核設計主要采用有限狀態機實現,包括中斷應答、突發讀操作、突發寫操作、配置讀操作、配置寫操作、I/O讀寫傳輸、存儲器讀寫傳輸7個狀態機組成。其工作流程如圖2所示。收到幀開始信號(#FRAM信號為低)后,根據PCI總線C/BE[3..0]上的命令,分別進入7個狀態機中的一個。操作結束后,主機發出幀結束信號(#FRAM為信號低),進入等待狀態,進入下個操作。


  利用該PCI接口IP核完成加密卡設計,必須先確定數據傳輸的實現方式。該PCI接口IP核支持兩個256K字節的I/O空間;支持一個4M字節的PCI內存空間。在PCI的數據傳輸中,主要依靠I/O讀、I/O寫、存儲器讀、存儲器寫等操作完成數據傳輸。I/O讀、寫命令用來從一個映射到I/O地址空間的設備中讀、寫數據。存儲器讀、寫命令用來從一個映射到存儲器地址空間的設備讀、寫數據。在加密卡初期設計中,數據都被映射到I/O地址空間進行操作。系統工作的基本過程如下:數據從PC機進入PCI接口模塊,先存入PCI接口模塊中指定的I/O存儲單元中;在控制模塊的控制下,依次進入密碼算法模塊,數據經過處理后輸出到輸出緩存之中,由驅動程序將運算結果傳輸給應用程序。
  確定了數據傳輸方式后,下一步的工作是完成加密算法模塊設計,并設計適當的接口控制模塊,按照事先確定的數據傳輸方式將其連接到PCI接口模塊。
3 密碼算法模塊設計
  密碼算法模塊是整個加密卡設計的核心,其設計的優劣直接關系到加密卡的性能和安全性。下面以3DES算法為例,介紹密碼算法模塊的設計方法。
3.1 3DES算法模塊設計
  本設計采用兩個密鑰的3DES,該加密方案使用兩個不同的密鑰Key1和Key2對明文進行三次DES或DES-1變換,加密函數采用加密-脫密-加密序列:
  
  兩個密鑰的三重DES的有效密鑰長度是112位。在本設計中采用了密碼分組鏈接方式(CBC)。在這種方案中,加密算法的輸入是當前的明文分組和前邊的密文分組的異或,對每個分組使用相同的密鑰。從效果上看,將明文分組序列的處理連接起來了。每個明文分組的加密函數的輸入與明文分組之間不再有固定的關系,因此,64bit的重復模式不再會暴露。
  3DES密碼硬件模塊為控制模塊和數據路徑設計兩部分??刂颇K產生數據通路需要的控制信號序列,保證數據處理單元正確有序地工作。數據路徑用來實現信息傳送和密碼變換的數據處理單元。3DES算法設計采用迭代結構,由初始置換電路IP、多路選擇電路L_MUX和R_MUX、32-bit L鎖存器、32-bit R鎖存器、擴展置換E處理電路、S盒數據代替電路、P盒置換電路及末置換IP-1電路構成。其運算電路如圖3所示。


3.2 3DES輸入輸出模塊設計
  輸入輸出模塊主要為密碼運算模塊提供密鑰、數據以及命令信息的模塊。控制信號主要包括:操作時鐘CLK、系統初始化INIT、寫使能WEN、讀使能REN、運算完畢READY、DIN[31:0]、數據輸入、數據輸出DOUT[31:0]、端口選擇A[2:0]。當INIT=1時,將3DES模塊內部所有寄存器復位并清零;當A[2:0]=010, WEN=1時,在CLK時鐘上升沿,將命令字由32位數據總線寫入芯片內部命令寄存器;當A[2:0]=001,WEN=1時,在CLK時鐘上升沿,將128位的密鑰分四次由32-bit數據總線寫入芯片內部密鑰寄存器;當A[2:0]=000,WEN=1時,在CLK時鐘上升沿將64位的數據分兩次由32位數據總線寫入芯片內部輸入數據寄存器;每寫夠2個長字,3DES模塊開始運算,運算完畢后,READY變為高電平,輸出數據分為兩組分別送入temporary_l和temporary_2兩個寄存器。3DES Quartus仿真波形如圖4所示。


4 密碼服務的PCI傳輸控制
  完成了密碼算法模塊后,還要設計一個接口控制模塊,將其連接到PCI接口模塊,以實現密碼模塊與PCI主機的通信連接。下面以3DES密碼模塊為例,介紹面向PCI傳輸的密碼算法接口控制模塊的設計。圖5為該模塊的設計框圖,在PC機與加密卡的通信過程中,驅動程序先將數據按32bit分組送入PCI中指定的IO存儲器地址中。一次加密服務流程如下:數據首先進入輸入緩存模塊,分別將3DES密鑰Key1、Key2送入I/O地址70h,74h,78h,7ch;數據送入80h,84h;命令送入88h。待數據傳輸完畢,由驅動程序向密碼算法模塊發送啟動信號,在計數器模塊的控制下,命令、IV向量、密鑰、數據由緩存模塊依次進入密碼運算模塊;密碼運算完畢后向PCI模塊發送ready信號,并把數據處理結果放入輸出緩存地址9ch和a0h中,驅動程序在檢測的ready信號為高時從輸出緩存地址取走數據。


5 加密卡驅動程序設計及系統測試
  PCI加密卡為主機提供加/解密服務,并為應用軟件提供相應的軟件接口,主要包括用Visual C++開發的WDM驅動程序和應用程序編程接口函數庫兩個部分[4]。在Windows2000系統中可以使用多種驅動程序,如虛擬設備驅動程序(VDD)和內核模式驅動程序。其中,WDM驅動程序是一種PnP驅動程序,它遵循Windows2000即插即用協議的內核模式驅動程序,同時還遵循電源管理協議,并能在Windows98、Windows2000和Windows XP間實現源代碼級兼容。
  應用程序與WDM通信時,應用程序先調用CreateFile函數打開設備,然后調用DeviceIoControl與WDM進行數據通信,最后用CloseHandle關閉設備。主機應用程序用Visual C++開發生成,主要包括系統的用戶界面設計、用于輸入用戶數據、顯示運算后的結果數據、調用驅動程序實現某種功能。驅動程序與應用程序之間的通信分為同步方式和異步方式。若采用同步方式,則應用程序調用DeviceIoControl函數時將被阻塞,等待PCI設備進行數據處理,完成相應操作,直到驅動程序給應用程序返回值后,應用程序才會接著運行。若采用異步方式,則應用程序調用DeviceIoControl函數將立刻返回,不等待驅動程序對數據的操作。這樣,如果在應用程序退出之前,驅動程序還沒完成I/O操作,就需要編寫超時取消I/O操作的代碼,確保在應用程序退出之后正常關閉設備。異步方式相對比較復雜,考慮到設計中算法對時序要求高,所以本設計選擇同步方式實現計算機與PCI設備之間的通信。
  3DES加密算法和驅動程序全部完成后,為了對整個加密卡的功能進行驗證,開發了一個文件加密服務程序對加密卡進行測試。測試過程如下:
  第一步,系統安裝及初始化。首先將加密卡插入到PCI插槽中,將硬件設計下載到FPGA配置芯片后,重新上電,裝載驅動程序,最后,啟動應用程序開始整個加密卡的測試工作。
  第二步,加密功能測試。輸入3DES的兩個加密初始密鑰Key1、Key2,選擇一個事先編輯的文本文件Plain.txt為待加密的明文數據。模式選擇為加密的情況下,所得密文數據輸出到Cipher.txt文件中。
  第三步,解密功能測試。為了便于比較,仍然選用Key1、Key2為3DES的兩個解密初始密鑰。導入Cipher.txt作為待解密的密文數據,在模式選擇為解密的情況下,所得明文數據導出在Plain1.txt文件中。經過比較,Plain.txt和Plain1.txt完全一致。
  上述測試結果表明,加密卡驅動程序、PCI接口IP核能夠正確將應用程序提供的數據傳輸給密碼算法模塊,密碼算法模塊正確完成加解密操作后,數據能正確通過PCI接口IP核、驅動程序傳輸到應用程序,即加密卡設計實現了預定的功能。下一步還要對系統的性能進行測試,優化系統結構提高系統的性能。
  本文討論一個基于FPGA實現的PCI加密卡的設計與實現過程,以3DES算法為例重點討論了密碼算法及其與PCI接口模塊之間的數據傳輸實現方法,對包括驅動程序在內的加密卡進行了功能測試。作為一個功能完善的加密卡,要為PC機提供數據加密、數據完整性、訪問控制等服務,除了提供3DES加密算法以外,還需要支持AES等加密強度更高的對稱密碼算法、非對稱算法、散列算法、簽名驗證算法等,這也是下一步要做的主(接上頁)
要工作。
參考文獻

[1] 成都天融信網絡安全技術有限公司.PCI加密卡[EB/OL].http://www.westsec.com.cn,2006.
[2] 劉建中,李清寶.基子PCI總線加密卡硬件設計.電子技術應用[J],2004,30(1):7-9.
[3] 劉紅,李勃,常青,等.基于IP核的PCI總線接口設計與實現[J].電子技術應用,2006,32(6):6-9.
[4] 杜欣,馬秦生.PCI傳輸卡的WDM驅動程序設計[J].電子技術應用,2003,29(12):22-24.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
日韩视频二区| 欧美成人午夜77777| 亚洲欧洲日韩综合二区| 久久爱www久久做| 亚洲一区二区三区中文字幕在线| 日韩视频欧美视频| 最新亚洲激情| 亚洲国产综合91精品麻豆| 在线观看欧美激情| 在线精品一区| 亚洲国产三级网| 亚洲国产99| 亚洲国产小视频| 亚洲欧洲日产国码二区| 亚洲片在线观看| 亚洲精品欧洲| 9l国产精品久久久久麻豆| 亚洲美女黄网| 亚洲图片欧美日产| 亚洲免费在线视频一区 二区| 亚洲图片欧洲图片av| 宅男噜噜噜66一区二区| 在线亚洲一区观看| 午夜视频久久久| 久久不见久久见免费视频1| 亚洲成人资源| 亚洲精品无人区| 一区二区三区欧美成人| 亚洲综合社区| 欧美中文字幕在线| 久久性天堂网| 欧美成人午夜视频| 欧美天天综合网| 国产欧美一区二区精品忘忧草 | 欧美国产大片| 欧美日韩喷水| 国产美女精品免费电影| 伊人久久亚洲影院| 亚洲另类在线视频| 亚洲自拍偷拍色片视频| 亚洲国产成人av| 亚洲欧美日韩综合| 在线视频欧美日韩| 亚洲小说欧美另类婷婷| 午夜日韩av| 久久免费视频这里只有精品| 欧美超级免费视 在线| 欧美精品一区在线| 国产噜噜噜噜噜久久久久久久久| 激情一区二区三区| aa日韩免费精品视频一| 午夜一区不卡| 亚洲精品久久久久久久久久久久久| 亚洲午夜高清视频| 久久久亚洲成人| 欧美日韩亚洲一区二区三区四区| 国产日韩专区在线| 亚洲激情欧美| 亚洲欧美日韩中文在线制服| 亚洲精品久久久久中文字幕欢迎你| 午夜精品久久久久久久久久久久| 美女视频黄a大片欧美| 欧美特黄a级高清免费大片a级| 国内外成人在线视频| 999亚洲国产精| 久久精品国产69国产精品亚洲| 亚洲一级黄色av| 久久视频在线看| 国产精品激情偷乱一区二区∴| 亚洲成人在线视频网站| 亚洲欧美国产三级| 一区二区欧美视频| 理论片一区二区在线| 国产精品久久一级| 亚洲国产日韩精品| 欧美在线视频不卡| 亚洲欧美日韩综合| 欧美日韩91| 激情六月婷婷综合| 亚洲欧美高清| 亚洲愉拍自拍另类高清精品| 欧美黄色视屏| 狠狠狠色丁香婷婷综合久久五月 | 一区二区三区高清不卡| 麻豆成人综合网| 国产美女搞久久| 亚洲图片欧洲图片av| 夜夜嗨av一区二区三区| 另类专区欧美制服同性| 国产亚洲精品aa午夜观看| 亚洲一区二区成人在线观看| 亚洲视频欧美在线| 欧美激情一区| 在线成人www免费观看视频| 性8sex亚洲区入口| 午夜精品久久久| 欧美三级特黄| 日韩午夜电影av| 日韩视频在线观看国产| 欧美成人精品激情在线观看| 好吊日精品视频| 性亚洲最疯狂xxxx高清| 亚洲欧美中文在线视频| 国产精品久久9| 中国女人久久久| 亚洲一区尤物| 国产精品高潮呻吟久久| 一区二区免费在线视频| 夜夜嗨一区二区| 欧美久久影院| 亚洲精品日韩一| 日韩亚洲国产欧美| 欧美国产三级| 亚洲国产专区| 一本综合久久| 欧美视频在线视频| 亚洲午夜一区二区三区| 性久久久久久| 国产日韩欧美a| 欧美在线免费播放| 久久亚洲精品网站| 激情综合网址| 亚洲精品久久久久久久久久久| 欧美激情亚洲自拍| 亚洲精品日韩精品| 亚洲一区国产| 国产精品女主播在线观看| 亚洲综合色激情五月| 欧美制服丝袜| 韩国欧美一区| 亚洲国产婷婷香蕉久久久久久| 免费看亚洲片| 亚洲精品乱码久久久久久久久| 亚洲午夜视频| 国产伦精品一区二区三区免费迷 | 亚洲欧美日韩另类| 国产精品欧美久久| 午夜免费日韩视频| 美女国内精品自产拍在线播放| 亚洲经典在线| 亚洲综合视频一区| 国产视频久久网| 亚洲国产另类久久久精品极度| 欧美人与性动交a欧美精品| av成人激情| 久久精品国产精品亚洲| 亚洲国产第一| 亚洲女人小视频在线观看| 国产欧美日韩在线播放| 亚洲国产黄色片| 欧美人与性动交a欧美精品| 亚洲午夜在线视频| 久久在线精品| 99热免费精品在线观看| 欧美一二三区在线观看| 精久久久久久| 亚洲网在线观看| 国产亚洲精品成人av久久ww| 日韩一级视频免费观看在线| 国产精品九九| 亚洲激情成人在线| 欧美午夜性色大片在线观看| 久久国产精品色婷婷| 欧美三级不卡| 久久精品国产亚洲精品| 欧美视频二区36p| 欧美中文字幕视频| 欧美日韩亚洲系列| 久久精品视频va| 欧美性开放视频| 亚洲国产一区二区视频| 欧美三区不卡| 亚洲国产高潮在线观看| 欧美性事免费在线观看| 亚洲电影下载| 国产精品视频久久一区| 亚洲乱码一区二区| 国产免费一区二区三区香蕉精| 亚洲人线精品午夜| 国产欧美精品日韩区二区麻豆天美| 亚洲人精品午夜| 国产欧美在线看| 9i看片成人免费高清| 国产视频不卡| 亚洲影视中文字幕| 亚洲欧洲三级| 久久视频在线免费观看| 亚洲视频导航| 欧美国产先锋| 欧美在线亚洲| 欧美午夜欧美| 日韩午夜精品| 在线观看亚洲视频| 久久av资源网站| 这里只有精品视频在线| 欧美激情亚洲精品| 亚洲国产欧美一区二区三区久久| 国产色产综合色产在线视频| 亚洲在线电影| 99re热这里只有精品免费视频|