《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA和USB芯片的加密盒設計與實現(xiàn)
基于FPGA和USB芯片的加密盒設計與實現(xiàn)
2014年微型機與應用第18期
蘇振宇
浪潮集團有限公司,山東 濟南 250101
摘要: 針對網絡信息安全領域對數(shù)據(jù)加密和快速處理的需求,,設計了一種基于FPGA和USB2.0芯片的數(shù)據(jù)加密盒,實現(xiàn)了高安全性的國產SM4對稱密碼算法,。該設備在30個明文分組、10 000次循環(huán)的測試條件下數(shù)據(jù)加密速度可達到126 Mb/s,。
關鍵詞: PGA USB20 SM4 密碼算法
Abstract:
Key words :

  摘  要: 針對網絡信息安全領域對數(shù)據(jù)加密和快速處理的需求,,設計了一種基于FPGA和USB2.0芯片的數(shù)據(jù)加密盒,實現(xiàn)了高安全性的國產SM4對稱密碼算法,。該設備在30個明文分組,、10 000次循環(huán)的測試條件下數(shù)據(jù)加密速度可達到126 Mb/s。

  關鍵詞: FPGA,;USB2.0,;SM4;密碼算法

0 引言

  隨著計算機網絡技術的發(fā)展,,黑客襲擊事件逐年遞增,,給用戶的數(shù)據(jù)安全造成很大的威脅。密碼技術是實現(xiàn)網絡信息安全的核心技術,,是保護數(shù)據(jù)的重要工具[1],。通過在PC上運行軟件進行加密的方法占用CPU資源多、處理速度慢,、安全性差,。近年來,通過采用FPGA,、DSP等硬件實現(xiàn)密碼算法的技術得到了更多的應用。當前我國的商用密碼產品大多數(shù)采用PCI,、USB接口,,PCI接口的產品具有開發(fā)周期長、使用復雜等缺點,,而USB接口的產品加密性能較差,。針對這些情況,,設計了一種以FPGA為核心的USB加密盒,充分利用了FPGA的數(shù)據(jù)處理能力和控制能力,,實現(xiàn)了安全可控的國產SM4對稱密碼算法,。在使用中連接到用戶終端,保證重要數(shù)據(jù)在網絡中以密文的方式安全傳輸,,具有加密速度快,、靈活等優(yōu)點,可廣泛應用于金融,、電信,、稅控等信息安全領域。

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


001.jpg

  加密盒由USB2.0芯片CH378和FPGA構成,,系統(tǒng)架構如圖1所示,。通過Verilog語言在FPGA中設計了USB控制模塊、SM4 IP核,、SM4控制模塊和雙端口RAM,。其中USB控制模塊控制CH378,SM4 IP核實現(xiàn)SM4對稱算法,,SM4控制模塊實現(xiàn)對IP核的控制,,雙端口RAM作為數(shù)據(jù)的緩存。CH378使用30 MHz時鐘,,利用鎖相環(huán)PLL把時鐘倍頻到60 MHz作為系統(tǒng)的主時鐘,。FPGA各模塊的時鐘都為60 MHz,采用了完全同步的設計方式,,可以有效避免毛刺,,使系統(tǒng)穩(wěn)定。

  數(shù)據(jù)的加密過程是:上位機準備好明文分組數(shù)據(jù),,啟動加密操作,,USB控制模塊控制CH378把數(shù)據(jù)傳輸?shù)诫p端口RAM,數(shù)據(jù)傳輸完成后,,啟動SM4控制模塊,,把數(shù)據(jù)傳輸?shù)絊M4 IP核進行加密運算,運算完成后的密文分組數(shù)據(jù)由SM4控制模塊傳回到RAM,,由上位機取回,。數(shù)據(jù)解密過程完成從密文到明文的轉換。

