?

AES加密算法差分功耗攻擊研究

2021-09-26 15:52李夢竹,臧麗,鄭帥
電腦知識與技術 2021年20期
關鍵詞:功耗

李夢竹,臧麗,鄭帥

摘要:文章從AES加密算法介紹入手,分別從功耗模型、自觸發模式下的功耗攻擊以及參數影響等方面,對AES加密算法差分功耗攻擊進行研究。結果表明,以單片機作為載體時,在自觸發模式下進行功耗攻擊分析時,應當對相關的參數進行合理確定,以此來達到最佳的攻擊效果。

關鍵詞:AES加密算法;功耗;攻擊效果

中圖分類號:TP393? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)20-0050-02

在密碼學中,AES是高級加密標準的簡稱,是對稱密鑰加密中較為先進的一種算法,在全球范圍內得到廣泛應用。差分功耗攻擊是目前最為流行的攻擊手段之一,它的特點是對噪聲水平具有較高的容忍度。下面本文重點對AES加密算法差分功耗攻擊展開研究。

1 AES加密算法

AES的分組長度為固定值,即128bit,而密鑰長度有三個,分別為128bit、192bit和256bit。從本質的角度上講,AES為密鑰迭代分組密碼,在進行加密時,要完成多次輪變換,輪數主要與密鑰長度有關,當密鑰長度為128bit時,輪數Nr為10,256bit時,Nr為14[1]。輪數會隨著密鑰長度的長度增加而增多,二者之間呈正比關系,不同的輪數對應不同的加密長度,采用的加密擴展算法有所差別,雖然如此,但每一輪的具體操作過程卻完全相同。AES的加密長度盡管數值不同,但本質卻并無差別,所以為使研究進一步簡化,本文僅以128bit這個加密長度作為研究對象。AES每一輪的操作步驟相同,即AK(輪密鑰加)、SB(字節替換)、SR(行移位變換)以及MC(列混淆變換)。

1.1 AK

AK代表的是輪密鑰加,實質上就是密鑰擴展,也被稱之為密鑰編排,主要作用是生成輪密鑰。經擴展后,可以得到11個長度128bit的擴展密鑰,這些密鑰能夠參與11次AK操作。需要著重闡明的一點是,原始密鑰為首次參與AK操作的擴展密鑰。

1.2 SB

SB代表字節替換,在AES算法的實際應用中,對明文進行分組加密時使用的是長度為128bit的密鑰,且密鑰與明文的字節相同,均為16字節。為更加清晰地描述AES算法,可用字節矩陣對數據與密鑰進行表示,在這個矩陣內,比特流中所有的比特值及順序均保持不變。AES算法的輪變換中,SB操作是唯一的非線性變換,簡稱S盒變換,它的構造遵循的是非線性和代數復雜性的原則,具體的作用是抵抗差分密碼分析[2]。

1.3 SR

SR代表行移位變換,簡稱行變換,以字節為單位進行,整個過程為循環移位。舉例說明下,第一行不移位,第二行向左移1個字節,并進行循環,而第三行則向左移2個字節,進行循環,第四行向左移3個字節,以此類推。通過SR能夠使AES算法的擴散性得到大幅度提升。

1.4 MC

MC代表列混淆變換,它是對每一列中的元素進行混合,以列作為主要單位,可將列與矩陣執行乘法運算。字節是MC考慮的基本元素。MC可以為差分密碼分析提供較高的抵抗能力。

2 針對AES加密算法的差分功耗攻擊過程研究

2.1 功耗模型

2.1.1 選取單片機

在對AES加密算法的差分功耗攻擊過程進行研究時,需要以單片機作為載體,當單片機對AES運行時,應當構建相應的功耗模型。本次研究中選取的單片機為STM32F系列,該單片機采用當前較為流行的低功耗設計,工作頻率最高能夠達到72MHz。在該單片機中,運行AES加密算法時,為便于試驗,制作了一個PCB(印制電路板),它在單片機中的主要作用是對AES加密系統進行模擬。

2.1.2 功耗模型的選擇

在進行DPA(差分功耗攻擊)時,對功耗模型進行選擇是一個非常重要的環節,由于該模型能夠將數據映射為理論功耗,所以必須確保所選的模型具有較高的精度,并且應當使理論與實際功耗相匹配,這樣能夠使攻擊達到最佳效果。在對加密進行執行的過程中,不同的硬件設備會產生出不同的數據與功耗,由此會導致二者之間存在一定的差別,故此應當按照硬件對功耗模型進行選擇。目前較為常見的功耗模型有以下幾種:HW(漢明重)、HD(漢明距離)以及ZERO(零)等[3]。其中HD在芯片中的應用效果較好,而HW在單片機中效果比較顯著。為判斷HW模型是否適用于差分功耗攻擊研究,可以進行實際測量(限于篇幅,過程省略),結果表明,HW模型在功耗攻擊中具有良好的適用性,可以作為本次研究的功耗模型使用。

2.2 自觸發模式下的DPA

單片機在自觸發模式下遭到攻擊時,加密程序會隨之啟動運行,并給出相關信號,這樣示波器便會對功耗進行實時采集。本次研究的攻擊對象選取的是STM32F系列單片機,加密程序為AES,密鑰長度為128bit,通用PC機,數據分析采用的是MATLAB軟件。具體的功耗攻擊流程如下:

(1)先在PC上對MATLAB進行運行,然后向STM32F發送明文,由示波器對功耗波形進行采集和存儲。明文共計發送200條,每條的字節數全部相同,均為16字節;

(2)在STM32F對加密程序進行運行,STM32F對PC發出的明文進行接收,并以密鑰完成對明文的加密,隨后將密文返回,STM32F重復執行加密輸出;

(3)對明文進行加密處理時,在進行SB操作前,STM32F會向示波器發送一個觸發信號;

(4)將示波器設定為平均采樣模式,并在STM32F上串聯電阻,對電壓信號進行實時采集,采樣率設定為2.5Gs/s;

(5)當采集到數量足夠的功耗數據之后,便可通過MATLAB軟件對數據進行分析,進而得出密鑰,整個試驗到此結束[4]。

2.3 參數的影響

猜你喜歡
功耗
從RTL 到GDS 的功耗優化全流程
基于任務映射的暗硅芯片功耗預算方法
基于標準單元替換的功耗優化方法研究*
基于Cortex-M4的油氣管道微功耗數據采集器軟件設計應用
數字電路功耗的分析及優化
IGBT模型優化及其在Buck變換器中的功耗分析
一種面向星載計算機的功能級功耗估計方法
基于低閾值單元的高性能低功耗設計方法*
三相三線電能表功耗測試分析方法研究
嵌入式系統功耗的動態管理
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合