国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

針對AES加密算法的安全檢測

2022-05-30 04:29何利文國海輪
關(guān)鍵詞:漢明明文加密算法

何利文,安 聰,國海輪

(南京郵電大學(xué),江蘇 南京 210003)

0 引 言

近年來,信息安全問題日益突出,已成為人類共同面臨的挑戰(zhàn),側(cè)信道攻擊對信息安全構(gòu)成了巨大的威脅。密碼芯片在工作過程中不可避免地會產(chǎn)生時(shí)間、功耗、電磁輻射等旁道信息[1]。這些信息與芯片內(nèi)部的數(shù)據(jù)和操作有關(guān)。因此,側(cè)信道信息可用于攻擊密碼芯片。利用側(cè)信道信息破解密文信息的方法最早由Kocher于1996年提出,隨后逐漸發(fā)現(xiàn)了差分功耗分析(DPA)、相關(guān)功耗分析(CPA)等側(cè)信道攻擊方法[2]。目前,已經(jīng)成功地在許多設(shè)備上實(shí)現(xiàn)了多種側(cè)信道攻擊[3]。

差分功耗分析(differential power analysis,DPA)[4]可以從功耗曲線微小的差分信號分析出所需的關(guān)鍵信息,但需要采集大量的信息,并采集多組功耗曲線以及每條曲線對應(yīng)的明文、密文記錄,通常需要很強(qiáng)的分析經(jīng)驗(yàn)和較長時(shí)間的分析運(yùn)算,對分析平臺的設(shè)備要求也比較高。而相關(guān)功耗分析(correlation power analysis,CPA)[5]是選擇一個(gè)未知但是恒定的參考態(tài),建立一個(gè)具有數(shù)據(jù)相關(guān)性的漢明模型,利用功耗樣點(diǎn)與被處理數(shù)據(jù)的漢明權(quán)重之間的相關(guān)因子進(jìn)行分析。因此CPA攻擊的準(zhǔn)確性要比DPA高很多。

1 背景介紹

1.1 高級加密標(biāo)準(zhǔn)

高級加密標(biāo)準(zhǔn)[6](advanced encryption standard,AES)是最常見的對稱加密算法,加解密使用相同的密鑰,可以在不同的平臺上實(shí)現(xiàn):

明文(p),可理解的消息或數(shù)據(jù),機(jī)密算法的輸入,解密算法的輸出。AES-128的明文長度為128位。

密鑰(k),在將明文轉(zhuǎn)換為密文或者將密文轉(zhuǎn)換為明文算法中輸入的數(shù)據(jù)。AES-128的密鑰長度為128位。

輪數(shù)(r),AES-128的加密輪數(shù)為10輪。

其中AES-128加密算法由10輪組成,每一輪使用一個(gè)由原始密鑰產(chǎn)生的密鑰。每一輪由四個(gè)基本步驟組成:字節(jié)替換、行移位、列混合變幻、輪密鑰加密變換。

密文(c),加密算法的輸出,解密算法的輸入,其依賴于明文和密鑰。AES-128的密文長度為128位。

1.2 相關(guān)功耗分析(CPA)

相關(guān)系數(shù)攻擊模型是經(jīng)典差分攻擊的一個(gè)延伸[7],它選擇一個(gè)未知但是恒定的參考態(tài),建立一個(gè)具有數(shù)據(jù)相關(guān)性的漢明模型,利用功耗樣點(diǎn)與被處理數(shù)據(jù)的漢明權(quán)重之間的相關(guān)性因子進(jìn)行分析。其主要思路是攻擊者已知明文,并可變化明文并采集相應(yīng)的功耗曲線。攻擊者猜測密鑰,根據(jù)明文和密鑰計(jì)算出某中間變量[8]。以中間變量的漢明權(quán)重(邏輯1的個(gè)數(shù))和功耗的相關(guān)系數(shù)做分析,相關(guān)系數(shù)最高的即猜測正確的密鑰。否則由于錯(cuò)誤的密鑰,導(dǎo)致中間變量必然與功耗沒有預(yù)期的正比關(guān)系。這種分析是以功耗與處理的1的個(gè)數(shù)成正比為理論前提的,由芯片原理可知[9]:功耗是與邏輯門輸出的0、1的轉(zhuǎn)換次數(shù)(漢明距)成正比的,而不是與處理的1(漢明權(quán)重)的個(gè)數(shù)成正比。

