国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的稅控算法加密卡設計與實現(xiàn)

2014-12-18 13:17:16蘇振宇
電子科技 2014年12期
關(guān)鍵詞:狀態(tài)機數(shù)據(jù)包總線

蘇振宇

(浪潮集團有限公司信息安全事業(yè)部,山東濟南 250101)

由于當前國稅、地稅、各省、各稅種發(fā)票不同,辨別難度較大,因此給造假者可乘之機。本文設計的基于FPGA的稅控算法加密卡可有效地解決上述問題,提供了高效的防偽措施。該加密卡通過PCI總線內(nèi)置于稅控加密機中,將發(fā)票上的數(shù)據(jù)加密成一組防偽碼,打印在相應的區(qū)域上,由于采用國家密碼管理局的高安全性稅控密碼算法芯片,因此發(fā)票難以被篡改,從而可滿足稅務機關(guān)對發(fā)票管理和身份認證的要求。

1 系統(tǒng)總體架構(gòu)設計

圖1是基于FPGA稅控算法加密卡的系統(tǒng)架構(gòu)圖。其中包括FPGA芯片、8片稅控密碼算法芯片SSX12-B、FPGA配置芯片 EPCS4、存儲器 EEPROM和電源芯片。

圖1 基于FPGA的稅控專用算法加密卡系統(tǒng)架構(gòu)圖

FPGA是整個加密卡的控制核心,在其內(nèi)部利用嵌入式PCI-IP核實現(xiàn)與物理32位PCI總線的通信;設計算法狀態(tài)機模塊實現(xiàn)了FPGA與8片稅控密碼算法芯片的數(shù)據(jù)交互;另外,設計了DMA控制器和雙端口RAM實現(xiàn)了數(shù)據(jù)的傳輸及存儲。PCI總線的時鐘信號33 MHz作為FPGA的主時鐘。此外,33 MHz時鐘也作為SSX12-B芯片的工作時鐘,整個系統(tǒng)采用了時鐘完全同步的設計方式。EPCS4芯片與FPGA相連,每次上電后FPGA需讀取EPCS4內(nèi)的程序進行加密卡的配置與初始化。EEPROM用于存儲系統(tǒng)密鑰等關(guān)鍵參數(shù)。

數(shù)據(jù)運算的過程如下:

(1)通過上位機軟件設置好運算命令字和待運算的數(shù)據(jù)包,F(xiàn)PGA根據(jù)命令字可指定一片SSX12-B工作或多片SSX12-B同時工作。

(2)啟動數(shù)據(jù)傳輸,將數(shù)據(jù)包通過PCI總線傳入FPGA的雙端口RAM。RAM由8個1 kB的RAM單元構(gòu)成,每個RAM單元對應一個SSX12-B的數(shù)據(jù)緩沖區(qū),RAM單元和SSX12-B的數(shù)據(jù)總線寬度均為8 bit,整個RAM的容量為8 kB,數(shù)據(jù)總線寬度為64 bit。

(3)待所有數(shù)據(jù)包傳輸?shù)綄腞AM單元后,F(xiàn)PGA設置相關(guān)進程,啟動算法狀態(tài)機,將數(shù)據(jù)包并行傳送給RAM單元對應的SSX12-B芯片。

(4)各SSX12-B芯片同時開始工作,此時FPGA等待運算的完成。

(5)各SSX12-B芯片運算完成后在算法狀態(tài)機的控制下將數(shù)據(jù)包傳回到對應的RAM單元。待所有數(shù)據(jù)包傳完后狀態(tài)機產(chǎn)生中斷信號,之后FPGA通過PCI總線將數(shù)據(jù)包傳回到上位機,至此完成了一次數(shù)據(jù)運算過程。

2 主要芯片選型

(1)FPGA芯片。選用美國Altera公司CycloneIII系列的EP3C16F484C8器件,該芯片總引腳數(shù)為484,其中I/O引腳為346,RAM總量為63 kB,邏輯單元(LE)15 408個[1],可滿足加密卡的設計要求。FPGA的開發(fā)工具采用Altera公司的EDA軟件Quartus II 9.1,其可實現(xiàn)綜合、仿真、布局布線、系統(tǒng)調(diào)試等功能。

