chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

解析FPGA和USB芯片的加密盒設(shè)計與實現(xiàn)

電子工程師 ? 來源:微型機與應用 ? 作者:蘇振宇 ? 2021-04-06 10:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

0 引言

隨著計算機網(wǎng)絡技術(shù)的發(fā)展,黑客襲擊事件逐年遞增,給用戶的數(shù)據(jù)安全造成很大的威脅。密碼技術(shù)是實現(xiàn)網(wǎng)絡信息安全的核心技術(shù),是保護數(shù)據(jù)的重要工具[1]。通過在PC上運行軟件進行加密的方法占用CPU資源多、處理速度慢、安全性差。近年來,通過采用FPGA、DSP等硬件實現(xiàn)密碼算法的技術(shù)得到了更多的應用。當前我國的商用密碼產(chǎn)品大多數(shù)采用PCI、USB接口,PCI接口的產(chǎn)品具有開發(fā)周期長、使用復雜等缺點,而USB接口的產(chǎn)品加密性能較差。

針對這些情況,設(shè)計了一種以FPGA為核心的USB加密盒,充分利用了FPGA的數(shù)據(jù)處理能力和控制能力,實現(xiàn)了安全可控的國產(chǎn)SM4對稱密碼算法。在使用中連接到用戶終端,保證重要數(shù)據(jù)在網(wǎng)絡中以密文的方式安全傳輸,具有加密速度快、靈活等優(yōu)點,可廣泛應用于金融、電信、稅控等信息安全領(lǐng)域。

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

6357025045329500007835198.jpg

加密盒由USB2.0芯片CH378和FPGA構(gòu)成,系統(tǒng)架構(gòu)如圖1所示。通過Verilog語言在FPGA中設(shè)計了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,采用了完全同步的設(shè)計方式,可以有效避免毛刺,使系統(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ù)解密過程完成從密文到明文的轉(zhuǎn)換。

2 USB控制模塊設(shè)計

2.1 CH378接口設(shè)計

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

2.2 狀態(tài)機設(shè)計

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

6357025044201700003919130.jpg

系統(tǒng)上電后FPGA首先對CH378初始化,狀態(tài)機處于空閑狀態(tài)。采用USB的批量端點進行數(shù)據(jù)的傳輸[5],下傳時數(shù)據(jù)由上位機傳輸?shù)郊用芎?,端點號為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中的運算結(jié)果并寫入端點0x82的發(fā)送緩沖區(qū),由CH378把數(shù)據(jù)發(fā)送到上位機。至此完成了數(shù)據(jù)的傳輸過程,狀態(tài)機回到空閑狀態(tài)。

3 SM4 IP核設(shè)計

3.1 SM4算法簡介

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

3.2 IP核關(guān)鍵邏輯設(shè)計

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

SM4加密算法采用了32輪非線性迭代結(jié)構(gòu),每輪變換的邏輯如圖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,經(jīng)過S盒非線性變換成為數(shù)據(jù)B,即Sbox(A)=B。S盒中的數(shù)據(jù)采用查找表的結(jié)構(gòu)預先存儲于FPGA的ROM中,由16行×16列的字節(jié)數(shù)據(jù)構(gòu)成。

例如A的低8位數(shù)據(jù)A[7..0]=0xEF對應于S盒中第E行和第F列的值,經(jīng)過S盒變換后成為B[7..0]=Sbox(A[7..0])=0x84。A需要經(jīng)過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輸出。解密變換與加密變換結(jié)構(gòu)相同,加密時輪密鑰的使用順序是:rk0,rk1,…,rk31,解密時輪密鑰的使用順序與加密時相反。

SM4算法的輪密鑰由128 bit的加密密鑰通過密鑰擴展算法生成,設(shè)加密密鑰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ù)。經(jīng)變換后輪密鑰rki=Ki+4i=0,1,…,31。

6357025036896100002657932.jpg

4 SM4控制模塊

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

6357025031034900004230778.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ù),設(shè)計RAM的容量為512 B,上位機和FPGA可以對RAM進行獨立訪問,使設(shè)計更加靈活。對RAM的訪問順序如下:

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

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

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

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

6 實驗結(jié)果分析

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

6357025025582500002472128.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ù)一致。

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

7 結(jié)論

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

