国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      針對aes對稱加密算法的指令優(yōu)化處理器的制作方法

      文檔序號:6447940閱讀:300來源:國知局
      專利名稱:針對aes對稱加密算法的指令優(yōu)化處理器的制作方法
      技術(shù)領(lǐng)域
      針對AES對稱加密算法的指令優(yōu)化處理器技術(shù)領(lǐng)域[0001]本實(shí)用新型涉及AES對稱加密算法的加解密領(lǐng)域,尤其涉及AES對稱加密算法的指令優(yōu)化處理器。
      背景技術(shù)
      [0002]AES算法匯聚了對數(shù)據(jù)加密的強(qiáng)安全性、高性能、高效率、易用和靈活等優(yōu)點(diǎn)。然而由于加密與解密過程占用較多的處理器資源,處理器的性能成為加密算法高效運(yùn)行的主要限制因素。雖然微處理器性能在不斷提升,但在許多領(lǐng)域中加密算法的執(zhí)行效率并不能符合所有的運(yùn)算設(shè)計需求,尤其是在計算資源有限的嵌入式環(huán)境下。由于嵌入式微處理器性能較低、運(yùn)算速度較慢,加密算法在該類微處理器中運(yùn)行的效率較低。如何提高加密算法在嵌入式環(huán)境下的執(zhí)行效率,保證數(shù)據(jù)高效安全傳輸成為國內(nèi)外研究的熱點(diǎn)問題。[0003]目前學(xué)術(shù)界存在三種提高密碼算法執(zhí)行效率的方式第一種是用純軟件方式優(yōu)化密碼算法的程序流程,使算法流程更加合理,運(yùn)行更加高效。Bertoni等人提出AES算法的優(yōu)化版本來加速該算法[1]在內(nèi)存受限的32位處理器上的執(zhí)行效率。隨著嵌入式環(huán)境下微處理器性能的不斷提高,這種優(yōu)化方式也相應(yīng)地提高了密碼算法的執(zhí)行效率,這種優(yōu)化方式雖然靈活,但其優(yōu)化空間非常狹隘,在同一類型的微處理器下優(yōu)化幅度最多達(dá)到21 %左右。此外純軟件優(yōu)化方式的實(shí)現(xiàn)需使用查找表,在數(shù)據(jù)的查找過程中,查找表容易受到基于 cache的側(cè)信道攻擊,這種攻擊方式致使加密算法運(yùn)行過程中易將對稱密鑰泄露給攻擊者; 第二種是用純硬件方式實(shí)現(xiàn)密碼算法,將底層程序語言中一條或若干條連續(xù)指令用專門的硬件電路實(shí)現(xiàn)?;谠搩?yōu)化方法,Kuo等人[2]提出基于專用集成電路ASIC(AppliCati0n Special Integrated Circuit)的方式來實(shí)現(xiàn)AES算法,該方法僅用10個周期即可完成 AES-U8算法,文章同時討論了執(zhí)行算法的芯片架構(gòu)和優(yōu)化設(shè)計。這種優(yōu)化方式可以快速實(shí)現(xiàn)密碼算法,但其可擴(kuò)展性較弱,占用的硬件資源較多,致使微處理器電路硬件成本大幅上升,且很難與其它運(yùn)算模塊相融合;第三種是采用指令集架構(gòu)(ISA)擴(kuò)展的方式對密碼算法進(jìn)行優(yōu)化。其面向特定的應(yīng)用對處理器指令進(jìn)行擴(kuò)展,采用硬件實(shí)現(xiàn)影響密碼算法性能的基本操作部件,并在指令集中添加相應(yīng)的指令,最終生成專用指令處理器(ASIP)?;谠搩?yōu)化方法,mi等人[3]介紹了一種快速靈活的加密處理器-協(xié)處理器,作者首先驗(yàn)證了協(xié)處理器作用于3DES算法上的優(yōu)質(zhì)效果,在保持靈活性的同時,也可以支持多種加密算法。Sim 等人[4]為高效實(shí)現(xiàn)基于細(xì)粒度隨機(jī)掩碼操作分解的AES算法定義了三種擴(kuò)展指令,并結(jié)合指令隨機(jī)調(diào)度方法給出了 AES算法完整的實(shí)現(xiàn)流程。該優(yōu)化方式融合了純軟件、硬件方式優(yōu)化的優(yōu)點(diǎn),既保留軟件實(shí)現(xiàn)的靈活性,又進(jìn)一步地提升系統(tǒng)性能,以增加較少的硬件資源為代價換取算法執(zhí)行效率的大幅提升和指令代碼占用空間的大幅降低。并且其擴(kuò)展性較強(qiáng),可以與其他運(yùn)算模塊相融合。mi等人的方法需要在原有的嵌入式微處理器外附帶專門的嵌入式微處理器(協(xié)處理器),而不是在原有的微處理器中完成算法的指令優(yōu)化操作。此方法另外占用一部分處理器資源,成本較高且不適用。Sim等人的方法并未最大限度的優(yōu)化算法擴(kuò)展指令操作,且其提出的優(yōu)化方法的優(yōu)化效果并不十分明顯。本課題組于2011. 1. 24說明書2/15 頁申請的申請?zhí)枮?01110024766X的專利專門針對AES加密算法中Sbox生成算法采用指令集架構(gòu)(ISA)擴(kuò)展的方式做了指令優(yōu)化,并且提出2條擴(kuò)展優(yōu)化指令,使Sbox生成算法效率得到較大的提升;本課題組于同日申請的申請?zhí)枮?01110024639X的另一專利針對AES 算法中列混淆模塊也采用指令集架構(gòu)(ISA)擴(kuò)展的方式做了指令優(yōu)化,使該模塊的執(zhí)行效率得到較大提升。但是以上兩實(shí)用新型進(jìn)行的工作僅僅針對AES算法的某一個運(yùn)算模塊進(jìn)行指令優(yōu)化擴(kuò)展操作,而沒有考慮對整個AES算法進(jìn)行指令集擴(kuò)展,同時將其單獨(dú)應(yīng)用于整個AES算法中時,對AES算法執(zhí)行效率的改善效果并不是十分明顯。實(shí)用新型內(nèi)容[0004]為彌補(bǔ)現(xiàn)有技術(shù)的不足,本實(shí)用新型提供一種AES專用指令集處理器,本實(shí)用新型采用指令集架構(gòu)擴(kuò)展優(yōu)化的方法對AES算法進(jìn)行指令擴(kuò)展優(yōu)化,基于電子系統(tǒng)級ESL方法設(shè)計流程,實(shí)用新型中設(shè)計實(shí)現(xiàn)了 5條專門用于加速AES的擴(kuò)展指令,并使用基于LISA 語言的處理器生成工具構(gòu)建完成一個高效AES專用指令處理器模型(AES_ASIP),用以滿足該算法在運(yùn)算速度和內(nèi)存空間有限的嵌入式環(huán)境下的需求,并且最終將處理器模型實(shí)現(xiàn)于 FPGA中,完成實(shí)體驗(yàn)證。[0005]為實(shí)現(xiàn)上述目的,本實(shí)用新型采用如下技術(shù)方案[0006]一種針對AES對稱加密算法的指令優(yōu)化方法,在滿足新指令操作碼長度和原有處理器模型中指令操作碼長度相同,新指令的操作碼和操作數(shù)總和不能超出原指令集的指令位數(shù),新指令的執(zhí)行部件不能過于復(fù)雜,新指令執(zhí)行過程不能降低系統(tǒng)的運(yùn)行速度,新擴(kuò)展的指令條數(shù)不能過多,降低由此帶來的硬件資源開銷的前提下,針對AES對稱加密算法進(jìn)行指令集架構(gòu)擴(kuò)展優(yōu)化,優(yōu)化方法如下[0007]1)在S盒字節(jié)置換過程中,仿射變換過程需要對位進(jìn)行操作,每次仿射變換都需要把八位二進(jìn)制數(shù)的每一位取出,對取位操作采用指令getbit<dest> = <src>,<bitpos>, 該指令的功能是從src寄存器中取出第bitpos位,然后存入dest寄存器的最后一位,以上過程將在一個時鐘周期內(nèi)完成,從而對取位運(yùn)算進(jìn)行了加速;[0008]2)仿射變換過程在取出八位二進(jìn)制數(shù)的所有位后,需要對每一位進(jìn)行五元異或操作,對五元異或操作采用指令 xor_5<dest> = <srcl>, <src2>, <src3>, <src4>, <src5>,該指令的功能是將srcl到src5所代表的寄存器中的內(nèi)容進(jìn)行異或操作,結(jié)果保存在dest所代表的寄存器中,以上過程將在一個時鐘周期內(nèi)完成,從而對異或運(yùn)算進(jìn)行了加速;[0009]3)列混淆中使用伽羅瓦域GF內(nèi)的乘法運(yùn)算,針對乘法操作采用指令 ifand<srcl>, <src2>, <xor_srcl>, <xor_src2>,該指令的功能是 srcl 和 src2 相與,如果結(jié)果不為0,則XOr_srcl和XOr_src2執(zhí)行異或,并將結(jié)果保存在XOr_srcl中;如果結(jié)果為 0,則不執(zhí)行異或操作,以上過程將在一個時鐘周期內(nèi)完成,從而對域內(nèi)乘法運(yùn)算進(jìn)行了加速;[0010]4)在列混淆中進(jìn)行矩陣相乘操作時需要多次定位矩陣中數(shù)據(jù)的位置,對矩陣內(nèi)數(shù)據(jù)查找采用指令matrixpos<dest> = <srcl>, <src2>, <src3>, <src4>,該指令的功能是查找矩陣中指定位置的數(shù)據(jù),以上過程將在一個時鐘周期內(nèi)完成,從而對查找指定位置數(shù)據(jù)運(yùn)算進(jìn)行了加速;[0011]5)另外,在列混淆中還用到數(shù)據(jù)交換操作,實(shí)現(xiàn)數(shù)據(jù)交換采用指令SWap<Srcl>,<src2>,該指令的功能是將源操作數(shù)srcl和src2交換,即將源操作數(shù)srcl的數(shù)值賦給 src2同時將src2的數(shù)值賦給srcl,以上過程將在一個時鐘周期內(nèi)完成,從而對數(shù)據(jù)交換運(yùn)算進(jìn)行了加速;[0012]通過上述五條擴(kuò)展指令的運(yùn)行,提高AES算法執(zhí)行效率并且同時降低算法指令代碼存儲空間。[0013]針對AES對稱加密算法的指令優(yōu)化處理器,它主要由數(shù)據(jù)存儲器、代碼存儲器、寄存器堆和流水線四部分組成;[0014]其中所述流水線包括取址單元、譯碼單元、執(zhí)行單元和流水線控制器,所述取址單元的輸出端與流水線寄存器I的輸入端連接,流水線寄存器I的輸出端與譯碼單元的輸入端連接,譯碼單元的輸出端與流水線寄存器II的輸入端連接,流水線寄存器II的輸出端與執(zhí)行單元的輸入端連接;所述數(shù)據(jù)存儲器和執(zhí)行單元雙向連接;代碼存儲器的輸出端與取址單元的輸入端連接;流水線控制器的輸出端分別與寄存器堆,流水線寄存器I和流水線寄存器II的輸入端連接;譯碼單元的輸出端與流水線控制器的輸入端連接。[0015]所述寄存器堆由32個通用寄存器、1個取址寄存器、1個堆棧指針寄存器和1個鏈接寄存器組成。[0016]所述擴(kuò)展指令getbit執(zhí)行部件包括1個移位器,1個與門以及1個多路選擇器,而部件的執(zhí)行末端是通用寄存器堆,移位器輸入端接收通用寄存器r0和4位的i ;i的最大值為31,指示寄存器移動的位數(shù);移位器移位后的結(jié)果與0x00000001通過與門相與,而與門的輸出為一個32位的數(shù)值,而該數(shù)值的最后一位保存著r0的第i位,而其它各位為0 ;控制信號getbit_exe控制多路選擇器,同時多路選擇器接受5位的0和通用寄存器rl的地址, 來控制地址選擇;當(dāng)控制信號為1時,多路選擇器將rl的地址傳送給寄存器堆,從而將與門的輸出賦給rl ;如果控制信號為0時,多路選擇器將5位0傳遞給寄存器堆,即傳遞空地址, 而處理器判斷是空地址后將不進(jìn)行賦值操作;getbit_exe是一個控制信號,由譯碼階段發(fā)出控制命令,決定是否執(zhí)行g(shù)etbit操作。[0017]所述擴(kuò)展指令x0r5執(zhí)行部件包括1個異或電路組和1個多路選擇器,而部件的執(zhí)行末端是通用寄存器堆;異或電路組由一系列異或邏輯門組成,它輸入端接收通用寄存器 r2, r3, r4, r5, r6的數(shù)據(jù),輸出結(jié)果為5元異或后的值;控制信號xor5_exe控制多路選擇器,同時多路選擇器接受5位的0和通用寄存器rl的地址,來控制地址選擇;當(dāng)控制信號為 1時,多路選擇器將rl的地址傳送給寄存器堆,從而將異或電路組的輸出結(jié)果賦給rl ;如果控制信號為0時,多路選擇器將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不進(jìn)行賦值操作;XOr5_eXe是一個控制信號,由譯碼階段發(fā)出控制命令,決定是否執(zhí)行xor5操作。[0018]所述擴(kuò)展指令ifand執(zhí)行部件包括2個與門、1個或門、1個異或邏輯門和1個多路選擇器,部件的執(zhí)行末端是整個處理器共用的通用寄存器堆;與門I接受r0與rl的輸入,其電路輸出是r0和rl相與后的一個32位數(shù)值;或門完成的功能是對與門的輸出,SP 32 位數(shù)值進(jìn)行逐位相與,而產(chǎn)生的輸出是一個1位的數(shù)值;該輸出將與控制信號ifand_exe — 起作為與門I的輸入,與門II的輸出將作為多路選擇器的輸入,來控制地址選擇;如果與門 II的輸出是1,則多路選擇器將通用寄存器r2的地址傳遞給寄存器堆,從而將r2和r3通過異或邏輯門的輸出結(jié)果賦給r2 ;如果與門II的輸出是0,則多路選擇器將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不進(jìn)行賦值操作;ifancLexe是一個控制信號,由譯碼階段發(fā)出控制命令,決定是否執(zhí)行ifand操作。[0019]所述擴(kuò)展指令matrixpos執(zhí)行部件包括1個乘法執(zhí)行部件、1個加法執(zhí)行部件和1 個多路選擇器,部件的執(zhí)行末端是整個處理器共用的數(shù)據(jù)存儲器;乘法執(zhí)行單元接受i與η 的輸入,計算出i*n的數(shù)值,并一起和輸入信號j和rl傳輸?shù)郊臃▓?zhí)行部件;加法執(zhí)行部件的功能是完成對輸入的rl,j和乘法執(zhí)行單元輸出的i*n三個數(shù)的相加,從而計算出矩陣元素的地址位置;加法執(zhí)行部件的輸出將作為多路選擇器的輸入,來控制地址選擇;如果多路選擇器的控制輸出是1,則多路選擇器將通用矩陣內(nèi)元素的地址傳遞給數(shù)據(jù)存儲器,從而將矩陣位置為rl+i*n+j的輸出結(jié)果賦給rl ;如果多路選擇器的控制輸出是0,則多路選擇器將16位0傳遞給數(shù)據(jù)存儲器,即傳遞空地址,而處理器判斷是空地址后將不進(jìn)行賦值操作;[0020]A_matrixpos_EX_in是一個控制信號,由譯碼階段發(fā)出控制命令,決定是否執(zhí)行 matixpos 操作。[0021]所述擴(kuò)展指令swap執(zhí)行部件包括2個多路選擇器和1個寄存器堆,部件的執(zhí)行末端是整個處理器共用的通用寄存器堆。多路選擇器I接受選擇輸入信號rl_addr,多路選擇器II接受選擇輸入信號r2_add r,多路選擇器的輸入來控制交換數(shù)據(jù)的地址選擇;如果多路選擇器I的輸出控制信號是1,則多路選擇器I將通用寄存器rl的地址傳遞給寄存器堆,從而將寄存器rl的數(shù)值結(jié)果賦給r2 ;如果多路選擇器I的輸出控制信號是0,則多路選擇器I將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不進(jìn)行賦值操作;如果多路選擇器II的輸出控制信號是1,則多路選擇器II將通用寄存器r2的地址傳遞給寄存器堆,從而將寄存器r2的數(shù)值結(jié)果賦給rl ;如果多路選擇器II的輸出控制信號是0,則多路選擇器II將5位0傳遞給寄存器堆,即傳遞空地址,而處理器判斷是空地址后將不進(jìn)行賦值操作;A_SWap_EX_in是一個控制信號,由譯碼階段發(fā)出控制命令,決定是否執(zhí)行swap操作。[0022]有益效果(1)執(zhí)行效率方面通過周期級仿真統(tǒng)計出AES_ASIP運(yùn)行AES加密算法所需要的時鐘周期數(shù),相對ARM處理器減少了 57. 3x%,極大地提高了算法的執(zhí)行效率; (2)代碼空間方面在ARM處理器上指令代碼占用78;3byteS內(nèi)存空間,而在AES_ASIP上指令代碼僅占用416bytes,節(jié)省了 46. 6x%的代碼內(nèi)存空間,通過指令集架構(gòu)擴(kuò)展的優(yōu)化方式進(jìn)行算法指令優(yōu)化,可以有效地減少存儲算法代碼的內(nèi)存空間。由統(tǒng)計實(shí)驗(yàn)結(jié)果可以得出,對比ARM處理器,AES_ASIP提高了 58. 4%的執(zhí)行效率并節(jié)省了 47. 4%的內(nèi)存空間。AES 算法在指令擴(kuò)展前使用處理器資源數(shù)為86816cells,指令擴(kuò)展后AES_ASIP使用處理器資源數(shù)為93038cells,占用的硬件資源增加了 7. 2%。


      [0023]圖1 (a)為AES算法加密流程圖;[0024]圖1 (b)為AES算法解密流程圖;[0025]圖2為專用指令處理器設(shè)計流程;[0026]圖3為AES專用指令處理器模型架構(gòu);[0027]圖4為getbit指令執(zhí)行部件硬件模型;[0028]圖5為xor_5指令執(zhí)行部件硬件模型;[0029]圖6為ifand指令執(zhí)行部件硬件模型;[0030]圖7為matrixpos指令執(zhí)行部件硬件模型; 圖8為swap指令執(zhí)行部件硬件模型;[0032]其中1.數(shù)據(jù)存儲器;2.寄存器堆;3.代碼存儲器;4.流水線;5.取址流水線; 6.譯碼流水線;7.執(zhí)行流水線;8.跳轉(zhuǎn)指令譯碼部件;9. AES擴(kuò)展指令譯碼部件;10.通用指令譯碼部件;11.讀寫指令執(zhí)行部件;12. AES擴(kuò)展命令執(zhí)行部件;13.邏輯算術(shù)指令執(zhí)行部件;14.流水線控制器;15.流水線寄存器I,16.流水線寄存器II ;17.通用寄存器堆; 18.移位器;19.與門I ;20.多路選擇器I ;21.異或電路組;22.多路選擇器II ;23.與門 II ;24.或門I ;25.與門III ;26.多路選擇器II ;27.異或邏輯門;28.乘法器;29.加法器; 30.多路選擇器III;31.數(shù)據(jù)存儲器;32.多路選擇器III;33.多路選擇器IV。
      具體實(shí)施方式
      [0033]
      以下結(jié)合附圖和實(shí)施例對本實(shí)用新型作進(jìn)一步說明[0034]一種AES對稱加密算法擴(kuò)展指令集優(yōu)化方法,在滿足不改變原有處理器指令操作碼長度、指令位數(shù)以及不影響處理器運(yùn)行速度的前提下,優(yōu)化操作為[0035]1) S盒字節(jié)置換過程中的取位操作,每次仿射變換都需要把八位二進(jìn)制數(shù)的每一位取出。但在ARM處理器以及其它常用的嵌入式處理器中,沒有直接的取位操作,傳統(tǒng)方法完成取位操作需要三條匯編指令,需執(zhí)行三個時鐘周期,因此執(zhí)行過程十分費(fèi)時。為了加速該過程,設(shè)計并采用了指令getbit<dest> = <src>,〈bitpos〉。該指令完成的功能是從通用寄存器src中取出第bitpos位,然后存入通用寄存器dest的最后一位,從而完成取位操作。新指令將在一個時鐘周期內(nèi)完成,因此比傳統(tǒng)處理器的處理速度提高了三倍,從而對S 盒字節(jié)置換過程中的取位操作進(jìn)行加速。[0036]2)仿射變換過程中取出二進(jìn)制數(shù)的所有位后,需要進(jìn)行五元異或操作,并用操作后的結(jié)果對原數(shù)進(jìn)行替換。在傳統(tǒng)的ARM處理器中,完成該功能需要四條匯編語言,因此需要四個時鐘周期。為了加速五元異或操作,設(shè)計并采用了新指令Xor5<deSt> = <srcl>, <src2>, <src3>,<src4>,<src5>。該指令的功能是將srcl到src5所表示的通用寄存器中的內(nèi)容進(jìn)行異或操作,結(jié)果保存在dest所表示的通用寄存器中。以上過程將在一個時鐘周期內(nèi)完成,因此比傳統(tǒng)處理器的處理速度提高了四倍,從而對仿射變換過程中的五元異或操作進(jìn)行加速。[0037]3)列混淆中使用伽羅瓦域GFQ8)內(nèi)的乘法運(yùn)算。數(shù)據(jù)分組與S盒256個元素中某個元素相乘,并進(jìn)行累加求和操作,該過程也需循環(huán)8次,運(yùn)算過程非常耗時。我們發(fā)現(xiàn)在每一次域內(nèi)乘法循環(huán)過程中都需要進(jìn)行一次判斷后異或的過程。在傳統(tǒng)的ARM處理器中, 完成該功能需要四條匯編語句,因此需要四個時鐘周期。為了加速該過程,我們設(shè)計并采用 了指令 ifand<srcl>,<src2>, <xor_srcl>, <xor_src2>。該指令的功能是將操作數(shù) srcl 和src2相與,如果結(jié)果不為0,則XOr_srcl和XOr_src2就執(zhí)行異或,并將結(jié)果保存在xor_ srcl表示的通用寄存器內(nèi);如果結(jié)果為0,則不執(zhí)行異或操作。以上過程將在一個時鐘周期內(nèi)完成,因此比傳統(tǒng)處理器的處理速度提高了四倍,從而對域內(nèi)乘法運(yùn)算進(jìn)行了加速。[0038]4)列混淆進(jìn)行矩陣相乘操作,需要多次定位矩陣中數(shù)據(jù)的位置,在實(shí)際內(nèi)存中,矩陣中的數(shù)據(jù)是線性存儲的。傳統(tǒng)方法需要5條匯編指令來實(shí)現(xiàn),因此需要5個時鐘周期。 為了加速該過程,我們設(shè)計并采用了新指令matrixpos<dest> = <srcl>, <src2>, <src3>, <src4>替代原來的五條匯編指令。新指令的功能是查找矩陣中指定位置的數(shù)據(jù)。以上過程將在一個時鐘周期內(nèi)完成,因此比傳統(tǒng)處理器的處理速度提高了 5倍,從而對定位矩陣中數(shù)據(jù)的位置操作進(jìn)行了加速。[0039]5)列混淆大量用到數(shù)據(jù)交換操作,需要交換寄存器中2個數(shù)據(jù)。傳統(tǒng)方法完成該操作需要3條匯編指令,因此需要3個時鐘周期。為了加速該過程,我們設(shè)計并采用了新指令swap<srcl>,<src2>替代原來的三條匯編指令。新指令的功能是將源操作數(shù)srcl和 src2交換,即將源操作數(shù)srcl的數(shù)值賦給src2同時將src2的數(shù)值賦給srcl。以上過程將在一個時鐘周期內(nèi)完成,因此比傳統(tǒng)處理器的處理速度提高了 3倍,從而對數(shù)據(jù)交換操作進(jìn)行了加速。[0040]通過上述五條擴(kuò)展指令的運(yùn)行,加速嵌入式微處理器中AES對稱加密算法。[0041]一種根據(jù)擴(kuò)展指令集設(shè)計的AES算法專用指令集處理器模型(AES_ASIP),它在硬件邏輯上實(shí)現(xiàn)了上述擴(kuò)展指令,因此能夠用于加速AES加密算法。模型硬件結(jié)構(gòu)主要由數(shù)據(jù)存儲器(Data_RAM)、代碼存儲器(Prog_RAM)、寄存器堆(Registers)和流水線 (Pipe)四部分組成。程序存儲器地址空間定義在0x0000-0x7FFF范圍內(nèi),大小32K。代碼存儲器地址空間定義在0x8000-0xFFFF范圍內(nèi),大小32K。寄存器堆由32個通用寄存器(GPR[0...31])、1個取址寄存器(FPR)、1個堆棧指針寄存器(SPR)和1個鏈接寄存器 (LR)組成。流水線部分采用三級流水線取址(FE)、譯碼(DC)和執(zhí)行(EX)。流水線控制器 (Pipe.Ctl)主要負(fù)責(zé)對跳轉(zhuǎn)指令進(jìn)行控制,跳轉(zhuǎn)指令只需要將跳轉(zhuǎn)地址存儲在取址寄存器 (FPR)中,不需要經(jīng)過執(zhí)行部件,緊接著對流水線的緩存部分進(jìn)行刷新,防止執(zhí)行部件執(zhí)行跳轉(zhuǎn)指令。在AES_ASIP處理器的譯碼、執(zhí)行部件,添加了針對AES算法的專用指令譯碼器 (Decode_AES_EX)和執(zhí)行器(AES_EX),對擴(kuò)展的指令進(jìn)行專門的譯碼和執(zhí)行。[0042]本實(shí)用新型的原理及具體實(shí)現(xiàn)方法如下[0043]高級加密標(biāo)準(zhǔn)AES (Advanced Encryption Mandard)算法屬于分組密碼算法,它的輸入分組、輸出分組以及加/解密過程中的中間分組都是128比特,使用10、12或14個輪(Nr表示輪數(shù)),與輪數(shù)相對應(yīng)輸入密鑰的長度K為128,192或256比特。用Nk = 4,6, 8代表密鑰串的字?jǐn)?shù)(1字=32比特),每一輪都需要一個和輸入分組具有同樣長度(1 比特)的擴(kuò)展密鑰Key的參與。由于外部輸入的密鑰k長度有限,所以在AES算法操作過程中需使用密鑰擴(kuò)展(Key Expansion)例程把外部密鑰k擴(kuò)展成更長的比特串,以生成各輪的加輪密鑰。第一個輪密鑰用作預(yù)備輪轉(zhuǎn)換,剩下的輪密鑰用作每一輪結(jié)尾的最后一個轉(zhuǎn)換。AES算法在操作過程中運(yùn)用四個轉(zhuǎn)換S盒字節(jié)置換、行變換、列混淆和密鑰加。除最后一輪外,每一輪都使用四個可逆的轉(zhuǎn)換,最后一輪僅用三個轉(zhuǎn)換(無列混合轉(zhuǎn)換)。在解密方,使用的是可逆轉(zhuǎn)換S盒置換反演、行變換反演、列混淆反演和加輪密鑰(這個轉(zhuǎn)換是自身可逆的),如圖1(a)表示AES加密流程,圖1(b)表示AES解密流程。[0044](1)加密變換[0045]設(shè)X是128比特明文輸入,Y是128比特的密文輸出,則AES密文Y可以用下面的復(fù)合變換得出[0046]Y = (ANr · R · S) · (ANr_! · C · R · S) · (ANr_2 · C · R · S)... (A1 · C · R · S) · A0(X)[0047]其中·表示復(fù)合運(yùn)算。這里Am⑴表示對X的一個變換ANi⑴=Xxor KNi (KNi為第i輪的子密鑰,為比特串的異或運(yùn)算)。S :S-box字節(jié)置換,即對每一個字節(jié)用S-box做一個置換。為了提升算法執(zhí)行效率,S-box是一個指定的轉(zhuǎn)換表。R 行變換。C:列混淆,列混淆中涉及到多項(xiàng)式乘法運(yùn)算。[0048](2)解密變換[0049]解密變換是加密變換的逆變換,這里不再詳述。[0050]關(guān)于AES加密算法運(yùn)算模塊的分析介紹如下 (I)S 盒字節(jié)置換 S-boxSubBytes ()[0052] 對輸入矩陣的任一個元素A做如下變換S [A] (a)任意一個元素A從存儲角度看都是一個八位的二進(jìn)制數(shù)。算出前四位所代表的十六進(jìn)制數(shù)X和后四位所代表的十六進(jìn)制數(shù)y。如A= 11000100時,X = C,y = 4 ;(b)從AES算法給定的S_box (16行16列的矩陣, 其中每個元素為一個字節(jié)中找出S[A] = S[x,y]的值。如A :11000100時,S[A] = S[x,y] =S[c,4] = 29 = 00101001或直接通過下面的公式將A = bAb+Ab^b。變?yōu)镾[A]=b'7b' 6b'Λ' .b' ,b' 9b' ,b'[0053]
      權(quán)利要求1.一種針對AES對稱加密算法的指令優(yōu)化處理器,其特征是,它主要由數(shù)據(jù)存儲器、代碼存儲器、寄存器堆和流水線四部分組成;其中所述流水線包括取址單元、譯碼單元、執(zhí)行單元和流水線控制器,所述取址單元的輸出端與流水線寄存器I的輸入端連接,流水線寄存器I的輸出端與譯碼單元的輸入端連接,譯碼單元的輸出端與流水線寄存器II的輸入端連接,流水線寄存器II的輸出端與執(zhí)行單元的輸入端連接;所述數(shù)據(jù)存儲器和執(zhí)行單元雙向連接;代碼存儲器的輸出端與取址單元的輸入端連接;流水線控制器的輸出端分別與寄存器堆,流水線寄存器I和流水線寄存器II的輸入端連接;譯碼單元的輸出端與流水線控制器的輸入端連接。
      2.如權(quán)利要求1所述的針對AES對稱加密算法的指令優(yōu)化處理器,其特征是,所述寄存器堆由32個通用寄存器、1個取址寄存器、1個堆棧指針寄存器和1個鏈接寄存器組成。
      專利摘要本實(shí)用新型公開了針對AES對稱加密算法的指令優(yōu)化處理器,它主要由數(shù)據(jù)存儲器、代碼存儲器、寄存器堆和流水線四部分組成;其中所述流水線包括取址單元、譯碼單元、執(zhí)行單元和流水線控制器。利用本實(shí)用新型的指令優(yōu)化方法,在執(zhí)行效率方面,通過周期級仿真統(tǒng)計出AES_ASIP運(yùn)行AES加密算法所需要的時鐘周期數(shù),相對ARM處理器減少了57.3x%,極大地提高了算法的執(zhí)行效率;在代碼空間方面在ARM處理器上指令代碼占用783bytes內(nèi)存空間,而在AES_ASIP上指令代碼僅占用416bytes,節(jié)省了46.6x%的代碼內(nèi)存空間。
      文檔編號G06F9/30GK202257543SQ20112017144
      公開日2012年5月30日 申請日期2011年5月26日 優(yōu)先權(quán)日2011年5月26日
      發(fā)明者夏輝, 張志勇, 賈智平, 陳仁海, 顏沖 申請人:山東大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1