1.3 側(cè)信道分析攻擊

側(cè)信道分析攻擊技術(shù)是相對于傳統(tǒng)意義上基于通信的密碼分析而言的。傳統(tǒng)的密碼分析是通過對密碼處理器的算法進(jìn)行破解分析,并對輸入輸出等數(shù)據(jù)輔之以監(jiān)聽等手段,在流程內(nèi)實(shí)現(xiàn)攻擊[10]。側(cè)信道分析攻擊技術(shù)的對象則是密碼處理器的實(shí)現(xiàn),即不是對加解密數(shù)據(jù)本身分析,而是對加解密過程中的時(shí)序、功耗等其他信道的信息進(jìn)行分析,從而得到密鑰等敏感信息[11]。

和傳統(tǒng)的密碼分析相比,側(cè)信道分析攻擊技術(shù)有成本上的優(yōu)勢。密碼分析雖然通過一些分析方法可降低密碼破解的強(qiáng)度,即縮小窮舉密鑰的空間,但目前通常采取的延長密鑰位的辦法可使實(shí)現(xiàn)窮舉攻擊需要的時(shí)間遠(yuǎn)遠(yuǎn)長于密鑰的生存期。側(cè)信道分析攻擊技術(shù)的破解效率與密鑰長度無關(guān)或只是線性相關(guān),而非傳統(tǒng)密碼分析中,其效率與密鑰長度的冪相關(guān)。若集成電路沒有保護(hù)措施,那么側(cè)信道分析攻擊技術(shù)可能僅需很小的代價(jià)就能得到密鑰。

1.4 ChipWhisperer

ChipWhisperer[12]是一種開源工具鏈,使學(xué)習(xí)側(cè)信道攻擊變得簡單。它還充當(dāng)一個(gè)平臺,以有據(jù)可查、經(jīng)濟(jì)高效且可重復(fù)的方式執(zhí)行側(cè)信道研究。ChipWhisperer主要側(cè)重于電源分析攻擊以及電壓和時(shí)鐘故障,這些故障會中斷設(shè)備的電源或時(shí)鐘信號,從而導(dǎo)致意外行為。

1.5 Jupyter Notebook

Jupyter Notebook是基于網(wǎng)頁的用于交互計(jì)算的應(yīng)用程序。其可被應(yīng)用于全過程計(jì)算:開發(fā)、文檔編寫、運(yùn)行代碼和展示結(jié)果[13]。Jupyter Notebook是以網(wǎng)頁的形式打開,可以在網(wǎng)頁頁面中直接編寫代碼和運(yùn)行代碼,代碼的運(yùn)行結(jié)果也會直接在代碼塊下顯示。如在編程過程中需要編寫說明文檔,可在同一個(gè)頁面中直接編寫,便于作及時(shí)的說明和解釋。同時(shí)Jupyter Notebook也支持python語言,ChipWhisperer的Version5就是使用的Jupyter Notebook。

2 CPA攻擊檢測算法安全性

2.1 CPA攻擊步驟

第一步:將密鑰分成16個(gè)子密鑰分別破解,每一子密鑰為一個(gè)字節(jié)[14]。首先考慮第一個(gè)子密鑰GuessKey的破解。根據(jù)能量跡隨機(jī)地選擇明文中的字節(jié)P1,P2,…,PN,將P輸入到目標(biāo)密碼算法的執(zhí)行單元。

第二步:猜測K的候選值,然后每遍歷一個(gè)值,參照AES的一輪加密過程,將其與明文P進(jìn)行異或得到X,異或之后再經(jīng)過S-BOX的字節(jié)替換即可得到用于求解漢明重量的輸入Y,求出Y的漢明重量后最終得到h的樣本值[15],如圖1所示。

第三步:計(jì)算V和h的person相關(guān)系數(shù)r(v,h),相關(guān)性最大的那個(gè)點(diǎn)就是S盒的輸出。

在CPA攻擊中,根據(jù)不同采樣點(diǎn)位置的電壓值與漢明重量的關(guān)系可以判斷正確和錯(cuò)誤密鑰[16],也就是有無明顯的尖峰。只需要對全部的位置都做相關(guān)系數(shù),然后找到最大值,這樣就找到了正確的密鑰,S盒的輸出位置也就找到了

圖1 樣本值h

