摘 要:隨著現(xiàn)場可編程門陣列(FPGA)芯片在安全領(lǐng)域上的廣泛應(yīng)用,有關(guān)FPGA密碼芯片的抗(DPA)研究也越來越受關(guān)注,但目前的研究成果大多針對智能卡的安全防護。在研究各種電路級安全防護技術(shù)的基礎(chǔ)上,采用硬件宏的方法將雙軌和預充電技術(shù)應(yīng)用于FPGA芯片的數(shù)據(jù)加密標準算法(DES)硬件結(jié)構(gòu),通過DPA攻擊實驗后發(fā)現(xiàn),未加防護措施的DES加密系統(tǒng)難以抵御DPA攻擊,而加防護措施的加密系統(tǒng)具有抗DPA攻擊的能力。
關(guān)鍵詞:FPGA; 差分功耗分析; 數(shù)據(jù)加密標準; 雙軌; 預充電
中圖分類號:TP309.7 文獻標識碼:A
文章編號:1004-373X(2010)09-0001-03
Pretection Technique of Anti DPA-attack Circuit Based on FPGA Platform
WANG Chuang-wei, YUAN Liang,DING Guo-liang, YIN Wen-long, CHANG Xiao-long
(Department of Computer Engineering, Ordnance Engineering College, Shijiazhuang 050003, China)
Abstract: With the widespeard application of field programmable gate array(FPGA) chip in the securtity field, theanti DPA-attack research of FPGA ciphering chip are getting much more attention, but most of the present research achievements focus on the security of smart cards. Based on the protection technique research of circuit, the dual-rail and pre-charge technique is applied in the data encryption standard(DES) hardware structure of the FPGA chip with the hard macros method. The attacking experiment of DPA demonstrates that without pretecting measure DES enciphering system can′t defend DPA, but enciphering system using pretecting measure has the ability to resist DPA-attack.
Keywords: FPGA; differential power analysis; DES; dual-rail; precharge
0 引 言
近年來,現(xiàn)場可編程門陣列(Field Programmable Gate Array, FPGA)由于其高性能、低價格、高開發(fā)速度、方便的編程方式等特點得到了廣泛的應(yīng)用。但對FPGA進行DPA(Differential Power Analysis,差分功耗分析)[1]攻擊已經(jīng)成為FPGA應(yīng)用中信息安全的主要威脅之一,受到了廣泛的關(guān)注。
DPA是SCA(Side Channel Attacks,旁路攻擊)[2]技術(shù)的一種, 其攻擊思想為:以電路的功耗特性為基礎(chǔ),利用功耗與內(nèi)部密鑰的關(guān)系,將大量采樣到的包含該內(nèi)部密鑰運算的功耗波形數(shù)據(jù)根據(jù)所猜測的密鑰進行劃分,使得所劃分的兩部分具有不同的功耗特性。最后,對兩部分的功耗數(shù)據(jù)相減得到功耗差分曲線,如果猜測正確,差分曲線將出現(xiàn)明顯的尖峰[2]。
因此,進行DPA攻擊的根本原因是電路邏輯表示的不對稱性引起的。本文將應(yīng)用FPGA的自身結(jié)構(gòu)特點,結(jié)合目前常用的抗DPA攻擊的電路級防護技術(shù),深入研究與分析在FPGA平臺上實現(xiàn)針對DPA攻擊的電路級防護技術(shù)。
1 FPGA上的電路防護技術(shù)
1.1 FPGA的底層結(jié)構(gòu)
FPGA的簡化結(jié)構(gòu)如圖1所示。FPGA內(nèi)部最主要的、設(shè)計工程中最需關(guān)注的部件是CLB(Configurable Logic Block,可配置邏輯塊),IOB(Input/Output Block,輸入/輸出塊),Block RAM(塊RAM)、DCM(Digital Clock Manager,數(shù)字時鐘管理器)和Multiplier(乘法器)。其中CLB是FPGA具有可編程能力的主要承擔者,Virtex-5的一個slice的主要組成單元包括4個6輸入查找表、4個觸發(fā)器和若干個選擇器。
1.2 雙軌電路技術(shù)的實現(xiàn)
雙軌電路技術(shù)是指無論是輸入還是輸出都是用兩根線來表示的。由圖2可見,在SDDL與門[3]中,信號A就由A和A共同表示,而輸出Z也由Z和Z表示。在這種表示下,一個變量可以有4種不同的邏輯值(0,0),(0,1),(1,0)以及(1,1)。SDDL將(0,1)和(1,0)分別用來表示邏輯0和邏輯1。這樣電路內(nèi)部的邏輯0和邏輯1就變成了對稱的,從而使得各自的功耗相同。另外,邏輯門還引入了一個prch預充電信號。在prch有效的情況下,輸出是(0,0),這個值也就是變量為預充電時在電路中的表示方式。電路的工作分為兩個狀態(tài):運算狀態(tài)和預充電狀態(tài)。這兩個狀態(tài)交替更換,也就是在prch上加載一個固定周期的脈沖。如此一來,電路中變量值的變化就是(0,0)到(0,1)或(1,0),或者是(0,1)或(1,0)到(0,0),每次翻轉(zhuǎn)都是只有一根信號線進行翻轉(zhuǎn)。邏輯0和邏輯1達到了完全的平衡。
圖1 FPGA結(jié)構(gòu)圖
圖2 SDDL與門
1.3 預充電技術(shù)的實現(xiàn)
普通邏輯門不能提供持續(xù)轉(zhuǎn)換活動,邏輯門的輸入不變將導致門的數(shù)據(jù)獨立。解決這個問題要通過增加預充電電路來提供變換。當時鐘為高時,連接預充電電路輸入一個預充電相位,連接點變化到邏輯0;當時鐘為低時,電路輸入計算相位,實際計算完成。在FPGA上采用預充電邏輯的目的是要求在預充電相位期間slice的輸出必須是邏輯0,有兩種方式來完成[4]。在一個Xilinx的slice中,每個LUT后跟著專門的多路選擇器和內(nèi)存單元,可配置為寄存器或鎖存器。這里考慮使用多路復用器和內(nèi)存單元來實現(xiàn)預充電,每種方法各有優(yōu)點和缺點:
(1) 使用時鐘控制的多路復用器來實現(xiàn)預充電功能。 將每個片子中單獨的內(nèi)存單元作為寄存器,但是除了寄存器的普通時鐘還要分配一個反向時鐘。這種方法的缺點是復制一個時鐘信號并生成直接和互補信號將明顯增加功耗和電路面積,布線也將復雜化。
(2) 使用內(nèi)存單元作為帶有反向使能輸入的異步清零鎖存器來實現(xiàn)預充電功能。只需要一個單獨信號給寄存器和預充電鎖存器,預充電功能由連接反向使能輸入和鎖存器的清零輸入實現(xiàn),使用這種方法的缺點是專門設(shè)計的寄存器存儲器需要一個單獨的slice。
2 DES加密模塊的實現(xiàn)
要在FPGA上實現(xiàn)安全防護結(jié)構(gòu)來確保關(guān)鍵部件的功耗恒定。這里選擇從雙軌和預充電技術(shù)在FPGA上實現(xiàn)旁路安全防護邏輯。當前的技術(shù)水平需要在FPGA上進行精確控制布局和布線[5]。下面從S盒硬件宏的實現(xiàn)和DES加密核的實現(xiàn)來介紹基于FPGA的DES加密模塊實現(xiàn)。
2.1 S盒硬件宏的實現(xiàn)
S盒的設(shè)計是DES算法關(guān)鍵部分,S盒設(shè)計的優(yōu)劣將影響整個算法性能。在采用FPGA實現(xiàn)時,應(yīng)從資源和速度的角度出發(fā),有效利用FPGA可配置屬性,充分考慮器件內(nèi)部結(jié)構(gòu),盡可能使兩者都達到最優(yōu)。在設(shè)計中,由于綜合工具的介入,所輸出的網(wǎng)表很難被設(shè)計者所理解,同時要找到一種更好的方法來控制組合電路,因此要建立硬件宏模塊[6],簡稱硬宏。這與傳統(tǒng)的設(shè)計流程不同之處是要充分利用FPGA Editor的功能,目的是從FPGA底層結(jié)構(gòu)的配置上實現(xiàn)雙軌和預充電技術(shù)。
通過Xilinx提供的FPGA Editor工具,首先讀入布局布線后輸出的NCD文件,并將其轉(zhuǎn)化為新的NVD文件,再送往BitGen軟件,進行布局布線的優(yōu)化,最終在FPGA內(nèi)部來建立目標電路,把它存為一個宏文件便于在上層進行調(diào)用。要注意兩個問題:建立硬宏需要進入到slice內(nèi)部,準確控制Slice內(nèi)部的器件選擇和器件之間的連線,防止設(shè)計出錯;宏的功能驗證要建立仿真模型,直接編寫一個行為仿真模型后在上層設(shè)計中調(diào)用這個仿真模型,要確保仿真模型和宏之間的一致性。
2.2 DES加密核的實現(xiàn)
DES算法的基本流程如下:首先,輸入明文通過初始置換,將其分成左、右各為32位的兩個部分,然后進行16輪完全相同的運算。經(jīng)過16輪運算后,左、右半部分合并在一起經(jīng)過一個末置換(初始置換的逆置換),于是整個算法結(jié)束。在每一輪運算中,密鑰位移位,然后再從密鑰的56位中選取48位。通過一個擴展置換,將數(shù)據(jù)的右半部分擴展為48位,并通過一個異或操作與一個48位密鑰結(jié)合,通過8個S盒將這48位替代成新的32位數(shù)據(jù),再通過一級置換操作,這四步操作即為函數(shù)f。
S盒是DES中的非線性模塊,直接決定DES算法的安全性。在函數(shù)f的實現(xiàn)中,采用上面的思路,使用例化調(diào)用了S盒。DES加密核的VHDL設(shè)計思路如下:首先調(diào)用庫函數(shù)構(gòu)造ROM,然后使用VHDL語句進行行為描述。這種方法要結(jié)合器件的內(nèi)部結(jié)構(gòu),對于小容量的ROM采用數(shù)組描述,大容量的ROM應(yīng)采用元件的方式來實現(xiàn)[7]。在VHDL設(shè)計中,庫函數(shù)、子程序的調(diào)用以及元件的調(diào)用和使用間接變量,都是影響速度的主要因素。由此得到 DES Core的接口定義如下:
ENTITY des56 IS
PORT(
indata:IN std_logic_vector(0 TO 63);
inkey :IN std_logic_vector(0 TO 63);
outdata:OUT std_logic_vector(0 TO 63);
decipher:IN std_logic
ds:INstd_logic
clk:INstd_logic
rst:INstd_logic
rdy_next_next_cycle :OUT std_logic
rdy_next _cycle:OUT std_logic
rdy :OUT std_logic
);
END des56;
3 攻擊實驗的對比與分析
3.1 FPGA加密芯片攻擊試驗平臺建立
目前FPGA的種類很多,但其中有大于50%的份額被Xilinx公司搶占,在此選用Xilinx公司的Virtex-5(ML501),對其他種類的FPGA的攻擊和此類似。ML501在工作時需要3個工作電壓:內(nèi)核電壓(12 V)、輔助電壓(25 V)、I/O電壓(33 V),而ML501芯片的所有地線是并結(jié)在一起的。對FPGA攻擊的實驗的原理圖如圖3所示,示波器(Tektronix DPO4104,1 GHz BW, 5 Gsample/s)的2通道接收Virtex-5(ML501)加密模塊的觸發(fā)信號,在內(nèi)核電壓和芯片之間置一個電流探針(Tektronix CT-2,12 kHz~200 MHz),1通道用電流探針測試內(nèi)核的功耗變化。攻擊過程如下:在PC機上生成64位隨機明文,通過串口發(fā)送至FPGA。FPGA收到明文后利用存儲在其中的密鑰對明文進行DES加密,并在第16輪加密操作時對示波器產(chǎn)生數(shù)據(jù)采集的觸發(fā)信號。在進行數(shù)據(jù)采集時其實質(zhì)是要采集內(nèi)核電流所引起的功耗變化,并將數(shù)據(jù)通過USB總線送至PC機,最后在PC機上運行分析程序攻擊出64位的密鑰。
3.2 對FPGA加密芯片的攻擊
設(shè)定明文輸入和電流數(shù)據(jù)采樣為500組,采樣深度100 000點,采樣頻率為500 MSPS。在相同的試驗環(huán)境下,對帶有防護結(jié)構(gòu)和不帶防護結(jié)構(gòu)的兩種DES的加密結(jié)構(gòu)進行功耗測量,同時根據(jù)密鑰的推測將明文分類,計算各類的平均功耗,然后相減,可以得到差分功耗分析曲線。
圖3 DPA實驗電路原理圖
試驗后發(fā)現(xiàn)對不帶防護結(jié)構(gòu)的ML501 FPGA芯片進行攻擊時,當子密鑰塊猜測正確時,功率差分曲線出現(xiàn)明顯的尖峰,采用相同的方法可以攻擊出其他子密鑰塊,由此可以獲取第16輪的子密鑰K16(48位),攻擊成功。對帶防護結(jié)構(gòu)的芯片攻擊時,功率差分曲線基本是平緩的,波動非常小,也沒有明顯的尖峰存在,可見DPA攻擊對帶有防護結(jié)構(gòu)的FPGA無效。
4 結(jié) 語
由以上DPA攻擊試驗表明了FPGA實現(xiàn)DES加密算法對DPA的脆弱性,而采用雙軌和預充電防護技術(shù)的FPGA加密芯片具有較好的抗DPA攻擊能力。這也說明利用FPGA底層開發(fā)工具通過硬件宏方法能在FPGA硬件上實現(xiàn)安全防護技術(shù)的拓展,對開展芯片的安全防護工作的研究具有重要意義。
參 考 文 獻
[1]KOCHER P, JAFFEJ, JUN B. Introduction to differential power analysis and related attacks[J]. IEEE Trans. on Electron Devices, 1998, 50(2): 462-470.
[2]曹建國,王丹,王威.基于RSA公鑰密碼安全性的研究[J].計算機技術(shù)與發(fā)展,2007,17(1):172-172,176.
[3]CLAVIER C, CORON J, DABBOUS N. Differential power analysis in the presence of hardware countermeasures[J]. CHES 2000, Lect. Notes Comput.Sci., 1965,21(13): 252-263.
[4]TIRI K, VERBAUWHEDE I. A Logic Level Design Me-thodology for a Secure DPA Resistant ASIC or FPGA Implementation\\[C\\]// Proc. of Design Automation and Test in Europe Conference.\\[S.l.\\]:DATE. 2004: 246-251.
[5]王簡瑜,張魯國.基于FPGA實現(xiàn)DES算法的性能分析[J].微計算機信息,2007,23(8):217-218.
[6]李永彬,雷菁.DES加密算法的高速FPGA實現(xiàn)[J].電子工程師,2005,31(7):39-41.
[7]王峰,周學海,陳艾,等.基于部分重構(gòu)技術(shù)的加密算法實現(xiàn)研究[J].電子學報,2007,35(5):959-964.