(2)稅控密碼算法芯片。采用國家密碼管理局的稅控密碼算法芯片SSX12-B,該芯片專用于稅控等信息安全領(lǐng)域,功能主要有數(shù)據(jù)加密、解密、生成票據(jù)防偽碼等,有效保證了用戶進行交易時數(shù)據(jù)的安全性。其主要特點為:每片算法芯片均有各自獨立的ID,所有加密運算均在片內(nèi)完成,運算速度快且安全性高[2]。

(3)FPGA配置芯片。采用Altera公司的EPCS4芯片,該芯片用以存儲加密卡的配置程序。加密卡每次上電后,F(xiàn)PGA首先從EPCS4里加載程序。

(4)EEPROM。采用 Microchip公司的24LC512 I2C串行總線EEPROM,容量為64×8 kbit,8腳SOIC封裝。100萬次的擦寫周期,數(shù)據(jù)保持時間>200年,最大5 ms的寫入周期[3]。此芯片主要用于存儲加密卡的密鑰等關(guān)鍵數(shù)據(jù)。

3 數(shù)據(jù)傳輸模塊

設計了FPGA的DMA控制器和雙端口RAM作為數(shù)據(jù)傳輸模塊。DMA傳輸對于高效能嵌入式系統(tǒng)算法和網(wǎng)絡是關(guān)鍵,其允許不同速度的硬件裝置進行溝通,而無需依賴 CPU的大量中斷負載[4]。否則,CPU需要從來源將每一片段的資料復制到暫存器,再寫回到新的地方,在這段時間中CPU無法參與其他工作。DMA傳輸?shù)闹匾饔檬菍⒁粋€內(nèi)存區(qū)從一個裝置復制到另一個。當 CPU初始化DMA傳輸后,傳輸動作本身由DMA控制器執(zhí)行。

如圖2所示,DMA控制器包括Master Read邏輯、Master Write邏輯、DMA控制邏輯和 DMA寄存器。Master Read邏輯實現(xiàn)數(shù)據(jù)由上位機到加密卡的傳輸;Master Write邏輯實現(xiàn)數(shù)據(jù)由加密卡到上位機的傳輸;DMA控制邏輯實現(xiàn)傳輸?shù)目刂乒δ?DMA寄存器包括控制狀態(tài)寄存器CSR、地址計數(shù)寄存器ACR、字節(jié)計數(shù)寄存器BCR、中斷狀態(tài)寄存器ISR和本地地址計數(shù)寄存器LAR[5]。在實現(xiàn)DMA傳輸時,由DMA控制器直接掌管總線。因此,存在一個總線控制權(quán)轉(zhuǎn)移的問題。即 DMA傳輸前,CPU要將總線控制權(quán)交給DMA控制器,而在結(jié)束DMA傳輸后,DMA控制器應立即將總線控制權(quán)再交回給CPU。一個完整的DMA傳輸過程包括 DMA請求、DMA響應、DMA傳輸和DMA結(jié)束4個步驟。

圖2 DMA控制器邏輯結(jié)構(gòu)

DMA控制器實現(xiàn)數(shù)據(jù)傳輸?shù)木唧w步驟如下:

(1)上位機設置待傳輸?shù)臄?shù)據(jù)包,并依次設置CSR、LAR、BCR和ACR寄存器,并對DMA控制器初始化。

(2)上位機啟動DMA讀(Master Read)的過程,將數(shù)據(jù)包一次性傳入稅控加密卡的雙端口RAM。

(3)DMA控制器啟動算法狀態(tài)機模塊,控制密碼算法芯片SSX12-B同時工作。

(4)密碼算法芯片SSX12-B結(jié)束工作后,將運算完成的數(shù)據(jù)傳回到相應的雙端口RAM存儲單元。

(5)DMA控制器設置ISR和CSR寄存器,啟動DMA寫(Master Write)的過程,將運算完成的數(shù)據(jù)包傳回到上位機。

