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