李夢竹,臧麗,鄭帥
摘要:文章從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 參數的影響