參考文獻

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

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

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

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

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

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

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1645

    文章

    22050

    瀏覽量

    618710
  • PCI
    PCI
    +關(guān)注

    關(guān)注

    5

    文章

    679

    瀏覽量

    132111
  • USB芯片
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    10710
  • SM4算法
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1664
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    音樂芯片方案——N9305音樂芯片

    音樂芯片方案開發(fā)音樂,作為一種融合藝術(shù)與機械智慧的精巧物件,散發(fā)著獨特魅力。它以靈動的音符為載體,承載著人們的情感、回憶與祝福。從孩童手中開啟夢幻世界的木質(zhì)八音,到戀人間傳遞愛意
    的頭像 發(fā)表于 06-05 15:29 ?303次閱讀
    音樂<b class='flag-5'>盒</b><b class='flag-5'>芯片</b>方案——N9305音樂<b class='flag-5'>芯片</b>

    加密芯片的功能原理和應用領(lǐng)域

    的一部分。而加密芯片作為加密技術(shù)的核心實現(xiàn)方案之一,在信息安全領(lǐng)域占據(jù)著非常重要的地位。本文將重點討論加密
    的頭像 發(fā)表于 05-19 16:45 ?475次閱讀
    <b class='flag-5'>加密</b><b class='flag-5'>芯片</b>的功能原理和應用領(lǐng)域

    別再傻傻分不清!USB和TYPE-C的全面解析

    別再傻傻分不清!USB和TYPE-C的全面解析
    的頭像 發(fā)表于 04-26 15:51 ?4385次閱讀

    國產(chǎn)芯片沁恒USB PHY芯片替代方案解析

    沁恒USB PHY芯片CH132系列的核心優(yōu)勢分析
    的頭像 發(fā)表于 03-11 14:01 ?862次閱讀
    國產(chǎn)<b class='flag-5'>芯片</b>沁恒<b class='flag-5'>USB</b> PHY<b class='flag-5'>芯片</b>替代方案<b class='flag-5'>解析</b>

    國產(chǎn)芯片沁恒USB 3.0芯片替代方案解析

    沁恒微電子推出的多款USB 3.0 HUB芯片憑借高性能、高集成度及工業(yè)級設(shè)計,可實現(xiàn)對多款主流芯片的平替。以下為具體替代方案及優(yōu)勢分析: ? 一、7端口HUB
    的頭像 發(fā)表于 03-10 15:24 ?1175次閱讀

    利用FPGA實現(xiàn)USB 2.0通信接口

    USB?2.0接口的實現(xiàn)方式 利用FPGA實現(xiàn)USB 2.0接口的方式一般有兩種,一是借助外圍的USB
    的頭像 發(fā)表于 12-30 13:59 ?2899次閱讀
    利用<b class='flag-5'>FPGA</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>USB</b> 2.0通信接口

    STM32配合可編程加密芯片SMEC88ST的防抄板加密方案設(shè)計

    芯片部分核心的算法、功能代碼以及核心數(shù)據(jù)放入加密芯片,開發(fā)者設(shè)計的加密方案更加靈活、安全、可靠。 本方案選用具有智能卡32位內(nèi)核的加密
    發(fā)表于 12-27 13:03

    淺談加密芯片的一種破解方法和對應加密方案改進設(shè)計

    目前市面上很多防抄板加密方案都是基于加密芯片的安全存儲和密文通訊來實現(xiàn)對主MCU方案的保護。比如把主MCU用到的一些參數(shù)、配置信息等存儲在加密
    發(fā)表于 12-20 15:31

    淺談加密芯片的一種破解方法和加密方案改進設(shè)計

    目前市面上很多防抄板加密方案都是基于加密芯片的安全存儲和密文通訊來實現(xiàn)對主MCU方案的保護。比如把主MCU用到的一些參數(shù)、配置信息等存儲在加密
    發(fā)表于 12-20 15:10

    FPGA驅(qū)動AD芯片實現(xiàn)芯片通信

    概述:?利用FPGA實現(xiàn)AD芯片的時序,進一步實現(xiàn)與AD芯片數(shù)據(jù)的交互,主要熟悉FPGA對時序圖
    的頭像 發(fā)表于 12-17 15:27 ?1091次閱讀
    <b class='flag-5'>FPGA</b>驅(qū)動AD<b class='flag-5'>芯片</b>之<b class='flag-5'>實現(xiàn)</b>與<b class='flag-5'>芯片</b>通信

    socket 加密通信的實現(xiàn)方式

    在網(wǎng)絡通信中,數(shù)據(jù)的安全性至關(guān)重要。Socket 編程作為網(wǎng)絡通信的基礎(chǔ),實現(xiàn)加密通信是保護數(shù)據(jù)不被竊取或篡改的重要手段。 1. SSL/TLS 加密 SSL(Secure Socket Layer
    的頭像 發(fā)表于 11-12 14:18 ?1465次閱讀

    UID加密安全啟動原理分析

    本文導讀 ZDP14x0系列芯片是內(nèi)置開源GUI引擎的圖像顯示專用驅(qū)動芯片,在實際產(chǎn)品開發(fā)中需要加密保護,防止應用程序被讀取和盜用,本文將介紹如何實現(xiàn)UID
    的頭像 發(fā)表于 11-11 11:49 ?1072次閱讀
    UID<b class='flag-5'>加密</b>安全啟動原理分析

    安卓APP開發(fā)中,如何使用加密芯片?

    加密芯片是一種專門設(shè)計用于保護信息安全的硬件設(shè)備,它通過內(nèi)置的加密算法對數(shù)據(jù)進行加密和解密,以防止敏感數(shù)據(jù)被竊取或篡改。如下圖HD-RK3568-IOT工控板,搭載ATSHA204A
    的頭像 發(fā)表于 10-31 17:43 ?1002次閱讀
    安卓APP開發(fā)中,如何使用<b class='flag-5'>加密</b><b class='flag-5'>芯片</b>?

    AG32 芯片保護與加密

    AG32 芯片保護與加密 代碼安全有兩種方式: 一種是 Lock flash,一個是代碼加密。 Lock flash: Lock flash 是在燒錄代碼后,鎖定 flash,防止外部
    發(fā)表于 09-19 16:01

    FPGA + USB2.0 PHY USB3300 實現(xiàn)高速USB2UART

    本帖最后由 jf_73911065 于 2024-9-23 16:23 編輯 Malogic FPGA + USB2.0 PHY CY7C68000或USB3300 實現(xiàn)高速
    發(fā)表于 09-02 18:01