引言
隨著信息化進程的不斷加快,信息安全的重要性日益突出。數據的存儲安全已成為信息安全領域的研究熱點,通信中的數據保密問題也是人們關注的焦點,而數據加密是保證敏感信息機密性的常用方法。雖然軟件加密以其靈活性得到了廣泛應用,但是,軟件加密方法需要消耗大鼉的處理器資源,速度慢,容易被跟蹤調試和破解,安全性較低。鑒于軟件加密方法的缺點和PCI接口的通用性,人們研究并提出了基于PCI總線的硬件加密方法:文獻[1]針對PCI/Compact PCI接口電路使用的廣泛性,提出了一種基于PCI—FPGA的硬件加密模型;文獻[2]雖然給出了一種基于PCI總線的數據加密卡及驅動程序的設計方法,但其加、解密速率低于1.5 Mbps,難以滿足批量數據加解密應用需求;文獻[3]利用FPGA設計了基于PCI總線接口的純硬件加密卡并采用了3一DES加密算法,但缺乏對高級加密標準(advanced encryption standard,AES)的支持,安全性有限。針對現有方法的不足,本文提出了一種基于PCI總線的高速數據加密卡設計及實現方案:采用低端FPGA器件實現了AES強加密算法及32位CRC校驗算法;通過重構設備驅動程序中的DMA(directmemory access)描述符鏈和引入應用層緩沖區地址對齊策略,提高了DMA傳輸效率,并消除了加密卡對大容量高速FIFO的依賴,大大降低了設計成本。實驗表明,PCI數據加密卡接口通信速率可達到67 MB/s,加、解密速率約為24 MB/s,可用于批最數據的加密存儲和傳輸,能有效防止非法數據拷貝及通信中信息泄露所引發的泄密問題。
1 數據加密卡體系結構
PCI數據加密卡需完成系統總線到本地總線的接口和電氣特性轉換,并實現協議規定的I/O及存儲器空間配置,接收主機發送的數據對其進行加、解密和校驗運算,并將加。解密結果及校驗信息返回給主機。其系統結構如圖1所示。
圖1 PCI數據加密卡系統結構
- PCI總線接口控制器——實現PCI總線到本地總線的轉換,管理配置、I/O和存儲器空問的操作,完成主機地址空間與本地地址空間之間的地址映射。
- 本地總線控制器——完成本地總線與密碼算法核以及CRC模塊間的數據傳輸。即:加密運算時,將明文數據寫到輸入FIFO和CRC模塊,并從輸出FIFO讀取加密結果,從CRC模塊讀取校驗值;解密運算時,將密文數據寫到輸入FIFO,將從輸出FIFO讀取的解密結果發送到本地總線和CRC模塊,并在解密完成后從CRC模塊讀取校驗值。
- 密碼算法核——采用Rijndael算法,實現對數據的加、解密操作。
- CRC模塊——采用32位校驗算法。提供數據完整性校驗信息,防止對數據的非法篡改。
2 數據加密卡硬件設計
2.1 PCI總線接口設計
PCI總線接口有三種常見的設計方案:一是PCI接口控制器IP核在高端FPGA芯片中實現;二是采用模擬收發器進行數據的串并轉換,然后由嵌入式處理器/控制器實現總線協議的處理;三是采用專門的PCI接口控制器芯片實現。方案1對FPGA芯片的性能要求很高,從而導致設計成本較高;方案2的總線協議處理部分設計復雜度較高,且容易對用戶功能模塊造成影響。出于對設計復雜度、可靠性及成本方面的考慮,本文選用第三種實現方法,將設計重點放在與數據加密功能相關的模塊上。
本文選擇PLX公司的PCI9054芯片作為PCI總線接口控制器。由于該芯片提供了配置、I/O和存儲器空間管理功能,用戶只需對其本地總線接口進行讀寫即可實現與主機間的數據傳輸,圖2給出了PCI9054與FPGA的接口方式。
圖2 PCI9054與FPGA芯片的接口
2.2本地總線控制器設計
本地總線狀態機是本地總線控制器的核心,可劃分為空閑(IDLE)、總線保持(AHOLD)、讀數據(READ)、讀結束檢測(RLAST)、寫數據(WRITE)、寫結束檢測(WLAST)和總線保持等待(WHOLD)7個狀態。圖3為本地總線狀態機狀態轉換圖。
本地總線狀態機狀態跳轉方式如下:
- 系統上電復位后,狀態機處于空閑態,等待主機發起讀寫操作。當PCI9054的本地總線請求信號LHOLD有效時,表明主機發起一次數據傳輸,狀態機進入總線保持狀態。
圖3 本地總線控制器狀態機
- 總線保持狀態下,若ADS#信號有效,總線傳輸進入地址周期。此時,若LW/R#信號為低則表明主機發起讀操作,狀態機轉到讀數據狀態;否則,進入寫數據狀態。
- 讀/寫數據狀態下,本地總線控制器置READY#信號有效,處理數據和奇偶校驗信號,完成一個數據周期,并在下一周期相應跳轉到讀/寫結束檢測狀態。
- 讀/寫結束檢測狀態下,若BLAST信號有效,表明本次讀寫操作已完成,狀態機進入總線保持等待狀態;否則,返回讀/寫數據狀態繼續進行數據傳輸。
- 總線保持等待狀態下,若LHOLD信號無效,則表明主機不會發起連續的讀寫操作,狀態機返回空閑狀態;否則,直接轉到總線保持狀態,等待主機發起下一次數據傳輸。
2.3密碼算法核設計
密碼算法核采用Rijndael算法,工作于加、解密速度較快的ECB模式。設計中,采用RAM存儲擴展密鑰,并在將擴展密鑰寫入RAM的同時,將加、解密首密鑰寫入寄存器,并以流水線方式讀取當前輪密鑰,從而避免了讀RAM的數據延遲問題。SubBytes變換和ShiftRows變換采用查表方式實現,實現時將SubBytes與ShiftRows合為一體,使兩部分延時僅取決于SubBytes變換的ROM。MixColumns變換參考文獻[6]給出的方法對矩陣乘法進行了展開與合并,節約了硬件資源,為提高整個設計的時鐘頻率提供了保障。
3 高速DMA傳輸設計
3.1驅動程序層設計
DMA傳輸中,DMA通道建立過程需要較長時間,是影響DMA傳輸速率的重要因素。現有設計常采用大容最高速FIFO來提高DMA傳輸效率,其缺點是增加了設計成本。本文針對數據加密卡的讀寫流程特點,提出了一種高效的DMA傳輸結構。該結構基于Scatter/Gather DMA方式,通過在驅動程序層鶯構DMA描述符鏈,以共享存儲器的方式實現了交叉的數據讀寫操作,從而避免了因需要改變數據傳輸方向引起的頻繁DMA終止和DMA通道建立過程,在無大容量高速FIFO支持的條件下提高了DMA傳輸效率。
Scatter/Gather DMA傳輸方式下,主設備通過維護DMA描述符鏈實現連續的DMA傳輸。原始描述符鏈結構由圖4(a)給出。重構DMA描述符鏈的過程分為3步:①對原始DMA描述符鏈進行復制;②將復制鏈的描述符數據傳輸方向取反;③將所有描述符按地址順序重新鏈接。重構后的DMA描述符鏈如圖4(b)所示。通過改進DMA描述符鏈結構,消除了DMA通道建立過程的耗時影響,提高了DMA傳輸效率,實現r交叉的讀寫操作,從而避免了加密卡對大容鼉高速FIFO的依賴,降低了設計成本。
圖4 DMA描述符鏈結構比較
3.2應用程序層設計
DMA傳輸過程中,數據緩沖區跨頁會造成DMA傳輸中斷,從而影響了DMA傳輸效率。為避免上述問題,應用程序對數據緩沖區進行了邏輯地址對齊,取緩沖區的起始地址,并按其偏移鼉進行調整,以保證每個描述符對應的數據緩沖區都在同一個內存頁面內。邏輯地址對齊設計方法避免了數據緩沖區跨頁問題,從而使得描述符切換時只需較短的DMA暫停,數據傳輸速率顯著提高。
4 系統實現及性能測試
4.1 Test.bed
PCI數據加密卡采用低端FPGA芯片EPlC12Q240C8。加密核的工作時鐘設置為100 MHz,本地總線控制器工作于50 MHz時鐘,兩者之間采用異步FIFO進行時鐘域隔離。設備驅動程序和上層應用程序的開發環境分另0為Driver Studi03.2和Visual C++6.0。
4.2測試結果及分析
前端設計完成后,將其下載到PCI數據加密卡上進行加、解密速率測試。本文測試分兩部分:(1)PCI接口傳輸速率測試,相應的測試工具為SignalTap II嵌入式邏輯分析儀;(2)對改進前后的文件加、解密速度作了對比測試。測試1顯示本地總線READY信號的頻率為16.79 MHz,即本地總線的平均數據傳輸速率為16.79×32/8=67.16 MB/s。測試2即改進前后的加、解密速率對比測試,結果見表1。
表1改進前后的加、解密速率
5 結語
本文對PCI總線接口的設計方法進行了研究,高速硬化實現了AES密碼算法和CRC校驗算法,提出了一種高效的DMA描述符鏈結構,顯著提高了DMA傳輸速率。實驗結果表明本系統具有加解密速度快、密碼算法強度高、加密運算不占用處理器資源、設計成本低等優勢。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/
本文標題:基于PCI總線的數據加密卡設計與實現
本文網址:http://www.guhuozai8.cn/html/consultation/1083948769.html