國密sm4算法的可擴展高吞吐率的實現方法及裝置制造方法
【專利摘要】本發明提供一種國密SM4算法的可擴展高吞吐率的實現方法及裝置,涉及信息安全技術和集成電路設計領域。該方法包含步驟:S1、處理器將待處理的命令信息、數據信息、密鑰信息按預定義的格式封裝成數據包;S2、處理器啟動DMA,SM4模塊自動解析所述數據包;S3、SM4控制單元從所述命令FIFO讀取命令信息,啟動密鑰擴展單元,依據輸入數據FIFO發送的密鑰信息進行密鑰擴展,SM4控制單元依據分組工作模式字段信息啟動分組運算單元,對發送的數據信息進行加/解密運算;S4、將分組運算單元進行加/解密運算結果寫入輸出數據FIFO;DMA通過輸出接口從輸出數據FIFO讀取加/解密運算結果。本發明通過數據包、雙總線接口和并行處理技術,提高了國密SM4算法實現方法的吞吐率。
【專利說明】國密SM4算法的可擴展高吞吐率的實現方法及裝置
【技術領域】
[0001]本發明涉及信息安全技術和集成電路設計領域,具體涉及一種國密SM4算法的可擴展高吞吐率的實現方法及裝置。
【背景技術】
[0002]隨著信息技術的發展,政府、企業等對安全通訊以及存儲數據的安全要求越來越高。國密算法(如SM4等)正被廣泛地應用與經濟、軍事、行政等各部門,保護信息的安全性。SM4國密算法是我國公開發布的第一個商用密碼分組算法,是一種對稱的分組密碼體制,其密鑰長度和分組長度都固定為128位。
[0003]目前市場上針對安全移動存儲、安全通訊的加解密設備主要采用軟件實現。這些方法安全度低,容易被攻破,非常不適合金融、涉密機構等安全要求高的用戶使用。而采用硬件實現的設備,雖然安全度提高了,但是其速度一般比較低,遠遠不能滿足用戶的高速度要求。
[0004]現有國密SM4算法的實現,通常采用“串行“工作方式,CPU先把數據寫入SM4模塊,啟動SM4運算,CPU等待SM4運算完成中斷,CPU再把結果讀走;然后重復上述循環。也就是說,下一次SM4運算,必須等候上次完成。這樣,SM4模塊常常因為等候數據的輸入輸出而空閑,從而導致吞吐率非常低。并且,分組運算前都進行密鑰擴展(不管密鑰更新與否),這也降低了吞吐量。可見,為了滿足相關領域大批量高速實時加解密的市場要求,國密SM4算法的高速實現顯得十分重要。
【發明內容】
[0005](一)解決的技術問題
[0006]針對現有技術的不足,本發明提供一種國密SM4算法的可擴展高吞吐率的實現方法及裝置,使得解決了國密SM4算法的吞吐率低的問題。
[0007](二)技術方案
[0008]為實現以上目的,本發明通過以下技術方案予以實現:
[0009]一種國密SM4算法的可擴展高吞吐率的實現方法,其特征在于,包含以下步驟:
[0010]S1、處理器將待處理的命令信息、數據信息、密鑰信息按預定義的格式封裝成數據包;
[0011]S2、處理器啟動DMA,DMA將所述數據包通過輸入接口寫入SM4模塊,SM4模塊自動解析所述數據包,將所述數據包中的命令信息存入命令FIFO,將所述數據包中的數據信息、密鑰信息存入輸入數據FIFO ;
[0012]S3、SM4控制單元從所述命令FIFO讀取命令信息,根據所讀取的命令信息中的更新密鑰字段key_updt信息,啟動密鑰擴展單元,所述密鑰擴展單元依據所述輸入數據FIFO所發送的密鑰信息進行密鑰擴展,密鑰擴展完成后,所述SM4控制單元依據所述分組工作模式字段blockjnode信息啟動分組運算單元,所述分組運算單元對所述輸入數據FIFO發送的數據信息進行加/解密運算;
[0013]S4、將所述分組運算單元進行加/解密運算結果寫入輸出數據FIFO ;所述DMA通過輸出接口從所述輸出數據FIFO讀取加/解密運算結果。
[0014]優選的,所述數據包的命令信息進一步包括承前字段is_cont信息,所述SM4控制單元依據該字段信息,直接啟動分組運算單元,對所述輸入數據FIFO所傳輸的數據信息在前一次數據包處理的基礎上進行加/解密運算。
[0015]優選的,當所述分組工作模式字段blockjnode信息為并行處理模式時,SM4控制單元自動分發相應分組到各分組運算單元,分組運算單元進行分組級別的并行運算;當所述分組工作模式字段blockjnode信息為串行處理模式時,SM4控制單元自動分發不同的數據包到不同的分組運算單元,分組運算單元進行數據包級別的并行運算。
[0016]本發明還提供了一種國密SM4算法的可擴展高吞吐率的裝置,包括:輸入接口、命令FIFO、輸入數據FIFO、SM4控制單元、密鑰擴展單元、分組運算單元、輸出數據FIFO、輸出接口,
[0017]其中,
[0018]所述輸入接口,處理器啟動DMA后,DMA將數據包通過輸入接口寫入SM4模塊;
[0019]所述命令FIF0,接收SM4模塊自動解析出數據包中的命令信息;
[0020]所述輸入數據FIF0,接收SM4模塊自動解析出數據包中的數據信息和密鑰信息;
[0021]所述SM4控制單元,從所述命令FIFO讀取命令信息,根據所讀取的命令信息中的更新密鑰字段key_updt信息,啟動密鑰擴展單元;
[0022]所述密鑰擴展單元,依據所述輸入數據FIFO所發送的密鑰信息進行密鑰擴展,密鑰擴展完成后,所述SM4控制單元依據所述分組工作模式字段blockjnode信息啟動分組運算單元,所述分組運算單元對所述輸入數據FIFO發送的數據信息進行加/解密運算;
[0023]所述輸出數據FIF0,接收所述分組運算單元處理完成的數據,并通過輸出接口將運算結果發送給所述DMA。
[0024]優選的,所述數據包的命令信息進一步包括承前字段is_cont信息,所述SM4控制單元依據該字段信息,直接啟動分組運算單元,對所述輸入數據FIFO所傳輸的數據信息在前一次數據包處理的基礎上進行加/解密運算。
[0025]優選的,當所述分組工作模式字段blockjnode信息為并行處理模式時,SM4控制單元自動分發相應分組到各分組運算單元,分組運算單元進行分組級別的并行運算;當所述分組工作模式字段blockjnode信息為串行處理模式時,SM4控制單元自動分發不同的數據包到不同的分組運算單元,分組運算單元進行數據包級別的并行運算。
[0026](三)有益效果
[0027]本發明提供了一種國密SM4算法的可擴展高吞吐率的實現方法及裝置,通過采用雙總線接口技術,DMA通過輸入接口將數據包傳輸給SM4模塊,SM4模塊的將數據包分解為命令信息、數據信息和密鑰信息,SM4控制單元接收命令信息后,對密鑰擴展單元和運算控制單元進行相應的控制,運算控制單元運算結束通過輸出接口再行傳輸給DMA。本發明通過數據包和雙總線接口技術能夠讓SM4模塊類似于數據流形式地進行工作,數據輸入和輸出相互不影響,從而減少了分組處理時間,提高了吞吐率。
[0028]本發明通過定義了數據包的格式,在SM4模塊中進行相應的分割,方便了 DMA模塊的操作,并且只有在密鑰更新時,才進行密鑰擴展,進而減少了不需要的密鑰擴展,以此減少了總的處理時間,從而提高了吞吐率。
[0029]本發明為了支持大數據的加/解密運算(例如,>1GB數據),將數據拆分多次運算,通過在命令信息中增加承前字段iS_cont信息,所述SM4控制單元依據該字段信息,在該字段為I時,繼續在前一次數據包處理的基礎上直接啟動分組運算單元對所述輸入數據FIFO所數傳的數據進行運算。
[0030]本發明通過選擇合適的分組運算單元數目,進行并行運算,使得本發明具有很有的靈活性和擴展性,能夠很好的ASIC/FPGA的面積開銷和時鐘頻率的關系。
【專利附圖】
【附圖說明】
[0031]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0032]圖1、為本發明實施例的一種提高國密SM4算法吞吐率的方法的流程示意圖;
[0033]圖2、為本發明實施例的一種提高國密SM4算法吞吐率的方法的流程原理圖;
[0034]圖3、為本發明實施例的運算控制單元并行運算的流程示意圖;
[0035]圖4、為本發明實施例的SM4系統示意圖。
【具體實施方式】
[0036]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0037]實施例1:
[0038]現行所采用的國密SM4算法,在處理大數據的時候,普遍存在吞吐率的瓶頸問題。
[0039]吞吐率通常是采用以下公式進行計算:
[0040]吞吐率TP=時鐘頻率f*分組運算單元數N*128/分組運算時間t ;
[0041]由上述公式可以看出,吞吐率TP的決定因素有時鐘頻率f、分組運算單元數N和分組運算時間t,通過對各要素的相應改變,就能夠提高吞吐率TP。
[0042]如表I所示為吞吐率TP的要素關系圖:
[0043]表I
[0044]
【權利要求】
1.一種國密SM4算法的可擴展高吞吐率的實現方法,其特征在于,包含以下步驟: 51、處理器將待處理的命令信息、數據信息、密鑰信息按預定義的格式封裝成數據包; 52、處理器啟動DMA,DMA將所述數據包通過輸入接口寫入SM4模塊,SM4模塊自動解析所述數據包,將所述數據包中的命令信息存入命令FIFO,將所述數據包中的數據信息、密鑰信息存入輸入數據FIFO ; 53、SM4控制單元從所述命令FIFO讀取命令信息,根據所讀取的命令信息中的更新密鑰字段key_updt信息,啟動密鑰擴展單元,所述密鑰擴展單元依據所述輸入數據FIFO所發送的密鑰信息進行密鑰擴展,密鑰擴展完成后,所述SM4控制單元依據所述分組工作模式字段blockjnode信息啟動分組運算單元,所述分組運算單元對所述輸入數據FIFO發送的數據信息進行加/解密運算; 54、將所述分組運算單元進行加/解密運算結果寫入輸出數據FIFO;所述DMA通過輸出接口從所述輸出數據FIFO讀取加/解密運算結果。
2.如權利要求1所述的方法,其特征在于,所述數據包的命令信息進一步包括承前字段iS_cont信息,所述SM4控制單元依據該字段信息,直接啟動分組運算單元,對所述輸入數據FIFO所傳輸的數據信息在前一次數據包處理的基礎上進行加/解密運算。
3.如權利要求1所述的方法,其特征在于,當所述分組工作模式字段blockjnode信息為并行處理模式時,SM4控制單元自動分發相應分組到各分組運算單元,分組運算單元進行分組級別的并行運算;當所述分組工作模式字段blockjnode信息為串行處理模式時,SM4控制單元自動分發不同的數據包到不同的分組運算單元,分組運算單元進行數據包級別的并行運算。
4.一種國密SM4算法的可擴展高吞吐率的裝置,其特征在于,包括:輸入接口、命令FIFO、輸入數據FIFO、SM4 控制單元、密鑰擴展單元、分組運算單元、輸出數據FIFO、輸出接n, 其中, 所述輸入接口,處理器啟動DMA后,DMA將數據包通過輸入接口寫入SM4模塊; 所述命令FIFO,接收SM4模塊自動解析出數據包中的命令信息; 所述輸入數據FIFO,接收SM4模塊自動解析出數據包中的數據信息和密鑰信息; 所述SM4控制單元,從所述命令FIFO讀取命令信息,根據所讀取的命令信息中的更新S鑰子段key_updt彳目息,啟動乾'鑰擴展單兀; 所述密鑰擴展單元,依據所述輸入數據FIFO所發送的密鑰信息進行密鑰擴展,密鑰擴展完成后,所述SM4控制單元依據所述分組工作模式字段blockjnode信息啟動分組運算單元,所述分組運算單元對所述輸入數據FIFO發送的數據信息進行加/解密運算; 所述輸出數據FIFO,接收所述分組運算單元處理完成的數據,并通過輸出接口將運算結果發送給所述DMA。
5.如權利要求4所述的裝置,其特征在于,所述數據包的命令信息進一步包括承前字段iS_cont信息,所述SM4控制單元依據該字段信息,直接啟動分組運算單元,對所述輸入數據FIFO所傳輸的數據信息在前一次數據包處理的基礎上進行加/解密運算。
6.如權利要求4所述的裝置,其特征在于,當所述分組工作模式字段blockjnode信息為并行處理模式時,SM4控制單元自動分發相應分組到各分組運算單元,分組運算單元進行分組級別的并行運算;當所述分組工作模式字段blockjnode信息為串行處理模式時,SM4控制單元自動分發不同的數據包到不同的分組運算單元,分組運算單元進行數據包級別的并行 運算。
【文檔編號】G06F21/72GK103679061SQ201310598463
【公開日】2014年3月26日 申請日期:2013年11月22日 優先權日:2013年11月22日
【發明者】冷祥綸, 俞偉, 盧鼎, 何勇 申請人:北京民芯科技有限公司