李夢竹,臧麗,鄭帥
摘要:文章從AES加密算法介紹入手,分別從功耗模型、自觸發(fā)模式下的功耗攻擊以及參數(shù)影響等方面,對AES加密算法差分功耗攻擊進行研究。結(jié)果表明,以單片機作為載體時,在自觸發(fā)模式下進行功耗攻擊分析時,應(yīng)當對相關(guān)的參數(shù)進行合理確定,以此來達到最佳的攻擊效果。
關(guān)鍵詞:AES加密算法;功耗;攻擊效果
中圖分類號:TP393? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)20-0050-02
在密碼學中,AES是高級加密標準的簡稱,是對稱密鑰加密中較為先進的一種算法,在全球范圍內(nèi)得到廣泛應(yīng)用。差分功耗攻擊是目前最為流行的攻擊手段之一,它的特點是對噪聲水平具有較高的容忍度。下面本文重點對AES加密算法差分功耗攻擊展開研究。
1 AES加密算法
AES的分組長度為固定值,即128bit,而密鑰長度有三個,分別為128bit、192bit和256bit。從本質(zhì)的角度上講,AES為密鑰迭代分組密碼,在進行加密時,要完成多次輪變換,輪數(shù)主要與密鑰長度有關(guān),當密鑰長度為128bit時,輪數(shù)Nr為10,256bit時,Nr為14[1]。輪數(shù)會隨著密鑰長度的長度增加而增多,二者之間呈正比關(guān)系,不同的輪數(shù)對應(yīng)不同的加密長度,采用的加密擴展算法有所差別,雖然如此,但每一輪的具體操作過程卻完全相同。AES的加密長度盡管數(shù)值不同,但本質(zhì)卻并無差別,所以為使研究進一步簡化,本文僅以128bit這個加密長度作為研究對象。AES每一輪的操作步驟相同,即AK(輪密鑰加)、SB(字節(jié)替換)、SR(行移位變換)以及MC(列混淆變換)。
1.1 AK
AK代表的是輪密鑰加,實質(zhì)上就是密鑰擴展,也被稱之為密鑰編排,主要作用是生成輪密鑰。經(jīng)擴展后,可以得到11個長度128bit的擴展密鑰,這些密鑰能夠參與11次AK操作。需要著重闡明的一點是,原始密鑰為首次參與AK操作的擴展密鑰。
1.2 SB
SB代表字節(jié)替換,在AES算法的實際應(yīng)用中,對明文進行分組加密時使用的是長度為128bit的密鑰,且密鑰與明文的字節(jié)相同,均為16字節(jié)。為更加清晰地描述AES算法,可用字節(jié)矩陣對數(shù)據(jù)與密鑰進行表示,在這個矩陣內(nèi),比特流中所有的比特值及順序均保持不變。AES算法的輪變換中,SB操作是唯一的非線性變換,簡稱S盒變換,它的構(gòu)造遵循的是非線性和代數(shù)復雜性的原則,具體的作用是抵抗差分密碼分析[2]。
1.3 SR
SR代表行移位變換,簡稱行變換,以字節(jié)為單位進行,整個過程為循環(huán)移位。舉例說明下,第一行不移位,第二行向左移1個字節(jié),并進行循環(huán),而第三行則向左移2個字節(jié),進行循環(huán),第四行向左移3個字節(jié),以此類推。通過SR能夠使AES算法的擴散性得到大幅度提升。
1.4 MC
MC代表列混淆變換,它是對每一列中的元素進行混合,以列作為主要單位,可將列與矩陣執(zhí)行乘法運算。字節(jié)是MC考慮的基本元素。MC可以為差分密碼分析提供較高的抵抗能力。
2 針對AES加密算法的差分功耗攻擊過程研究
2.1 功耗模型
2.1.1 選取單片機
在對AES加密算法的差分功耗攻擊過程進行研究時,需要以單片機作為載體,當單片機對AES運行時,應(yīng)當構(gòu)建相應(yīng)的功耗模型。本次研究中選取的單片機為STM32F系列,該單片機采用當前較為流行的低功耗設(shè)計,工作頻率最高能夠達到72MHz。在該單片機中,運行AES加密算法時,為便于試驗,制作了一個PCB(印制電路板),它在單片機中的主要作用是對AES加密系統(tǒng)進行模擬。
2.1.2 功耗模型的選擇
在進行DPA(差分功耗攻擊)時,對功耗模型進行選擇是一個非常重要的環(huán)節(jié),由于該模型能夠?qū)?shù)據(jù)映射為理論功耗,所以必須確保所選的模型具有較高的精度,并且應(yīng)當使理論與實際功耗相匹配,這樣能夠使攻擊達到最佳效果。在對加密進行執(zhí)行的過程中,不同的硬件設(shè)備會產(chǎn)生出不同的數(shù)據(jù)與功耗,由此會導致二者之間存在一定的差別,故此應(yīng)當按照硬件對功耗模型進行選擇。目前較為常見的功耗模型有以下幾種:HW(漢明重)、HD(漢明距離)以及ZERO(零)等[3]。其中HD在芯片中的應(yīng)用效果較好,而HW在單片機中效果比較顯著。為判斷HW模型是否適用于差分功耗攻擊研究,可以進行實際測量(限于篇幅,過程省略),結(jié)果表明,HW模型在功耗攻擊中具有良好的適用性,可以作為本次研究的功耗模型使用。
2.2 自觸發(fā)模式下的DPA
單片機在自觸發(fā)模式下遭到攻擊時,加密程序會隨之啟動運行,并給出相關(guān)信號,這樣示波器便會對功耗進行實時采集。本次研究的攻擊對象選取的是STM32F系列單片機,加密程序為AES,密鑰長度為128bit,通用PC機,數(shù)據(jù)分析采用的是MATLAB軟件。具體的功耗攻擊流程如下:
(1)先在PC上對MATLAB進行運行,然后向STM32F發(fā)送明文,由示波器對功耗波形進行采集和存儲。明文共計發(fā)送200條,每條的字節(jié)數(shù)全部相同,均為16字節(jié);
(2)在STM32F對加密程序進行運行,STM32F對PC發(fā)出的明文進行接收,并以密鑰完成對明文的加密,隨后將密文返回,STM32F重復執(zhí)行加密輸出;
(3)對明文進行加密處理時,在進行SB操作前,STM32F會向示波器發(fā)送一個觸發(fā)信號;
(4)將示波器設(shè)定為平均采樣模式,并在STM32F上串聯(lián)電阻,對電壓信號進行實時采集,采樣率設(shè)定為2.5Gs/s;
(5)當采集到數(shù)量足夠的功耗數(shù)據(jù)之后,便可通過MATLAB軟件對數(shù)據(jù)進行分析,進而得出密鑰,整個試驗到此結(jié)束[4]。
2.3 參數(shù)的影響