雙端口RAM的作用是緩存數(shù)據(jù),其提供2組獨立的數(shù)據(jù)讀寫端口。因此,上位機和FPGA可對RAM進行獨立的訪問,使設計更加靈活。

4 密碼算法狀態(tài)機模塊

狀態(tài)機是數(shù)字時序邏輯中重要的設計內(nèi)容,通過狀態(tài)轉(zhuǎn)移圖設計手段可將復雜的控制時序圖形化表示,分解為狀態(tài)之間的轉(zhuǎn)換關(guān)系,將問題簡化[6]。算法狀態(tài)機模塊實現(xiàn)對SSX12-B芯片的時序控制。狀態(tài)機的狀態(tài)轉(zhuǎn)移圖如圖3所示,由上位機軟件通過設置CSR寄存器相應位的值啟動對應的密碼芯片工作,F(xiàn)PGA根據(jù)CSR寄存器可啟動多片SSX12-B同時并行工作。單個芯片的狀態(tài)轉(zhuǎn)移圖如圖4所示,由空閑狀態(tài)、啟動狀態(tài)、寫命令狀態(tài)、寫數(shù)據(jù)狀態(tài)、等待狀態(tài)、讀數(shù)據(jù)狀態(tài)及結(jié)束狀態(tài)組成。對各狀態(tài)的編碼采用格雷碼的方式,可有效地防止毛刺的產(chǎn)生,使系統(tǒng)穩(wěn)定[7-8]。

圖3 狀態(tài)機轉(zhuǎn)移圖

圖4 單個芯片的狀態(tài)轉(zhuǎn)移圖

算法狀態(tài)機的設計是通過FPGA的硬件描述語言VHDL完成的,單個芯片的狀態(tài)機具體工作過程如下:

(1)算法開始信號sf_start=‘0’時狀態(tài)機始終處于空閑狀態(tài)。(2)上位機設置CSR寄存器相應的位后,F(xiàn)PGA使sf_start=‘1’,狀態(tài)機進入啟動狀態(tài)。(3)當狀態(tài)機檢測到芯片處于不忙的狀態(tài)時,即SSX12-B芯片的Busy_nRdy引腳為低電平,狀態(tài)機進入寫命令狀態(tài)。(4)在寫命令狀態(tài),F(xiàn)PGA將相應的命令字寫入SSX12-B芯片,Busy_nRdy=‘0’時進入寫數(shù)據(jù)狀態(tài)。(5)在寫數(shù)據(jù)狀態(tài),F(xiàn)PGA將待運算的數(shù)據(jù)包依次寫入SSX12-B芯片。(6)狀態(tài)機進入等待狀態(tài),等待SSX12-B芯片的運算完成。(7)當檢測到Busy_nRdy引腳為低電平時,狀態(tài)機進入讀數(shù)據(jù)狀態(tài),并將運算完成的數(shù)據(jù)傳回到對應的RAM單元。(8)待本次運算的數(shù)據(jù)讀取完畢,狀態(tài)機進入結(jié)束狀態(tài),至此完成了一次數(shù)據(jù)運算過程。(9)之后狀態(tài)機返回空閑狀態(tài),等待下一次數(shù)據(jù)運算請求的到來。

5 系統(tǒng)工作過程

稅控加密卡的一次業(yè)務通常包括多次運算過程的組合。例如生成一次票據(jù)防偽碼的業(yè)務包括自檢、生成非對稱密鑰對、讀入簽名密鑰密文、讀入賬戶密鑰密文等運算過程。圖5是稅控加密卡的業(yè)務流程圖,具體工作過程如下:

圖5 稅控加密卡的工作流程圖

(1)稅控加密卡上電、復位及初始化結(jié)束后,上位機對DMA控制器初始化,其中包括設置待傳送的數(shù)據(jù)包,設置DMA相關(guān)的寄存器,提供要傳送數(shù)據(jù)的起始位置和數(shù)據(jù)長度。

(2)DMA控制器對DMA請求判別優(yōu)先級及屏蔽,向總線裁決邏輯提出總線請求。當上位機CPU執(zhí)行完當前總線周期即可釋放總線控制權(quán)。此時,總線裁決邏輯輸出總線應答,表示DMA已響應,通過DMA控制器通知加密卡開始DMA傳輸。

