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