黃 嫻,李偉鍵,畢遠(yuǎn)橋,張?jiān)畦。?泳,林思瀚
(廣東技術(shù)師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,廣州 510665)
隨著量子計(jì)算機(jī)的出現(xiàn),傳統(tǒng)的密碼算法面臨著巨大的威脅.1994年,Peter Shor證明量子計(jì)算機(jī)可以在多項(xiàng)式時(shí)間內(nèi)有效地解決大數(shù)分解、橢圓曲線和離散對(duì)數(shù)等數(shù)論問(wèn)題.隨后,Monz等[1]在2016年提出了一種可擴(kuò)展的Shor算法,這意味著一旦大規(guī)模量子計(jì)算機(jī)出現(xiàn),傳統(tǒng)的密碼體制將變得不安全.為此,學(xué)者們提出了許多密碼體制來(lái)抵抗量子攻擊,如基于編碼的密碼[2]、基于格的密碼[3]、基于多變量的密碼[4]等.其中,多變量密碼算法是最具有抗量子攻擊潛力的重要候選算法之一.許多基于多變量二次多項(xiàng)式的密碼體制不斷地被提出,如UOV[5]、Rainbow[6]、ZHFE[7]、CHNN-MVC[8]和QUAD[9]等.多變量密碼算法的安全性依賴于有限域GF(q)上求解多變量二次方程組的困難性,其求解難度已被證實(shí)為NP(Nondeterministic Polynomial)困難問(wèn)題[10].其中在小域上實(shí)現(xiàn)多變量密碼算法對(duì)時(shí)間和面積開銷更低,適用于資源受限設(shè)備.多變量密碼算法作為一種新的研究方向,受到了眾多密碼學(xué)者的關(guān)注.
2006年,Berbain等[9]在歐密上提出了一種實(shí)用的、可證明安全的流密碼QUAD.QUAD的可證明安全性依賴于多變量二次方程組的求解難問(wèn)題.2009年,Berbain等[11]又重新對(duì)QUAD的可證明安全性進(jìn)行了討論,給出了在各種參數(shù)下QUAD的安全強(qiáng)度.2013年,Bardet等[10]針對(duì)QUAD提出了一種復(fù)雜度為O(2134.56)的密碼分析算法.近年為了應(yīng)對(duì)量子計(jì)算機(jī)時(shí)代下,云計(jì)算和區(qū)塊鏈的安全性需求,Tanaka等[12]提出了兩種高效的并行QUAD實(shí)現(xiàn)和一種基于GPU的多變量二次多項(xiàng)式系統(tǒng)計(jì)算方法.2018年,Liao等[13]提出了一種用于計(jì)算高階多變量密碼系統(tǒng)的GPU加速框架.另一方面,多變量密碼算法實(shí)現(xiàn)的面積開銷低,適用于物聯(lián)網(wǎng)設(shè)備(如RFID、傳感器、ASICs和智能卡等普適設(shè)備).Billet等[14]指出QUAD可以有效地構(gòu)造一個(gè)可證明安全的RFID隱私保護(hù)認(rèn)證協(xié)議.Arditti等[15]提出了一個(gè)至今仍被認(rèn)為是面積最小的可證明安全的QUAD實(shí)現(xiàn)方案,只需要2961 GE.這使得QUAD成為物聯(lián)網(wǎng)安全的一個(gè)有競(jìng)爭(zhēng)力的候選者.為了適用于更多的安全應(yīng)用場(chǎng)景,2015年Hamlet等[16]提出了一種吞吐量?jī)?yōu)先的QUAD并行實(shí)現(xiàn).
在實(shí)際應(yīng)用中密碼算法的實(shí)現(xiàn)需要考慮抵御廣泛的物理攻擊,特別是側(cè)信道攻擊.側(cè)信道攻擊利用密碼系統(tǒng)在加密時(shí)所產(chǎn)生的物理信息 (如功耗、電磁、時(shí)間和溫度等)與密鑰之間的依賴關(guān)系,從而獲取密鑰.2017年,Yi等[17]針對(duì)在ASIC上實(shí)現(xiàn)的enTTS方案提出了故障攻擊和差分能量分析攻擊.2018年,Park等[18]提出了一種針對(duì)在8位AVR微控制器上實(shí)現(xiàn)的Rainbow和UOV方案的相關(guān)能量分析攻擊,該攻擊可獲得完整的正確密鑰.2019年,Kr?mer等[19]基于Hashimoto等的工作對(duì)多變量簽名方案故障攻擊的研究進(jìn)行了補(bǔ)充.然而他們的攻擊并沒(méi)有恢復(fù)Rainbow和UOV的完整密鑰.2019年,Li等[20]通過(guò)相關(guān)能量分析攻擊證明了在FPGA上QUAD的串行實(shí)現(xiàn)存在信息泄露,但攻擊成功率仍需要進(jìn)一步提高.2020年,Li等[21]針對(duì)在FPGA上并行實(shí)現(xiàn)的QUAD提出了一種基于模糊匹配的模板攻擊,成功恢復(fù)了完整的密鑰.現(xiàn)已有多種針對(duì)多變量密碼算法的側(cè)信道攻擊方法,大量研究表明,即使多變量密碼算法能夠抵抗量子攻擊,但是無(wú)防護(hù)的多變量密碼算法在面對(duì)側(cè)信道攻擊時(shí)是非常脆弱的[22].如何構(gòu)造既安全、又節(jié)省時(shí)空開銷的多變量密碼算法是當(dāng)前亟待解決的問(wèn)題.
我們的工作:
在實(shí)際應(yīng)用中,多變量密碼算法在加密的過(guò)程中需要使用寄存器存儲(chǔ)加密中間值,而數(shù)據(jù)回寫寄存器的過(guò)程會(huì)產(chǎn)生側(cè)信息泄露,從而削弱密碼產(chǎn)品的安全性.本文以QUAD為例,利用多項(xiàng)式方程中各單項(xiàng)式的順序可以被隨機(jī)地打亂而不影響最終加密結(jié)果的特性,提出了一種通用于多變量密碼算法的高效輕量級(jí)防護(hù)方案.通過(guò)增加一個(gè)亂序下標(biāo)使得寄存器的內(nèi)部初始狀態(tài)隨機(jī)化,并為了保證所有的單項(xiàng)式都只參與一次計(jì)算,在每一輪的加密中依次將寄存器中的值循環(huán)左移,從而打亂單項(xiàng)式的計(jì)算順序.該方案只需增加11.7%的面積開銷,即可獲得良好的抗一階側(cè)信道攻擊的能力.
多變量密碼算法QUAD(q,n,r) 每一輪都要計(jì)算n+r條多變量二次方程,每條多項(xiàng)式方程包含n個(gè)密鑰X=(x1,x2,…,xn),X∈GF(q).QUAD主要由更新函數(shù)Sin={Q1,Q2,…,Qn}和輸出函數(shù)Sout={Qn+1,Qn+2,…,Qn+r}組成,如公式(1)所示.在每一次的迭代中,更新函數(shù)輸出的n比特的數(shù)據(jù)用于更新內(nèi)部狀態(tài),而輸出函數(shù)輸出r比特密文.
S(X)={Q1(X),Q2(X),…,Qn+r(X)},X={x1,x2,…,xn}
(1)
同所有其他基于MQ問(wèn)題的密碼算法一樣,QUAD(q,n,r)在GF(2)上的多變量二次方程定義為:
(2)
其中,αij、βi和γ都是隨機(jī)可公開的系數(shù).
為了使得QUAD的密鑰能夠多次循環(huán)利用,通常需要設(shè)置一個(gè)初始向量IV,根據(jù)IV的值對(duì)內(nèi)部狀態(tài)X進(jìn)行更新.QUAD的具體加密流程為:
1)根據(jù)初始向量IV初始化X0∈GF(q)n.
2)計(jì)算n個(gè)多變量二次方程Sin={Q1,Q2,…,Qn},多項(xiàng)式方程Sin的輸出是下一輪加密的密鑰.
3)計(jì)算r個(gè)多變量二次方程Sout={Qn+1,Qn+2,…,Qn+r},多項(xiàng)式方程Sout的輸出是下一輪加密的密鑰.
4)對(duì)秘密狀態(tài)X0進(jìn)行更新.
文獻(xiàn)[11]和文獻(xiàn)[23]中指出在GF(2)上的QUAD(2,160,160)有利于硬件高效實(shí)現(xiàn),而且其安全強(qiáng)度高達(dá)280,在實(shí)際中難以攻擊.根據(jù)GF(2)的運(yùn)算特性可知xi·xi=xi,因此QUAD中的線性單項(xiàng)式的計(jì)算可以省略.此外,對(duì)于設(shè)備加密時(shí)所產(chǎn)生的能量消耗而言,常數(shù)項(xiàng)的加密等同于噪聲.為了消除不必要的泄露,QUAD中常數(shù)項(xiàng)的計(jì)算也可以省略.因此公式(2)可以被簡(jiǎn)略為更簡(jiǎn)潔、更快、更清晰、更高效的公式(3),其中αij、βi和γ仍是隨機(jī)可公開的系數(shù).
(3)
2015年,Hamlet等[16]在保證安全強(qiáng)度不變的前提下,提出了兩種高吞吐量的QUAD(2,128,128) 并行實(shí)現(xiàn).其中,QUAD(2,128,128)的安全強(qiáng)度為264,可以很容易地?cái)U(kuò)展到GF(2)中的其他版本.為了更好地保證密碼產(chǎn)品的安全性,本文將該方案擴(kuò)展至QUAD(2,160,160),并基于FPGA實(shí)現(xiàn)了該擴(kuò)展方案.在FPGA上QUAD(2,160,160)的并行實(shí)現(xiàn)需要事先生成加密過(guò)程所需的公開系數(shù)并存入ROM中.每一條多項(xiàng)式方程需要計(jì)算12880個(gè)單項(xiàng)式,即需要12880個(gè)系數(shù),QUAD(2,160,160)一共需要實(shí)現(xiàn)生成12880×320=4121600個(gè)系數(shù).依次計(jì)算多變量二次方程Q1(X),Q2(X),…,Qn+r(X),為了獲得更高的吞吐量,每一輪并行地計(jì)算多項(xiàng)式 的n個(gè)單項(xiàng)式.QUAD(2,160,160)的并行實(shí)現(xiàn)步驟如下:
1)循環(huán)執(zhí)行步驟2~步驟6,順序地計(jì)算多變量二次方程Q1(X),Q2(X),…,Qn+r(X).
2)根據(jù)初始化向量IV對(duì)內(nèi)部狀態(tài)X和rotatedx進(jìn)行賦值.首次賦值時(shí),X和rotatedx的數(shù)據(jù)是相同的.
3)同時(shí)計(jì)算160比特的數(shù)據(jù)乘積,即并行地計(jì)算ηi=xi&rotatedxi,1≤i≤160.
4)從ROM中加載160比特的系數(shù)α,將步驟2計(jì)算得到的結(jié)果η和系數(shù)α分別送入到40個(gè)8輸入的AND-XORLUT模塊中進(jìn)行運(yùn)算.AND-XORLUT模塊的計(jì)算公式為Mc=∑3≥i≥0α4c-iη4c-i,1≤c≤40,并將相應(yīng)的計(jì)算結(jié)果M存入Register(P1,P2,…,P40)中,即Mc=Pc,1≤c≤40.
5)將Register中的數(shù)據(jù)分別送入到4輸入XORLUT模塊中進(jìn)行異或運(yùn)算.即計(jì)算Vd=∑3≥i≥0M4d-i,1≤d≤10,并將計(jì)算結(jié)果存入一個(gè)臨時(shí)寄存器Temporary(T1,P2,…,T10).
6)將rotatedx旋轉(zhuǎn)1比特,并回到步驟3繼續(xù)執(zhí)行下一組160個(gè)單項(xiàng)式的運(yùn)算,直到Qk(X)計(jì)算完畢.每一條多變量二次方程的計(jì)算都需要循環(huán)「(n+1)/2?=81次.需要注意的是,在最后一次循環(huán)中只需要計(jì)算80條單項(xiàng)式,因此QUAD的并行實(shí)現(xiàn)中的每一組功能相同的模塊,都只有一半的實(shí)例在進(jìn)行運(yùn)算.
7)重復(fù)上述步驟直到所有多變量二次方程都計(jì)算完畢.
(4)
(5)
將數(shù)據(jù)寫入寄存器時(shí)的能量消耗取決于寄存器前后數(shù)據(jù)的位翻轉(zhuǎn)次數(shù),從而猜測(cè)引起寄存器數(shù)據(jù)變化的秘密數(shù)據(jù)的值.硬件實(shí)現(xiàn)中寄存器的功耗變化可以用漢明距離(HD)模型來(lái)描述.根據(jù)2.2節(jié)中描述的并行實(shí)現(xiàn)可知,QUAD的并行實(shí)現(xiàn)需要同時(shí)計(jì)算160個(gè)單項(xiàng)式,每4個(gè)單項(xiàng)式由AND-XORLUT模塊將計(jì)算結(jié)果Mc,1≤c≤40存入Register(P1,P2,…,P40)中:
Mc=a4c-3,4c-3x4c-3x4c-3⊕a4c-2,4c-2x4c-2x4c-2
⊕a4c-1,4c-1x4c-1x4c-1⊕a4c,4cx4cx4c,1≤c≤40
(6)
(7)
(8)
傳統(tǒng)的模板攻擊只能對(duì)單條功耗軌跡進(jìn)行匹配,并在匹配階段利用貝葉斯定理揭示密鑰.然而在實(shí)際應(yīng)用中,只使用單條功耗軌跡無(wú)法攻破算法.因此基于模板的DPA攻擊方法被提出,它在模板匹配的過(guò)程中累積各功耗軌跡的匹配度,提高匹配成功率.然而在實(shí)際應(yīng)用中,基于模板的DPA攻擊的精確匹配方法并不適用.為了解決傳統(tǒng)攻擊存在的問(wèn)題,Li等[21]提出了一種基于模糊匹配的模板攻擊,該方法同樣通過(guò)對(duì)多條功耗軌跡的累加分析,使用模糊匹配算法來(lái)揭示加密算法的密鑰.本文針對(duì)在FPGA上并行實(shí)現(xiàn)的QUAD(2,160,160)實(shí)施基于模糊匹配的模板攻擊.QUAD(2,160,160)一共執(zhí)行了320次多項(xiàng)式計(jì)算操作,其密鑰為X={x1,x2,…,x160}.
基于模糊匹配的模板攻擊的主要實(shí)現(xiàn)步驟如下:
1)選擇模板構(gòu)建策略:根據(jù)公式(8)中的功耗泄露模型可知,需要構(gòu)建兩個(gè)模板,分別對(duì)應(yīng)于泄露值0和1.
2)采集功耗軌跡構(gòu)建模板:根據(jù)不同的泄露值采集兩組功耗軌跡.
3)選取攻擊興趣點(diǎn)(特征):為了提高攻擊效率,需要采用特征選擇方法選擇最相關(guān)的興趣點(diǎn),主要方法包括基于t檢驗(yàn)的特征點(diǎn)選擇方法(SOST)[24]、皮爾森相關(guān)系數(shù)法[24]、主成分分析法(PCA)[24]、線性SVM封裝器[25]和L1正則化[26]等.本文采用Barenghi等[27]強(qiáng)烈推薦的CPA峰值法選取興趣點(diǎn).
4)根據(jù)興趣點(diǎn)構(gòu)建模板:根據(jù)均值向量mi和協(xié)方差矩陣Ci構(gòu)建兩個(gè)模板hi=(mi,Ci),0≤i≤1.其中mi和Ci的計(jì)算公式如公式(9)和公式(10)所示:
(9)
(10)
5)模板匹配階段:向攻擊設(shè)備中輸入相同的密鑰和不同的明文,采集功耗軌跡T={t1,t2,…,tD}.這組功耗用于匹配模板,公式(11)中計(jì)算得到的最高概率的p(tj;(mi,Ci))對(duì)應(yīng)著正確的泄露值.
(11)
6)揭示正確密鑰:記T={t1,t2,…,tD}對(duì)應(yīng)的泄露值為H={h1,h2,…,hD}.根據(jù)公式(8)將假設(shè)的中間值映射為泄露值,并與H={h1,h2,…,hD}一起揭示正確密鑰.對(duì)并行QUAD(2,160,160)實(shí)施攻擊時(shí),用S={s1,s2,…,s32}表示假設(shè)的泄露值,其中si={si1,si2,…,siD}.模糊匹配的計(jì)算方法如公式(12)所示:
key=arg minF(i)
(12)
能量分析攻擊之所以有效是因?yàn)榧用茉O(shè)備的能量消耗依賴于加密算法的中間值,若想抵抗這種攻擊則需要盡可能減少甚至徹底消除這種依賴性.而隱藏防護(hù)方案的目的就是為了使得加密設(shè)備的功耗不受加密中間值的影響,令攻擊者難以從功耗軌跡中得出有用信息.為了達(dá)到這個(gè)目的通常有兩種方法:1)是為該密碼產(chǎn)品設(shè)計(jì)一個(gè)專用的電路,通過(guò)改變物理結(jié)構(gòu)設(shè)計(jì)的方法使得加密的功耗達(dá)到隨機(jī)化效果;2)是使得加密設(shè)備的每一個(gè)操作和操作數(shù)所消耗的能量保持一致,即讓加密設(shè)備的能量消耗在每一個(gè)時(shí)鐘周期中都是相同的.
多變量密碼算法加密的過(guò)程實(shí)際上就是對(duì)多個(gè)多項(xiàng)式方程組進(jìn)行計(jì)算.其中,多項(xiàng)式的計(jì)算順序和多項(xiàng)式里各個(gè)單項(xiàng)式的計(jì)算順序都是相互獨(dú)立的,執(zhí)行順序的先后不影響最后加密結(jié)果.因此,各個(gè)多項(xiàng)式方程的計(jì)算順序和多項(xiàng)式里各個(gè)單項(xiàng)式的計(jì)算順序都可以被隨機(jī)地打亂.QUAD在每個(gè)周期中都有相似的操作,即每個(gè)操作所消耗的能量也是相似的,這意味著一旦對(duì)單項(xiàng)式進(jìn)行打亂,攻擊者很難確定某一時(shí)間刻度所做的操作在功耗軌跡中的位置.因此,通過(guò)對(duì)齊功耗軌跡來(lái)實(shí)現(xiàn)有效的能量分析攻擊是不可能的.
本文利用各個(gè)多項(xiàng)式方程組之間的單項(xiàng)式互相獨(dú)立的特性對(duì)并行QUAD提出簡(jiǎn)易可行的隱藏防護(hù)方案,該思想通用于具有多項(xiàng)式計(jì)算的密碼算法.為了使防護(hù)后的QUAD仍適用于資源受限設(shè)備,本文設(shè)計(jì)了一個(gè)以較小代價(jià)來(lái)實(shí)現(xiàn)并行QUAD的亂序防護(hù)方案,即以較小的開銷將各個(gè)多項(xiàng)式方程組的單項(xiàng)式進(jìn)行隨機(jī)打亂,從而達(dá)到抵抗一階側(cè)信道攻擊的效果.
QUAD(q,n,r)具有(n+r)×n(n+1)/2個(gè)單項(xiàng)式,共有((n+r)×n(n+1)/2)!種不同的順序隨機(jī)計(jì)算單項(xiàng)式,從理論上來(lái)說(shuō),完全隨機(jī)打亂的防護(hù)效果最佳,完全打亂之后攻擊者無(wú)法對(duì)功耗軌跡進(jìn)行對(duì)齊,從而達(dá)到防護(hù)的目標(biāo).然而,實(shí)現(xiàn)這樣的算法所需的代價(jià)太大,如果要在加密過(guò)程中每次都隨機(jī)地選擇一個(gè)單項(xiàng)式進(jìn)行計(jì)算,則需要增加寄存器對(duì)已完成計(jì)算的單項(xiàng)式進(jìn)行記錄,還需要對(duì)未被計(jì)算的單項(xiàng)式進(jìn)行記錄,以防重復(fù)計(jì)算.這樣的防護(hù)方案需要耗費(fèi)大量的額外開銷,尤其是在FPGA這種硬件電路的實(shí)現(xiàn)中,其資源所需的存儲(chǔ)開銷和時(shí)間開銷過(guò)于昂貴,不具備實(shí)用性.
為了提高并行QUAD的抗側(cè)信道攻擊能力,本文提出了一種低成本的輕量級(jí)隱藏防護(hù)方案,通過(guò)隨機(jī)生成圖中rotatedx寄存器中的初始值來(lái)打亂單項(xiàng)式的計(jì)算順序.為了確保各單項(xiàng)式都能夠參與運(yùn)算且不會(huì)被重復(fù)地計(jì)算,在每一輪的計(jì)算中rotatedx寄存器中的數(shù)據(jù)是需要循環(huán)左移一位,即rotatedx=circshift(rotatedx?1),如圖1所示.整體的防護(hù)方案實(shí)現(xiàn)如圖 2所示,QUAD(2,160,160) 在加密過(guò)程中所需要的公開系數(shù)α?xí)孪壬?,并存入ROM中.在FPGA上并行實(shí)現(xiàn)的QUAD(2,160,160)的亂序防護(hù)方案的具體實(shí)施步驟如下:
圖1 rotated x寄存器的內(nèi)部狀態(tài)變化Fig.1 Internal state change of rotated x
1)每一次加密都會(huì)打亂當(dāng)前多項(xiàng)式中的單項(xiàng)式,循環(huán)地執(zhí)行步驟2-步驟6,順序地計(jì)算各個(gè)多變量二次方程Q1(X),Q2(X),…,Qn+r(X).
2)在計(jì)算每一條多變量二次方程Qk(X)之前,首先要生成一個(gè)初始值ls,用于打亂多項(xiàng)式的計(jì)算.為了保證QUAD(2,160,160)中各單項(xiàng)式不會(huì)被重復(fù)計(jì)算,ls的取值范圍為1≤ls≤80.
3)根據(jù)初始化向量IV對(duì)內(nèi)部狀態(tài)X進(jìn)行賦值,通過(guò)ls對(duì)rotatedx進(jìn)行賦值.首次賦值時(shí)rotatedx=circshift(X?ls),即rotatedx寄存器的初始數(shù)據(jù)是由X循環(huán)左移ls位得到的.
4)同時(shí)并行地計(jì)算rotatedx和X之間每一位的乘積,即并行地計(jì)算160比特的數(shù)據(jù)乘積ηi=xi&rotatedxi,1≤i≤160.
5)順序地從ROM中加載160比特的公開系數(shù)α用于計(jì)算單項(xiàng)式,將步驟4計(jì)算得到的結(jié)果η和公開系數(shù)α分別送入到40個(gè)8輸入的AND-XORLUT模塊中.AND-XORLUT模塊的計(jì)算公式為Mc=∑3≥i≥0α4c-iη4c-i,1≤c≤40,并將相應(yīng)的計(jì)算結(jié)果M存入Register(P1,P2,…,P40)中,即Mc=Pc,1≤c≤40.
6)將Register中的數(shù)據(jù)分別送入到4輸入的XORLUT模塊中進(jìn)行異或運(yùn)算.即計(jì)算Vd=∑3≥i≥0M4d-i,1≤d≤10,并將計(jì)算結(jié)果存入一個(gè)臨時(shí)寄存器Temporary(T1,P2,…,T10)中.
7)將寄存器rotatedx循環(huán)左移1比特,即rotatedx=circshift(rotatedx?1).回到步驟4繼續(xù)執(zhí)行下一組160個(gè)單項(xiàng)式的運(yùn)算,直到Qk(X)計(jì)算完畢.在第81-ls+1輪的時(shí)候,圖 2中的每一組功能相同的模塊,都只有一半的實(shí)例在執(zhí)行進(jìn)行運(yùn)算.
圖2 QUAD(2,160,160)的并行防護(hù)方案Fig.2 Parallel protection scheme of QUAD(2,160,160)
在FPGA上并行實(shí)現(xiàn)的QUAD(2,160,160)輕量級(jí)亂序防護(hù)方案的加密順序如圖 3所示,為了使得各單項(xiàng)式的計(jì)算順序更為直觀,在圖中省略公開系數(shù)α.本文針對(duì)并行實(shí)現(xiàn)的QUAD(2,160,160)所提的輕量級(jí)亂序防護(hù)實(shí)際上就是將每一個(gè)多項(xiàng)式中的各個(gè)單項(xiàng)式計(jì)算順序打亂.
圖3 并行QUAD(2,160,160)亂序防護(hù)方案的計(jì)算順序Fig.3 Computation order of monomials for parallel shuffling QUAD(2,160,160)
本文所提的亂序防護(hù)方案通過(guò)打亂加密算法的操作順序,從而隨機(jī)化各功耗泄露操作的功耗值在功耗軌跡中的順序.對(duì)于QUAD(2,160,160)而言,整個(gè)加密過(guò)程中一共需要計(jì)算320條多項(xiàng)式方程,而在每一條多項(xiàng)式的計(jì)算中,rotatedx寄存器中的取值有81種可能性.也就是說(shuō)在整個(gè)加密過(guò)程中,攻擊者若想使用窮舉的方法對(duì)功耗軌跡進(jìn)行對(duì)齊處理并成功實(shí)施攻擊,則需要考慮81320種可能性,難度非常大.通過(guò)打亂各個(gè)單項(xiàng)式的執(zhí)行順序,使得泄露秘密信息的相同操作在不同的時(shí)刻中執(zhí)行,攻擊者無(wú)法通過(guò)觀察功耗獲得泄露信息,更無(wú)法對(duì)其進(jìn)行預(yù)測(cè).
本文針對(duì)并行QUAD(2,160,160)所提的亂序防護(hù)方案在硬件邏輯語(yǔ)言FPGA中實(shí)現(xiàn).FPGA包含了大量的基本單元,而查找表LUTs(Look-Up-Tables)就是其中最為重要的基本單元之一,業(yè)界內(nèi)通常采用查找表的數(shù)量定義面積開銷.本文通過(guò)增加一個(gè)7位寄存器作為初始計(jì)算單項(xiàng)式的下標(biāo),此后為了確保各單項(xiàng)式均參與運(yùn)算且只參與一次運(yùn)算,每一輪的計(jì)算中都會(huì)將單項(xiàng)式寄存器rotatedx循環(huán)左移一位,從而打亂各單項(xiàng)式的執(zhí)行順序.防護(hù)前后的資源開銷對(duì)比如表1所示.其中,時(shí)鐘周期由Xilinx ISE Design Suite軟件中的仿真結(jié)果獲得,面積開銷由Xilinx ISE Design Suite軟件中的綜合面積報(bào)告分析獲得.本文所提的防護(hù)方案只需增加11.7%的面積開銷,即可獲得良好的抗一階攻擊能力.
表1 并行QUAD(2,160,160)的資源開銷對(duì)比Table 1 Hardware requirements of parallel QUAD(2,160,160)
實(shí)驗(yàn)所使用的設(shè)備如圖4所示,本文的實(shí)驗(yàn)裝置包括一塊側(cè)信道泄露標(biāo)準(zhǔn)評(píng)估板SAKURA-G、一臺(tái)示波器和一臺(tái)計(jì)算機(jī).其中,SAKURA-G配備了兩個(gè)獨(dú)立的Spartan-6 FPGA芯片.一個(gè)芯片是控制芯片,另一個(gè)是密碼芯片.密碼芯片進(jìn)行加密操作,而控制芯片主要負(fù)責(zé)芯片間的通信,以及芯片和計(jì)算機(jī)之間的通信.在加密過(guò)程中,示波器通過(guò)觸發(fā)信號(hào)來(lái)測(cè)量加密芯片的功耗.最后,通過(guò)計(jì)算機(jī)進(jìn)行功耗分析.
圖4 實(shí)驗(yàn)設(shè)備Fig.4 Experimental setup
根據(jù)公式(8)中并行實(shí)現(xiàn)的泄露模型可知,在每一輪加密的過(guò)程中,每4比特密鑰將會(huì)同時(shí)被累加到寄存器Register中,即每次需要猜測(cè)4比特的密鑰.在模板構(gòu)建階段,從設(shè)備中采集了具有不同密鑰和不同系數(shù)的10000條功耗軌跡.本文采用CPA峰值法選取35個(gè)攻擊興趣點(diǎn).采集兩組相對(duì)應(yīng)于泄露值0和1的功耗軌跡,每組由35條功耗軌跡組成,構(gòu)建兩個(gè)模板.在模板匹配階段,從設(shè)備中捕獲320個(gè)具有相同密鑰的功耗軌跡.針對(duì)在FPGA上并行實(shí)現(xiàn)的QUAD(2,160,160)實(shí)施基于模糊匹配的模板攻擊,其成功率如圖 5 (a)所示.當(dāng)功耗軌跡數(shù)接近150時(shí),成功率趨于100%.
圖5 并行QUAD(2,160,160)的實(shí)驗(yàn)結(jié)果Fig.5 Experimental results of parallel QUAD(2,160,160)
為了進(jìn)一步說(shuō)明泄露的存在,本文采集了40萬(wàn)條功耗軌跡用于實(shí)施基于非特定型TVLA(Test Vector Leakage Assessment)的側(cè)信道泄露評(píng)估,其評(píng)估結(jié)果如圖 5 (b)所示.根據(jù)評(píng)估結(jié)果可知,在{170,233,263,265,297,328…}位置上的采樣點(diǎn),它們的t值均超出了4.5的閾值范圍,即泄露確實(shí)存在.
根據(jù)實(shí)驗(yàn)結(jié)果可知,并行QUAD在加密過(guò)程中確實(shí)存在泄露,它的抗側(cè)信道攻擊的能力還有待加強(qiáng).為了核實(shí)本文所提防護(hù)方案的有效性,同樣對(duì)亂序防護(hù)后的QUAD(2,160,160)實(shí)施基于模糊匹配的模板攻擊.亂序防護(hù)方案只是打亂了各單項(xiàng)式的計(jì)算順序,并沒(méi)有影響加密的結(jié)果.首先,根據(jù)公式(8)對(duì)亂序防護(hù)后的QUAD(2,160,160)進(jìn)行泄露建模.在每一次的攻擊中,仍需要猜測(cè)4比特的密鑰.考慮到亂序后的功耗軌跡的信噪比會(huì)相對(duì)較低,因此在模板構(gòu)建階段,從設(shè)備中采集了具有不同密鑰和不同系數(shù)的50000條功耗軌跡.采用CPA峰值法選取35個(gè)興趣點(diǎn),根據(jù)泄露模型采集了兩組分別對(duì)應(yīng)于泄露值為0和1的功耗軌跡,分別構(gòu)建模板.在模板匹配階段,從設(shè)備中捕獲2000個(gè)具有相同密鑰的功耗軌跡,并實(shí)施攻擊,攻擊結(jié)果如圖 6 (a)所示.從圖中可以看出即使用于匹配的功耗軌跡累加到2000條,攻擊的成功率仍然只有50%左右,無(wú)法恢復(fù)其密鑰.本文所使用的基于模糊匹配的模板攻擊是對(duì)密鑰的每一個(gè)比特逐一進(jìn)行攻擊的,因此亂序QUAD(2,160,160)的攻擊成功率等同于二項(xiàng)隨機(jī)分布,即本文所提出的防護(hù)方案具有良好的抗一階攻擊能力.
圖6 亂序QUAD(2,160,160)的實(shí)驗(yàn)結(jié)果Fig.6 Experimental results of shuffling QUAD(2,160,160)
此外,同樣采集40萬(wàn)條防護(hù)后的功耗軌跡用于實(shí)施基于非特定型TVLA的側(cè)信道泄露評(píng)估,結(jié)果如圖 6 (b)所示.根據(jù)實(shí)驗(yàn)結(jié)果可知,使用TVLA對(duì)功耗中的各樣本點(diǎn)進(jìn)行評(píng)估時(shí),沒(méi)有任何一個(gè)樣本點(diǎn)的t值超出了4.5的閾值范圍,即TVLA評(píng)估無(wú)法找出任何一個(gè)泄露點(diǎn),經(jīng)過(guò)防護(hù)后的QUAD具有良好的抗一階側(cè)信道攻擊能力.
側(cè)信道攻擊技術(shù)的發(fā)展對(duì)物聯(lián)網(wǎng)加密模塊的安全性構(gòu)成了嚴(yán)重的威脅.因此本文針對(duì)并行QUAD存在的泄露,提出了一種通用于多變量密碼算法的輕量級(jí)防護(hù)方案.在多變量密碼算法原有優(yōu)點(diǎn)的基礎(chǔ)上,增強(qiáng)了它的抗側(cè)信道攻擊能力.本文所提的隱藏防護(hù)方案權(quán)衡了多變量密碼算法的執(zhí)行效率、抗側(cè)信道攻擊的能力以及資源使用率,僅添加了一個(gè)7位的寄存器保存隨機(jī)初始變量就提高了其抗側(cè)信道攻擊的能力.最后,對(duì)本文所提防護(hù)方案實(shí)施了基于模糊匹配的模板攻擊,而攻擊結(jié)果并不能恢復(fù)它的密鑰.為更進(jìn)一步說(shuō)明防護(hù)方案的有效性,對(duì)輕量級(jí)防護(hù)方案實(shí)施了基于TVLA的側(cè)信道泄露評(píng)估,根據(jù)評(píng)估結(jié)果可知,經(jīng)過(guò)隱藏防護(hù)之后的QUAD不存在泄露.實(shí)驗(yàn)結(jié)果表明本文所提的防護(hù)方案切實(shí)有效,從而使多變量密碼算法能夠安全地應(yīng)用于物聯(lián)網(wǎng)設(shè)備中,為物聯(lián)網(wǎng)設(shè)備的安全提供了保障.