專利名稱:Aes加密算法中列混淆過程指令優(yōu)化方法及其指令集處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及AES的加解密技術(shù),尤其涉及AES加密算法中列混淆過程指令優(yōu)化方 法及其指令集處理器。
背景技術(shù):
AES是The Advanced Encryption Mandard (高級加密標(biāo)準(zhǔn))的簡稱,是美國國家 標(biāo)準(zhǔn)與技術(shù)研究所(NIST)公布的一種用于加密電子數(shù)據(jù)的規(guī)范,其被廣泛地討論和認(rèn)可, 成為全球信息安全領(lǐng)域中應(yīng)用最為廣泛的一種分組密碼算法。AES算法采用對稱分組密碼 體制,密鑰長度可以分別為1 位、192位、256位,而分組長度固定為1 位。AES加密過程以輪為單位對原文進行加密,而在每一輪中主要包括了以下四個過 程(1)字節(jié)替換(SubBytes),該過程根據(jù)生成的Sbox進行查表,將原文替換成表中對應(yīng)的 字符;( 行位移(ShiftRows),它將數(shù)據(jù)矩陣的行按照不同的偏移量進行循環(huán)移位,而偏 移量可以有不同的選擇;C3)列混淆(MixColumns),通過左乘矩陣運算對數(shù)據(jù)矩陣進行列 變化,而且采用GFQ8)域內(nèi)乘法;(4)密鑰加層運算(AddRoimdKey),對數(shù)據(jù)矩陣進行密鑰 相加操作。AES加密算法整體上使用了相當(dāng)簡單明了的代替和置換技術(shù)來進行加密,但是除 了第三步列混淆過程以外。列混淆過程采用了 GFQ8)域內(nèi)乘法和加法,域內(nèi)的加法比較簡 單,就是異或操作O(OR),但域內(nèi)的乘法運算過程比較繁瑣而大部分域內(nèi)乘法都采用多項式 乘法來實現(xiàn)。在GFQ8)上的任意一個元素bAb+Ab^b。對應(yīng)的多項式f(x) = b7x7+b6x6 +b5X5+b4X4+b3X3+b2X2+blX+b0,與 X 相乘,有如下結(jié)論
廣,、Ibf-X1 + Lx6 + b,x5 + Lx4 + Lx3 + hx2 + Lx^b7= O
XX J(X)= <即對應(yīng)的域內(nèi)乘法為A= 00000010B = b7b6b5b4b3b2b1b0,則有
A><B = 1^! 0若 b7 = O
χ ~ [ (b6b5b4b3b2bJy0O)十(00011011) 若1^7 = 1其中b7等于1表明相乘后的結(jié)果將超過域的范圍,因此相乘后的結(jié)果需要與Oxlb 進行異或。如果乘以一個高于一次的多項式,可以重復(fù)使用上式,最終的結(jié)果采用多個中間 結(jié)果相加(域內(nèi)的加法用異或?qū)崿F(xiàn))來獲得。由于列混淆的復(fù)雜性,它影響了 AES加密算法的整體速度,因此目前存在多種對 列混淆變化的優(yōu)化技術(shù),主要集中于3方面第一種方法是根據(jù)域內(nèi)乘法的性質(zhì)將乘法進行拆分,使用之前計算的結(jié)果進行簡 單相加組合,有效的避免了一些域內(nèi)乘法的計算,以此來提高了算法的執(zhí)行效率。第二種方法是直接采用硬件實現(xiàn)列混淆過程的方法進行加速;
第三種方法是對列混淆過程進行指令集的擴展優(yōu)化,設(shè)計加速其運行的指令集。第一種方法實際上是對算法本身進行優(yōu)化,但是存在優(yōu)化瓶頸,加速效果有限;第 二種采用硬件加速的方法,雖然在加速效果上比較明顯,但是這種優(yōu)化方法可擴展性較弱, 占的硬件資源相對較多,而且與程序中的其它模塊結(jié)合相對較難;第三種方法通過對指令 集擴展優(yōu)化的設(shè)計方法,不僅減少了執(zhí)行代碼空間,提高了算法執(zhí)行速度,而且在設(shè)計上 易于實現(xiàn),靈活性也比較強,對硬件資源的要求也比第一種方法要小很多,適合于小規(guī)模電 路。由于這種優(yōu)化技術(shù)的良好性能,它已經(jīng)被應(yīng)用到了多種加密算法的加速優(yōu)化中。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種針對AES加密算法中列混淆過程指令優(yōu)化方法及其 指令集處理器。本發(fā)明采用了 3條專門用于加速優(yōu)化AES加密算法中的列混淆過程的擴展 指令,并且設(shè)計了一款與新指令集相對應(yīng)的專用指令處理器模型-MASIP。通過與廣泛使用 的ARM處理器對比發(fā)現(xiàn),經(jīng)過指令擴展優(yōu)化后,AES加密算法中的列混淆過程在本發(fā)明設(shè)計 的MASIP處理器中僅占用M8bytes的代碼存儲空間,比在ARM處理器中減少了 48. 6% ;執(zhí) 行運算周期也由原來的3775個時鐘周期縮減到2019個時鐘周期,執(zhí)行效率比ARM處理器 提升了 46. 6% ο為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案一種AES加密算法中列混淆指令優(yōu)化方法,在滿足不改變指令操作碼長度、指令 位數(shù)以及不影響處理器運行速度的前提下,它的步驟為1)在執(zhí)行AES加密/解密算法列混淆運算時,矩陣相乘操作過程中需要多次定位 矩陣中數(shù)據(jù)的位置,即取出matrix[i][j]位置的數(shù)據(jù)。在實際內(nèi)存中矩陣的數(shù)據(jù)是線性 存儲的,因此在傳統(tǒng)的ARM處理器中,需要通過根據(jù)i和j計算出實際內(nèi)存中數(shù)據(jù)的偏移 位置,在基地址matrix的基礎(chǔ)上根據(jù)偏移位置查找數(shù)據(jù),因此完成該功能需要6條匯編語 句,因此需要6個時鐘周期。為了加速該過程,我們設(shè)計并采用了指令matrixp0s<dest> = <srcl>, <src2>, <src3>, <src4>0該指令的功能是對基地址存放在通用寄存器srcl的矩陣 進行取位操作,src2和src3指示目標(biāo)數(shù)據(jù)所在的行和列,而src4指示矩陣的總行數(shù)(列 數(shù))。取出的數(shù)據(jù)將存放在dest表示的通用寄存器中。以上過程將在一個時鐘周期內(nèi)完成, 因此比傳統(tǒng)處理器的處理速度提高了 6倍,從而對列混淆過程中的域內(nèi)乘法運算進行了加 速。2)在進行矩陣相乘時,新矩陣第i行第j列的元素等于左矩陣的第i行的所有元 素與右矩陣第j列的所有元素相乘后相加所得。在AES加密算法中,分組的長度固定為1 位,而在列混淆過程中所有的矩陣都是4*4的。因此列混淆過程中的矩陣相乘,需要經(jīng)常用 到四元異或操作來獲得變化后矩陣的元素。在傳統(tǒng)的ARM處理器中,沒有專門針對該過程 的指令,而完成該四元操作需要3條匯編語言,因此需要3個時鐘周期。為了加速以上過程, 設(shè)計并采用了新指令xor4<dest> = <srcl>, <src2>, <src3>, <src4>。該指令的功能是將 srcl到src4所表示的通用寄存器中的內(nèi)容進行異或操作,結(jié)果保存在dest所表示的通用 寄存器中。以上將在一個時鐘周期內(nèi)完成,因此比傳統(tǒng)處理器的處理速度提高了 3倍,從而 對列混淆過程中的域內(nèi)乘法運算進行了加速。3)矩陣相乘采用域內(nèi)相乘法,即采用多項式乘法,在具體實現(xiàn)多項式乘法時,一般
5都采用異或后移位的基本操作。因此在列混淆過程中,將大量重復(fù)以上過程。為了加速以 上過程,設(shè)計并采用了新指令xor_move<srcl>,<src2>, <src3>, <src4>, <src0>。該指令的 功能是判斷srcl與src2相與的結(jié)果,如果為1,則對src3和src4進行異或,并將結(jié)果保存 在src3中;如果為0,則不執(zhí)行異或操作;在執(zhí)行以上操作的同時,指令并行完成對srcO的 移位操作。因此以上過程將在一個時鐘周期內(nèi)完成,而在傳統(tǒng)的ARM處理器中,完成以上功 能需要5條匯編語言,因此處理速度提高了 5倍,從對列混淆過程中的域內(nèi)乘法運算進行了 加速。通過上述三條擴展指令的運行,加速AES加密算法中的的列混淆過程。一種根據(jù)擴展指令集設(shè)計的指令集處理器模型,它在硬件邏輯上實現(xiàn)了上述 擴展指令,因此能夠用于AES加密算法中列混淆過程的加速。處理器模型主要由數(shù)據(jù) 存儲器、代碼存儲器、寄存器堆和流水線四部分組成;其中,數(shù)據(jù)存儲器地址空間定義在 0x0000-0x7FFF范圍內(nèi),大小32K ;代碼存儲器地址空間定義在0x8000_0xFFFF范圍內(nèi),大 小為32Kbytes ;寄存器堆主要由32個通用寄存器、1個取指寄存器、1個堆棧指針寄存器和 1個鏈接寄存器組成;流水線采用三級流水線取指流水線、譯碼流水線和執(zhí)行流水線;流 水線控制器對跳轉(zhuǎn)指令譯碼部件進行控制,跳轉(zhuǎn)指令只需要將跳轉(zhuǎn)地址存儲在取指寄存器 中,不需要經(jīng)過執(zhí)行部件,然后接著對流水線的緩存部分進行刷新,防止執(zhí)行部件對跳轉(zhuǎn)指 令進行執(zhí)行;在處理器中除了通用指令譯碼部件和邏輯算術(shù)指令執(zhí)行部件外,還添加了針 對列混淆過程專用指令的列混淆擴展指令譯碼部件和列混淆擴展指令執(zhí)行部件,來對擴展 的指令進行專門的譯碼和執(zhí)行。在列混淆擴展指令執(zhí)行部件中,主要包括了 3條新擴展指 令的執(zhí)行部件。所述擴展指令matrixpos執(zhí)行部件包括1個乘法器、1個加法器、1個多路選擇器 和1個數(shù)據(jù)存儲器,部件的執(zhí)行末端是整個處理器共用的通用寄存器堆。乘法器輸入端接 受立即數(shù)i和n,而輸出結(jié)果則是i與η的乘積;該乘積結(jié)果將作為加法器的輸入,加法器 的另外兩個輸入為通用寄存器rl和立即數(shù)j,而它的輸出則是三個輸入的和,即目標(biāo)元素 在內(nèi)存中的地址;該地址將被作為數(shù)據(jù)存儲器的輸入,而數(shù)據(jù)存儲器的輸出則是目標(biāo)元素 的值;控制信號matrixpotexe通過多路選擇器I來控制地址選擇;如果控制信號是1,則 多路選擇器I將目的通用寄存器r2的32位地址傳遞給通用寄存器堆,從而將數(shù)據(jù)存儲器 的輸出結(jié)果賦給r2 ;如果控制信號是0,則多路選擇器I將5位0傳遞給寄存器堆,即傳遞 空地址,而處理器判斷是空地址后將不進行賦值操作。所述擴展指令Xor4執(zhí)行部件包括1個異或電路組和1個多路選擇器,而部件的執(zhí) 行末端是通用寄存器堆。異或電路組由一系列異或邏輯門組成,它輸入端接收通用寄存器 r2、r3、r4、r5的數(shù)據(jù),輸出結(jié)果為4元異或后的值;控制信號XOr4_eXe控制多路選擇器II, 同時多路選擇器II接受5位的0和通用寄存器rl的地址,來控制地址選擇;當(dāng)控制信號為 1時,多路選擇器II將rl的地址傳送給寄存器堆,從而將異或電路組的輸出結(jié)果賦給rl ; 如果控制信號為0時,多路選擇器II將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判 斷是空地址后將不進行賦值操作。所述擴展指令xorjiiove執(zhí)行部件包括2個與門、1個或門、1個異或邏輯門、2個多 路選擇器以及1個移位器,而部件的執(zhí)行末端是通用寄存器堆。與門I輸入端接受通用寄 存器rl與r2的,而它的輸出是rl和r2相與后的一個32位數(shù)值;或門完成的功能是對與
6門I的輸出,即32位數(shù)值進行逐位相或,而產(chǎn)生的輸出是一個1位的數(shù)值;該輸出將與控制 信號XOr_mOVe_eXe —起作為與門II的輸入,而與門II的輸出將作為多路選擇器III的輸 入,來控制地址選擇;如果與門II的輸出是1,則多路選擇器III將通用寄存器r3的地址 傳遞給寄存器堆,從而將通用寄存器r3和r4通過異或邏輯門的輸出結(jié)果賦給r3 ;如果與 門II的輸出是0,則多路選擇器III將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判 斷是空地址后將不進行賦值操作。與此同時,控制信號XOr_mOVe_eXe通過多路選擇器IV 來控制移位操作的執(zhí)行,即如果控制信號為1,則將移位的結(jié)果賦給r0,否則不進行賦值操 作。以上的異或和移位操作將并發(fā)執(zhí)行。本發(fā)明通過對AES算法中列混淆過程進行分析,在滿足不改變指令操作碼長度、 指令位數(shù)以及不影響處理器運行速度的前提下,對AES加密算法中的列混淆過程進行了指 令擴展優(yōu)化,共設(shè)計了 3條擴展指令用于加速AES加密算法中的列混淆過程,具體設(shè)計過程 如下1.在執(zhí)行AES加密/解密算法列混淆運算時,矩陣相乘操作過程中需要多次定位 矩陣中數(shù)據(jù)的位置,即取出matrix[i] [j]位置的數(shù)據(jù)。在實際內(nèi)存中矩陣的數(shù)據(jù)是線性存 儲的,因此在傳統(tǒng)的ARM處理器中,需要通過根據(jù)i和j計算出實際內(nèi)存中數(shù)據(jù)的偏移位 置,在基地址matrix的基礎(chǔ)上根據(jù)偏移位置查找數(shù)據(jù)。該步驟對應(yīng)的執(zhí)行語句為χ = matrix [i] [j];而對應(yīng)的ARM編譯器匯編語言為6條語句move rl, matrixmove r2, imul r2 = r2,ηadd r2 = r2, jadd r2 = r2, rlload rl = r2上述匯編語言的含義是先將矩陣matrix的基址存入寄存器rl中,然后根據(jù)公式 i*n+j確定元素matrix[i] [j]]在內(nèi)存中的位置,最后將該地址對應(yīng)的數(shù)據(jù)存入目標(biāo)通用 寄存器rl中。根據(jù)上述匯編語言的功能,設(shè)計了一條新的指令matrixpos,能夠在一個時鐘周期 內(nèi)完成6條語句所完成的功能。新指令matrixpos<dest> = <srcl>,<src2>,<src3>,<src4> 一共有5個操作碼,其中dest和srcl是通用寄存器類型,分別對應(yīng)著存放目標(biāo)元素的目的 通用寄存器和存放矩陣基址的通用寄存器,而src2、src3以及src4是立即數(shù)類型,分別對 應(yīng)著目標(biāo)元素所在行、目標(biāo)元素所在列以及矩陣的階數(shù)。指令的具體格式如表1所示表 Imatrixpos 指令格式
權(quán)利要求
1.一種AES加密算法中列混淆過程指令優(yōu)化方法,其特征是,在滿足不改變指令操作 碼長度、指令位數(shù)以及不影響處理器運行速度的前提下,它的步驟為1)在執(zhí)行AES加密/解密算法列混淆運算時,矩陣相乘操作過程中采用多次定位矩 陣中數(shù)據(jù)的位置,即取出matrix[i] [j]位置的數(shù)據(jù);運算時采用指令matrixpoKdest〉= <srcl>, <src2>, <src3>, <src4>,該指令對基地址存放在通用寄存器srcl的矩陣進行取位 操作,src2和src3指示目標(biāo)數(shù)據(jù)所在的行和列,而src4指示矩陣的總行數(shù)或列數(shù),取出的 數(shù)據(jù)將存放在dest表示的通用寄存器中,以上過程在一個時鐘周期內(nèi)完成,從而對列混淆 過程中的矩陣取位操作進行了加速;2)在進行矩陣相乘時,新矩陣第i行第j列的元素等于左矩陣的第i行的所有元素 與右矩陣第j列的所有元素相乘后相加所得,在AES加密算法中,分組的長度固定為1 位,而在列混淆過程中所有的矩陣都是4*4的,因此列混淆過程中的矩陣相乘,需要經(jīng)常用 到四元異或操作來獲得變化后矩陣的元素,為此采用指令xor4<dest> = <srcl>, <src2>, <src3>, <src4>,該指令將srcl到src4所表示的通用寄存器中的內(nèi)容進行異或操作,結(jié)果 保存在dest所表示的通用寄存器中,以上在一個時鐘周期內(nèi)完成,從而對列混淆過程中的 域內(nèi)乘法運算進行了加速;3)矩陣相乘采用域內(nèi)相乘法,即采用多項式乘法,在具體實現(xiàn)多項式乘法時,一般都采 用異或后移位的基本操作;為了加速該過程,采用指令xor_mOVe<Srcl>,<src2>, <src3>, <src4>,<src0>,該指令判斷srcl與src2相與的結(jié)果,如果為1,則對src3和src4進行異 或,并將結(jié)果保存在src3中;如果為0,則不執(zhí)行異或操作;在執(zhí)行以上操作的同時,指令并 行完成對srcO的移位操作;以上過程在一個時鐘周期內(nèi)完成,從對列混淆過程中的域內(nèi)乘 法運算進行了加速;通過上述三條擴展指令的運行,加速列混淆過程。
2.一種用于權(quán)利要求1所述的AES加密算法中列混淆過程指令優(yōu)化方法的指令集處 理器,其特征是,它主要由數(shù)據(jù)存儲器(1)、代碼存儲器(3)、寄存器堆(2)和流水線四 部分組成;數(shù)據(jù)存儲器(1)地址空間定義在0x0000-0x7FFF范圍內(nèi),大小32K ;代碼存儲器 (3)地址空間定義在0x8000-0xFFFF范圍內(nèi),大小為32Kbytes ;寄存器堆O)由32個通用 寄存器GPR
、1個取指寄存器FPR、1個堆棧指針寄存器SI3R和1個鏈接寄存器LR 組成;流水線(4)采用三級流水線取指流水線(5)、譯碼流水線(6)和執(zhí)行流水線(7);流 水線控制器(14)對跳轉(zhuǎn)指令進行控制,跳轉(zhuǎn)指令只需要將跳轉(zhuǎn)地址存儲在取指寄存器FPR 中,不需要經(jīng)過執(zhí)行部件,然后接著對流水線的緩存部分進行刷新,防止執(zhí)行部件對跳轉(zhuǎn)指 令進行執(zhí)行;處理器除通用指令譯碼部件(9)和讀寫指令執(zhí)行部件(11)、邏輯算術(shù)指令執(zhí) 行部件(1 外,還設(shè)有列混淆過程專用指令的列混淆擴展指令譯碼部件(10)和列混淆擴 展指令執(zhí)行部件(13),來對擴展的指令進行專門的譯碼和執(zhí)行;在列混淆擴展指令執(zhí)行部 件(1 中,設(shè)有擴展指令的執(zhí)行部件。
3.如權(quán)利要求2所述的用于AES加密算法中列混淆過程指令優(yōu)化方法的指令集處理 器,其特征是,所述擴展指令matrixpos執(zhí)行部件包括1個乘法器(17)、1個加法器(18)、1 個多路選擇器1(19)和1個數(shù)據(jù)存儲器(20),部件的執(zhí)行末端是整個處理器共用的通用寄 存器堆;乘法器(17)輸入端接受立即數(shù)i和n,而輸出結(jié)果則是i與η的乘積;該乘積 結(jié)果將作為加法器(18)的輸入,加法器(18)的另外兩個輸入為通用寄存器rl和立即數(shù)j,而它的輸出則是三個輸入的和,即目標(biāo)元素在內(nèi)存中的地址;該地址將被作為數(shù)據(jù)存儲器 (20)的輸入,而數(shù)據(jù)存儲器00)的輸出則是目標(biāo)元素的值;控制信號matrixposjxe通過 多路選擇器I (19)來控制地址選擇;如果控制信號是1,則多路選擇器I (19)將rl的32位 地址傳遞給通用寄存器堆,從而將數(shù)據(jù)存儲器的輸出結(jié)果賦給rl ;如果控制信號是0,則多 路選擇器I (19)將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不進 行賦值操作。
4.如權(quán)利要求2所述的用于AES加密算法中列混淆過程指令優(yōu)化方法的指令集處理 器,其特征是,所述擴展指令xor4執(zhí)行部件包括1個異或電路組0 和1個多路選擇器 11 ,而部件的執(zhí)行末端是通用寄存器堆;異或電路組0 由一系列異或邏輯門組 成,它輸入端接收通用寄存器r2、r3、r4、r5的數(shù)據(jù),輸出結(jié)果為4元異或后的值;控制信 號x0r4_exe控制多路選擇器II (23),同時多路選擇器II (23)接受5位的O和通用寄存器 rl的地址,來控制地址選擇;當(dāng)控制信號為1時,多路選擇器11 將rl的地址傳送給 寄存器堆,從而將異或電路組0 的輸出結(jié)果賦給rl ;如果控制信號為O時,多路選擇器 II (23)將5位O傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不進行賦值操 作。
5.如權(quán)利要求2所述的用于AES加密算法中列混淆過程指令優(yōu)化方法的指令集處理 器,其特征是,所述擴展指令xorjiiove執(zhí)行部件包括2個與門、1個或門0 、1個異或邏輯 門07)、2個多路選擇器以及1個移位器(30),而部件的執(zhí)行末端是通用寄存器堆;與 門I 04)輸入端接受通用寄存器rl與r2的,而它的輸出是rl和r2相與后的一個32位數(shù) 值;或門0 完成的功能是對與門K24)的輸出,即32位數(shù)值進行逐位相或,而產(chǎn)生的輸 出是一個1位的數(shù)值;該輸出將與控制信號xor_mOVe_exe—起作為與門IK26)的輸入,而 與門IK26)的輸出將作為多路選擇器111( )的輸入,來控制地址選擇;如果與門II 06) 的輸出是1,則多路選擇器111 (28)將通用寄存器r3的地址傳遞給寄存器堆,從而將通用寄 存器r3和r4通過異或邏輯門Q7)的輸出結(jié)果賦給r3 ;如果與門II Q6)的輸出是0,則多 路選擇器III (28)將5位O傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不 進行賦值操作;與此同時,控制信號Xor_mOVe_exe通過多路選擇器IVQ9)來控制移位操作 的執(zhí)行,即如果控制信號為1,則將移位器(30)的結(jié)果賦給rO,否則不進行賦值操作;以上 的異或和移位操作將并發(fā)執(zhí)行。
全文摘要
本發(fā)明涉及一種AES加密算法中列混淆過程指令優(yōu)化方法及其指令集處理器。本發(fā)明為了加速AES算法中列混淆過程,設(shè)計了三條新擴展指令(1)matrixpos=,,,,用來加速列混淆過程中的對矩陣取位操作;(2)xor4=,,,,用來加速列混淆過程中的4元異或操作;(3)xor_move,,,,,用來加速列混淆過程中的域內(nèi)乘法操作。以上3條指令都將在一個時鐘周期內(nèi)完成,而在傳統(tǒng)ARM處理器中,則分別需要多個時鐘周期,因此新指令起到了加速作用。本發(fā)明還根據(jù)上述新擴展指令設(shè)計了一款與新指令集相對應(yīng)的專用指令處理器模型——MASIP。該處理器模型在硬件邏輯上實現(xiàn)了上述擴展指令,因此是一款專門針對于AES加密算法中列混淆過程加速的處理器模型。
文檔編號G06F9/30GK102081513SQ201110024639
公開日2011年6月1日 申請日期2011年1月24日 優(yōu)先權(quán)日2011年1月24日
發(fā)明者李新, 李沂濱, 賈智平, 陳仁海, 陳健 申請人:山東大學(xué)