萬武南,陳 俊
(成都信息工程大學(xué)網(wǎng)絡(luò)空間安全學(xué)院;成都信息工程大學(xué)計算機(jī)學(xué)院 成都 610225)
自文獻(xiàn)[1]提出差分功耗分析(differential power analysis, DPA)方法以來,研究者提出了多種破解模冪運(yùn)算法的功耗攻擊方法,如簡單功耗分析(simple power analysis, SPA)[1]、DPA[2-3]、相關(guān)功耗分析(CPA)[4-5]。為了防止側(cè)信道攻擊,目前模冪算法常采用指數(shù)和底數(shù)掩碼進(jìn)行有效防范[6]。針對底數(shù)掩碼的抗功耗攻擊算法,文獻(xiàn)[7]提出一種互相關(guān)功耗分析方法(CCA),通過模乘與模乘之間相關(guān)性差異破譯指數(shù);文獻(xiàn)[8-9]則針對指數(shù)掩碼,提出水平相關(guān)功耗分析方法。但一階CPA方法對雙重掩碼的抗攻擊算法無效,并且對功耗曲線采集設(shè)備噪聲的前提非常嚴(yán)格。隨后,文獻(xiàn)[10]提出針對指數(shù)掩碼防范算法的高階CPA方法。文獻(xiàn)[11]對HeeSeok方法進(jìn)行改進(jìn),針對雙重掩碼的模冪防范算法,通過人工觀測,閾值設(shè)定選擇有效點(diǎn),提出一種二階CPA攻擊算法。
隨著機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,文獻(xiàn)[12]提出采用k均值聚類分析方法攻擊模冪算法。文獻(xiàn)[13]針對模冪算法,提出選擇明文聚類功耗分析方法,通過選擇輸入特殊的兩條明文,成功破解冪指數(shù)。文獻(xiàn)[14]則采用k均值聚類方法,提出相關(guān)電磁攻擊方法,能夠有效攻擊模冪算法,并且對采用Lopez-Dahab坐標(biāo)系的二元有限域上實現(xiàn)的ECC算法進(jìn)行了破譯。文獻(xiàn)[15]將模糊理論引入到k均值算法中,采用一條功耗曲線,針對指數(shù)掩碼的抗攻擊模冪算法,提出對RSA密碼算法的一種無監(jiān)督的電磁攻擊。文獻(xiàn)[16]對文獻(xiàn)[14]提出算法進(jìn)行改進(jìn),采用最大期望算法(expectation maximization algorithm)的聚類算法,并結(jié)合主成分分析(principal component analysis)特征提取方法,對模冪算法進(jìn)行電磁攻擊。
采用高階相關(guān)功耗分析攻擊,對雙重掩碼的模冪防范算法理論上被證明是有效的,但該攻擊方法會帶來有效信息損失,降低攻擊效率?,F(xiàn)有的高階功耗分析法,分析攻擊中分類閾值設(shè)定采用人工觀察進(jìn)行設(shè)定,閾值設(shè)定的主觀性對攻擊準(zhǔn)確率影響較大。此外,國內(nèi)外文獻(xiàn)研究中沒有針對雙重掩碼的模冪運(yùn)算進(jìn)行聚類功耗攻擊分析的研究[17-19]。
本文考慮到實際應(yīng)用,針對雙重掩碼模冪算法,利用模乘功耗之間相關(guān)性的特征差異,采用多重k均值聚類選擇有效功耗操作點(diǎn),提出了一種基于聚類的相關(guān)功耗分析攻擊方法,該方法可以減少有效信息損失及攻擊過程中的人工干預(yù)。最后搭建實驗,對自制功耗采集設(shè)備運(yùn)行雙重掩碼的模冪算法的智能卡實施攻擊,實驗結(jié)果表明,本文方法能有效提升攻擊效率和攻擊算法通用性。
為了防止密碼硬件設(shè)備中的模冪算法遭受SPA和DPA攻擊,文獻(xiàn)[7]提出了一種雙重掩碼的模冪防范方法,如算法1。算法1沒有直接計算mdmodN,通過隨機(jī)數(shù)r對消息m進(jìn)行掩碼,并采用t和s對指數(shù)d進(jìn)行重編碼,重編碼其中φ(N)為N的歐拉函數(shù),k為整數(shù)。
算法1 抗SPA-DPA 雙重掩碼模冪算法
輸出C=mdmodN。
1)t=kφ(N)+d-(2n-1),s=φ(N)-d
2)T[00]=m×rmodN;T[01]=m×r2modN;
T[10]=m2×r2modN;T[11]=m2×r3modN;
4)fori=(n-2)~0
①C=C×CmodN –平方(squaring)
②
5)return (C)
密碼設(shè)備運(yùn)行密碼操作所泄露的功耗信息依賴于所處理的數(shù)據(jù)和執(zhí)行的操作,即:數(shù)據(jù)依賴性和操作依賴性。因此,這兩種依賴分量是邊信道攻擊基礎(chǔ)。除了這兩種依賴分量之外,功耗數(shù)據(jù)還包含了大量噪聲和直流分量。進(jìn)行功耗曲線的采集要受到設(shè)備、環(huán)境等多方面的影響,為了便于描述,功耗曲線的總功耗組成為:
式中,Ptotal為總功耗;Pop為操作依賴分量;Pdata為數(shù)據(jù)依賴分量;為電子噪聲;為恒定分量。根據(jù)式(1)中功耗組成可知,模乘和的功耗,Pop分量主要依賴于模乘算法實現(xiàn)操作步驟,理論上來說,模乘操作Pop不變;Pdata與模乘中操作數(shù)相關(guān),根據(jù)漢明重量功耗模型可知,理論上來說操作數(shù)的漢明重量不同,Pdata功耗也有高低之分。操作數(shù)漢明重量越相似,兩模乘的Pdata越相似,即功耗相關(guān)性越高。若模數(shù)N相同,模乘之間的功耗相關(guān)性與操作數(shù)關(guān)系如表1所示。
表1 兩模乘運(yùn)算的功耗相關(guān)性
因此根據(jù)模冪運(yùn)算與操作數(shù)的相關(guān)功耗模型可知,通過模乘功耗相關(guān)性的不同,來判斷區(qū)分模乘操作數(shù)之間關(guān)系。算法1中,步驟4)循環(huán)運(yùn)算中包含兩種模乘運(yùn)算,其中步驟①的模乘稱為“平方(S)”,步驟②的模乘稱為“乘(M)”,功耗示意圖如圖1所示。圖1中縱坐標(biāo)表示各模乘的功耗電壓值,橫坐標(biāo)則表示時間。白色為底的表示步驟①模乘功耗,帶顏色為底是步驟②模乘功耗。
步驟②的模乘中,涉及到兩操作數(shù)分別為C和其中C是動態(tài)變化的,是固定值,4種取值分別為T[00]、T[01]、T[10]、T[11]。T值的下標(biāo)取值是由冪指數(shù)d重編碼t和s確定,因此可知步驟②模乘的運(yùn)算與冪指數(shù)d值密切相關(guān),是冪指數(shù)泄露點(diǎn)。根據(jù)模冪相關(guān)功耗模型,理論上來說,統(tǒng)計步驟②中模乘之間的功耗的相關(guān)性,可以區(qū)分出 操作數(shù)的不同。
圖1 算法1模乘功耗示意圖
而在真實環(huán)境下,采集的模乘多個功耗點(diǎn)是由數(shù)據(jù)功耗與操作功耗,以及各種電路噪聲混疊在一起,并不是每個功耗點(diǎn)都直接與模乘操作數(shù)相關(guān),包含著與操作數(shù)不相關(guān)的功耗。因此除了通過濾波去除電路固有噪聲,還選擇與操作數(shù)數(shù)據(jù)依賴強(qiáng)的功耗點(diǎn),提高攻擊效率和準(zhǔn)確率。分量Pdata數(shù)據(jù)依賴功耗可以分為有效數(shù)據(jù)依賴功耗和較弱數(shù)據(jù)依賴功耗兩部分,則功耗組成為:
相關(guān)功耗分析模型中,模乘各功耗點(diǎn)相關(guān)性包含了較弱數(shù)據(jù)依賴相關(guān)性。根據(jù)信噪比理論可知,信號之間的方差越大,信噪比越高;方差越小,噪聲越大。為了去除較弱數(shù)據(jù)依賴功耗,把模乘各點(diǎn)相關(guān)性作為“信號”,通過方差對模乘相關(guān)性二次處理,提取出有效數(shù)據(jù)依賴功耗的有效點(diǎn),利用聚類k均值相關(guān)功耗算法,提高攻擊效率和準(zhǔn)確率。
1)首先輸入相同冪底數(shù)和冪指數(shù),將算法1采集功耗曲線進(jìn)行濾波、對齊,然后截取算法1中步驟的功耗曲線,組成如下分塊矩陣:
式中,每個分塊矩陣Mi,j代表第i條功耗曲線第j個模乘;n代表曲線中模乘的數(shù)量;r代表曲線條數(shù)。而每個分塊矩陣為:
式中,p代表每個模乘功耗的點(diǎn)數(shù)。矩陣Z中的列向量其中0≤
2)由矩陣Z,計算模乘與第s模乘之間功耗相關(guān)系數(shù),得到模乘之間相關(guān)系數(shù)矩陣為:
3)計算CS每列的方差,vi代表矩陣CS的每列 方差值,得到方差向量值為:
4)計算方差向量與向量均值的歐式距離,得到歐式距離向量為:
5)采用k均值聚類方法,將方差歐式距離SD進(jìn)行聚類,聚類數(shù)目為δ,選擇聚類中心點(diǎn)最大的簇的集合作為功耗有效點(diǎn)選擇集
輸入:數(shù)據(jù)集SD,聚類數(shù)目為δ。
① 初始化,隨機(jī)指定δ個聚類中心點(diǎn)1μ、2μ、…、δμ。②計算距離值di到各聚類中心jμ的距離判斷di與jμ之間距離的函數(shù)i值為di在數(shù)據(jù)集SD中原編號。③ 重新計算各簇中心點(diǎn),對每個簇計算為每個簇中的數(shù)據(jù)值,t為距離值在新簇中的新編號,Nj為第j個簇中變量的個數(shù)。④ 計算偏差⑤ 收斂判斷,如果J值收斂,則轉(zhuǎn)步驟⑥;否則轉(zhuǎn)步驟②。⑥ 對每個簇計算和則μmax聚類中心所屬的簇為選擇集
7)采用類似步驟4)的k均值聚類方法,將cofS再次進(jìn)行聚類,聚類數(shù)目為2,輸出聚類中心點(diǎn)最大的簇的集合則簇中位置編號對應(yīng)的模乘與固定模乘s的依賴關(guān)系強(qiáng),即判斷為與模乘s的操作數(shù)一致。
8)返回步驟2),依次將n-1個模乘分成4類,每類可猜測為T[00]、T[01]、T[10]、T[11],重組編碼出t和s的16種取值,然后推算出正確的冪指數(shù)d值。
功耗采集的實驗設(shè)備有PC工作站、數(shù)字采樣示波器(Tektronix PPO4032)、自制功耗采集板,如圖2所示。實驗PC工作站與示波器通過網(wǎng)線相連,示波器與自制功耗采集板相連,自制功耗采集板通過USB串口通信與PC機(jī)相連。示波器主要是接收自制功耗采集板的觸發(fā)信號指令和采集功耗曲線,自制功耗采集板集成了智能卡讀卡器、STM32開發(fā)板等多種功能。
圖2 功耗采集實驗硬件環(huán)境
在圖2所示功耗采集平臺上,采集智能卡算法1的功耗曲線,將采集原始功耗曲線進(jìn)行濾波,去除固有噪聲;再對功耗曲線進(jìn)行切割和重組,構(gòu)成只由算法1中步驟4)的步驟②功耗構(gòu)成的新的模乘曲線,數(shù)據(jù)存放在矩陣M中。然后對功耗矩陣M進(jìn)行聚類相關(guān)功耗分析:計算模乘與固定模乘之間的相關(guān)性;通過對相關(guān)系數(shù)計算方差和方差歐式距離;對方差歐式距離聚類處理進(jìn)行分類,如圖3所示,圖中聚類數(shù)目C=3,選取聚類中心最大值的簇類作為有效功耗點(diǎn)。
根據(jù)聚類選取的有效功耗點(diǎn),對模乘與模乘之間相關(guān)系數(shù)進(jìn)行再次處理,選擇有效點(diǎn)位置的相關(guān)系數(shù)相加,然后再采用聚類,如圖4所示。圖中,聚類數(shù)目C=2,分別為與固定模乘相關(guān)性強(qiáng)的簇類及與固定模乘相關(guān)性弱的簇類,選取聚類中心最大值的簇類的編號對應(yīng)模乘為固定模乘相關(guān)性強(qiáng),即數(shù)據(jù)操作數(shù)相同。
實驗對冪指數(shù)長度1 024 bit的雙重掩碼模冪算法攻擊,示波器采樣頻率1 MHz,采集功耗曲線為450條進(jìn)行了攻擊實驗。并與文獻(xiàn)[5,10-11]中提出的算法攻擊準(zhǔn)確率進(jìn)行對比,實驗結(jié)果如圖5所示。從圖5可以看出,文獻(xiàn)[5]提出的一階CPA對雙重掩碼的模冪算法攻擊準(zhǔn)確率低于0.5,無效。而文獻(xiàn)[10-11]提出基于閾值設(shè)定的二階CPA攻擊方法,在閾值設(shè)定最優(yōu)情況下,文獻(xiàn)[11]攻擊準(zhǔn)確率在曲線達(dá)到400條左右,攻擊準(zhǔn)確率最高接近99%左右,文獻(xiàn)[10]的攻擊準(zhǔn)確率最高70%左右。但是兩種算法攻擊準(zhǔn)確率與攻擊者閾值的設(shè)定直接相關(guān),攻擊準(zhǔn)確率依賴攻擊者的經(jīng)驗。
圖3 方差歐式聚類分類
圖4 有效功耗點(diǎn)相關(guān)系數(shù)聚類分類
圖5 不同CPA攻擊算法準(zhǔn)確率圖
圖6給出了4種攻擊方法在實驗中對閾值調(diào)整,3種不同閾值設(shè)置攻擊結(jié)果,從圖中可以看出不同閾值攻擊準(zhǔn)確率差異明顯。本文提出的聚類CPA方法,在曲線條數(shù)大于400條左右時,攻擊準(zhǔn)確率收斂于100%。從圖6也可以看出,功耗曲線條數(shù)接近200,不同聚類數(shù)目的攻擊準(zhǔn)確率接近,當(dāng)功耗曲線小于200時,聚類數(shù)目對攻擊準(zhǔn)確率有影響,這主要是因為曲線數(shù)目小,模乘之間相關(guān)性差異小。而k均值聚類算法的分類受聚類數(shù)目和聚類中心初始值影響,因而攻擊準(zhǔn)確率不隨曲線條數(shù)遞增而有波動。另外3種攻擊算法總體趨勢也是往上增加,功耗曲線達(dá)到400條左右,攻擊準(zhǔn)確率趨于穩(wěn)定。
圖6 4種CPA攻擊算法不同閾值準(zhǔn)確率圖
本文針對真實環(huán)境中雙重掩碼的模冪防范算法的功耗分析攻擊問題,在高階互相關(guān)功耗分析算法基礎(chǔ)上,提出聚類高階相關(guān)功耗分析改進(jìn)方法,通過對模乘之間相關(guān)系數(shù)采用聚類再處理,選取有效功耗點(diǎn),去除模乘數(shù)據(jù)有效性低的功耗點(diǎn),提高雙重掩碼的模冪算法準(zhǔn)確率和智能性。在真實環(huán)境下,應(yīng)用本文的方法,400條功耗曲線以后,攻擊準(zhǔn)確率穩(wěn)定在100%。
本文的研究工作得到了成都市科技局惠民研發(fā)項目(2016-HM01-00217-SF)的資助,在此表示感謝!