林宇紅,肖 昊
(合肥工業(yè)大學(xué) 微電子學(xué)院,安徽 合肥 230009)
隨著信息全球化和移動信息的迅猛發(fā)展,信息安全問題在各個領(lǐng)域備受關(guān)注。存儲器是專用集成電路(ASIC)芯片中重要的組成部分,其作為密碼信息的重要載體,主要存儲芯片執(zhí)行代碼、芯片操作數(shù)據(jù)以及應(yīng)用者密鑰等重要信息。芯片數(shù)據(jù)的存儲對客戶安全應(yīng)用具有重要意義,如果芯片自身的安全防護能力過于薄弱,將導(dǎo)致芯片存在安全缺陷漏洞或遭遇黑客攻擊,帶來較嚴重的安全威脅。因此,增強信息存儲安全以禁止非相關(guān)人員進行人為操作或者非法篡改十分必要。密碼算法加密實現(xiàn)平臺主要由硬件、軟件和芯片組成。軟件實現(xiàn)安全特性會導(dǎo)致控制指令延時,從而影響功能安全特性的實現(xiàn)。硬件實現(xiàn)占用空間大,成本較大,影響使用場合。與硬件加密和軟件加密相比,芯片加密具有集成度高、資源消耗少等優(yōu)勢[1]。設(shè)計ASIC芯片對嵌入內(nèi)部的快閃存儲器(eFlash)數(shù)據(jù)進行加密以確保數(shù)據(jù)安全是效果較好的設(shè)計方案。
目前已有學(xué)者在防御Flash安全攻擊方面展開了研究。在軟件層面,文獻[2]基于JFFS2 (Journaling Flash File System Version 2)設(shè)計了符合嵌入式系統(tǒng)特點和Flash物理特性的加密文件系統(tǒng)。該加密方案基于嵌入式軟件平臺,將加密算法直接移植到嵌入式系統(tǒng)。由于軟件主要是串行處理數(shù)據(jù),高延時降低系統(tǒng)的性能,該加密方案使系統(tǒng)性能降低了28%。在硬件層面,文獻[3]使用復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,CPLD)設(shè)計了Flash存儲加密,在處理器和Flash總線之間串聯(lián)一塊CPLD,對Flash地址線以及數(shù)據(jù)線進行加密處理。CPLD是可編程器件,雖然能夠完成各類算法和組合邏輯控制電路,但其成本高且集成度低[4]。
高級加密標準(AES)算法是由美國國家標準技術(shù)研究所(NIST)為替代DES而發(fā)布的新一代數(shù)據(jù)高級加密標準[5]。AES加密算法是一種具有運行快、安全性高以及資源消耗少等特點的密碼算法,在加密算法類型中,AES加密算法是較好的選擇。本文在ASIC芯片內(nèi)設(shè)計一種基于AES算法對eFlash存儲數(shù)據(jù)加密的控制器,可有效避免他人篡改或攻擊eFlash存儲的關(guān)鍵信息。
AES是一種分組對稱的密碼算法,分組數(shù)據(jù)塊長度為固定128 bit,密鑰的長度可支持128 bit、192 bit和256 bit[6]。根據(jù)密鑰長度不同,分組長度與加密輪數(shù)的關(guān)系為:AES-128的輪數(shù)為10,AES-192的輪數(shù)為12,AES-256的輪數(shù)為14[7]。AES的輪函數(shù)主要由下面字節(jié)替換、行移位、列混淆以及輪密鑰加組成。
字節(jié)替換可視為16個并行的非線性元素S盒,且每個S盒的數(shù)據(jù)傳輸都是8位。實現(xiàn)8 bit輸入到8 bit輸出的映射,輸入的低4位值是位列標,輸入的高4位值是位行標。在此過程中,每個狀態(tài)字節(jié)Ai都被替換為另外一個字節(jié)Bi,計算式為B[h,k]=S(A[h,k]),其本質(zhì)是一個查表過程[8]。
行位移用于提供算法的擴散性,基于字節(jié)替換的狀態(tài)矩陣對其向左循環(huán)移位的操作。狀態(tài)矩陣第1行不移位,第2行、第3行和第4行則分別向左循環(huán)移位1個、2個和3個Byte[9]。
列混淆對狀態(tài)矩陣的每列進行線性變換[10]。狀態(tài)矩陣的每列來自有限域GF(28)的多項式s(x),與一個固定多項式a(x)相乘的結(jié)果再與x4+1進行取模得到s′(x)[11],其數(shù)學(xué)關(guān)系如式(1)和式(2)所示。
a(x)=(03)×x3+(01)×x2+(01)×x+(02)
(1)
s′(x)=a(x)⊕s(x)
(2)
輪密鑰加是列混淆后的矩陣S與密鑰矩陣K進行異或處理,其數(shù)學(xué)關(guān)系為S′[a,b]=S[a,b]⊕K[a,b],a,b∈[0,3]。
AES由不同的層組成,每一層操縱數(shù)據(jù)路徑對應(yīng)的數(shù)據(jù)。AES算法的加解密流程如圖1所示。
圖1 AES加解密流程Figure 1. AES encryption and decryption flow
eFlash控制器的功能是對eFlash數(shù)據(jù)存儲操作(讀/寫/擦除)的控制[12]和對存儲數(shù)據(jù)加密,由AHB接口模塊、eFlash控制模塊和AES加密模塊等組成[13],其系統(tǒng)控制架構(gòu)[14]如圖2所示。
圖2 eFlash系統(tǒng)控制器模塊Figure 2. eFlash system controller module
AHB接口模塊接收來自AHB總線發(fā)送的控制信號、地址信號和數(shù)據(jù)信號并對其做分析處理。eFlash地址,配置是根據(jù)AHB地址配置由譯碼器轉(zhuǎn)換成相應(yīng)的eFlash地址。AHB接口信號根據(jù)組合邏輯和時序邏輯組成邏輯電路對eFlash控制模塊的接口信號進行信息交互控制。
eFlash控制模塊接收AHB接口模塊發(fā)送的總線地址和命令信號,生成eFlash數(shù)據(jù)讀寫擦除時序、邏輯控制信號和eFlash地址信號對eFlash的讀、寫和擦除的操作控制,同時產(chǎn)生對應(yīng)的eFlash狀態(tài)信息,并反饋到AHB接口模塊中進行分析和判斷。其控制結(jié)構(gòu)如圖3所示。
圖3 eFlash控制模塊Figure 3. eFlash control module
eFlash控制器內(nèi)部增加AES控制模塊對eFlash存儲數(shù)據(jù)加密。AES加密控制模塊設(shè)計主要由Data輸入寄存器模塊、Data輸出寄存器模塊、字節(jié)替換模塊、密鑰擴展模塊以及加解密模塊等組成[15]。
在AES加密時,將需要寫入eFlash的數(shù)據(jù)先傳輸?shù)紻ata輸入寄存器中,根據(jù)控制信號模式配置輸入密鑰或者明文,將數(shù)據(jù)輸入到密鑰擴展模塊或者加密模塊進行數(shù)據(jù)解析。由密鑰擴展模塊生成子密鑰與加密模塊中的輪密鑰加層生成的數(shù)據(jù)進行異或處理,經(jīng)10輪迭代處理生成密文,隨后將密文傳輸?shù)紻ata輸出寄存器中等待eFlash控制模塊解析處理寫入到eFlash里。
在AES解密時,從eFlash中讀出相應(yīng)數(shù)據(jù)到Data輸入寄存器中,將數(shù)據(jù)提取到解密模塊中進行數(shù)據(jù)解析。由密鑰擴展模塊生成子密鑰與解密模塊中輪密鑰加層生成的數(shù)據(jù)進行異或處理,經(jīng)10輪迭代處理生成明文,產(chǎn)生的明文輸出到Data輸出寄存器等待eFlash控制模塊解析處理后輸出到AHB接口模塊。其AES控制模塊如圖4所示。
圖4 AES控制模塊Figure 4. AES control modul
2.2.1 數(shù)據(jù)流水線結(jié)構(gòu)
對于分組密碼加密實現(xiàn)有迭代結(jié)構(gòu)、循環(huán)展開結(jié)構(gòu)和并行流水線結(jié)構(gòu)等方法[16]。迭代結(jié)構(gòu)運算周期內(nèi)完成一個數(shù)據(jù)的加密操作,此實現(xiàn)方法操作速度慢且邏輯資源消耗小,比較適合對速度要求低但對面積要求高的情況采用。將迭代結(jié)構(gòu)展開就是循環(huán)展開結(jié)構(gòu),標準的AES方案屬于循環(huán)展開結(jié)構(gòu),此方法雖然提高了運算速度,但需要更多的邏輯資源增大芯片面積。在設(shè)計芯片時,盡量對速度和面積進行折中處理,在滿足速度要求的前提下盡量減少資源損耗。流水線結(jié)構(gòu)介于迭代結(jié)構(gòu)和循環(huán)展開結(jié)構(gòu)之間,符合此設(shè)計。
使用流水線技術(shù)關(guān)鍵是加密時將數(shù)據(jù)切分多級執(zhí)行降低分組數(shù)據(jù)處理時間,在執(zhí)行過程中插入寄存器儲存執(zhí)行結(jié)果。此過程并未改變硬件邏輯流程,但是可以在較少周期內(nèi)同時處理多個數(shù)據(jù)塊加密,提高了并行處理能力,從而加快數(shù)據(jù)處理速度。本文設(shè)計在循環(huán)展開結(jié)構(gòu)加密流程的每輪間插入寄存器存儲每輪執(zhí)行結(jié)果,寄存器控制采用同步時鐘處理,當時鐘觸發(fā)時保存上輪變換結(jié)果,同時將上次保存結(jié)果送至流水線處理并將處理結(jié)果保存至下一級寄存器中,其流程結(jié)構(gòu)如圖5所示。
圖5 AES加密流水線結(jié)構(gòu)Figure 5. AES encrypted pipeline structure
2.2.2 數(shù)據(jù)加解密流程
eFlash控制器加密流程為:首先,eFlash控制模塊寫入密鑰數(shù)據(jù),存儲到寄存器緩存中得到密鑰,密鑰在加解密中公用;其次,配置數(shù)據(jù)狀態(tài)模式為輸入模式,將數(shù)據(jù)寫入明文塊;最后,將密鑰與輸入明文進行加密處理生成密文塊并寫入eFlash。
eFlash控制器解密流程為:首先,eFlash控制模塊配置數(shù)據(jù)狀態(tài)模式為輸出模式,將eFlash數(shù)據(jù)讀出到密文塊;其次,調(diào)用加密時的密鑰與輸出密文解密處理生成明文塊輸出;最后,在解密過程中將解密輸出的明文與加密輸入的明文進行數(shù)據(jù)校對以判斷數(shù)據(jù)有效性[17]。整體流程如圖6所示。
圖6 eFlash加解密流程Figure 6. eFlash encryption and decryption process
系統(tǒng)采用可綜合的Verilog行為級RTL代碼實現(xiàn),在VCS和Verdi的聯(lián)合環(huán)境下構(gòu)建Testcase對系統(tǒng)功能進行了聯(lián)合仿真和驗證。在對eFlash數(shù)據(jù)讀寫加解密運算后,得到的加密和解密結(jié)果如表1和表2所示。
表1 加密數(shù)據(jù)測試Table 1. Encrypted data test
表2 解密數(shù)據(jù)測試Table 2. Decrypted data test
將表1和表2中的運算數(shù)據(jù)與圖7的仿真數(shù)據(jù)對比可知,在加密測試時輸入表1所示的明文和密鑰的測試結(jié)果得到的密文與仿真結(jié)果一致;在解密時輸入表2所示的密文和密鑰的測試結(jié)果得到的明文與仿真結(jié)構(gòu)一致。
圖7 加解密數(shù)據(jù)仿真Figure 7. Simulations of decrypted data
在180 nmCMOS工藝下利用綜合工具對系統(tǒng)設(shè)計進行邏輯綜合。仿真結(jié)果表明可實現(xiàn)的最高工作頻率為120 MHz,AES最大吞吐率可達1.4 Gbit·s-1。128 bit密鑰擴展產(chǎn)生10輪子密鑰的加密流程需要33個時鐘周期。流水線設(shè)計密鑰擴展和加密運算并行處理會提高數(shù)據(jù)處理速度,使整體運行周期只需11個周期,AES實現(xiàn)方法對比結(jié)果如表3所示。本文的流水線結(jié)構(gòu)設(shè)計在加密流程輪間插入寄存器和選擇器,雖然邏輯資源消耗比循環(huán)展開結(jié)構(gòu)設(shè)計高,但加密運算耗費的時鐘周期減少,使得加解密的數(shù)據(jù)吞吐率具有較大提升。采用吞吐率與消耗資源的比值衡量其效率值,流水線結(jié)構(gòu)設(shè)計效率比提升2.7倍。eFlash控制器增加AES模塊前后讀、寫、擦除耗時關(guān)系如表4所示,eFlash控制器綜合得出的消耗面積為4.77×10-9m2,其中AES模塊消耗資源面積占9.96×10-10m2,可得出AES在系統(tǒng)資源占比并不大,說明在確保eFlash存儲數(shù)據(jù)安全前提下增加AES模塊帶來資源消耗是可以接受的。
表3 AES實現(xiàn)方法對比Table 3. Comparison of AES implementation methods
表4 eFlash控制器加密128 bit耗時對比Table 4. Comparison of 128 bit encryption time of eFlash controller
由表4可知,eFlash控制器增加AES模塊會導(dǎo)致控制數(shù)據(jù)時序有一定延時。eFlash正常讀128 bit數(shù)據(jù)需要28個時鐘周期,加AES模塊后讀128 bit數(shù)據(jù)時,AHB總線32位傳輸、AES加密模塊功能和選擇器會產(chǎn)生18個時鐘周期的延時。同樣,eFlash正常讀寫128 bit數(shù)據(jù)需要22 988個時鐘周期,增加AES模塊后寫128 bit數(shù)據(jù)同樣會產(chǎn)生18個時鐘周期的延時,擦除功能延時比較小。雖然基于ASIC芯片設(shè)計對數(shù)據(jù)加密需要消耗邏輯資源并降低運算速度,但與基于軟件和硬件的加密模式相比,其仍具有集成度高和運算快的優(yōu)勢。
本文設(shè)計實現(xiàn)了基于AES算法的eFlash安全存儲數(shù)據(jù)控制器,在通用eFlash控制器基礎(chǔ)上增加了AES模塊,eFlash控制器在正??刂拼鎯Φ耐瑫r加強了存儲數(shù)據(jù)安全。對系統(tǒng)功能仿真測試和邏輯綜合驗證了本文設(shè)計基本滿足設(shè)計規(guī)格要求。該控制器完全由硬件實現(xiàn),具有集成度高和安全性強等特點,可以在其他場合推廣應(yīng)用。