(3)DMA控制器獲得總線控制權(quán)后,上位機CPU即刻掛起或只執(zhí)行內(nèi)部操作,由DMA控制器輸出讀命令,直接控制內(nèi)存區(qū)與加密卡的雙端口RAM進行DMA讀操作(Master Read)。此時,數(shù)據(jù)包通過PCI總線依次傳入到雙端口RAM的相應地址單元。

(4)Master Read完成后,DMA控制器向算法控制模塊產(chǎn)生中斷。算法控制模塊收到中斷后將其清除,之后啟動算法狀態(tài)機進程。狀態(tài)機進程讀取雙端口RAM中的數(shù)據(jù),再將數(shù)據(jù)傳送到外部的算法芯片SSX12-B。

(5)SSX12-B芯片開始并行工作,此時FPGA等待運算完成。

(6)SSX12-B芯片將運算完成后的數(shù)據(jù)包傳回到相應的RAM地址單元,之后算法控制模塊產(chǎn)生結(jié)束信號,DMA控制器收到此信號后設置相應的進程,并啟動DMA寫操作(Master Write),將數(shù)據(jù)包通過PCI總線傳回到上位機。

(7)當完成DMA寫操作后,DMA控制器釋放總線控制權(quán),上位機CPU重新取得總線的控制權(quán)并執(zhí)行一段檢查本次DMA傳輸操作正確性的代碼,至此完成一次運算。

(8)根據(jù)上位機的命令依次處理多次運算,如生成非對稱密鑰對、讀入簽名密鑰密文、讀入賬戶密鑰密文等,直至完成生成票據(jù)防偽碼或數(shù)據(jù)加解密的業(yè)務。

6 實驗結(jié)果分析

整個設計在Quartus II 9.1軟件中先后完成綜合、功能仿真、布局布線后,通過邏輯分析儀SignalTap并結(jié)合上位機軟件進行了調(diào)試。除去SignalTap,F(xiàn)PGA的最終編譯結(jié)果是:占用存儲單元15.75 kB,邏輯單元4 950個。加入SignalTap編譯后占用FPGA的存儲單元為37.8 kB,占用率為60%,由于資源富余較大,所以加入SignalTap調(diào)試對系統(tǒng)的數(shù)據(jù)結(jié)果不會造成影響。FPGA各模塊的時鐘信號同步于33 MHz時鐘,采用了完全同步的方式進行設計,從理論上通過優(yōu)化FPGA的電路結(jié)構(gòu)可滿足信號的建立、保持時間要求。最終利用Quartus II的時序分析工具TimeQuest對系統(tǒng)的時序進行了分析,測得最高時鐘頻率>46.01 MHz,所有信號的建立、保持時間無違規(guī)路徑。

圖6是在SignalTap中調(diào)試通過的波形圖,圖中顯示了單芯片生成票據(jù)防偽碼及將數(shù)據(jù)寫到雙端口RAM的過程。Busy_nRdy信號是SSX12-B芯片的狀態(tài)引腳,高電平表示芯片正在運算中,低電平表示輸出數(shù)據(jù)有效;FPGA_i_nD[0]信號是SSX12-B的指令/數(shù)據(jù)引腳,高電平表示數(shù)據(jù)總線上是命令,低電平表示數(shù)據(jù)總線上是數(shù)據(jù);FPGA_nLE[0]是SSX12-B的數(shù)據(jù)總線狀態(tài)引腳,低電平表示總線上的數(shù)據(jù)有效,高電平表示總線為三態(tài);Data_in信號是SSX12-B輸出的數(shù)據(jù):73h是應答字,09h是返回的有效數(shù)據(jù)長度,00h表示無錯誤,44h,E7h,33h,F(xiàn)Eh……是生成的 8 Byte防偽碼;ram_wr是雙端口RAM的寫信號,WR_addr是雙端口RAM的寫地址線,ram_in0是RAM的數(shù)據(jù)輸入端口,dma_write_len表示寫入的數(shù)據(jù)長度,圖中顯示了SSX12-B在輸出票據(jù)防偽碼數(shù)據(jù)的同時狀態(tài)機將數(shù)據(jù)寫入到了雙端口RAM,WR_addr地址依次遞增,state_port是狀態(tài)機的狀態(tài)變化信號。

