何利文,國海輪,安 聰
(南京郵電大學,江蘇 南京 210000)
隨著信息的快速發(fā)展,信息的智能化對大家的生活有很大影響,同時信息安全方面衍生出很多缺陷。密碼有關(guān)的設(shè)備安全變得尤為重要,密碼技術(shù)在生活中到處可見。這些技術(shù)對終端設(shè)備產(chǎn)生巨大威脅。側(cè)信道攻擊[1]起源于20世紀末。1996年,P. Kocher等提出了Timing Attack,運用此項技術(shù)攻破了RSA公鑰體系、Diffie-Hellman密鑰交換協(xié)議的加密系統(tǒng)。該方法通過分析時間的信息泄露來得出密鑰,是出現(xiàn)的最早的SCA攻擊。隨著技術(shù)的發(fā)展,近幾年將人工智能技術(shù)應(yīng)用到側(cè)信道攻擊里面,增強了側(cè)信道攻擊的破解效率,節(jié)省了更多人力物力。在攻擊方面有很多的對抗側(cè)信道的方法,包括硬件方面和軟件方面。硬件方面比如重新對電路的邏輯單元進行設(shè)計;算法方面的話主要是加入隨機掩碼,使真實功耗和理論功耗相關(guān)性變?nèi)?。機器學習的發(fā)展對側(cè)信道起到了重要作用,因此該文首先介紹側(cè)信道的發(fā)展;然后介紹其分類,先對其進行整體分類,再根據(jù)不同的指標對其進行詳細的分類說明;接著介紹側(cè)信道攻擊在人工智能方面的應(yīng)用,包括結(jié)合深度學習還有機器學習等,還分析了各種模型成功率還有經(jīng)典模型和人工智能模型的對比。
側(cè)信道分析(side-channel analysis,SCA):通過加密軟件或硬件運行時產(chǎn)生的各種泄漏信息獲取密文信息。
1997年,D. Boneh等[2]最先提出了Fault Attack。主要思想是采用物理手段,攻擊加密設(shè)備,讓它運行的時候出問題,最后根據(jù)錯誤的信息更改算法結(jié)構(gòu),然后對算法邏輯進行分析,最后得出密鑰。主要的物理方法有:電壓變化、光輻射、低溫、電磁輻射等。自此以后,故障攻擊有了新的進步,在攻擊范圍上做了優(yōu)化,使得范圍變大了。鑒于它的攻擊方式特殊,所以它逐漸成熟,通過不斷的發(fā)展,成為一項新技術(shù)。
之后兩年,P. Kocher等第一次將功耗攻擊的想法運用到側(cè)信道攻擊中。主要原理是:CPU執(zhí)行不同指令的時候會有不同的功耗特征,這是因為不同的指令觸發(fā)的半導體數(shù)量不同,有的指令還會訪問內(nèi)存、緩存等等,有的復雜的指令需要的時鐘周期(clock cycles)比別的指令要長,各種各樣的因素會導致不同的指令執(zhí)行的時候會產(chǎn)生不同的功耗特征。P. Kocher等在很多文獻中研究了關(guān)于智能卡功耗的內(nèi)容,最終總結(jié)出其中的系統(tǒng)不能抵抗功耗攻擊。根據(jù)功耗分析方法的不同,功耗攻擊主要有如下兩類:
和系統(tǒng)有關(guān)的能量消耗和處理器的執(zhí)行不同的命令有關(guān)聯(lián),算法的不同模塊對應(yīng)的能量消耗也不一樣。正因為這個原因,攻擊者可以猜測出對應(yīng)的命令,最終破解密碼。稱為簡單功耗分析[3],另一類經(jīng)過大量數(shù)據(jù)曲線分析,最后而得出密鑰,包括差分功耗、相關(guān)系數(shù)功耗[4]、方差功耗分析,這些方法都屬于這一類攻擊范疇。CPA有很多優(yōu)點:如容易操作,效果顯著,所以大家都比較青睞這種方法,慢慢的成為一種很常見的功耗方法。功耗分析方法在AES、DES、RSA這幾種加密方法中的應(yīng)用是比較成熟的。
21世紀,側(cè)信道攻擊技術(shù)有了新的發(fā)展,然而側(cè)信道信息收集設(shè)備也隨之發(fā)展起來,產(chǎn)生了新類型的攻擊方法:Electromagnetic Analysis。這種分析方法通過采集加密時產(chǎn)生的電磁輻射來分析出密鑰,優(yōu)點:噪音小、效果顯著。
2002年,C. Suresh等[5]提出了Template Attack。模板的思想首次被使用,對密鑰經(jīng)過模擬收集,創(chuàng)建功耗曲線數(shù)據(jù)庫,接下來讓真實的功耗曲線和數(shù)據(jù)庫中的比較,根據(jù)最相似的分析出密鑰。這種思想的優(yōu)點是需要真實功耗曲線量少,在效率方面也很高。
2004年Eric Brier等[6]在CHES會議上提出了CPA;2008年大會決定DPA比賽,第一屆比賽由法國舉辦,這次比賽為相關(guān)的技術(shù)提供了一個平臺。
最近側(cè)信道在很多方向有進一步的探索發(fā)現(xiàn),主要有以下方面:
(1)信息預處理。
在收集相關(guān)信息的時候,如果不是很準確或者噪聲太多,會對最后成功率有很大影響。
所以只有收集到準確的側(cè)信道信息才能更快地得到密鑰。然而實際操作中有很多不是想獲取的信息比如噪音等,結(jié)果會導致曲線和時間對不齊,最終不能得出密鑰。這就需要在正式開始前對收集的信息進行處理。Jip Hogenboom等[7]在2010年提出了一種數(shù)學方面的統(tǒng)計方法─主成分分析,這種方法對最開始收集的曲線信息進行處理,處理完后降低曲線維度,提高了攻擊效率。
(2)模型分析。CPA的思想最早在2004年被提出,它通過計算真實功耗和理論功耗的相關(guān)性,分析出密鑰。后面對這種方法的研究比較重視。2009年,Emmanuel Prouff等[8]提出了互信息分析方法,這種方法主要是通過分析真實功耗和理論功耗的互信息,破解密鑰;Yuichi Komano等提出了BS-CPA方法,其在分析的時候是通過不斷迭代來實現(xiàn)的,每次得出一個子密鑰,這樣就可以帶入下一輪然后進行分析,最終能使信噪比有所降低;2010年,Youssef Souissi等人構(gòu)建了主成分分析法的一個新應(yīng)用模式,正確密鑰區(qū)分器。
(3)高階功耗。研究者對側(cè)信道攻擊做了深入研究,提出了很多關(guān)于抗側(cè)信道的方法,比較有名的是高級功耗方面的進展。
(4)復合式攻擊。這種方法是一種將好多種方法柔和在一起的方式。有密碼學和側(cè)信道攻擊的結(jié)合;不同類型SCA方法的結(jié)合;蔡澤明等[9]在2014年提出了一種新的基于代數(shù)表達式功耗模型的差分功耗分析攻擊方法,對功耗曲線樣本量由以前的很多到現(xiàn)在只需少量,而且沒有增加時間復雜度,提高了攻擊效率。
側(cè)信道分析方法可以分為四大類[10]:簡單側(cè)信道分析(simple side-channel analysis,SSCA)、差分側(cè)信道分析(different side-channel analysis)、相關(guān)側(cè)信道分析(correlation side-channel analysis,CSCA)等。
側(cè)信道攻擊有兩種分類:
第一種攻擊可以根據(jù)是否對芯片造成物理損壞,分為入侵、非入侵、半入侵三類。入侵方法是對內(nèi)部設(shè)計進行了解,之后采取措施。例如,檢測芯片內(nèi)部互聯(lián)線的數(shù)據(jù)變化,或者直接讀內(nèi)存的內(nèi)容。包括探測攻擊(probing attack)、逆向版圖提取分析(reverse engineering, layout extraction and analysis)。非入侵攻擊不需要解剖芯片而是通過檢測芯片工作時從外部表現(xiàn)出的特征進行分析,包括運行時間(timing)、電流(current)、電磁輻射等。Skorobogatov和Anderson發(fā)明了半入侵攻擊:需要了解芯片內(nèi)部信息,但是不用都拆開,也不用操作金屬表面。
第二種攻擊根據(jù)是否干擾芯片正常運行分類有主動和被動兩種。第一類主要是通過讓設(shè)備不能正常運行,最常見的就是故障攻擊了。第二類就是我們比較熟悉的簡單、差分等功耗方法。
還有一些常用的能量攻擊,如簡單功耗攻擊、差分功耗[11]攻擊、CPA(connection power analysis)攻擊和模板攻擊[12]等。
SPA攻擊(簡單功耗分析):設(shè)備的功耗和算法執(zhí)行的不同指令有關(guān)。在加密算法運行的時候,采集芯片功耗,然后通過推斷可以猜測到數(shù)據(jù)命令和操作的關(guān)系,進而分析出密鑰。通過這種攻擊方法獲得密鑰,需要對芯片設(shè)備足夠了解,才能判斷所對應(yīng)的操作進而發(fā)現(xiàn)特征。對于算法加密細節(jié),這種方法效果更好,比如數(shù)據(jù)加密標準和公鑰加密。SPA顯示了乘法和平方運算的差異,所以能用于恢復RSA的密鑰。SPA還能得出DES算法實現(xiàn)中的置換和移位產(chǎn)生的能量差異,最后得出DES算法的密鑰。這種方法有一個缺點就是,當防御技術(shù)變強的時候,比較難破解,必須結(jié)合別的方法進行攻破。
DPA:加密設(shè)備在運行的時候會有不同的命令被執(zhí)行,每個命令產(chǎn)生的功率也會相應(yīng)變化,可以用特殊的儀器和一些數(shù)學方法來分析這些信息。它是通過電流的前后變化來進行分析的,和上面一種攻擊方法不一樣,這種方法不要求對設(shè)備很了解,但要收集很多更好的曲線來分析。當實際操作時要有加密設(shè)備,實際上收集的曲線有很多噪聲,主要有內(nèi)、外部噪聲,算法噪聲[13]。與功耗能量相比,本征和量化噪聲很小,當然也有減少噪聲的方法,比如使用測量設(shè)備;DPA策略能有效減少算法方面產(chǎn)生的噪聲。
當然也可以通過增加功耗曲線數(shù)減少DPA中產(chǎn)生的噪聲,既可以在時域進行也可以在頻域來分析。主要是通過電流電壓的變化分析出最終密鑰。
CPA:在DPA上進行了一定的優(yōu)化,當然也是要提前猜測密鑰的,之后計算理論功耗和實際功耗的相關(guān)性,后面就是對所有猜想進行同樣計算,如果存在一條曲線,在某時的相關(guān)系數(shù)比別的要高,此條曲線對應(yīng)的就是正確密鑰。
模板攻擊:通過計算兩者的相關(guān)值來驗證猜測密鑰的正確性,最后得出密鑰。CPA是常用的功耗攻擊方法。模板攻擊和功耗攻擊不同,它需要攻擊者準備一個設(shè)備,該設(shè)備應(yīng)該和被攻擊設(shè)備相似,用它來采集功耗,之后提取特征,最后構(gòu)建模板。它和機器學習模型訓練差不多。之后就能進行模板匹配了,多數(shù)情況下一次只能得到部分密鑰。對于使用漢明重量這種模型,需要很多能量跡的從而減少密鑰空間,最后得出密鑰。
最近幾年也興起了一些較新奇的SCA方法。碰撞攻擊利用不同明文產(chǎn)生碰撞,進行關(guān)系推導,最后得出密鑰。隨后人們將密碼學與SCA結(jié)合,提出了代數(shù)側(cè)信道分析,把兩者的優(yōu)點結(jié)合,使SCA攻擊范圍變大。攻擊方法越來越成熟,大家對密碼設(shè)備很重視,有很多防御方面的技術(shù)被提出,例如在算法執(zhí)行時加入時延、對加密過程中的中間值加入掩碼。攻擊方法也出現(xiàn)了很多,針對加入時延的可以采用傅里葉變換,對于加入掩碼的可以用高階DPA[14]。
近年來,基于深度學習的SCA吸引了許多研究者。Maghrebi等人在2016年首次將深度學習應(yīng)用于側(cè)信道攻擊。2017年,Cagli等人[15]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的建模類攻擊方法,這種方法對軌跡要求很低,可以不預先進行處理,對特征點的選取要求也不高。而且他們將數(shù)據(jù)增強的方法運用到CNN中,提高了網(wǎng)絡(luò)的性能。2019年,Robyns等人提出了一種新的相關(guān)優(yōu)化方法,這種方法在電磁軌跡[16]中選擇有用的泄漏樣本,然后將它看作是優(yōu)化問題,然后進一步改進該方法。
機器學習[17]已經(jīng)運用到能量分析中,且成效很好,對側(cè)信道有深遠影響。再后面,深度學習開始和密碼學相結(jié)合,為側(cè)信道攻擊提供了新思路。機器學習在信號多分類上和深度學習是有區(qū)別的:是否需要人的參與。
神經(jīng)網(wǎng)絡(luò)是人工智能研究領(lǐng)域的一部分,現(xiàn)在流行的是深度卷積神經(jīng)網(wǎng)絡(luò),雖然卷積網(wǎng)絡(luò)存在淺層結(jié)構(gòu),但因為準確度等一些原因,很少使用。學術(shù)界和工業(yè)界說的CNN和CNNs一般都是深層的。它可以從大規(guī)模數(shù)據(jù)里面學習,可以把結(jié)果向同類型數(shù)據(jù)泛化。它包含卷積層、池化層,在圖像處理領(lǐng)域有不錯的效果。CNN有一個很好的特性就是平移不變,因為它使用了二種方法,池化和權(quán)重共享。所以它在訓練功耗曲線時,如果存在曲線沒有對齊的情況,它也能很好的學習和訓練。
深度學習[18]慢慢地滲入側(cè)信道技術(shù)中,對解決側(cè)信道方面的技術(shù)問題提供了新思路。Template attack[19]介紹了一種新型類模板攻擊方法,主要用了深度學習的思想,搭建卷積神經(jīng)網(wǎng)絡(luò)之后對模型驗證。第一種是沒有加掩碼的AES的功耗信息,第二種是加入隨機掩碼的AES的信息。將SVM攻擊和第一種卷積神經(jīng)網(wǎng)絡(luò)作比較發(fā)現(xiàn),SVM的成功率是較高的,但是時間復雜度也相應(yīng)提高了。比基于CNN模型高幾百倍。圖1是CNN模型對RSM掩碼方案[20]的破解,以offset值為假設(shè)中間值計算與功耗曲線相關(guān)系數(shù),選擇那種相關(guān)系數(shù)高的特征點,使用CNN多分類模型把Offset功耗曲線值分成16類。將數(shù)據(jù)集分為測試和訓練兩種。
圖1 Offset值與功耗曲線的關(guān)系
文獻[21]公開了一組具有不同程度抖動防御的側(cè)信道數(shù)據(jù)集ASCAD。該數(shù)據(jù)集是AES加掩碼算法實現(xiàn)的一種電磁信號泄露數(shù)據(jù)。
它選用沒有加入掩碼的S盒的輸出為攻擊點,之后對感知器和CNN做了完整測試。
其采用的方法是通過實驗對比逐一發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)超參數(shù)的最佳值,在每一個超參數(shù)尋優(yōu)的實驗研究中,其余超參數(shù)均保持不變。但神經(jīng)網(wǎng)絡(luò)超參數(shù)很難找,是因為超參數(shù)的最佳會受到別的超參數(shù)的影響,不存在獨立的最佳超參數(shù)。只有對所有的參數(shù)進行遍歷才能發(fā)現(xiàn)最合適的組合,因為超參數(shù)很多所以實驗的代價是非常大的。事實上,根據(jù)實驗研究,依據(jù)簡單的原則設(shè)計的卷積神經(jīng)網(wǎng)絡(luò)也會具有CNN-best的攻擊效果。
CNN-best結(jié)構(gòu):每一層的filte分別是64,128,256,512,512,每一層采用relu函數(shù)和平均化函數(shù)。它有很多參數(shù),在卷積神經(jīng)網(wǎng)絡(luò)里面,參數(shù)越多,越容易有過擬合的情況發(fā)生。過擬合是指訓練誤差和測試誤差之間有很大差距,換句話說就是模型復雜度高于實際問題,模型在訓練集上表現(xiàn)好,但在測試集上表現(xiàn)差。從側(cè)信道的各個研究方向來看,深度學習技術(shù)[18]在每個領(lǐng)域都有不錯的發(fā)展,尤其是和模板有關(guān)的在人工智能技術(shù)的引導下,后面又加入大數(shù)據(jù)分析,讓側(cè)信道可以發(fā)展得更好。這種模型建立類攻擊需要從設(shè)備中采集能量跡,這種設(shè)備必須和目標設(shè)備類似,這是CNN技術(shù)在側(cè)信道領(lǐng)域應(yīng)用的前提條件。多層感知機在運用到側(cè)信道領(lǐng)域后,基于神經(jīng)網(wǎng)絡(luò)的側(cè)信道攻擊方法出現(xiàn)了很多,部分側(cè)信道數(shù)據(jù)集也慢慢地在網(wǎng)絡(luò)上開放,使得基于深度學習的模板攻擊[22]發(fā)展迅速。目前,得益于卷積神經(jīng)網(wǎng)絡(luò)在能量跡足夠、特征數(shù)量多的前提下處理能力強,所以基于卷積神經(jīng)網(wǎng)絡(luò)側(cè)信道攻擊方面還是做了很多研究。但在能量跡預處理CNN方面的研究很少,盡管這方面研究很少,但文獻[23]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的能量跡預處理方案。它是利用Sinc卷積層和傳統(tǒng)卷積層構(gòu)建Sinc-CDAE[24],然后通過能量跡估計算法獲得足夠的數(shù)據(jù)來訓練。而且能量跡可以在自動濾波后獲取,這種方法在非失調(diào)能量跡上的攻擊效果是很好的。作為對比,實驗設(shè)計了一個具有4個卷積層,3個平均池化層和1個全連接隱層、1個輸出層的神經(jīng)網(wǎng)絡(luò)。該網(wǎng)絡(luò)參數(shù)數(shù)量只有 CNN-best的80%。證明驗證集精度與訓練集精度同步上升。
對于模板攻擊來說,傳統(tǒng)的模板攻擊有如下步驟:確定信息泄露位置還有提取相關(guān)信息。之后進行模板創(chuàng)建。選擇合適的模板。這種攻擊方法的成功率和創(chuàng)建模板的質(zhì)量有關(guān)系,當然還有一些別的因素如曲線數(shù)量也至關(guān)重要。選擇最合適的模板。
模型的分類成功率都是隨著功耗曲線的增多在不斷增長,因為模板不一樣,成功率波動也很大。PCA-SVM主要依賴于功耗曲線數(shù)目,而經(jīng)典模板攻擊的依賴較??;SVM多分類在前期對功耗曲線條數(shù)依賴性很大,當功耗曲線達到一定數(shù)量時,分類成功率相對穩(wěn)定;CNN模型對功耗曲線數(shù)的依賴情況和SVM基本相同??偨Y(jié)一下就是,信號特征和功耗曲線數(shù)目成正相關(guān),當然對于模板攻擊基本上沒影響。SVM模型在有些情況下達不到很好的效果,比如采集的功耗曲線比較少的時候,當然了如果數(shù)量足夠多,就和該因素相關(guān)性不是很大了。CNN模型和機器學習模型有相似的地方。
從表1可以看出,基于CNN的時間復雜度最小,SVM模型的是最大的。在特征點數(shù)目一樣的情況下,CNN所需時間和功耗曲線數(shù)都是比較少的,體現(xiàn)了它可以在少樣本情況下訓練出更好的模型。使用很少的參數(shù)就能代表高級的函數(shù),這是多層的優(yōu)點。CNN的本質(zhì)是一個多層復合函數(shù),和普通的神經(jīng)網(wǎng)絡(luò)不同的是它的某些權(quán)重參數(shù)是共享的,訓練時依然采用反向傳播算法來學習更有用的特征,從而提升了分類的準確性。
表1 CNN攻擊方法和其他方法的對比
如圖2所示,卷積神經(jīng)網(wǎng)絡(luò)模型迭代大概50次的時候就可以達到模型最優(yōu)解。較傳統(tǒng)的模板攻擊和機器學習,這種模型在訓練的時候收斂速度比其他模型快,模型的時間和空間復雜度都比較低,所以對于高維度的數(shù)據(jù)集在處理方面有不錯的效果。
圖2 CNN模型損失函數(shù)和算法攻擊準確率
基于主成分分析特征提取的SVM分類,它的特征提取算法在時間和空間復雜度上都是優(yōu)于相關(guān)系數(shù)提取算法的。因為貝葉斯概率模型計算起來十分復雜,它的時間和空間復雜度也大,在實踐攻擊的時候效果不是很好。
深度學習應(yīng)用在側(cè)信道領(lǐng)域[25],是符合當前技術(shù)趨勢的,借助模型訓練,可以更好地進行攻擊,選擇最合適的攻擊方法,這方面的研究也越來越多。Houssem Maghrebi和Thibault Portigliatti等人的研究內(nèi)容主要是通過機器學習提出新的攻擊方法。但是他們的實驗是在具體的環(huán)境里面實現(xiàn)的,相比于傳統(tǒng)的模板攻擊機器學習方法還是不錯的。傳統(tǒng)模板攻擊在同樣情況下模板匹配準確率較低。這是因為其對功耗特征精確刻畫效果差,對功耗曲線的數(shù)量有很大依賴。因為各大高校和科研機構(gòu)對人工智能的貢獻,機器學習和深度學習這兩種技術(shù)在安全方向也越來越受歡迎。
該文對側(cè)信道攻擊技術(shù)進行了全面的分析,首先從其發(fā)展歷史開始介紹,闡述了其詳細發(fā)展過程及發(fā)展過程中的技術(shù)進步;對側(cè)信道攻擊技術(shù)有了一定了解之后,接下來對其分類,按照攻擊手段是否破壞物理損壞芯片,將其分為入侵、非入侵、半入侵三種;按照是否干擾芯片正常運行分類,將其分為主動(active)和被動(passive)兩種;最后闡述了側(cè)信道攻擊和人工智能的結(jié)合,基于深度學習的知識,結(jié)合算法優(yōu)化還有各種新的數(shù)據(jù)集的推出,讓側(cè)信道攻擊在破解加密算法方面效率更高。
機器學習算法和上述的模板分析有類似的地方,它們都由學習和測試構(gòu)成。在處理分類和回歸算法方面機器學習是比較有優(yōu)勢的,人工智能算法通過對數(shù)據(jù)訓練,通過訓練得出的結(jié)論來對接下來的數(shù)據(jù)處理,模板分析和這個過程是有點像的。
算法方面,大數(shù)據(jù)分析、機器學習甚至深度學習都是不錯的方法,從而建立更為有效的分析模型,可以為后面的進一步研究奠定基礎(chǔ)。在攻擊方面,在這個信息安全的時代,保護好個人信息也尤為重要,所以在對攻擊有研究的同時,也需要對防御方面采取一定措施,比如之前的固定值掩碼、RSM掩碼等都是保護加密算法不被側(cè)信道攻擊的,后面也希望有更多的防御方面的研究者投入這方面的研究,這將是一個新的方向。
信息安全是國家發(fā)展的后盾,所以,無論是軟件或硬件,都應(yīng)該對密碼算法進行優(yōu)化,使得信息被更好地保護。所以,不僅要在傳統(tǒng)密碼學方面做深入研究,更應(yīng)結(jié)合新技術(shù)如側(cè)信道來增強自身防御力。