2 USB控制模塊設計

  2.1 CH378接口設計

  CH378是南京沁恒電子公司的USB2.0芯片,,支持USB設備方式和主機方式,,內置了USB通信協(xié)議的基本固件和文件系統(tǒng)管理固件[2]。加密盒采用了USB設備方式,、內部固件模式和8位并口的設計方式,。CH378與FPGA的接口見圖1,,其中D是8位數(shù)據(jù)總線;nRD與nWR分別是讀寫控制引腳,,低有效,;A0是命令口與數(shù)據(jù)口的區(qū)分引腳,為高時寫命令或讀狀態(tài),,為低時讀寫數(shù)據(jù),;nINT是中斷輸出引腳,低有效,。

  2.2 狀態(tài)機設計

  狀態(tài)機是數(shù)字時序邏輯中重要的設計內容,,通過狀態(tài)轉移圖設計手段可以將復雜的控制時序以圖形化表示,分解為狀態(tài)之間的轉換關系,,將問題簡化[3],。狀態(tài)機是USB控制模塊的核心,實現(xiàn)對CH378的控制,。其狀態(tài)轉移如圖2所示,,對各狀態(tài)的編碼采用了格雷碼,可以有效地防止毛刺,,使系統(tǒng)穩(wěn)定[4],。

002.jpg

  系統(tǒng)上電后FPGA首先對CH378初始化,狀態(tài)機處于空閑狀態(tài),。采用USB的批量端點進行數(shù)據(jù)的傳輸[5],,下傳時數(shù)據(jù)由上位機傳輸?shù)郊用芎校它c號為0x02,,支持最大包512 B,;上傳時數(shù)據(jù)由加密盒傳輸?shù)缴衔粰C,端點號為0x82,,最大包也是512 B,。CH378完成數(shù)據(jù)的下傳后通過nINT引腳向FPGA發(fā)送中斷。在TX_C22狀態(tài)FPGA向CH378寫命令字0x22,,請求獲得中斷狀態(tài)值,;狀態(tài)機在RX_INT狀態(tài)讀取中斷狀態(tài)值,若為0x04表示端點0x02的接收器接收到數(shù)據(jù),,否則說明未能接收到數(shù)據(jù),;在TX_C23狀態(tài),狀態(tài)機釋放USB緩沖區(qū),;在TX_C29狀態(tài),,狀態(tài)機向CH378寫入命令字0x29和端點號0x02,使CH378準備從0x02端點緩沖區(qū)讀取數(shù)據(jù)塊,,之后進入RX_DAT狀態(tài),,依次把從端點緩沖區(qū)讀取的數(shù)據(jù)分組長度和數(shù)據(jù)分組寫入RAM,傳輸完成后CH378釋放緩沖區(qū),,狀態(tài)機進入SM4_SF狀態(tài),,啟動SM4控制模塊。SM4模塊完成之后狀態(tài)機進入TX_C2A狀態(tài),,向CH378寫入命令字0x2A和端點號0x82,,使CH378做好發(fā)送數(shù)據(jù)的準備,之后進入TX_DAT狀態(tài),,讀取RAM中的運算結果并寫入端點0x82的發(fā)送緩沖區(qū),,由CH378把數(shù)據(jù)發(fā)送到上位機。至此完成了數(shù)據(jù)的傳輸過程,,狀態(tài)機回到空閑狀態(tài),。

