• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      針對(duì)AES加密算法的安全檢測(cè)

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

      何利文,安 聰,國(guó)海輪

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

      0 引 言

      近年來(lái),信息安全問(wèn)題日益突出,已成為人類共同面臨的挑戰(zhàn),側(cè)信道攻擊對(duì)信息安全構(gòu)成了巨大的威脅。密碼芯片在工作過(guò)程中不可避免地會(huì)產(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]可以從功耗曲線微小的差分信號(hào)分析出所需的關(guān)鍵信息,但需要采集大量的信息,并采集多組功耗曲線以及每條曲線對(duì)應(yīng)的明文、密文記錄,通常需要很強(qiáng)的分析經(jīng)驗(yàn)和較長(zhǎng)時(shí)間的分析運(yùn)算,對(duì)分析平臺(tái)的設(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 高級(jí)加密標(biāo)準(zhǔn)

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

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

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

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

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

      密文(c),加密算法的輸出,解密算法的輸入,其依賴于明文和密鑰。AES-128的密文長(zhǎng)度為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)的功耗曲線。攻擊者猜測(cè)密鑰,根據(jù)明文和密鑰計(jì)算出某中間變量[8]。以中間變量的漢明權(quán)重(邏輯1的個(gè)數(shù))和功耗的相關(guān)系數(shù)做分析,相關(guān)系數(shù)最高的即猜測(cè)正確的密鑰。否則由于錯(cuò)誤的密鑰,導(dǎo)致中間變量必然與功耗沒(méi)有預(yù)期的正比關(guān)系。這種分析是以功耗與處理的1的個(gè)數(shù)成正比為理論前提的,由芯片原理可知[9]:功耗是與邏輯門(mén)輸出的0、1的轉(zhuǎn)換次數(shù)(漢明距)成正比的,而不是與處理的1(漢明權(quán)重)的個(gè)數(shù)成正比。

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

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

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

      1.4 ChipWhisperer

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

      1.5 Jupyter Notebook

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

      2 CPA攻擊檢測(cè)算法安全性

      2.1 CPA攻擊步驟

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

      第二步:猜測(cè)K的候選值,然后每遍歷一個(gè)值,參照AES的一輪加密過(guò)程,將其與明文P進(jìn)行異或得到X,異或之后再經(jīng)過(guò)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],也就是有無(wú)明顯的尖峰。只需要對(duì)全部的位置都做相關(guān)系數(shù),然后找到最大值,這樣就找到了正確的密鑰,S盒的輸出位置也就找到了

      圖1 樣本值h

      2.2 CPA完整攻擊流程

      高級(jí)加密標(biāo)準(zhǔn)是最常見(jiàn)的對(duì)稱加密算法,加解密使用相同的密鑰,可以在不同的平臺(tái)上實(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)猜測(cè)16個(gè)byte的密鑰;

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

      H=HW(Sbox(Pbyte⊕K))//猜測(cè)密鑰與明文異或,經(jīng)過(guò)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檢測(cè)AES-128加密算法

      3.1 捕獲部分

      首先在命令行下啟動(dòng)Jupyter Notebook,啟動(dòng)成功后可以在網(wǎng)頁(yè)上打開(kāi)。在Jupyter Notebook下找到ChipWhisperer的項(xiàng)目位置,打開(kāi)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的連接是寫(xiě)在腳本Setup_Generic.ipynb中的,里面含有一些參數(shù)的設(shè)置,例如:PLATFORM值、間隔時(shí)間、時(shí)鐘頻率等。如果要在攻擊腳本里進(jìn)行連接,需要運(yùn)行這個(gè)腳本進(jìn)行連接。但是單獨(dú)運(yùn)行其他的腳本會(huì)使實(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)需要對(duì)XMEGA進(jìn)行編程,XMEGA編程需要首先將XMEGA設(shè)備里的內(nèi)容清空,然后重新寫(xiě)入需要的內(nèi)容[19],成功寫(xiě)入后并給出提示。

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

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

      圖2 捕獲能量跡

      3.2 分析部分

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

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

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

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

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

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

      除此之外,還使用style方法來(lái)進(jìn)一步刻畫(huà)它,使它可以鏈接格式化函數(shù)。例如,由于猜測(cè)密鑰是從0-255,因此有很多相關(guān)性很小甚至無(wú)限趨近于0的數(shù)據(jù),可以刪除多余的0并清理數(shù)據(jù)。本實(shí)驗(yàn)更進(jìn)一步地對(duì)得到的密鑰進(jìn)行處理,如輸出不同顏色的密鑰,并把正確密鑰用紅色輸出且在表格的最頂部。這樣,就完成了對(duì)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)生成部分猜測(cè)熵(PGE)與軌跡數(shù)量的圖時(shí),這是非??扇〉模绻麤](méi)有這種輸出的存儲(chǔ)方法,在得到最后的結(jié)果時(shí)需要多次運(yùn)行循環(huán),這些循環(huán)是用來(lái)計(jì)算不同階段的輸出[28]。

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

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

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

      通過(guò)捕獲到的能量跡上的采樣點(diǎn)設(shè)置猜測(cè)密鑰,計(jì)算各個(gè)明文在猜測(cè)密鑰下的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ù)量對(duì)采樣點(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í),成功率會(huì)隨著采樣點(diǎn)數(shù)量的增加而增加,超過(guò)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í),成功率會(huì)隨著采樣點(diǎn)數(shù)量的增加而增加,超過(guò)30之后,成功率處于平穩(wěn)狀態(tài),如圖9所示。

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

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

      6 結(jié)束語(yǔ)

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

      猜你喜歡
      漢明明文加密算法
      奇怪的處罰
      奇怪的處罰
      媳婦管錢(qián)
      基于小波變換和混沌映射的圖像加密算法
      四部委明文反對(duì)垃圾焚燒低價(jià)競(jìng)爭(zhēng)
      中年研究
      Hill加密算法的改進(jìn)
      漢明距離矩陣的研究
      對(duì)稱加密算法RC5的架構(gòu)設(shè)計(jì)與電路實(shí)現(xiàn)
      上高县| 马尔康县| 门源| 通山县| 玛沁县| 绥棱县| 稻城县| 肇源县| 昌宁县| 靖州| 东莞市| 大邑县| 南陵县| 芜湖县| 镇坪县| 崇仁县| 广昌县| 巍山| 宜宾市| 独山县| 灵璧县| 三穗县| 承德县| 广元市| 台南市| 景泰县| 南漳县| 长治市| 高青县| 泉州市| 达日县| 丽江市| 利津县| 平阳县| 称多县| 图片| 永福县| 建阳市| 志丹县| 大连市| 南城县|