黃燦英,汪 瑩,陳 艷
(南昌大學(xué) 科學(xué)技術(shù)學(xué)院,南昌 330029)
嵌入式系統(tǒng)是一種控制或監(jiān)測機器的專用計算機系統(tǒng),廣泛應(yīng)用于醫(yī)療電子設(shè)備、智能家居、物流運輸裝飾和電力控制系統(tǒng)等多個領(lǐng)域[1-2].為了實現(xiàn)嵌入式系統(tǒng)數(shù)據(jù)和信息的安全性,密碼技術(shù)作為信息安全領(lǐng)域的核心技術(shù)通常被用于該系統(tǒng)的具體運行中,其主要原理是利用計算復(fù)雜性理論,防止攻擊者獲取系統(tǒng)的數(shù)據(jù)和信息[3-4].在密碼技術(shù)的實際應(yīng)用中,密碼算法和協(xié)議的設(shè)計可以充分保證其理論上的安全性,然而,其最容易被攻擊的弱點通常出現(xiàn)在其具體實現(xiàn)細(xì)節(jié)上.尤其是在具有開放性的嵌入式系統(tǒng)中,攻擊者可以輕松得到眾多關(guān)鍵運行數(shù)據(jù),甚至直接獲取算法的密鑰,此時,嵌入式系統(tǒng)沒有任何安全性可言[5-6],所以,如何提高嵌入式系統(tǒng)中密碼算法的安全性是一個亟待解決的系統(tǒng)化問題.為了解決嵌入式系統(tǒng)的安全問題,必須從該類系統(tǒng)的基本組成結(jié)構(gòu)出發(fā),探索安全性較高的輕量實現(xiàn)方案,其具體措施是基于有限的帶寬和硬件資源,盡量使用較小的功耗和計算資源實現(xiàn)嵌入式系統(tǒng)所需的安全計算任務(wù)[7].在設(shè)計安全方案時,需要考慮系統(tǒng)的功耗、存儲和面積等多種因素.尤其需要注意的是,由于功耗分析方法具有較高的攻擊效率,所以設(shè)計該方案時,必須考慮其對功耗分析方法的抵抗能力[8-9].
本文從密碼算法的實現(xiàn)準(zhǔn)則出發(fā),研究了AES-128算法的實現(xiàn)問題.通過介紹該算法的S盒、行移位和列混合等多個計算部件的實現(xiàn)設(shè)計,給出了AES-128算法的實現(xiàn)方案.此外,使用差分功耗分析和相關(guān)性功耗分析的方法對該算法進(jìn)行了多次攻擊,并統(tǒng)計其響應(yīng)結(jié)果.結(jié)果表明,AES-128算法具有較好的安全性,可以滿足嵌入式系統(tǒng)的安全需求.
在嵌入式系統(tǒng)中,密碼算法的實現(xiàn)必須考慮多方面因素,主要包括:1)實現(xiàn)平臺需選擇的軟件或硬件,這是設(shè)計人員首要考慮的問題;2)為了保證嵌入式系統(tǒng)的實時性,算法的實現(xiàn)方案應(yīng)盡可能地提高其吞吐率;3)算法的安全強度是設(shè)計實現(xiàn)方案的核心指標(biāo),密碼算法的實現(xiàn)方案應(yīng)該可以抵抗軟件攻擊和旁路攻擊等主流攻擊方法;4)需考慮算法的靈活性,即當(dāng)嵌入式系統(tǒng)的某一協(xié)議或標(biāo)準(zhǔn)發(fā)生較小改變時,算法的實現(xiàn)方案經(jīng)過微調(diào)之后依舊適應(yīng)系統(tǒng)的運行;5)在算法實現(xiàn)過程中,設(shè)計人員應(yīng)重點考慮密碼算法的實現(xiàn)成本,即芯片使用面積、功率消耗和能源消耗等,從而提高系統(tǒng)設(shè)備的續(xù)航性能.
另外,針對不同要求的嵌入式系統(tǒng),密碼算法的實現(xiàn)方案需要考慮的優(yōu)先級也略有不同.針對低端和高端系統(tǒng),表1列舉了這兩種系統(tǒng)的安全實現(xiàn)方案應(yīng)重點考慮的實現(xiàn)準(zhǔn)則.其中,本文主要研究嵌入式系統(tǒng)平臺的安全實現(xiàn)方案,而用戶認(rèn)證和信息完整性是方案的主要實現(xiàn)目標(biāo),所以,實現(xiàn)成本、功耗、吞吐率和安全性等性能指標(biāo)是本文需要重點設(shè)計和分析的對象.為了平衡功耗、安全性、吞吐率和實現(xiàn)成本等指標(biāo),通過比較ECC-GF(2163)和SHA-1等算法,本文選用AES-128算法實現(xiàn)嵌入式系統(tǒng)平臺的安全設(shè)計.
目前,AES標(biāo)準(zhǔn)是對稱密碼學(xué)中最流行的加密算法[10].在其加解密流程中,所有的計算操作主要可分為字節(jié)混淆、行移位、列混合和輪密鑰加.圖1展示了AES算法的加密和解密流程,其中,左邊是加密流程,右邊是解密流程,其加解密的流程均是10輪.
圖1 AES算法加解密流程圖
為了實現(xiàn)輕量化的AES-128算法,本文需要實現(xiàn)該算法某一輪的加密或解密運算.其中,由于AES-128算法的加解密流程是相似的,所以只需要實現(xiàn)該算法的一輪加密運算,再對其進(jìn)行有機組合,即可實現(xiàn)整個算法流程.為了實現(xiàn)該算法的加密輪運算,本文使用了迭代結(jié)構(gòu),其具體架構(gòu)如圖2所示.
為了實現(xiàn)圖2的迭代加密結(jié)構(gòu),本文一共需要實現(xiàn)20個128位結(jié)構(gòu)的S盒,4個32位結(jié)構(gòu)的S盒和2個8位結(jié)構(gòu)的S盒,這些S盒被用于密鑰擴展的數(shù)量分別是4、4和1,主要承擔(dān)了字節(jié)替代的計算任務(wù),不同位數(shù)的S盒結(jié)構(gòu)是一致的.
圖2 AES算法加密輪的迭代結(jié)構(gòu)
在AES-128算法中,字節(jié)替代運算主要由S盒執(zhí)行.一般而言,AES-128算法的S盒是一個乘法逆變換,也是該算法唯一的非線性變換[11-12].通常,S盒的實現(xiàn)難度是AES算法中最高的.令a表示經(jīng)過輪密鑰加計算的明文,SR表示S盒的乘法逆變換,則S盒的計算公式可表示為
SR[a]=f(g(a))
(1)
式中:g為有限域上的乘法逆運算;f為仿射運算.
AES算法中有兩種常用的S盒實現(xiàn)方法[13],第一種方法是查表法,即查找記錄運算結(jié)果的表格,從而回避繁雜的邏輯運算,然而這種方法的內(nèi)存要求較高,難以進(jìn)行復(fù)用,不適用于嵌入式系統(tǒng);第二種方法是基于有限域分解原理的實現(xiàn)方法,即通過將大域的元素分解為小域的元素,經(jīng)過平方、乘法等一系列的運算,最終得到元素在大域中的乘法逆運算.根據(jù)S盒的數(shù)學(xué)公式,乘法逆運算g的逆變換是其本身,用公式表示為
(2)
綜合考慮式(1)、(2)可知,只要實現(xiàn)S盒中的乘法逆運算g、仿射變換f和f-1,就可以實現(xiàn)AES算法中的S盒變換,其電路結(jié)構(gòu)圖如圖3所示.這種方法非常靈活,實現(xiàn)所需的芯片面積和成本均比較小,所以,該種方法廣泛地應(yīng)用于AES算法中.
圖3 S盒的電路結(jié)構(gòu)
本文使用VHDL語言對這兩種實現(xiàn)方法進(jìn)行對比,通過使用ModelSim仿真手段計算了這兩種S盒實現(xiàn)的具體功耗.當(dāng)時鐘頻率是10 MHz,輸入8位時,其仿真結(jié)果如表2所示.
表2 兩種S盒實現(xiàn)結(jié)構(gòu)的功耗仿真結(jié)果
在算法流程中,明文以字節(jié)為單位輸入到行移位的寄存器中,而相應(yīng)的部件再次排列寄存器中的字節(jié),即可完成行移位的操作.需要說明的是,這一部分設(shè)備在控制時鐘信號時,能夠完成字節(jié)循環(huán)雙向移動的計算,其電路結(jié)構(gòu)如圖4所示.
圖4 行移位電路結(jié)構(gòu)圖
當(dāng)算法進(jìn)入到列混合運算之后,其中間數(shù)據(jù)仍然以字節(jié)為單位.當(dāng)數(shù)據(jù)輸入之前,寄存器的使能信號為0,在數(shù)據(jù)輸入和完成時,寄存器的使能信號變?yōu)?,同時用相同的乘法系數(shù)對數(shù)據(jù)進(jìn)行乘法計算,通過添加和循環(huán)轉(zhuǎn)移等操作實現(xiàn)列混合的運算,并將其結(jié)果存儲到寄存器中.計算完成后,其輸出結(jié)果將被傳輸?shù)酱⑥D(zhuǎn)換單元,其電路結(jié)構(gòu)如圖5所示.
圖5 列混合電路結(jié)構(gòu)圖
在實現(xiàn)AES-128算法后,為了保證該算法的安全性,本文使用功耗分析對該算法進(jìn)行了多次攻擊測試.功耗分析是一種旁路攻擊方法,其攻擊方法與電磁分析類似,攻擊原理是通過觀察和測量的方法,檢測加密電路中的多種特征,從而分析和推測算法中的計算與邏輯信息,最終得到其密鑰信息,破解其加密算法.
本文主要采用了差分功耗分析(DPA)和相關(guān)性功耗分析(CPA)對AES-128算法進(jìn)行分析與測試.DPA是利用不同的功耗泄露數(shù)據(jù)進(jìn)行差異推斷的統(tǒng)計分析方法,該方法對平均值做差,以功耗泄露數(shù)據(jù)為區(qū)分函數(shù),其具體分析過程為
(3)
(4)
式中:Pi和Pj為真實功耗泄露數(shù)據(jù);HK,i和HK,j分別為S0集合與S1集合的預(yù)測功耗泄露參數(shù);K為待攻擊的子密鑰;P(t)為t時刻的功耗泄露數(shù)據(jù).
CPA是一種基于皮爾森相關(guān)系數(shù)統(tǒng)計的分析方法,該方法通過統(tǒng)計功耗數(shù)據(jù)和算法中間變量的相關(guān)系數(shù),獲取相應(yīng)的密鑰信息,其具體分析過程為
(5)
式中:T(t)為算法中的中間變量;E和σ為某變量的期望和方差.
在DPA仿真測試平臺上,設(shè)置電路的時鐘頻率為2.5 MHz,其功耗數(shù)據(jù)的記錄周期為1 ns,在每個時鐘周期之內(nèi),平臺可以記錄400個數(shù)據(jù)點.因為DPA的攻擊時間處于AES的前兩輪,所以本文只需要記錄這兩輪的功耗數(shù)據(jù).由于本文選擇了AES-128算法的前兩輪進(jìn)行攻擊,所以得到了這兩輪的瞬時功耗數(shù)據(jù)如圖6所示.
圖6 AES-128算法的瞬時功耗泄露數(shù)據(jù)
由圖6可知,在輸出數(shù)據(jù)為20~50之后,電路的功耗泄漏趨近于0.在數(shù)據(jù)達(dá)到80以后,電路的功耗泄漏可以忽略不計.這意味著AES-128算法在數(shù)據(jù)量為0~20、50~77時更容易被分析,而一旦數(shù)據(jù)量超過80,則該算法基本難以被攻擊.利用DPA仿真測試平臺,本文對AES-128算法進(jìn)行了6 000次仿真,其結(jié)果基本一致,即當(dāng)密鑰的數(shù)據(jù)位數(shù)超過80之后,DPA就難以獲取正確的密鑰信息.
在CPA仿真測試平臺上,使用相同的時鐘頻率和數(shù)據(jù)周期等參數(shù),本文也進(jìn)行了類似的測試和分析,得到了預(yù)測功耗與實際功耗之間的相關(guān)系數(shù)隨數(shù)據(jù)個數(shù)變化的曲線,結(jié)果如圖7所示.
圖7 相關(guān)系數(shù)與數(shù)據(jù)個數(shù)的關(guān)系圖
由圖7可知,在數(shù)據(jù)個數(shù)達(dá)到60之后,則其相關(guān)系數(shù)就趨近于0.利用CPA仿真測試平臺,本文對AES-128算法進(jìn)行了4 000次仿真,其統(tǒng)計結(jié)果大同小異,即當(dāng)密鑰的位數(shù)達(dá)到60之后,目前的攻擊模型便難以得到密鑰信息.
根據(jù)DPA和CPA的仿真測試結(jié)果可知,針對這兩種主流的功耗分析方法,AES-128算法的密鑰信息很難發(fā)生泄露,安全性較好.
針對嵌入式系統(tǒng)的安全問題,本文提出了AES-128算法的輕量實現(xiàn)方案,并對該方案進(jìn)行了功耗的仿真測試.測試結(jié)果表明,AES-128算法具有較好的安全性,但本文還未對該方案進(jìn)行其他分析方法的測試和攻擊,該實現(xiàn)方案可能存在一些未知的安全隱患,所以,如何繼續(xù)優(yōu)化AES-128算法的實現(xiàn)方案將是未來研究的方向.