基于FPGA的高速加密卡設(shè)計(jì)與實(shí)現(xiàn)
PCI—E總線接口向主機(jī)發(fā)送數(shù)據(jù)的過(guò)程:(1)PCI—E總線接口檢測(cè)到由FPGA內(nèi)部發(fā)送的啟動(dòng)PCI—E總線接口信號(hào)后,首先向主機(jī)發(fā)送中斷信號(hào),然后將數(shù)據(jù)緩存的數(shù)據(jù)組包后發(fā)送給主機(jī)。(2)主機(jī)接收到PCI—E總線接口的中斷信號(hào)后,將PCI—E總線接口發(fā)送來(lái)的數(shù)據(jù)存入內(nèi)存中。(3)PCI—E總線接口發(fā)送完數(shù)據(jù)后再次向主機(jī)發(fā)送中斷信號(hào),至此PCI—E總線接口向主機(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總線與SM1算法芯片接口電路、數(shù)據(jù)緩存、PCI—E硬核接口以及其他接口模塊等互聯(lián),共同組成硬件結(jié)構(gòu)?;贜iosII的軟核處理器采用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ú)法滿足設(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)算模塊寫入密鑰和數(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總線接口,將運(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è)專用SM1算法芯片的接口控制電路,用于控制SM1算法芯片實(shí)現(xiàn)數(shù)據(jù)的加解密操作。SM1算法芯片采用雙總線命令和組包操作方式,具有較高的運(yùn)算速率。所以接口電路主要由寫狀態(tài)機(jī)和讀狀態(tài)機(jī)組成,分別控制對(duì)SM1算法芯片進(jìn)行寫數(shù)據(jù)操作和讀運(yùn)算結(jié)果操作。接口電路的工作原理:加密卡上電后,首先對(duì)SM1算法芯片進(jìn)行硬件復(fù)位,然后檢查由NiosII軟核發(fā)送的SM1算法啟動(dòng)信號(hào),若該信號(hào)有效,則同時(shí)啟動(dòng)寫狀態(tài)機(jī)和讀狀態(tài)機(jī),這樣能夠在進(jìn)行寫數(shù)據(jù)操作時(shí),也讀取運(yùn)算結(jié)果值,從而提高SM1算法命令的執(zhí)行速率。圖4和圖5分別為寫操作狀態(tài)機(jī)和讀操作狀態(tài)機(jī)的設(shè)計(jì)。
2 設(shè)計(jì)實(shí)現(xiàn)
設(shè)計(jì)采用NiosII Eclipse開發(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ā)展前景。
fpga相關(guān)文章:fpga是什么
評(píng)論