3 SM4 IP核設計

  3.1 SM4算法簡介

  SM4算法是由國家密碼管理局發(fā)布的對稱密碼算法,分組長度和密鑰長度都為128位,。加密算法與密鑰擴展算法都采用32輪非線性迭代結構[6],。解密算法與加密算法的結構相同,只是解密輪密鑰是加密輪密鑰的逆序,。SM4算法的密鑰空間包含2128個密鑰,,數(shù)量十分龐大,破解由SM4算法加密的密文難度極大,,算法安全性很高,。

  3.2 IP核關鍵邏輯設計


  SM4 IP核模塊的接口見圖1,start是算法啟動信號,;op是模式選擇接口,,為0時讀入密鑰,為1時進行加密操作,,為2時進行解密操作,;datain是數(shù)據(jù)輸入;dataout是數(shù)據(jù)輸出,;done是運算結果輸出標志位,。

  SM4加密算法采用了32輪非線性迭代結構,每輪變換的邏輯如圖3所示,。初始明文分組為(X0,,X1,X2,,X3)∈(Z232)4,,(Z232)4為4個32 bit字,從端口datain輸入,,密文是(Y0,,Y1,,Y2,Y3)∈(Z232)4,,輪密鑰為rki∈Z232,,i=0,1,,2,,…,31,。在每一輪中Xi+1,,Xi+2,Xi+3與rki相異或后形成數(shù)據(jù)A,,即A=Xi+1⊕Xi+2⊕Xi+3⊕rki,,經過S盒非線性變換成為數(shù)據(jù)B,即Sbox(A)=B,。S盒中的數(shù)據(jù)采用查找表的結構預先存儲于FPGA的ROM中,,由16行×16列的字節(jié)數(shù)據(jù)構成。例如A的低8位數(shù)據(jù)A[7..0]=0xEF對應于S盒中第E行和第F列的值,,經過S盒變換后成為B[7..0]=Sbox(A[7..0])=0x84,。A需要經過4個S盒并行運算后成為數(shù)據(jù)B。對B進行循環(huán)移位,、異或后形成C,,C=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24),最后C與Xi異或后形成Xi+4,,即Xi+4=Xi⊕C,。最終密文(Y0,Y1,,Y2,,Y3)=(X35,X34,,X33,,X32),從端口dataout輸出,。解密變換與加密變換結構相同,,加密時輪密鑰的使用順序是:rk0,rk1,,…,,rk31,解密時輪密鑰的使用順序與加密時相反。

  SM4算法的輪密鑰由128 bit的加密密鑰通過密鑰擴展算法生成,,設加密密鑰MK=(MK0,,MK1,MK2,,MK3)∈(Z232)4,,同樣從datain輸入。令Ki∈Z232,,i=0,1,,...,,35,首先令(K0,,K1,,K2,K3)=(MK0⊕FK0,,MK1⊕FK1,,MK2⊕FK2,MK3⊕FK3),,其中(FK0,,F(xiàn)K1,F(xiàn)K2,,F(xiàn)K3)∈(Z232)4為已知的系統(tǒng)參數(shù),。輪密鑰的邏輯如圖4所示,其中CKi是固定參數(shù),。經變換后輪密鑰rki=Ki+4i=0,,1,…,,31,。

003.jpg

4 SM4控制模塊

  SM4控制模塊的作用是控制SM4 IP核進行數(shù)據(jù)的加密或解密,核心同樣是狀態(tài)機,,其狀態(tài)轉移如圖5所示,,對狀態(tài)的編碼同樣采用了格雷碼。

004.jpg

  狀態(tài)機開始處于空閑狀態(tài),,由fsm_start信號啟動后進入RD_LEN狀態(tài),,讀取RAM中的數(shù)據(jù)分組長度。在RD_FLAG狀態(tài)讀取RAM中的模式選擇位,,判斷執(zhí)行加密或解密的操作,;之后進入RD_KEY狀態(tài),從RAM中讀取16 B的密鑰數(shù)據(jù)后發(fā)送給SM4 IP核;之后進入WAIT1狀態(tài),,等待IP核讀取密鑰,;狀態(tài)機進入RD_DAT狀態(tài)后,依次讀取RAM中的16 B明文數(shù)據(jù)發(fā)送給IP核,;進入WAIT2狀態(tài)后,,等待IP核把一個分組的數(shù)據(jù)處理完成(加密或解密),done信號輸出高電平,;進入WR_DAT狀態(tài)后,,把IP核運算完成后的128 bit數(shù)據(jù)分組(密文或明文)寫入RAM;進入SF_JUDGE狀態(tài)后,,判斷是否處理完所有的數(shù)據(jù)分組,,若未處理完則返回到RD_DAT狀態(tài),若處理完所有的數(shù)據(jù)分組則返回空閑狀態(tài),。一次USB批量傳輸可以處理的數(shù)據(jù)分組是1~30個,。

