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