基于FPGA的高速加密卡設(shè)計(jì)與實(shí)現(xiàn)
摘要 為增強(qiáng)數(shù)據(jù)信息的安全性,設(shè)計(jì)了一種基于FPGA的高性能加密卡。該加密卡通過(guò)PCI Express總線(xiàn)與主機(jī)通信,由FPGA芯片內(nèi)置的Nios ll軟核處理器和PCI—E硬核分別實(shí)現(xiàn)控制器模塊與通信接口模塊功能;采用SM1、RSA算法對(duì)數(shù)據(jù)進(jìn)行加密或解密。將加密卡的數(shù)據(jù)通信和算法控制等功能集成在單片F(xiàn)PGA芯片上實(shí)現(xiàn),優(yōu)化了電路結(jié)構(gòu)、提高了加密卡的穩(wěn)定性和可靠性。實(shí)際測(cè)試結(jié)果表明,所設(shè)計(jì)的加密卡功能正確,運(yùn)算速度快,達(dá)到了預(yù)期的目標(biāo),具有良好的應(yīng)用前景。
關(guān)鍵詞 信息安全;FPGA;PCI Express;NiosⅡ軟核;加密
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)以及各種網(wǎng)絡(luò)應(yīng)用的快速發(fā)展,在給社會(huì)、企業(yè)、個(gè)人帶來(lái)便利的同時(shí),也由于目前網(wǎng)絡(luò)無(wú)法有效防止傳輸信息被第三方非法竊取和修改,而產(chǎn)生信息安全性問(wèn)題。采用信息加密技術(shù)是解決信息安全的有效手段,目前信息加密技術(shù)主要分為軟件加密和硬件加密。軟件加密的優(yōu)勢(shì)在于其成本及工藝難度低,而加密速度依賴(lài)于計(jì)算機(jī)的性能,消耗了大量系統(tǒng)資源,且安全性和可靠性差。硬件采用專(zhuān)用加密卡實(shí)現(xiàn),具有較高的安全性和可靠性,是現(xiàn)代信息加密技術(shù)的發(fā)展方向。加密卡采用的總線(xiàn)技術(shù)經(jīng)歷了ISA(Industrial Standard Archit ecture)總線(xiàn)、PCI(Peripheral Component Interconnect)總線(xiàn)和PCI Express(Peripberal Component Interconnect Express,PCI—E),目前的硬件加密卡主要采用PCI總線(xiàn)或PCI Express與DSP(Digital Signal Processing)芯片組合的方式,PCI總線(xiàn)或PCI—E總線(xiàn)負(fù)責(zé)與上位機(jī)通信,DSP芯片作為CPU(Central Processing Unit)。隨著計(jì)算機(jī)總線(xiàn)技術(shù)的發(fā)展,PCI總線(xiàn)已逐漸被具有更高傳輸性能的PCI—E總線(xiàn)取代,所以采用PCI總線(xiàn)的加密卡將逐漸被淘汰,采用PCI Express總線(xiàn)的加密卡通過(guò)橋接芯片實(shí)現(xiàn)PCI—E總線(xiàn),雖然這種方式面向事務(wù)處的接口實(shí)現(xiàn)簡(jiǎn)單,但需要兩片單獨(dú)的芯片,導(dǎo)致加密卡的結(jié)構(gòu)復(fù)雜、控制分散、靈活性較差?;谏鲜鲆蛩?,本文選用可編程邏輯器件(Field Programmable CateArray,F(xiàn)PGA)設(shè)計(jì)實(shí)現(xiàn)了一款高速率、高可靠性的硬件加密卡,通過(guò)FPGA內(nèi)部資源實(shí)現(xiàn)PCI—E總線(xiàn)和CPU功能。
1 加密卡設(shè)計(jì)
加密卡的基本功能是數(shù)據(jù)加解密。本文所設(shè)計(jì)加密卡可實(shí)現(xiàn)的主要功能包括:SM1算法、RSA(Rivest-Shamir-Adleman)算法、密鑰管理、權(quán)限管理、隨機(jī)數(shù)生成等。SM1算法是高性能分組密碼算法,具有較高的加解密速率,用于對(duì)大量數(shù)據(jù)進(jìn)行數(shù)據(jù)加解密操作;RSA算法是目前較優(yōu)秀的公鑰方案之一,具有較高的安全性,但其加解密速度較慢,主要用于對(duì)少量數(shù)據(jù)進(jìn)行數(shù)字簽名操作;密鑰管理是保證加密卡安全性的重要組成部分,主要包括密鑰的生成、存儲(chǔ)、備份和刪除等功能;權(quán)限管理是為增強(qiáng)加密卡的安全性而設(shè)計(jì)的一種權(quán)限管理機(jī)制,只有通過(guò)身份認(rèn)證后的操作命令才能被加密卡接受,以此有效地防止加密卡信息泄露;隨機(jī)數(shù)生成采用專(zhuān)用數(shù)字物理噪聲源實(shí)現(xiàn),負(fù)責(zé)產(chǎn)生真隨機(jī)數(shù)序列。
1.1 加密卡硬件結(jié)構(gòu)
加密卡主要由控制器模塊、算法模塊、通信接口模塊等組成??刂破魇羌用芸ǖ暮诵哪K,其根據(jù)主機(jī)發(fā)送的命令控制加密卡的整體操作;通信接口模塊負(fù)責(zé)完成加密卡與主機(jī)之間的數(shù)據(jù)通信。設(shè)計(jì)選用Altera公司的CycloneIV CX系列的EP4CGX30 FPGA芯片,采用FPGA芯片內(nèi)置的NiosII軟核處理器和PCI—E硬核來(lái)分別實(shí)現(xiàn)控制器模塊和通信接口模塊功能,分別代替現(xiàn)有加密卡中的DSP芯片和PCI—E橋接芯片,這種實(shí)現(xiàn)方式將控制器和通信接口以及其他邏輯功能模塊等集成在單片F(xiàn)PGA中,使加密卡的控制集中、結(jié)構(gòu)簡(jiǎn)單、集成度高,在保證信息安全性的同時(shí),使加密卡具有更高的靈活性和可靠性。圖1為所設(shè)計(jì)的加密卡結(jié)構(gòu)框圖。
1.2 FPGA內(nèi)部電路
加密卡的主要控制功能被集成在FPGA中實(shí)現(xiàn)。其內(nèi)部主要功能結(jié)構(gòu)框圖如圖2所示。加密卡所執(zhí)行的操作由主機(jī)發(fā)起,具體操作流程:(1)首先PCI—E總線(xiàn)接口獲取FPGA內(nèi)部數(shù)據(jù)緩存的控制權(quán),通過(guò)該接口將主機(jī)中的數(shù)據(jù)存儲(chǔ)到FPGA內(nèi)部的數(shù)據(jù)緩存中。(2)當(dāng)數(shù)據(jù)全部存入數(shù)據(jù)緩存中后,將數(shù)據(jù)緩存的控制權(quán)交給NiosII軟核,NiosII軟核讀取數(shù)據(jù)緩存中的數(shù)據(jù),然后依據(jù)操作命令控制算法模塊和各種功能模塊進(jìn)行相應(yīng)的操作,并將操作結(jié)果存儲(chǔ)到數(shù)據(jù)緩存中。(3)當(dāng)NiosII軟核控制操作完成后,釋放數(shù)據(jù)緩存的控制權(quán)并啟動(dòng)PCI—E總線(xiàn)接口,NiosII軟核等待接受下一次的操作命令。(4)PCI—E總線(xiàn)接口將數(shù)據(jù)發(fā)送給主機(jī),完成加密卡的一個(gè)操作流程。
1.2.1 PCI—E總線(xiàn)接口
PCI—E總線(xiàn)是新一代總線(xiàn)標(biāo)準(zhǔn),采用了目前業(yè)內(nèi)流行的點(diǎn)對(duì)點(diǎn)的串行連接,具有較高的傳輸速率。PCI—E總線(xiàn)1.x版和2.x版的單通道速率分別為2.5 Gbit·s-1和5 Gbit·s-1,均采用8 b/10 b編碼,最新的PCI—E總線(xiàn)3.0版兼容1.x版和2.x版,同時(shí)可采用128 b/130 b編碼,單通道速率可達(dá)8 Gbit·s-1。雖然PCI—E總線(xiàn)在傳輸速率方面具有突出的優(yōu)勢(shì),但是其體系結(jié)構(gòu)復(fù)雜,設(shè)計(jì)難度大。
設(shè)計(jì)選用的FPGA芯片,其內(nèi)置收發(fā)器是可獨(dú)立操作的全雙工高速收發(fā)器,支持8 b/10 b編碼,單通道最大速率為2.5 Gbit·s-1,能夠滿(mǎn)足PCI—E總線(xiàn)的速率要求;其內(nèi)置的PCI—E硬核占用較少的FPGA資源,能夠?qū)崿F(xiàn)PCI—E總線(xiàn)物理層、數(shù)據(jù)鏈路層以及傳輸層的功能,支持根端口與端點(diǎn)配置和x1、x2、x4通道模式,符合PCI—E 1.1基本規(guī)范協(xié)議和電氣特性要求,可通過(guò)Avalon總線(xiàn)與FPGA內(nèi)部的其他模塊互聯(lián),是一個(gè)完整的PCI—E協(xié)議解決方案。圖3為PCI—E硬核IP(Intellectual Property)模塊的高級(jí)結(jié)構(gòu)框圖,內(nèi)部包含2 kB的重試緩存和4 kB的接收緩存。本次PCI—E總線(xiàn)接口采用PCI—E硬核的x1通道、端點(diǎn)配置模式和DMA讀寫(xiě)方式,DAM讀寫(xiě)方式不需要主機(jī)中的CPU參與,使PCI—E總線(xiàn)接口可以直接和主機(jī)中的內(nèi)存進(jìn)行數(shù)據(jù)交互,適合大批量的數(shù)據(jù)傳輸。DMA讀寫(xiě)方式通過(guò)Altera公司提供的SOPCBuilder工具中的DMA控制器實(shí)現(xiàn),并且通過(guò)該工具實(shí)現(xiàn)PCI—E硬核、高速收發(fā)器和DMA控制器的級(jí)聯(lián)組成PCI—E總線(xiàn)接口。
主機(jī)向PCI—E總線(xiàn)接口發(fā)送數(shù)據(jù)的過(guò)程:(1)主機(jī)向加密卡發(fā)送數(shù)據(jù)時(shí),首先將其內(nèi)存起始地址、硬件存儲(chǔ)器地址、數(shù)據(jù)長(zhǎng)度等信息寫(xiě)入PCI—E總線(xiàn)接口的寄存器中。(2)PCI—E總線(xiàn)接口檢測(cè)到寄存器中的信息后,向主機(jī)發(fā)送讀請(qǐng)求。(3)主機(jī)接收到這些讀請(qǐng)求后,將數(shù)據(jù)從內(nèi)存中取出,組包后發(fā)送給FPGA。(4)PCI—E總線(xiàn)接口將接收到的數(shù)據(jù)包轉(zhuǎn)換成自定義的數(shù)據(jù)格式,存儲(chǔ)到數(shù)據(jù)緩存中。(5)當(dāng)主機(jī)將待發(fā)送的數(shù)據(jù)發(fā)送完畢后,給PCI—E總線(xiàn)接口發(fā)送一個(gè)中斷信號(hào),告知此次數(shù)據(jù)傳輸完成,至此完成主機(jī)向PCI—E總線(xiàn)接口發(fā)送數(shù)據(jù)的操作。
PCI—E總線(xiàn)接口向主機(jī)發(fā)送數(shù)據(jù)的過(guò)程:(1)PCI—E總線(xiàn)接口檢測(cè)到由FPGA內(nèi)部發(fā)送的啟動(dòng)PCI—E總線(xiàn)接口信號(hào)后,首先向主機(jī)發(fā)送中斷信號(hào),然后將數(shù)據(jù)緩存的數(shù)據(jù)組包后發(fā)送給主機(jī)。(2)主機(jī)接收到PCI—E總線(xiàn)接口的中斷信號(hào)后,將PCI—E總線(xiàn)接口發(fā)送來(lái)的數(shù)據(jù)存入內(nèi)存中。(3)PCI—E總線(xiàn)接口發(fā)送完數(shù)據(jù)后再次向主機(jī)發(fā)送中斷信號(hào),至此PCI—E總線(xiàn)接口向主機(jī)發(fā)送數(shù)據(jù)操作完成。
1.2.2 NiosII軟核設(shè)計(jì)
NiosII軟核處理器是Altera公司推出的第二代集成在FPGA內(nèi)部的可配置的32位RSIC(Reduced InstructionSet Computer)嵌入式處理器,具有經(jīng)濟(jì)型、標(biāo)準(zhǔn)型和快速型3種,占用少量的FPGA資源,其中快速性NiosII軟核性能較高,速度較快,可獲得超過(guò)250DMIPS(Dhrystone Million Instructions executed Per Second)的性能。為使加密卡達(dá)到最快的運(yùn)算速度,本次選用快速型NiosII軟核處理器作為CPU,其通過(guò)Avalon總線(xiàn)與SM1算法芯片接口電路、數(shù)據(jù)緩存、PCI—E硬核接口以及其他接口模塊等互聯(lián),共同組成硬件結(jié)構(gòu)。基于NiosII的軟核處理器采用C語(yǔ)言進(jìn)行加密卡軟件部分設(shè)計(jì),軟件主要功能是根據(jù)主機(jī)發(fā)送的命令控制加密卡完成數(shù)據(jù)加解密、密鑰管理、權(quán)限管理和隨機(jī)數(shù)生成等操作。同時(shí)通過(guò)NiosII軟核指令與自定義硬件模塊相結(jié)合,以軟硬件協(xié)同的方式完成RSA算法電路的設(shè)計(jì)。
1.2.3 RSA算法設(shè)計(jì)
加密卡中的RSA算法操作主要包括密鑰生成、密鑰存儲(chǔ)和加解密。到目前為止,密鑰長(zhǎng)度為1 024位的RSA算法已經(jīng)無(wú)法保證加密數(shù)據(jù)的安全性,因此本次加密卡中的RSA算法采用2 048位的密鑰。RSA算法操作中的密鑰生成和密鑰存儲(chǔ)部分需要生成隨機(jī)數(shù),并對(duì)大量數(shù)據(jù)進(jìn)行存儲(chǔ)和轉(zhuǎn)換,用硬件實(shí)現(xiàn)難度大,且效率不高,所以本次采用基于NiosII軟核的軟件方式實(shí)現(xiàn)該部分操作。RSA算法中的加解密操作需要對(duì)大位數(shù)的數(shù)據(jù)進(jìn)行模冪運(yùn)算,運(yùn)算復(fù)雜,雖已有成熟的軟件實(shí)現(xiàn)方式,但是該種方法實(shí)現(xiàn)的RSA算法運(yùn)算速度慢,無(wú)法滿(mǎn)足設(shè)計(jì)要求,而硬件實(shí)現(xiàn)方式已有成熟的算法,運(yùn)算速度快,所以本次RSA算法的加解密部分采用硬件方式實(shí)現(xiàn),通過(guò)NiosII軟核控制RSA運(yùn)算模塊完成加解密操作。
模冪運(yùn)算是RSA加解密的核心,可以通過(guò)模乘運(yùn)算來(lái)實(shí)現(xiàn),本次采用蒙哥馬利算法實(shí)現(xiàn)模乘運(yùn)算,該算法利用移位和加法代替了復(fù)雜的乘、模操作,易于在硬件上實(shí)現(xiàn)。NiosII軟核中定制的RSA加解密運(yùn)算指令的輸入為密鑰、數(shù)據(jù)長(zhǎng)度和啟動(dòng)信號(hào),輸出為運(yùn)算完成信號(hào)。當(dāng)NiosII軟核接收到RSA運(yùn)算命令后,通過(guò)定制的模冪運(yùn)算指令向RSA運(yùn)算模塊寫(xiě)入密鑰和數(shù)據(jù)長(zhǎng)度信號(hào),然后啟動(dòng)該運(yùn)算模塊,RSA運(yùn)算模塊接收到Nios II軟核的啟動(dòng)信號(hào)后,從數(shù)據(jù)緩存讀取待運(yùn)算數(shù)據(jù)進(jìn)行加解密運(yùn)算,運(yùn)算完成后將運(yùn)算結(jié)果存入數(shù)據(jù)緩存中,并向NiosII軟核發(fā)送完成信號(hào),NiosII軟核接收到RSA運(yùn)算完成信號(hào)后啟動(dòng)PCI—E總線(xiàn)接口,將運(yùn)算結(jié)果發(fā)送給主機(jī)。這樣采用軟硬件結(jié)合的方式實(shí)現(xiàn)RSA加解密功能,不但能夠保證RSA運(yùn)算的正確性,降低RSA算法實(shí)現(xiàn)的復(fù)雜度,而且比采用純軟件實(shí)現(xiàn)方式提高了運(yùn)算速度。
1.2.4 SM1接口電路設(shè)計(jì)
在FPGA內(nèi)設(shè)計(jì)有一個(gè)專(zhuān)用SM1算法芯片的接口控制電路,用于控制SM1算法芯片實(shí)現(xiàn)數(shù)據(jù)的加解密操作。SM1算法芯片采用雙總線(xiàn)命令和組包操作方式,具有較高的運(yùn)算速率。所以接口電路主要由寫(xiě)狀態(tài)機(jī)和讀狀態(tài)機(jī)組成,分別控制對(duì)SM1算法芯片進(jìn)行寫(xiě)數(shù)據(jù)操作和讀運(yùn)算結(jié)果操作。接口電路的工作原理:加密卡上電后,首先對(duì)SM1算法芯片進(jìn)行硬件復(fù)位,然后檢查由NiosII軟核發(fā)送的SM1算法啟動(dòng)信號(hào),若該信號(hào)有效,則同時(shí)啟動(dòng)寫(xiě)狀態(tài)機(jī)和讀狀態(tài)機(jī),這樣能夠在進(jìn)行寫(xiě)數(shù)據(jù)操作時(shí),也讀取運(yùn)算結(jié)果值,從而提高SM1算法命令的執(zhí)行速率。圖4和圖5分別為寫(xiě)操作狀態(tài)機(jī)和讀操作狀態(tài)機(jī)的設(shè)計(jì)。
2 設(shè)計(jì)實(shí)現(xiàn)
設(shè)計(jì)采用NiosII Eclipse開(kāi)發(fā)軟件完成加密卡軟件程序設(shè)計(jì),采用QuaxtusII 11.0工具軟件完成加密卡硬件電路設(shè)計(jì),并對(duì)所設(shè)計(jì)的軟硬件進(jìn)行了整合和仿真驗(yàn)證。在驗(yàn)證設(shè)計(jì)的正確性后,完成了對(duì)FPGA內(nèi)部整體電路的布局及綜合,并制作成加密卡樣品。在Windows系統(tǒng)下對(duì)所設(shè)計(jì)的加密卡連續(xù)測(cè)試168 h,加密卡工作正確;和已有的基于DSP和PCI—E橋接芯片設(shè)計(jì)的加密卡進(jìn)行測(cè)試比較,結(jié)果如表1所示,本次設(shè)計(jì)的加密卡能夠正確地完成各項(xiàng)功能,同時(shí)RSA算法的運(yùn)算速度為5.9次/s,SM1運(yùn)算速度為295 Mbit·s-1,較已有加密卡RSA運(yùn)算的3.5次/s和SM1運(yùn)算的240 Mbit·s-1有了大幅提高,所以本次加密卡在保證可靠性的同時(shí),運(yùn)算速度更快。
3 結(jié)束語(yǔ)
基于增強(qiáng)信息安全的思想,設(shè)計(jì)了一種基于FPGA的低成本、高性能的加密卡。采用FPGA內(nèi)部資源實(shí)現(xiàn)了加密卡的控制器模塊、算法模塊、通信接口模塊和各種接口等主要功能。并對(duì)兩種不同結(jié)構(gòu)設(shè)計(jì)方式的加密卡進(jìn)行了性能比較測(cè)試,結(jié)果表明采用FPGA單芯片結(jié)構(gòu)設(shè)計(jì)方式的加密卡功能正確,電路板結(jié)構(gòu)簡(jiǎn)單,可靠性強(qiáng)并且具有更高的靈活性和運(yùn)算速度,達(dá)到了預(yù)期的目標(biāo)。目前所設(shè)計(jì)的加密卡只集成了SM1和RSA算法,今后根據(jù)需要,可在FPGA內(nèi)部通過(guò)擴(kuò)展硬件或軟件的方式來(lái)增加其它的加密算法功能,所以,該加密卡實(shí)用性強(qiáng),具有可擴(kuò)展性,在信息安全領(lǐng)域具有良好的發(fā)展前景。