李 軍,何衛國
(成都三零嘉微電子有限公司,四川 成都 610041)
近年來,信息安全的重要性日益突出,要求安全系統具有靈活的自適應能力和柔性的安全服務提供能力[1]。在此背景下,成都三零嘉微電子有限公司自主研發了一款面向對稱密碼可編程實現的對稱密碼引擎SCE(Symmetric Cipher Engine)。SCE采用超長指令字結構(VeryLong Instruction Word,VLIW),適用于分組密碼算法、序列密碼算法和雜湊密碼算法等應用。通過研究基于SCE的SM4分組密碼算法的不同實現方案,探究基于SCE提高對稱密碼算法加解密性能的相關思路。
SM4分組密碼算法[2]是我國第一個公開的商密分組密碼算法,分組長度為128 bit,密鑰長度為128 bit。加密算法與密鑰擴展算法都采用32輪非線性迭代結構。解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。SM4分組密碼算法的加密流程,如圖1所示。

圖1 SM4分組密碼算法加密流程
圖1中,τ變換由4個并行的S盒構成。設輸入為輸出則有:

L變換是一個線性變換,設輸入輸出則有:

rki(i=0,1,…,31)為輪密鑰,長度為32 bit。
可編程對稱密碼引擎SCE作為一款面向對稱密碼應用的協處理器,結構如圖2所示,并具有以下特點。
(1)采用超長指令字結構,處理器中并列放置4個短功能單元SFU(Short Function Unit,執行32 bit運算)和1個長功能單元LFU(Long Function Unit,執行128 bit運算),每個周期可以并行執行4條短功能指令SINS(Short Instruction)或者1條長功能指令LINS(Long Instruction);
(2)片內集成了大規模的通用寄存器堆;
(3)包含了大量面向對稱密碼算法的專用指令,包括布爾函數指令、移位指令、模加/減指令、模乘指令、有限域乘法指令、查找表指令以及置換指令等;
(4)密碼運算指令和控制指令并行執行;
(5)片內集成有專門存儲密鑰參數的存儲器,通過數據傳輸指令訪問。

圖2 可編程對稱密碼引擎SCE結構
基于可編程對稱密碼引擎SCE,執行密碼算法的流程如下:
(1)基于自定義的SCE指令集編程實現算法;
(2)將算法代碼編譯為二進制碼;
(3)通過算法程序加載命令,將該二進制碼輸入引擎;
(4)通過密鑰參數加載命令,將相關的主密鑰和參數輸入引擎;
(5)通過算法啟動命令啟動算法;
(6)輸入待處理數據;
(7)讀出加解密結果。
根據如圖2所示的SM4分組密碼算法加密輪函數結構和SCE提供的密碼運算資源,可用布爾函數指令、查表指令以及布爾函數指令,分別實現查表前的異或運算、查表運算、L變換以及與Xi的異或。此外,還需保證輪函數更新與輪函數入口地址的一致性。例如,第i輪輪函數運算完成后,Xi需被替換為Xi+1,Xi+1需被替換為Xi+2,Xi+2需被替換為 Xi+3,Xi+4需被替換為 Xi+4,i=0,1,…,31。基于以上兩點考慮,SM4分組密碼算法的ECB加密模式實現流程,如表1所示。根據表1,整個加密過程合計2+3×32+1=99個時鐘周期,SCE工作頻率為100 MHz,加密速率為129.3 Mb/s。

表1 SM4密碼算法ECB加密模式常規實現指令流程
由SM4分組密碼算法的常規實現方式可知,它的輪運算第一個周期和第三個周期都是異或運算,而SCE在一個時鐘周期內可實現12個操作數的異或運算,因此可以考慮將輪尾的L變換與下一輪輪首的異或運算合并在一個周期完成。經過優化后的算法實現方式,如表2所示。根據表2,整個加密過程共消耗了2+8×8+2=68個時鐘周期,SCE工作頻率為100 MHz,加密速率為188.2 Mb/s,加密性能比常規實現方式提升了45.59%。

表2 SM4密碼算法ECB加密模式高速實現指令流程

序號 簇3 簇2 簇1 簇0 控制簇X4i+5⊕X4i+6 10 X4i+5更新U并異或簇1的結果即X4i+5⊕X4i+6⊕X4i+7記為A更新V H⊕(H>>>2)⊕(H>>>10)并異或簇0的結果,得到X4i+7更新S(H>>>18)⊕X4i+3⊕(H>>>24)如果計數器cnt0≤7,跳轉至指令3 11 X35 X35⊕A⊕X33實際得到X34 X33——跳轉到指令1加載下一個分組注:1.i表示輪函數的輪數,初始值為0,每循環執行一次,i=i+1;2.指令3~指令10為四輪加密輪結構;3.指令2中,記簇3、簇2、簇1和簇0運算結果的存儲寄存器分別為U、V、S和T,為四輪加密輪結構的入口寄存器。12 輸出128比特加密結果X35、X34、X33和X32
本文通過將SM4分組密碼算法加密輪結構首尾的異或運算合并為一次異或運算,并四輪加密作為一個整體進行處理,使SM4分組密碼算法在SCE上的加密性能提高了45.59%。后續將研究其他密碼算法在SCE上的高速實現,一方面為SCE的使用者提供算法高速實現的思路,另一方面為SCE今后的改進指出方向。
[1] 肖瑋,陳性元,包義保.可重構信息安全系統研究綜述[J].電子學報,2017(05):1240-1248.XIAO Wei,CHEN Xing-yuan,BAO Yi-bao.Review on the Research of Reconfigurable Information Security System[J].Acta Electronica Sinica,2017(05):1240-1248.
[1] 國家密碼管理局.GM/T 0002-2012 SM4分組密碼算法[S].2012.State Cryptography Administration.GM/T 0002-2012 SM4 Block Cipher Algorithm[S].2012.