圖6 加密卡調(diào)試數(shù)據(jù)波形圖

表1是在不帶有SignalTap的加密卡上測得的8片SSX12-B芯片生成的防偽碼數(shù)據(jù),其與帶有SignalTap的加密卡測得的數(shù)據(jù)相一致,且生成的防偽碼經(jīng)核驗服務器核驗后均是正確的防偽碼數(shù)據(jù)。

表1 防偽碼測試數(shù)據(jù)

加密卡的驅(qū)動程序基于Linux 2.6內(nèi)核開發(fā),API接口程序和上位機軟件是在RedHat Linux AS4.6環(huán)境下開發(fā)完成的的。最后對加密卡生成票據(jù)防偽碼的性能進行了測試,在程序中設置8片密碼算法芯片SSX12-B同時并行工作,通過10 000次循環(huán)測試,測得生成票據(jù)防偽碼的速度為827次/s。通過壓力測試加密卡工作穩(wěn)定,且生成數(shù)據(jù)正確。

7 結(jié)束語

設計了一種基于FPGA的稅控算法加密卡,介紹了各模塊的設計,通過FPGA實現(xiàn)了對稅控密碼算法芯片的高效控制。該加密卡具有加密速度快、效率高、功耗小的優(yōu)點,通過PCI總線內(nèi)置于稅控加密機中,可保證發(fā)票數(shù)據(jù)的正確加解密及生成發(fā)票數(shù)據(jù)防偽碼,滿足了稅務部門對發(fā)票管理的要求。

[1] Altera Corporation.Cyclone III device handbook[M].USA:Altera Corporation,2010.

[2] 北京兆日科技有限公司.SSX12-B算法芯片手冊[M].北京:北京兆日科技有限公司,2012.

[3] Microchip Technology Inc.24LC512 512 kB I2CTMCMOS serial EEPROM[M].USA:Microchip Technology Inc,2004.

[4] Altera Corporation.PCI_mt32 megacore function reference design[M].USA:Altera Corporation,2009.

[5] Altera Corporation.PCI compiler user guide[M].USA:Altera Corporation,2009.

[6] 吳繼華,王誠.Altera FPGA/CPLD 設計:高級篇[M].北京:人民郵電出版社,2005.

[7] 夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].2版.北京:北京航空航天大學出版社,2008.

[8] 傅喆,栗青霞,王換換.一種改進的雙向認證的動態(tài)密碼[J].電子科技,2014,27(1):150 -152.

猜你喜歡
狀態(tài)機數(shù)據(jù)包總線
基于有限狀態(tài)機的交會對接飛行任務規(guī)劃方法
基于PCI Express總線的xHC與FPGA的直接通信
機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設計
SmartSniff
多通道ARINC429總線檢查儀
基于Libpcap的網(wǎng)絡數(shù)據(jù)包捕獲器的設計與實現(xiàn)
基于EtherCAT總線的ROV控制系統(tǒng)設計
河南科技(2014年16期)2014-02-27 14:13:22
視覺注意的數(shù)據(jù)包優(yōu)先級排序策略研究
移動IPV6在改進數(shù)據(jù)包發(fā)送路徑模型下性能分析
FPGA設計中狀態(tài)機安全性研究
黑龍江科學(2011年2期)2011-03-14 00:39:36
郎溪县| 元氏县| 靖江市| 信阳市| 财经| 浠水县| 中超| 余江县| 屏边| 积石山| 乌兰浩特市| 东海县| 栾川县| 枝江市| 淮滨县| 年辖:市辖区| 盘山县| 蚌埠市| 大田县| 娄烦县| 江达县| 孟津县| 秦皇岛市| 柯坪县| 巴塘县| 宁津县| 抚顺市| 瓮安县| 绥中县| 达州市| 南宫市| 新安县| 界首市| 开阳县| 铁岭市| 普宁市| 库车县| 苏尼特左旗| 汤阴县| 梁山县| 新化县|