2.2 CPA完整攻擊流程

高級加密標(biāo)準(zhǔn)是最常見的對稱加密算法,加解密使用相同的密鑰,可以在不同的平臺上實(shí)現(xiàn)。

CPA完整攻擊流程[17]程序的主體是兩個(gè)循環(huán),隨機(jī)選擇明文P1,P2,…,PN,采集加密規(guī)程中的能量跡:電壓V,每條能量跡上有M個(gè)采樣點(diǎn)。

For byte = 1∶16//外部循環(huán):循環(huán)猜測16個(gè)byte的密鑰;

ForK= 0∶255 //內(nèi)部循環(huán):每個(gè)猜測的密鑰共有256種可能需要將其從0遍歷到255;

H=HW(Sbox(Pbyte⊕K))//猜測密鑰與明文異或,經(jīng)過S盒處理后計(jì)算漢明重量,Pbyte表示各PN的第byte個(gè)字節(jié)[18];

Form= 1∶M//計(jì)算每個(gè)采樣點(diǎn)的person相關(guān)系數(shù);

V=Vm//Vm各能量跡V的第m個(gè)采樣點(diǎn);

Corr(K)=r(V,h)Rightkeybyte = find(max (corr))//取相關(guān)系數(shù)最大的值。

3 ChipWhisperer使用CPA檢測AES-128加密算法

3.1 捕獲部分

首先在命令行下啟動Jupyter Notebook,啟動成功后可以在網(wǎng)頁上打開。在Jupyter Notebook下找到ChipWhisperer的項(xiàng)目位置,打開ChipWhisperer里面的CPA攻擊腳本,這個(gè)腳本里的內(nèi)容是CW預(yù)設(shè)的一些參數(shù)和攻擊步驟,需要根據(jù)攻擊環(huán)境進(jìn)行更改。

在CPA的攻擊腳本中,需要修改PLATFORM的值,這個(gè)值是根據(jù)目標(biāo)板的種類修改的,本實(shí)驗(yàn)使用的是CW303的目標(biāo)板,因此需要把PLATFORM的值改為PLATFORM='CW303'。

ChipWhisperer的連接是寫在腳本Setup_Generic.ipynb中的,里面含有一些參數(shù)的設(shè)置,例如:PLATFORM值、間隔時(shí)間、時(shí)鐘頻率等。如果要在攻擊腳本里進(jìn)行連接,需要運(yùn)行這個(gè)腳本進(jìn)行連接。但是單獨(dú)運(yùn)行其他的腳本會使實(shí)驗(yàn)結(jié)構(gòu)復(fù)雜化,每次調(diào)試都要去重啟它,增加實(shí)驗(yàn)的難度,本實(shí)驗(yàn)利用run命令在攻擊腳本中直接調(diào)用Setup_Generic.ipynb連接設(shè)備,避免了每次調(diào)試都需要單獨(dú)連接設(shè)備。

本實(shí)驗(yàn)使用XMEGA目標(biāo)進(jìn)行實(shí)驗(yàn),XMEGA目標(biāo)需要對XMEGA進(jìn)行編程,XMEGA編程需要首先將XMEGA設(shè)備里的內(nèi)容清空,然后重新寫入需要的內(nèi)容[19],成功寫入后并給出提示。

成功連接并確認(rèn)內(nèi)容已編程到XMEGA設(shè)備中,就可以捕獲目標(biāo)的能量跡了。為了更好地展示能量跡的捕獲進(jìn)程,該文利用python里面的tqdm模塊,構(gòu)建進(jìn)度條[20]。因此從運(yùn)行結(jié)果中可以看到捕獲能量跡的進(jìn)度,成功運(yùn)行后還需要把捕獲到的能量跡保存下來。本實(shí)驗(yàn)統(tǒng)一把能量跡保存在project下,方便后續(xù)的使用。

本實(shí)驗(yàn)使用Python中的holoviewsSuJu數(shù)據(jù)分析/可視化庫具有快速生成交互性和高維可視化非常適合于數(shù)據(jù)的交互式探索的特點(diǎn),利用其功能對捕獲到的能量跡進(jìn)行制作[21],以采樣點(diǎn)位5 000為例,捕獲到的能量跡如圖2所示。

圖2 捕獲能量跡

3.2 分析部分

