一種基于可編程門(mén)陣列芯片的sm4算法控制方法
【專(zhuān)利摘要】本發(fā)明涉及信息安全【技術(shù)領(lǐng)域】,特別涉及一種基于可編程門(mén)陣列芯片的SM4算法控制方法。本發(fā)明方法是通過(guò)現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)芯片的狀態(tài)機(jī)控制SM4分組密碼算法IP核實(shí)現(xiàn)的,采用了Mealy型狀態(tài)機(jī)作為SM4算法IP核的核心控制單元,對(duì)IP核進(jìn)行控制和操作,實(shí)現(xiàn)了對(duì)SM4算法的控制。由于其基于可編程門(mén)陣列芯片與SM4密碼算法IP核的硬件方式實(shí)現(xiàn)了SM4對(duì)稱(chēng)密碼算法,因此數(shù)據(jù)處理的速度更快,效率更高。
【專(zhuān)利說(shuō)明】—種基于可編程門(mén)陣列芯片的SM4算法控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息安全【技術(shù)領(lǐng)域】,特別涉及一種基于可編程門(mén)陣列芯片的SM4算法控制方法。
【背景技術(shù)】
[0002]SM4算法是國(guó)家密碼管理局批準(zhǔn)的對(duì)稱(chēng)密碼算法,主要應(yīng)用于無(wú)線局域網(wǎng)產(chǎn)品。該算法的分組長(zhǎng)度為128比特,密鑰長(zhǎng)度為128比特。加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu),解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
[0003]傳統(tǒng)的密碼算法的實(shí)現(xiàn)是通過(guò)在主機(jī)上運(yùn)行加密軟件實(shí)現(xiàn)的。這種方法除占用主機(jī)資源外,運(yùn)算速度較慢,安全性也較差。而硬件加密是通過(guò)專(zhuān)用加密芯片、FPGA (可編程門(mén)陣列)芯片或獨(dú)立的處理芯片等實(shí)現(xiàn)密碼運(yùn)算。相對(duì)于軟件加密,硬件加密具有加密速度快、占用計(jì)算機(jī)資源少、安全性高等優(yōu)點(diǎn)。
【發(fā)明內(nèi)容】
[0004]為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明實(shí)施例提供了一種基于可編程門(mén)陣列芯片的SM4算法控制方法,其基于FPGA芯片與SM4密碼算法IP核的硬件方式實(shí)現(xiàn)了 SM4對(duì)稱(chēng)密碼算法,因此數(shù)據(jù)處理的速度更快,效率更高。
[0005]本發(fā)明所采用的技術(shù)方案如下:
一種基于可編程門(mén)陣列芯片的SM4算法控制方法,是利用可編程門(mén)陣列芯片的狀態(tài)機(jī)對(duì)SM4對(duì)稱(chēng)密碼算法IP核進(jìn)行控制,所述的可編程門(mén)陣列芯片作為硬件控制單元,用于控制SM4算法IP核。
[0006]采用了算法IP軟核的方式實(shí)現(xiàn)了 SM4對(duì)稱(chēng)密碼算法。
[0007]采用了可編程門(mén)陣列芯片的硬件描述語(yǔ)言VHDL,設(shè)計(jì)出一種算法狀態(tài)機(jī),用于對(duì)SM4算法IP核進(jìn)行控制。
[0008]方法具體包括以下步驟:
A、對(duì)狀態(tài)機(jī)模塊進(jìn)行復(fù)位;
B、設(shè)置算法開(kāi)始信號(hào),啟動(dòng)狀態(tài)機(jī);
C、啟動(dòng)寫(xiě)密鑰操作;
D、向SM4算法IP核寫(xiě)入一個(gè)長(zhǎng)度為128bit的密鑰;
E、啟動(dòng)數(shù)據(jù)加密或解密操作;
F、向SM4算法IP核寫(xiě)入一個(gè)長(zhǎng)度為128bit的待運(yùn)算數(shù)據(jù)分組;
G、等待SM4算法IP核運(yùn)算完成;
H、狀態(tài)機(jī)判斷IP核是否把所有的數(shù)據(jù)分組都處理完成,若沒(méi)有處理完成所有的消息分組,轉(zhuǎn)到步驟F處,向IP核發(fā)送下一個(gè)數(shù)據(jù)分組;
1、當(dāng)所有的數(shù)據(jù)分組都運(yùn)算完成后,SM4算法IP核發(fā)送結(jié)束信號(hào),狀態(tài)機(jī)檢測(cè)到該信號(hào)后結(jié)束狀態(tài)機(jī)流程,至此完成了一筆數(shù)據(jù)的加密或解密過(guò)程。
[0009]在步驟D— I的操作過(guò)程中如果需要更換密鑰,則轉(zhuǎn)到步驟C。
[0010]本發(fā)明實(shí)施例提供的技術(shù)方案帶來(lái)的有益效果是:
本發(fā)明的方法主要用于對(duì)網(wǎng)絡(luò)、金融、電信等系統(tǒng)中重要數(shù)據(jù)的加密和解密,可滿(mǎn)足分組密碼應(yīng)用的安全需求,保障交易的安全。核心是利用了 FPGA和SM4對(duì)稱(chēng)密碼算法IP核,通過(guò)硬件描述語(yǔ)言VHDL設(shè)計(jì)出高效的狀態(tài)機(jī),從而使得數(shù)據(jù)的處理過(guò)程變的快速。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0011]圖1為本發(fā)明的FPGA芯片中狀態(tài)機(jī)模塊與SM4算法IP核的連接圖;
圖2為本發(fā)明的FPGA芯片的狀態(tài)機(jī)的控制流程圖。
【具體實(shí)施方式】
[0012]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0013]實(shí)施例一
如附圖1所示,是狀態(tài)機(jī)模塊與SM4算法IP核的連接圖,IP核的主要引腳說(shuō)明如下: 輸入引腳CLK:IP核的時(shí)鐘引腳。
[0014]輸入引腳nReset:1P核復(fù)位引腳,O:復(fù)位;1:正常工作。
[0015]輸入引腳start:算法開(kāi)始信號(hào),高電平有效。
[0016]輸入引腳Data_in[127..0]:128位數(shù)據(jù)輸入引腳。
[0017]輸入引腳ορ[1..0]:功能選擇標(biāo)志,ορ=0時(shí),選擇寫(xiě)入密鑰操作;ορ=1時(shí),選擇加密操作;ορ=2時(shí),選擇解密操作。
[0018]輸出引腳Data_out[127..0]: 128位運(yùn)算結(jié)果的輸出。
[0019]輸出引腳done:每個(gè)數(shù)據(jù)分組運(yùn)算完成時(shí)產(chǎn)生的完成標(biāo)志,高電平有效。
[0020]輸出引腳finish:所有數(shù)據(jù)分組都運(yùn)算完成后的算法結(jié)束標(biāo)志,高電平有效 附圖2是FPGA狀態(tài)機(jī)的控制流程圖,通過(guò)硬件描述語(yǔ)言VHDL實(shí)現(xiàn)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移
和控制功能,工作流程詳解如下:
1.對(duì)狀態(tài)機(jī)模塊進(jìn)行復(fù)位,nReset= ‘0’ ;
2.設(shè)置算法開(kāi)始信號(hào)sf_start= ‘I’,啟動(dòng)狀態(tài)機(jī);
3.設(shè)置op=0,啟動(dòng)寫(xiě)密鑰操作;
4.向SM4算法IP核寫(xiě)入一個(gè)長(zhǎng)度為128bit的密鑰;
5.設(shè)置op=l或2,啟動(dòng)數(shù)據(jù)加密或解密操作;
6.向SM4算法IP核寫(xiě)入一個(gè)長(zhǎng)度為128bit的待運(yùn)算數(shù)據(jù)分組;
7.等待SM4算法IP核運(yùn)算完成,使done信號(hào)變?yōu)楦唠娖剑?br>
8.狀態(tài)機(jī)檢測(cè)到done= ‘I’,并判斷IP核是否把所有的數(shù)據(jù)分組都處理完成,若沒(méi)有處理完成所有的消息分組,轉(zhuǎn)到步驟6處,向IP核發(fā)送下一個(gè)數(shù)據(jù)分組;
9.當(dāng)所有的數(shù)據(jù)分組都運(yùn)算完成后,SM4算法IP核使finish信號(hào)變?yōu)楦唠娖?,狀態(tài)機(jī)檢測(cè)到該信號(hào)后結(jié)束狀態(tài)機(jī)流程,至此完成了一筆數(shù)據(jù)的加密或解密過(guò)程。在操作過(guò)程中如果需要更換密鑰,則轉(zhuǎn)到步驟3處。[0021 ] 以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于可編程門(mén)陣列芯片的SM4算法控制方法,是利用可編程門(mén)陣列芯片的狀態(tài)機(jī)對(duì)SM4對(duì)稱(chēng)密碼算法IP核進(jìn)行控制,所述的可編程門(mén)陣列芯片作為硬件控制單元,用于控制SM4算法IP核。
2.根據(jù)權(quán)利要求1所述的一種基于可編程門(mén)陣列芯片的SM4算法控制方法,其特征在于,所述的方法是采用了算法IP軟核的方式實(shí)現(xiàn)了 SM4對(duì)稱(chēng)密碼算法。
3.根據(jù)權(quán)利要求1所述的一種基于可編程門(mén)陣列芯片的SM4算法控制方法,其特征在于,所述的方法是采用了可編程門(mén)陣列芯片的硬件描述語(yǔ)言VHDL,設(shè)計(jì)出一種算法狀態(tài)機(jī),用于對(duì)SM4算法IP核進(jìn)行控制。
4.根據(jù)權(quán)利要求1-3中任意一條所述的一種基于可編程門(mén)陣列芯片的SM4算法控制方法,其特征在于,所述的方法具體包括以下步驟: A、對(duì)狀態(tài)機(jī)模塊進(jìn)行復(fù)位; B、設(shè)置算法開(kāi)始信號(hào),啟動(dòng)狀態(tài)機(jī); C、啟動(dòng)寫(xiě)密鑰操作; D、向SM4算法IP核寫(xiě)入一個(gè)長(zhǎng)度為128bit的密鑰; E、啟動(dòng)數(shù)據(jù)加密或解密操作; F、向SM4算法IP核寫(xiě)入一個(gè)長(zhǎng)度為128bit的待運(yùn)算數(shù)據(jù)分組; G、等待SM4算法IP核運(yùn)算完成; H、狀態(tài)機(jī)判斷IP核是否把所有的數(shù)據(jù)分組都處理完成,若沒(méi)有處理完成所有的消息分組,轉(zhuǎn)到步驟F處,向IP核發(fā)送下一個(gè)數(shù)據(jù)分組; 1、當(dāng)所有的數(shù)據(jù)分組都運(yùn)算完成后,SM4算法IP核發(fā)送結(jié)束信號(hào),狀態(tài)機(jī)檢測(cè)到該信號(hào)后結(jié)束狀態(tài)機(jī)流程,至此完成了一筆數(shù)據(jù)的加密或解密過(guò)程。
5.根據(jù)權(quán)利要求4所述的一種基于可編程門(mén)陣列芯片的SM4算法控制方法,其特征在于,在步驟D— I的操作過(guò)程中如果需要更換密鑰,則轉(zhuǎn)到步驟C。
【文檔編號(hào)】H04L29/06GK103780608SQ201410015540
【公開(kāi)日】2014年5月7日 申請(qǐng)日期:2014年1月14日 優(yōu)先權(quán)日:2014年1月14日
【發(fā)明者】蘇振宇, 于飛, 李前 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司