5 雙端口RAM模塊

  雙端口RAM的作用是緩存數(shù)據(jù),設計RAM的容量為512 B,,上位機和FPGA可以對RAM進行獨立訪問,,使設計更加靈活。對RAM的訪問順序如下:

 ?。?)上位機寫RAM:上位機把數(shù)據(jù)傳送到端點緩沖區(qū)后,,CH378把數(shù)據(jù)寫入RAM,WR_addr是RAM的寫地址端口,,ram_wr是寫使能端口,,data是數(shù)據(jù)輸入端口。

 ?。?)SM4控制模塊讀RAM:啟動SM4控制模塊后,,讀取RAM中的數(shù)據(jù)并傳送到SM4 IP核,RD_addr是RAM的讀地址端口,,q是數(shù)據(jù)輸出端口,。

  (3)SM4控制模塊寫RAM:當IP核完成數(shù)據(jù)運算后,,SM4控制模塊將運算結果通過data端口寫入到RAM,。

  (4)上位機讀RAM:CH378讀取RAM中的運算結果,,傳輸?shù)経SB批量上傳端點的發(fā)送緩沖區(qū)并把數(shù)據(jù)發(fā)送到上位機,。

6 實驗結果分析

  FPGA芯片選用了Cyclone IV系列的EP4CE15F17C8N,I/O引腳數(shù)為166,,RAM總量為63 KB,,邏輯單元LE為15 408個[7]。整個設計在Altera的開發(fā)工具Quartus II 11.1中先后完成綜合、功能仿真,、布局布線后,,通過邏輯分析儀并結合上位機軟件進行調試。最終綜合結果是:占用存儲單元3 KB,,邏輯單元3 921個,。另外,經時序分析所有信號的建立,、保持時間無違規(guī)路徑,。圖6是調試通過的波形圖。

005.jpg

  圖6顯示了一個明文的加密過程,,start信號變高后,,SM4 IP核從端口datain讀入明文,此時信號op=1指示加密過程的開始,。運算完成后IP核的done信號變高,dataout端口輸出128 bit的密文,;之后SM4控制模塊通過端口ram_di把密文寫入到RAM中,,寫RAM地址WR_addr實現(xiàn)遞增,RAM寫使能控制信號ram_wr變?yōu)楦唠娖?。圖中明文,、密鑰和密文與SM4算法標準數(shù)據(jù)一致。

  上位機軟件是結合CH378驅動程序和Visual C++6.0軟件在Windows XP環(huán)境下開發(fā)而成的,。對SM4算法的性能進行測試,,設置每次批量傳輸時數(shù)據(jù)的最大分組為30個,通過10 000次循環(huán)測試,,測得數(shù)據(jù)加密(解密)的速率為126 Mb/s,。

7 結論

  本文基于FPGA和USB2.0芯片的加密盒,通過FPGA實現(xiàn)了國密SM4對稱密碼算法,,應用于工程實踐中,,滿足用戶對數(shù)據(jù)加密的需求。與市場上的密碼產品相比,,具有集成度高,、加密速度快、性能高的優(yōu)勢,。作為后續(xù)的工作,,可以在FPGA中集成多種其他的國產密碼算法,使得該加密盒的應用更加靈活和廣泛,。

  參考文獻

  [1] 羅守山.密碼學與信息安全技術[M].北京:北京郵電大學出版社,,2009.

  [2] 南京沁恒電子公司.U盤和SD卡高速文件管理控制芯片CH378[Z].2013,5.

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

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

  [5] 蕭世文,宋延清.USB 2.0硬件設計(第二版)[M].北京:清華大學出版社,,2006.

  [6] GM/T 0002-2012,,SM4分組密碼算法[S].2012.

  [7] Altera Corporation.Cyclone IV Device Handbook[Z].2010.


此內容為AET網站原創(chuàng),未經授權禁止轉載,。