計(jì)算相關(guān)性之前需要獲取一個(gè)字節(jié)的輸入和一個(gè)字節(jié)的猜測密鑰,并且返回S-Box的輸出,根據(jù)猜測密鑰計(jì)算其漢明權(quán)重,利用下面的公式:

HW=[bin(n).count(″1″) fornin range(0,256)]

來計(jì)算漢明權(quán)重。

首先是計(jì)算相關(guān)性問題。Personal相關(guān)系數(shù)[22](皮爾遜相關(guān)系數(shù))的計(jì)算方法如下:

根據(jù)皮爾遜相關(guān)系數(shù)的計(jì)算方法可以得到每個(gè)猜測密鑰的相關(guān)性,利用這些相關(guān)性可以找出那些猜測密鑰符合捕捉到的能量軌跡。對于相關(guān)系數(shù)而言,只需要關(guān)注其絕對值[23](即存在線性相關(guān)性),而不關(guān)心符號。此外,雖然沒考慮到相關(guān)性的計(jì)算,但是每條記錄的trace實(shí)際上是由一堆樣本點(diǎn)組成的,這意味著實(shí)驗(yàn)實(shí)際擁有的是每個(gè)子猜測密鑰與每個(gè)樣本點(diǎn)的相關(guān)性[24]。通常只有跟蹤中的幾個(gè)點(diǎn)是相關(guān)的,它是需要關(guān)注的整個(gè)跟蹤中的最大值,因此本實(shí)驗(yàn)通過獲取最大值的方式選擇每個(gè)子猜測密鑰的相關(guān)性。最后,通過找到相關(guān)性最大的子猜測密鑰確定與數(shù)據(jù)最匹配的子猜測密鑰[25]。

經(jīng)過以上部分計(jì)算皮爾遜相關(guān)系數(shù)并得出相關(guān)性最大的猜測子密鑰,本實(shí)驗(yàn)將這些猜測子密鑰存在results中,利用print函數(shù)可以輸出這些猜測子密鑰,輸出的內(nèi)容為最大猜測子密鑰的值以及相關(guān)系數(shù)的值。本實(shí)驗(yàn)還使用python里面的pandas庫,更好地在數(shù)據(jù)幀中輸出它們[26]。

除此之外,還使用style方法來進(jìn)一步刻畫它,使它可以鏈接格式化函數(shù)。例如,由于猜測密鑰是從0-255,因此有很多相關(guān)性很小甚至無限趨近于0的數(shù)據(jù),可以刪除多余的0并清理數(shù)據(jù)。本實(shí)驗(yàn)更進(jìn)一步地對得到的密鑰進(jìn)行處理,如輸出不同顏色的密鑰,并把正確密鑰用紅色輸出且在表格的最頂部。這樣,就完成了對AES-128的CPA攻擊。

4 相關(guān)系數(shù)方法的改進(jìn)

相關(guān)函數(shù)的實(shí)現(xiàn)可以作為一個(gè)遍歷所有跟蹤的循環(huán)運(yùn)行。理想情況下,希望將相關(guān)系數(shù)作為一種“在線”計(jì)算。為了實(shí)現(xiàn)這種“在線”計(jì)算,可以添加一個(gè)跟蹤,觀察輸出,再添加另一個(gè)跟蹤,觀察輸出[27]。當(dāng)生成部分猜測熵(PGE)與軌跡數(shù)量的圖時(shí),這是非??扇〉模绻麤]有這種輸出的存儲方法,在得到最后的結(jié)果時(shí)需要多次運(yùn)行循環(huán),這些循環(huán)是用來計(jì)算不同階段的輸出[28]。

根據(jù)上面這種情況,可以使用相關(guān)方程的另一種形式,它會顯式地存儲變量的和,這更容易執(zhí)行在線計(jì)算。它把每次添加跟蹤得到的結(jié)果保存起來,當(dāng)添加新的跟蹤時(shí),根據(jù)之前存儲的計(jì)算結(jié)果,很容易更新這些總和,而不需要循環(huán)地運(yùn)行之前得到的計(jì)算結(jié)果[29]。

下面兩個(gè)公式就是改進(jìn)后顯式的存儲變量的和。

5 實(shí)驗(yàn)結(jié)果分析

