姚茂群 李聰輝
(杭州師范大學(xué)信息科學(xué)與工程學(xué)院 杭州 311121)
功耗分析攻擊是當前眾多旁路攻擊中一種有效且易于操作的攻擊方法,其通過獲取電子元器件在運行時所產(chǎn)生的功耗,并利用該功耗與元器件中所運行密碼算法的某些運算結(jié)果之間的相關(guān)性來進行分析,進而獲得有價值的秘密信息[1–5]。而這一相關(guān)性是由當前流行的數(shù)字集成電路邏輯–CMOS邏輯單元所決定的,這種邏輯單元的功耗與其輸入輸出信號的翻轉(zhuǎn)狀態(tài)(“0→1”或“1→0”)有密切聯(lián)系,并且這兩種信號翻轉(zhuǎn)時的電流所對應(yīng)產(chǎn)生的電路功耗是不同的。而當CMOS邏輯單元在連續(xù)的兩個時鐘周期都沒有發(fā)生信號的翻轉(zhuǎn)時,由于沒有產(chǎn)生動態(tài)電流,因此在這連續(xù)的時鐘周期里電路所產(chǎn)生的功耗較少,與有信號翻轉(zhuǎn)時的電路功耗有明顯的差異。因此,這種差異性就給攻擊者通過分析功耗來獲得秘密信息提供了理論依據(jù)[6–11]。
近年來,研究者逐漸重視對電路級抗旁路攻擊的研究,其中對功耗恒定性電路的研究是一個比較熱門的方向。在這之中就有學(xué)者提出了一種可以讓電路的功耗曲線不隨信號取值變化而變化的雙軌預(yù)充電邏輯結(jié)構(gòu)(Dual Rail Precharge, DRP),其中最具代表性的是Tiri 等人[12]提出的 SABL(Sense Amplifier Based Logic)電路和WDDL(Wave Dynamic Differential Logic)電路[13]。因此也有眾多學(xué)者基于這些邏輯電路做了相關(guān)的研究[14–17],但是由于SABL, WDDL這些邏輯單元存在CMOS邏輯中固有的提前傳播效應(yīng)[18],且電路中某一時刻的整體功耗是各個單元電路在這個時刻的疊加,因此跳變時間的不同就會造成整體功耗的差異。正是因為有了這種功耗差異,因此上述提到的DRP結(jié)構(gòu)仍然存在被功耗攻擊的風(fēng)險。針對這些不足之處,國內(nèi)有學(xué)者受到了互補傳輸管邏輯(Complementary Pass-transistor Logic, CPL)的啟發(fā),提出了一種基于 CPL 的新型雙軌預(yù)充電邏輯–差分傳輸管預(yù)充電邏輯(Differential Pass-transistor Precharge Logic, DP2L)[19],該邏輯電路不僅可以實現(xiàn)功耗恒定的性質(zhì),還可以消除以往DRP結(jié)構(gòu)中存在的提前傳播效應(yīng)問題,這極大地提升了電路在抗功耗攻擊方面的能力。
但是,利用Hspice軟件進行仿真實驗,實驗結(jié)果表明已提出的基于CPL結(jié)構(gòu)的DP2L電路仍然存在一定程度的功耗信息泄露,依舊存在被功耗攻擊的可能性。對此,本文在分析了該電路邏輯結(jié)構(gòu)的基礎(chǔ)之上,對該電路的結(jié)構(gòu)進行了改進,使其更加滿足功耗恒定的特性。并通過與改進前的電路進行比較,驗證了改進后電路在功耗恒定上的優(yōu)勢。
CMOS邏輯單元在輸出端信號發(fā)生“0→1”翻轉(zhuǎn)或“1→0”翻轉(zhuǎn)時消耗能量。除此之外,電路不消耗能量。因此眾多研究者基于這種相關(guān)性進行了較多的研究,并已經(jīng)提出了多種可以消除這種相關(guān)性的功耗恒定性電路邏輯,例如SABL, WDDL,LBDL[20]以及DP2L邏輯等等,這些電路邏輯都屬于不同結(jié)構(gòu)的雙軌預(yù)充電邏輯。
雙軌預(yù)充電邏輯的特點如下:
(1) 一個雙軌預(yù)充電邏輯電路是由兩個單軌預(yù)充電邏輯電路組合而成的;
(2) 雙軌(單軌)預(yù)充電邏輯電路的一個時鐘周期分為預(yù)充電和求值兩個階段;
(3) 預(yù)充電階段時,雙軌(單軌)預(yù)充電邏輯電路的所有互補輸入信號端都輸入預(yù)充電值低電平“0”。求值階段時,所有互補輸入信號端都輸入互補值;
(4) 預(yù)充電階段時,雙軌(單軌)預(yù)充電邏輯電路的輸出端都輸出低電平“0”信號。求值階段時,雙軌預(yù)充電邏輯門采用了差分互補的雙端輸出形式,即若一個輸出信號為高電平“1”,則另一個輸出信號必為低電平“0”。
這樣設(shè)計的目的就是使得雙軌預(yù)充電邏輯電路從預(yù)充電階段進入求值階段時,不管輸入信號取何互補值,兩個互補輸出端都是僅有一個會發(fā)生“0→1”的翻轉(zhuǎn)。當從求值階段進入預(yù)充電階段時,互補輸出端也是僅有一個發(fā)生“1→0”的翻轉(zhuǎn)。這就保證了固定的信號翻轉(zhuǎn)率和功耗恒定性,消除了輸入信號與功耗的相關(guān)性。
圖1和圖2分別為DP2L單軌和雙軌輸出“或”邏輯門,通過這兩個電路結(jié)構(gòu)來詳細闡述其預(yù)充電和求值過程。圖1中P1~P6 的6個PMOS管用來實現(xiàn)電路的預(yù)充電功能;NMOS管N5和N6用來實現(xiàn)該電路的具體邏輯。即當輸入端輸入互補信號值時,電路進入求值階段,此時這兩個NMOS管中的一個會被導(dǎo)通,從而形成一條從輸入端到反相器的通路;余下的NMOS管N1~N4的主要作用是消除提前傳播效應(yīng)[19];反相器是作為輸出負載的驅(qū)動單元。例如,在預(yù)充電階段,(a,b)接收到輸入信號(0, 0),()也接收到輸入信號(0, 0),這時該邏輯單元的所有PMOS管都被導(dǎo)通,電源VDD經(jīng)過反相器之后輸出低電平“0”;當進入求值階段時,若(a,b)接收到輸入信號(1, 1),則(a,b)接收到輸入信號(0, 0),此時N2, N4, N5分別打開,N1, N3,N6保持關(guān)閉狀態(tài),此時就只有N2, N5和反相器構(gòu)成一條唯一通路,該條通路將連接N2的b信號值輸送到反相器,經(jīng)過反相器后輸出端q的值為高電平“1”,滿足“或門”的電路邏輯。
圖1 DP2L單軌輸出“或”邏輯
圖2 DP2L雙軌輸出“或”邏輯的構(gòu)成
而其他邏輯功能單元只需要替換電路最左側(cè)一列的兩個輸入信號就可以利用類似的電路結(jié)構(gòu)來實現(xiàn)[19]。
將單軌預(yù)充電邏輯結(jié)構(gòu)的正邏輯與其對應(yīng)的負邏輯相組合,就形成了DP2L雙軌預(yù)充電邏輯結(jié)構(gòu)。圖2以“或門”為例給出了DP2L雙軌輸出“或”邏輯的構(gòu)成方式,它由“或”和“或非”單軌預(yù)充電邏輯結(jié)構(gòu)組合而成,其中“或”邏輯門的輸出端與DP2L雙軌輸出端q直接相連,“或非”邏輯門的輸出端與DP2L 雙軌輸出端q直接相連。因此,根據(jù)該電路的設(shè)計特點,若要實現(xiàn)DP2L雙軌輸出“或非”邏輯,則只需要將q和q交叉換線即可。該電路的具體工作步驟為:預(yù)充電階段時,所有輸入信號端都輸入低電平預(yù)充電值“0”,根據(jù)之前對單軌邏輯的分析,這時雙軌邏輯的輸出端q和q的值也分別為“0”;求值階段時,所有互補輸入信號端均輸入互補信號值,則雙軌邏輯的輸出端q和q也輸出互補值。因此當電路從預(yù)充電階段進入求值階段后,不管輸入信號端取何互補值,其兩個輸出端僅有一個會產(chǎn)生“0→1”的跳變,而另一個輸出端的值則保持“0”不變;而當電路的求值階段結(jié)束進入預(yù)充電階段時,DP2L邏輯電路的輸入信號端則都輸入低電平預(yù)充電值“0”,此時邏輯電路的兩個輸出端中也僅有一個會產(chǎn)生“1→0”的跳變。
通過對圖1中DP2L單軌輸出“或”邏輯的仔細分析,發(fā)現(xiàn)該電路邏輯在求值階段晶體管充放電的數(shù)量并不相同。也就是說,電路功耗與輸入信號的取值并不完全獨立,仍然存在相關(guān)性。例如,當電路進入求值階段,如果輸入信號的值(a,a)為(1,0), (b,b)的值也為(1, 0),則NMOS管N2, N5導(dǎo)通,PMOS管P2, P6導(dǎo)通,由于P1, P5斷開,則電路將僅對N2, N5兩個晶體管放電。而當輸入端信號的值(a,a)為(0, 1), (b,b)的值也為(0, 1)時,NMOS管N3, N6導(dǎo)通,PMOS管P3, P5導(dǎo)通,電路將對這4個管子放電。這樣當輸入信號不同時,電路所消耗的功耗就會因為晶體管放電數(shù)目不同而造成差異,使得電路不能達到完全的功耗平衡。
為了驗證此分析,利用Hspice軟件對DP2L單軌輸出“或”邏輯進行模擬實驗,圖3中有明顯電流峰值的部分為電路進入求值階段后輸入信號(a,b)的值分別為(0, 0), (0, 1), (1, 0), (1, 1)時的電源端瞬態(tài)電流曲線,即可以表示為運行時的邏輯電路功耗變化。圖中橫坐標表示運行時間,縱坐標表示電源端瞬態(tài)電流,將相同的輸入信號運行4個周期以保證數(shù)據(jù)的準確性。圖中以2.3 ns為一個周期,一個周期中包含預(yù)充電和求值兩個階段,其中有明顯電流峰值的時段為求值階段,其余皆為預(yù)充電階段。圖中可看出一個周期中包含兩個相鄰的電流峰值,先產(chǎn)生的電流峰值表示輸出信號發(fā)生“0→1”翻轉(zhuǎn)時產(chǎn)生的電流,后產(chǎn)生的電流峰值表示輸出信號發(fā)生“1→0”翻轉(zhuǎn)時產(chǎn)生的電流。
圖3(a)由于輸入信號(a,b)的值為(0,0)時,“或”邏輯輸出并沒有發(fā)生翻轉(zhuǎn),因此產(chǎn)生的動態(tài)功耗即電源端電流非常??;而輸入其他信號時,由于發(fā)生了輸出信號的翻轉(zhuǎn),即產(chǎn)生了充放電過程。并且可明顯看出同一周期中電流曲線的相鄰兩個峰值具有明顯差異,這個差異是由輸出信號發(fā)生“0→1”,“1→0”翻轉(zhuǎn)時所產(chǎn)生的不同功耗所造成的。因此,攻擊者仍然可以利用這個差異進行有效的攻擊。
圖3 4種輸入信號下的DP2L單軌輸出“或”邏輯瞬態(tài)電流曲線
經(jīng)過以上對DP2L邏輯的分析,圖4所示為改進后的DP2L單軌輸出“或”邏輯。分析如下:在求值階段時,當輸入端(a,a)的值為(1, 0), (b,b)的值也為(1, 0)時,NMOS管N2, N5導(dǎo)通,PMOS管P3,P11導(dǎo)通,則電路將僅對N2, N5, P3, P11這4個晶體管放電。而當輸入端信號(a,a)的值為(0, 1), (b,b)的值也為(0,1)時,NMOS管N3, N6導(dǎo)通,PMOS管P5, P9導(dǎo)通,則電路也將對4個管子放電。因此,在求值階段不管輸入信號為何值,晶體管的翻轉(zhuǎn)數(shù)量都是恒定的;而預(yù)充電階段時,輸入信號都為低電平“0”,此時由于PMOS管全部都被導(dǎo)通,因此晶體管的放電數(shù)量亦恒定。因此只要保證邏輯電路中所使用的PMOS管的規(guī)格參數(shù)全部相同,NMOS管的規(guī)格參數(shù)也全部相同,則經(jīng)過改進后的DP2L邏輯在不同階段的功耗都是由相同參數(shù)和數(shù)量的晶體管充放電產(chǎn)生的,這就保證了功耗恒定的性質(zhì)。其他的基于DP2L的邏輯門電路根據(jù)相同的改進方法即可達到相同的效果。
圖4 改進后DP2L單軌輸出“或”邏輯
為了驗證此分析,通過Hspice軟件對改進后的DP2L單軌輸出“或”邏輯進行模擬,圖5中有明顯電流峰值的部分為求值階段時輸入信號(a,b)的值分別為(0, 0), (0, 1), (1, 0), (1, 1)時的電源端電流曲線。所使用的模擬實驗方法與圖3中所使用的完全相同。
圖5 4種輸入信號下的改進后DP2L單軌輸出“或”邏輯瞬態(tài)電流曲線
由以上模擬結(jié)果可知,經(jīng)過改進后的DP2L單軌輸出“或”邏輯在不同輸入信號取值的情況下,一個周期中相鄰兩個電流峰值的差異較小,與改進前相比有較大的改善。這就保證了電路在輸出信號發(fā)生“0→1”,“1→0”翻轉(zhuǎn)時具有近乎相等的功耗,從而改善了功耗恒定的特性。
將改進后的DP2L單軌輸出“或”邏輯和改進后的DP2L單軌輸出“或非”邏輯相組合就構(gòu)成了如圖2所示的DP2L雙軌輸出“或”邏輯。利用Hspice對該DP2L雙軌輸出“或”邏輯進行模擬,圖6中有明顯電流峰值的部分為求值階段時輸入信號(a,b)的值分別為(0, 0), (0, 1), (1, 0), (1, 1)時的電源端電流曲線。所使用的模擬實驗方法與圖3中所使用的完全相同。分析可得:不管輸入端的信號取何值,該邏輯門電路所表現(xiàn)出的功耗都是完全恒定的,并且當輸出信號產(chǎn)生“0→1”和“1→0”翻轉(zhuǎn)時電路所產(chǎn)生的功耗也是近似相同的。
圖6 4種輸入信號下改進后DP2L雙軌輸出“或”邏輯瞬態(tài)電流曲線
為驗證改進后DP2L電路的功耗恒定特性,將圖3、圖5、圖6中的數(shù)據(jù)進行分析和整理,如表1–表3所示,表4為國際上同類型邏輯電路的功耗恒定性能比較。表中分別列出了電路改進前后在不同輸入條件下發(fā)生“0→1”和“1→0”翻轉(zhuǎn)時電流數(shù)據(jù)的平均值,以及衡量功耗恒定特性的評價指標:標準化能量偏差(Normalized Energy Deviation,NED)[13]。其定義為
表1 改進前DP2L單軌電路相關(guān)參數(shù)
表2 改進后DP2L單軌電路相關(guān)參數(shù)
表3 改進后DP2L雙軌電路相關(guān)參數(shù)
表4 同類型邏輯實現(xiàn)的“或”門標準化能量偏差對比
式中,E是電路在一個運算周期所產(chǎn)生的功耗值的集合。NED的取值范圍在[0,1],且數(shù)值越小表明該電路的功耗恒定性能越好。
由表4可得,改進后的DP2L電路在功耗恒定特性上明顯優(yōu)于其他邏輯電路,前者較高的NED值就表現(xiàn)出了一定程度的數(shù)據(jù)與功耗的相關(guān)性,更容易遭受到功耗攻擊。而改進后的電路以其較低的NED值就體現(xiàn)出了較高的抗功耗攻擊性能。
通過分析DP2L電路的功耗恒定特性并經(jīng)過Hspice軟件的模擬驗證,發(fā)現(xiàn)該電路無法完全滿足功耗恒定特性。因此本文對DP2L電路進行改進,并對改進后電路進行仿真測試和NED值的比較,結(jié)果表明改進后的DP2L電路在功耗恒定的特性上有了明顯的提升,從而進一步為密碼功能模塊的可靠性和安全性提供有力支撐。