姚茂群,薛紫微
(杭州師范大學(xué)信息科學(xué)與技術(shù)學(xué)院,浙江 杭州 311121)
功耗分析攻擊(power analysis attack, PAA)[1]是威脅硬件安全的一種強(qiáng)有力的攻擊手段,其利用硬件電路工作過(guò)程中必然產(chǎn)生的功耗與其所處理數(shù)據(jù)的相關(guān)性建立信息泄露模型,通過(guò)對(duì)示波器所采樣的能量曲線進(jìn)行統(tǒng)計(jì)學(xué)分析,提取出數(shù)字電路存儲(chǔ)或計(jì)算的重要信息,如智能卡的密鑰、密碼芯片的S盒運(yùn)算等.
基于PAA的改進(jìn)攻擊方法近年來(lái)層出不窮,因此,對(duì)PAA的預(yù)防措施已經(jīng)成為工業(yè)界和學(xué)術(shù)界研究的重要方向.功耗攻擊防護(hù)措施可以分為算法級(jí)、系統(tǒng)級(jí)和電路級(jí)3個(gè)方面[2],其中電路級(jí)防護(hù)措施旨在從底層邏輯電路上根本性地消除由功耗變化所帶來(lái)的信息泄露.電路級(jí)抗PAA方案一般是設(shè)計(jì)出功耗恒定的邏輯電路,已有學(xué)者利用聯(lián)合的門(mén)電路實(shí)現(xiàn)了邏輯電路的功耗平衡[3],同時(shí)提出新型的門(mén)電路設(shè)計(jì)[4],但考慮到提前傳播效應(yīng)的影響和芯片面積的優(yōu)化,更多的基于雙軌預(yù)充電的門(mén)電路設(shè)計(jì)方案被提出[5].通過(guò)對(duì)現(xiàn)有方案的調(diào)研,本文基于雙軌預(yù)充電邏輯結(jié)合行波流水方法設(shè)計(jì)出一種新的門(mén)電路,該電路能平衡功耗且減少芯片中晶體管數(shù)量.
雙軌預(yù)充電邏輯(dual-rail precharge logic, DRPL)[4]是Tiri等提出的實(shí)現(xiàn)功耗平衡的一個(gè)重要方法,它基于動(dòng)態(tài)差分邏輯設(shè)計(jì)[6],因此雙軌的輸出是一對(duì)差分信號(hào),再結(jié)合預(yù)充電邏輯可以實(shí)現(xiàn)每個(gè)時(shí)鐘周期固定不變的功率消耗.
差分邏輯電路的輸出端為一對(duì)差分信號(hào),圖1是由上拉網(wǎng)絡(luò)和下拉網(wǎng)絡(luò)實(shí)現(xiàn)的差分邏輯,可以看到輸出了邏輯上互“反”的一對(duì)信號(hào).所以差分電路在任何時(shí)刻都有一個(gè)“1”和一個(gè)“0”的輸出,這為電路的功耗恒定提供了一個(gè)邏輯上的思路和基礎(chǔ).
圖1 差分邏輯Fig.1 Differential logic圖2 動(dòng)態(tài)邏輯Fig.2 Dynamic logic
圖2 動(dòng)態(tài)邏輯Fig.2 Dynamic logic
動(dòng)態(tài)邏輯將電路運(yùn)算分為預(yù)充電階段和求值階段,如圖2所示,在預(yù)充電階段,負(fù)載電容將被充電,而在求值階段,負(fù)載電容將會(huì)放電.電容放電產(chǎn)生的功耗是PAA的基礎(chǔ),因此如果求值階段的放電功耗平衡在一個(gè)固定的值,將從物理基礎(chǔ)上預(yù)防PAA攻擊.將差分邏輯和動(dòng)態(tài)邏輯結(jié)合可以實(shí)現(xiàn)平衡功耗的目的.
將動(dòng)態(tài)邏輯和差分邏輯結(jié)合,同時(shí)每個(gè)輸入信號(hào)和輸出信號(hào)均為一對(duì)差分信號(hào),這便是本文采用的雙軌預(yù)充電邏輯[4].由于寄生電容和負(fù)載電容效應(yīng)的影響,數(shù)字電路的輸出信號(hào)在由“1”跳變?yōu)椤?”或“0”跳變?yōu)椤?”時(shí)會(huì)產(chǎn)生功耗,這是功耗與電路中信息的相關(guān)性存在的基礎(chǔ).因此,為產(chǎn)生恒定的功耗,就要使電路無(wú)論輸入信號(hào)是什么,在輸出端都只出現(xiàn)相同的信號(hào)跳變.采用雙軌預(yù)充電邏輯正是為了實(shí)現(xiàn)這一特性.
圖3 DRPL實(shí)現(xiàn)與門(mén)Fig.3 DRPL AND gate
在雙軌預(yù)充電邏輯中,如圖3所示的二輸入與門(mén)(AND gate),每個(gè)輸入信號(hào)為一對(duì)差分信號(hào),即以(1,0)代替?zhèn)鹘y(tǒng)邏輯電路的邏輯“1”,以(0,1)代替邏輯“0”.每個(gè)時(shí)鐘周期的前半周期為預(yù)充電階段,這一階段電路的輸出端為(0,0);每個(gè)時(shí)鐘周期的后半周期為求值階段,這一階段電路進(jìn)行正常的邏輯運(yùn)算,因此輸出端為一對(duì)差分信號(hào)(0,1)或(1,0).這種設(shè)計(jì)保證了在每個(gè)時(shí)鐘周期內(nèi)電路的輸出端要么產(chǎn)生(0,0)到(1,0)的跳變,要么產(chǎn)生(0,0)到(0,1)的跳變,無(wú)論哪種跳變,一個(gè)周期內(nèi)均只有一個(gè)端子產(chǎn)生“0”到“1”的跳變,而另一個(gè)端子不發(fā)生跳變,不會(huì)有功耗泄露,因此,每個(gè)時(shí)鐘周期內(nèi)的功耗產(chǎn)生將是恒定的.
而在兩個(gè)時(shí)鐘周期之間,輸出信號(hào)將產(chǎn)生一個(gè)由求值階段的輸出到下一周期預(yù)充電階段的輸出跳變,即由(0,1)或(1,0)跳變到(0,0),同樣只有一個(gè)端子產(chǎn)生了由“1”到“0”的信號(hào)跳變,因此用DRPL實(shí)現(xiàn)的門(mén)電路在每個(gè)時(shí)鐘周期中及各時(shí)鐘周期之間分別產(chǎn)生的功耗是恒定不變的,這樣針對(duì)功耗的信息泄露分析將無(wú)法展開(kāi).
本文提出一種新型的功耗恒定的門(mén)電路設(shè)計(jì)方案,以與門(mén)為例,基于上下拉網(wǎng)絡(luò)使單軌與門(mén)和與非門(mén)(NAND gate)實(shí)現(xiàn)雙軌差分與門(mén)邏輯.
雙軌邏輯的輸出端為一對(duì)差分信號(hào),因此為實(shí)現(xiàn)雙軌與門(mén),需要將單軌的與門(mén)和與非門(mén)結(jié)合在一起.基于上下拉網(wǎng)絡(luò)的單軌與門(mén)和與非門(mén)設(shè)計(jì)如圖4,其實(shí)現(xiàn)結(jié)構(gòu)簡(jiǎn)單,每個(gè)門(mén)電路均只采用4個(gè)晶體管,這使得基于此的芯片的面積成本大大降低.
與門(mén)
與非門(mén)
由于本文雙軌電路方案采用的輸入和輸出信號(hào)均為差分信號(hào),所以需要將圖4單軌門(mén)電路的兩個(gè)輸入信號(hào)變換為兩對(duì)差分信號(hào),這也是實(shí)現(xiàn)行波流水預(yù)充電方法的基礎(chǔ).
行波流水預(yù)充電是指在預(yù)充電階段,預(yù)充電信號(hào)逐級(jí)傳遞的一種預(yù)充電方法.如果采用一個(gè)時(shí)鐘信號(hào)控制所有門(mén)電路,會(huì)對(duì)電路的布線帶來(lái)巨大的挑戰(zhàn).為避免這種時(shí)鐘信號(hào)的“大扇出”問(wèn)題,同時(shí)簡(jiǎn)化電路結(jié)構(gòu),擬采用行波流水的預(yù)充電方法.從圖3可以看出,預(yù)充電階段輸出信號(hào)為(0,0),可以用時(shí)鐘來(lái)控制實(shí)現(xiàn);但要采用行波流水的預(yù)充電邏輯,就需要保證上一級(jí)預(yù)充電階段的輸出作為下一級(jí)的輸入,同時(shí)實(shí)現(xiàn)下一級(jí)的預(yù)充電.因此在本文的設(shè)計(jì)中,電路在預(yù)充電時(shí),是由輸入信號(hào)的全“0”實(shí)現(xiàn)輸出信號(hào)的全“0”的.圖5展示了預(yù)充電階段前一級(jí)的門(mén)電路將全“0”的預(yù)充電信號(hào)傳遞到下一級(jí),進(jìn)而實(shí)現(xiàn)電路統(tǒng)一預(yù)充電的過(guò)程.
圖5 行波流水預(yù)充電Fig.5 Wave precharge
圖6 雙軌與門(mén)Fig.6 Dual-rail AND gate
要實(shí)現(xiàn)行波流水預(yù)充電,輸入信號(hào)和輸出信號(hào)必須都為差分信號(hào),且在預(yù)充電時(shí),這些差分信號(hào)對(duì)不是互補(bǔ)的一對(duì)信號(hào),而是均為“0”信號(hào).因此對(duì)圖4的單軌門(mén)電路進(jìn)行了改進(jìn),使其輸入也為差分信號(hào),并組合成雙軌與門(mén),如圖6所示.這里以高電平代表邏輯“1”,低電平代表邏輯“0”,可以看出,在該電路中,當(dāng)輸入信號(hào)均為邏輯“0”時(shí),輸出信號(hào)也均跳變到邏輯“0”,這樣就實(shí)現(xiàn)了預(yù)充電階段“0”信號(hào)的傳遞,使得預(yù)充電之后所有輸出信號(hào)被置零.
此電路可以完成行波流水預(yù)充電,再結(jié)合其雙軌特性,可以較好地實(shí)現(xiàn)功耗恒定.在預(yù)充電階段,輸入信號(hào)全“0”,輸出信號(hào)全“0”;在求值階段,輸入信號(hào)恢復(fù)為差分信號(hào),輸出信號(hào)也因此變?yōu)檎5倪壿嬛担沂腔橄喾吹男盘?hào).因此,在每個(gè)時(shí)鐘周期中,電路只發(fā)生了預(yù)充電階段到求值階段的一次“0”—“1”信號(hào)跳變,這使得電路的周期功耗變化是恒定的,消除了功耗分析所依賴的信號(hào)與功耗的相關(guān)性.
用電路仿真軟件Multisim對(duì)按照上述思路所設(shè)計(jì)的電路進(jìn)行模擬測(cè)試,實(shí)驗(yàn)結(jié)果如下:以時(shí)鐘信號(hào)控制預(yù)充電階段與求值階段的跳變,當(dāng)輸入信號(hào)(A,B)由(0,0)跳變?yōu)?1,1)時(shí),輸出信號(hào)由(0,1)跳變?yōu)?1,0),電路的功耗變化情況如圖7所示.
圖7 輸出信號(hào)由雙軌“0”跳變?yōu)椤?”時(shí)的功耗變化Fig.7 Power consumption of 0-1 switch
圖8 輸出信號(hào)由雙軌“1”跳變?yōu)椤?”時(shí)的功耗變化FigFig.8 Power consumption of 1-0 switch
圖9 輸出信號(hào)保持“0”不變時(shí)的功耗變化Fig.9 Power consumption of 0-0 switch
當(dāng)輸入信號(hào)由(1,1)跳變?yōu)?1,0)時(shí),輸出信號(hào)由(1,0)跳變?yōu)?0,1),電路的功耗變化如圖8所示.
當(dāng)輸入信號(hào)由(0,1)跳變?yōu)?1,0)時(shí),輸出信號(hào)由(0,1)跳變?yōu)?0,1),電路的功耗變化如圖9所示.
其他信號(hào)跳變情況不再一一展示.從實(shí)驗(yàn)結(jié)果可以看出,無(wú)論輸入信號(hào)如何跳變、輸出信號(hào)是否保持原值,電路都只會(huì)產(chǎn)生一樣的功耗變化,由此測(cè)量出來(lái)的電路功耗波形是周期性變化的,攻擊者將無(wú)法從中分析出信息泄露.
為驗(yàn)證本方案的功耗恒定特性,選取輸入信號(hào)由(1,1)跳變?yōu)?1,0)時(shí)電源電流的變化情況進(jìn)行統(tǒng)計(jì)分析,得到了本方案在最差情況下的NED值(8.24).WDDL邏輯是Kris等提出的一種抗功耗攻擊電路,其NED值為11.50[9-10],可以看出本方案實(shí)現(xiàn)的門(mén)電路具有更小的功耗偏差.當(dāng)然,從圖8、圖9中發(fā)現(xiàn),電路在各周期功耗變化仍存在微小的差異,這是由于晶體管類型的不同及毛刺信號(hào)干擾造成的,下一步研究將就這些問(wèn)題對(duì)方案進(jìn)行再次優(yōu)化.
杭州師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2022年6期