通過捕獲到的能量跡上的采樣點(diǎn)設(shè)置猜測密鑰,計(jì)算各個(gè)明文在猜測密鑰下的S和輸出得到的樣本值,并利用能量跡和樣本值計(jì)算相關(guān)系數(shù)。實(shí)驗(yàn)成功破解出AES的16組密鑰,如圖3和圖4所示。

(a)前8組

(b)后8組圖3 密鑰

(a)前8組

(b)后8組圖4 密鑰

CPA破解密鑰的成功率與能量跡的條數(shù)和采樣點(diǎn)的個(gè)數(shù)有很大的關(guān)系,實(shí)驗(yàn)首先固定能量跡的數(shù)量對采樣點(diǎn)的數(shù)量進(jìn)行修改,得到圖4(3 000采樣點(diǎn))和圖5(4 000采樣點(diǎn))的密鑰破解結(jié)果。

(a)前8組

(b)后8組圖5 密鑰

固定能量跡的條數(shù)以及調(diào)整采樣點(diǎn)的大小反復(fù)實(shí)驗(yàn),最終得到采樣點(diǎn)與成功率之間的關(guān)系圖。根據(jù)實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),在采樣點(diǎn)數(shù)量為0到5 000之間時(shí),成功率會隨著采樣點(diǎn)數(shù)量的增加而增加,超過5 000之后,成功率基本處于平穩(wěn)狀態(tài),如圖6所示。

圖6 采樣點(diǎn)個(gè)數(shù)和密鑰破解成功率

固定最佳采樣點(diǎn)5 000,調(diào)整能量跡的條數(shù),每次增加5條能量跡,實(shí)驗(yàn)得到具體的密鑰破解結(jié)果如圖7(20條能量跡)和圖8(25條能量跡)。

(a)前8組

(b)后8組圖7 密鑰

(a)前8組

(b)后8組圖8 密鑰

實(shí)驗(yàn)中固定采樣點(diǎn)的大小以及調(diào)整能量跡的條數(shù)實(shí)驗(yàn),最終得到能量跡與成功率之間的關(guān)系圖。根據(jù)實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),在采樣點(diǎn)數(shù)量為0到30之間時(shí),成功率會隨著采樣點(diǎn)數(shù)量的增加而增加,超過30之后,成功率處于平穩(wěn)狀態(tài),如圖9所示。

圖9 能量跡條數(shù)和密鑰破解成功率

CPA攻擊的成功率正常情況下會隨著采樣點(diǎn)和能量跡數(shù)量的增加而增加,但同時(shí)運(yùn)算速度也會下降,本實(shí)驗(yàn)在保證成功率的同時(shí)提高了運(yùn)算速度,采用不同的采樣點(diǎn)和能量跡進(jìn)行反復(fù)實(shí)驗(yàn),最終得到能量跡為30條、采樣點(diǎn)位5 000時(shí),CPA對AES的密鑰破解情況最好,此時(shí)幾乎可以達(dá)到100%的密鑰破解率,再增加數(shù)量就會導(dǎo)致運(yùn)算速度降低。

6 結(jié)束語

隨著信息化水平的不斷提高,AES加密算法的安全問題尤為重要。雖然AES加密算法可以防御一些基本的攻擊方式,但針對側(cè)信道攻擊的防御還是較為薄弱的。該文針對AES-128加密算法實(shí)施了相關(guān)功耗分析攻擊,并成功破解了128位完整的密鑰。攻擊過程中使用ChipWhisperer成功捕獲了功耗曲線,通過計(jì)算漢明權(quán)重,得出了功耗數(shù)據(jù)的相關(guān)系數(shù),并推測密鑰是否正確。實(shí)驗(yàn)結(jié)果表明,對AES-128加密算法的破解成功率達(dá)到了90%以上。AES-128加密算法容易受到相關(guān)功耗分析的攻擊,因此,在實(shí)際中使用AES加密算法時(shí)需要考慮芯片的安全測試,增加芯片抗側(cè)信道攻擊的防護(hù)。

猜你喜歡
漢明明文加密算法
奇怪的處罰
教育云平臺的敏感信息保護(hù)技術(shù)研究
一種改進(jìn)的加密算法在空調(diào)群控系統(tǒng)中的研究與實(shí)現(xiàn)
基于Jave的AES加密算法的實(shí)現(xiàn)
奇怪的處罰
媳婦管錢
奇怪的處罰
AES加密算法的實(shí)現(xiàn)及應(yīng)用
一種新的計(jì)算漢明距方法