宋 安,王 琴,谷大武,郭 箏,1b,劉軍榮,2,張 馳
(1.上海交通大學(xué)a.電子信息與電氣工程學(xué)院; b.網(wǎng)絡(luò)空間安全學(xué)院,上海 201100;2.智巡密碼(上海)檢測技術(shù)有限公司,上海 201100)
旁路攻擊(Side Channel Attacks,SCA)是一種通過利用芯片泄露的物理信息并對其進(jìn)行統(tǒng)計分析以獲得芯片內(nèi)部敏感信息的攻擊方法[1]。旁路攻擊主要手段為功耗分析,是通過采集密碼系統(tǒng)運行時的功耗信息,并利用統(tǒng)計學(xué)和信號處理的方法找出數(shù)據(jù)中與密碼算法執(zhí)行有關(guān)的信息,再結(jié)合電路的運行特征進(jìn)行密鑰破解[2]。功耗分析是旁路攻擊研究的核心內(nèi)容,而功耗采集則是功耗分析的基礎(chǔ)[3]。
傳統(tǒng)的采集方法是用示波器對待測芯片進(jìn)行異步采集,即示波器的采集時鐘與待測芯片的時鐘完全獨立[4],示波器的采集時鐘一般使用內(nèi)置的高頻時鐘,待測芯片的工作時鐘來源于晶振,因此采集時鐘和待測芯片工作時鐘之間存在不穩(wěn)定的相位差。由于待測芯片多數(shù)在時鐘邊沿執(zhí)行密碼運算,傳統(tǒng)的異步采集方法很難完全采集到待測芯片的密碼操作相關(guān)信息。為了得到充足的時鐘邊沿信息,傳統(tǒng)的異步采集方法需要增大示波器的采樣頻率,但同時獲得了大量冗余信息,增加了旁路分析的復(fù)雜度。此外,傳統(tǒng)異步方法采集的功耗信息的觸發(fā)時間是不對齊的,這極大地增加了旁路分析的時間成本。由文獻(xiàn)[5]可知,異步采集的功耗信息使得功耗分析難以完成。
針對以上問題,文獻(xiàn)[4]通過彎曲的磁線對待測芯片的功耗進(jìn)行采集,嘗試獲得精準(zhǔn)的功耗信息。文獻(xiàn)[5]通過電源注入的方法強(qiáng)制使內(nèi)部振蕩器的頻率鎖定于外部時鐘的頻率。文獻(xiàn)[6]設(shè)計了包含鎖相環(huán)(Phase Lock Loop,PLL)的放大濾波電路,嘗試恢復(fù)出待測芯片內(nèi)部的工作時鐘。然而,以上研究存在著明顯局限性:測評者需要熟悉待測芯片泄露功耗的電路,精確定位功耗泄露的采集位置,這是一項復(fù)雜且難度很高的工作[4];目前多數(shù)芯片使用穩(wěn)定的晶振作為時鐘源,無法與外部時鐘鎖定,且未進(jìn)行后續(xù)的旁路采集和功耗分析驗證,缺乏實驗支撐[5];由于存在放大和濾波通路,恢復(fù)出的時鐘會隨著待測芯片原本的工作時鐘的變化而產(chǎn)生不穩(wěn)定的相位延時[6]。此外,文獻(xiàn)[4,6]的方法需要在專用的采集平臺(如Chipwhisper硬件[7])上實現(xiàn),可供選擇的測評參數(shù)有限,并不適用于實際的測評。
為改善以上問題,需要一種通用的采集方法和采集平臺,既可大幅提升功耗分析的成功率,又能廣泛地應(yīng)用在實際的測評中。為此,本文提出一種基于FPGA的時鐘同步功耗信息采集方法。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,FPGA)具有速度快、效率高、組成形式靈活以及內(nèi)部時延小的特點,可以大幅提升系統(tǒng)對信號的響應(yīng)和處理時間,并且能進(jìn)行現(xiàn)場設(shè)計、編程等,在高速數(shù)據(jù)處理方面起到了關(guān)鍵作用[8]。因此,本文選用FPGA進(jìn)行硬件實現(xiàn),設(shè)計了基于FPGA的時鐘同步設(shè)備,為數(shù)字示波器和待測設(shè)備提供狀態(tài)同步、相位可調(diào)、頻率可變、驅(qū)動能力強(qiáng)的時鐘信號?;贔PGA的時鐘同步設(shè)備具有以下優(yōu)勢:
1)FPGA內(nèi)部時鐘資源非常豐富,可構(gòu)建穩(wěn)定的多時鐘系統(tǒng),內(nèi)部產(chǎn)生的時鐘信號可通過眾多的時鐘管腳引出。
2)FPGA內(nèi)置鎖相環(huán)模塊,內(nèi)部時鐘的頻率和相位可調(diào),測評者可根據(jù)需求自行調(diào)節(jié),以滿足各種功耗信息采集場景的需求。傳統(tǒng)的采集方法中測評者難以控制待測設(shè)備和示波器的時鐘頻率和相位差。然而在基于FPGA的時鐘同步采集系統(tǒng)下,測評者可方便配置待測設(shè)備和示波器的時鐘頻率和相位,來獲得更高信噪比的功耗曲線,以達(dá)到最佳的采集效果。
3)FPGA可拓展性強(qiáng)。待測設(shè)備和示波器對外部信號的驅(qū)動能力有一定要求,若外部信號電平過低或不穩(wěn)定會造成驅(qū)動不足的問題。本文采用的FPGA開發(fā)板的I/O管腳電平為3.3 V,且封裝良好,滿足待測設(shè)備和示波器對外部信號驅(qū)動能力的要求。
在本文的采集方法中,基于FPGA的時鐘同步設(shè)備產(chǎn)生狀態(tài)同步(即相位差穩(wěn)定)的時鐘CLK1和CLK2,作為數(shù)字示波器的采集時鐘,經(jīng)過解耦電路后作為待測設(shè)備的工作時鐘,然后進(jìn)行后續(xù)的采集。
時鐘同步設(shè)備的硬件實現(xiàn)如圖 1的虛線框所示。狀態(tài)同步時鐘產(chǎn)生的基本原理是:來自晶振的時鐘經(jīng)過鎖相環(huán)電路產(chǎn)生多個輸出時鐘,全部存儲到寄存器組中;多路電路選擇寄存器組中的時鐘后,經(jīng)過緩沖電路、輸出電路,由設(shè)備的I/O引出。
圖1 時鐘同步采集系統(tǒng)
硬件的設(shè)計基于硬件描述語言Verilog HDL,采用的EDA平臺為Xilinx公司的Vivado套件[9],FPGA開發(fā)板采用Airtex-7系列FPGA的 Basys3開發(fā)板[10]。保證狀態(tài)同步的時鐘的正確產(chǎn)生是硬件設(shè)計的關(guān)鍵。硬件設(shè)計包含以下關(guān)鍵電路:
1)鎖相環(huán)電路
若采用邏輯電路來產(chǎn)生時鐘信號,時鐘信號的相位將不穩(wěn)定,且在實際的電路中會存在毛刺和抖動。然而,鎖相環(huán)電路能很好地解決這一問題。鎖相環(huán)電路不僅為FPGA提供靈活可變的時鐘,還有消除時鐘抖動和抗時鐘歪斜的作用。鎖相環(huán)電路包括鑒相器、環(huán)路濾波器、壓控振蕩器、分頻器等。首先鑒相器比較輸入時鐘和分頻器的反饋時鐘的相位和頻率,產(chǎn)生比例信號。然后比例信號驅(qū)動環(huán)路濾波器,并把參考電壓傳輸?shù)綁嚎卣袷幤?以此決定壓控振蕩器是否運行在更高或更低的頻率[11]。
本文鎖相環(huán)電路的實現(xiàn)調(diào)用了Vivado內(nèi)置的IP核,在配置分頻和倍頻等參數(shù)后,得到多個頻率的輸出時鐘。
2)多路選擇電路
多路選擇電路提供選擇信號,用于控制產(chǎn)生不同頻率和相位的時鐘信號,保證了時鐘信號的可調(diào)性。對于Airtex-7系列FPGA,鎖相環(huán)電路最多提供6個時鐘輸出,進(jìn)入寄存器的多個時鐘等待多路選擇電路的控制信號,最后產(chǎn)生兩個輸出時鐘。
多路選擇電路的實現(xiàn)用到了累加器,每當(dāng)外圍電路的按鍵按下時,多路選擇電路的選擇信號就累加一次,將累加結(jié)果作為選擇信號。
3)緩沖電路和輸出電路
緩沖電路用于保證各電路之間時鐘信號的正常驅(qū)動。輸出電路的作用是將FPGA內(nèi)部產(chǎn)生的時鐘通過I/O引出。
緩沖電路調(diào)用了Vivado內(nèi)置的buffer函數(shù);輸出電路調(diào)用了原語,在配置雙倍數(shù)據(jù)速率輸出(Output Double Data Rate,ODDR)電路參數(shù)后,實現(xiàn)了FPGA內(nèi)部邏輯電平到輸出模擬時鐘的轉(zhuǎn)換。
在完成基于FPGA時鐘同步設(shè)備的硬件設(shè)計后,編譯Verilog代碼,并將編譯后產(chǎn)生的比特流文件通過JTAG下載到Airtex-7 FPGA的Basys3中。用數(shù)字示波器對圖1的CLK1’(經(jīng)過電氣解耦后的CLK1)、CLK2信號進(jìn)行檢測,結(jié)果如圖2所示。其中,C2信道為采集參考時鐘CLK2,C3信道為工作時鐘CLK1’,其相位差穩(wěn)定在-1°~+1°范圍內(nèi)。
圖2 采樣時鐘與工作時鐘
本文選擇專用安全FPGA芯片SAKURA-G作為待測設(shè)備。SAKURA-G開發(fā)板用于硬件安全領(lǐng)域的研究和開發(fā),如旁路攻擊、故障注入攻擊、物理不可克隆函數(shù)等[12]。
與傳統(tǒng)采集方式相比,本文設(shè)計的同步采集方法主要在待測設(shè)備和示波器上體現(xiàn)差異。在傳統(tǒng)方法異步采集時,待測設(shè)備的工作時鐘來源于晶振,而在同步采集時,待測設(shè)備的工作時鐘由基于FPGA的時鐘同步設(shè)備提供并通過SAKURA-G上的I/O引腳引入。傳統(tǒng)方法異步采集時,示波器一般使用內(nèi)置的采集時鐘,而在同步采集時,數(shù)字示波器的采集時鐘由基于FPGA的時鐘同步設(shè)備提供并通過示波器外部組件WR6Zi-ExtRef-IN/OUT[13]引入。該組件可以接受外部參考時鐘,使內(nèi)部采集時鐘與外部參考時鐘相位一致,且示波器內(nèi)部采集時鐘頻率可任意調(diào)節(jié),如圖3所示。
圖3 實驗采集流程
本文設(shè)計的同步采集步驟如下:
步驟1按照測評需求調(diào)節(jié)時鐘頻率的大小(由外圍電路按鍵控制),時鐘同步設(shè)備產(chǎn)生CLK1(序號5),經(jīng)過解耦電路后的CLK1’作為待測設(shè)備的工作時鐘(序號7);時鐘同步設(shè)備產(chǎn)生CLK2,經(jīng)過幅值調(diào)整后作為示波器的采集參考時鐘(序號6)。
步驟2PC向待測設(shè)備發(fā)送明文(或密文)、隨機(jī)數(shù)等指令,等待待測設(shè)備傳回密文(序號1)。
步驟3待測設(shè)備開始加密(或解密),將觸發(fā)信號傳給示波器(序號3)。
步驟4PC向示波器發(fā)送采樣率、觸發(fā)延時、幅值分量等參數(shù),等待示波器傳回功耗曲線(序號2)。
步驟5示波器對待測設(shè)備的功耗進(jìn)行采集(序號4)。
傳統(tǒng)的異步采集方法包含序號1~序號4,最終采集到的功耗曲線信噪比較低。本文的同步采集在傳統(tǒng)異步采集方法的基礎(chǔ)上增加了序號5~序號7部分,不僅實現(xiàn)了同步采集,還解決了噪聲問題。按照設(shè)計的同步采集方法搭建采集平臺,同步采集示意圖如圖4所示。
圖4 同步采集示意圖
為驗證本文提出的同步采集方法的效果,本文的實驗設(shè)計主要基于相關(guān)功耗分析(Correlation Power Analysis,CPA)攻擊。
CPA是一種非建模類的功耗分析方法[14]。CPA攻擊由差分功率分析(Differential Power Analysis,DPA)[15]演變而來,在本文實驗場景下,相比其他功耗分析方法,如SPA[16]、TA[17]等,CPA更加快速和有效。
vi,j=Sbox(di⊕kj)
(1)
li,j=L(vi,j)
(2)
(3)
同步采集對異步采集的提升率計算公式可以表示為:
(4)
其中,Cs表示異步功耗曲線的密鑰相關(guān)性,Ca表示同步功耗曲線的密鑰相關(guān)性。
選擇10 000條無防護(hù)的AES功耗曲線(待測芯片工作頻率為10 MHz)進(jìn)行單字節(jié)功耗分析,分析平臺為Matlab[18]。圖5(a)給出示波器采樣率為25 MS/s時異步和同步采集的功耗曲線的密鑰相關(guān)性示意圖?;疑珜嵕€代表錯誤密鑰的相關(guān)性,黑色虛線表示異步的正確密鑰的相關(guān)性曲線,黑色實線表示同步的正確密鑰的相關(guān)性曲線(圖5(b)、圖5(c)、圖5(d)的表示相同)。黑色虛線在時刻45附近出現(xiàn)了尖峰,最高相關(guān)性-0.03左右,但未與灰色實線區(qū)分開。黑色實線在時刻45附近產(chǎn)生了明顯的尖峰,最高相關(guān)性提升至-0.05,且泄露點數(shù)量增加。按照式(4),同步采集的功耗分析的提升率δ為66.7%。
圖5(b)給出示波器采樣率為100 MS/s時異步和同步采集的功耗曲線的密鑰相關(guān)性示意圖。在時刻255附近,黑色虛線的最大相關(guān)性為-0.10,而黑色實線的最大相關(guān)性提升到-0.13,同步采集的提升率δ為30%。
圖5 不同采樣頻率的CPA攻擊結(jié)果
DES的分析與AES類似,由于DES算法存在掩碼防護(hù),需要更多的功耗曲線。在此場景下,選擇150 000條功耗曲線(待測芯片工作頻率為10 MHz)進(jìn)行單字節(jié)功耗分析,分析平臺為Matlab。圖5(c)給出示波器采樣率為25 MS/s時異步和同步采集的功耗曲線的密鑰相關(guān)性示意圖。黑色虛線的相關(guān)性最大值為-0.075,黑色實線的相關(guān)性最大值達(dá)到-0.10。按照最高相關(guān)性計算提升率,同步采集的功耗分析的提升率δ為33.3%。
圖5(d)給出了250 MS/s異步和同步采集的相關(guān)性示意圖。黑色虛曲線最大相關(guān)性為-0.16,且在時刻105和時刻120時與灰色實線有所重疊。黑色實線最大相關(guān)性提升到-0.19,在時刻105和時刻120仍與錯誤曲線有很好的區(qū)分度,信息泄露更為明顯。同步采集的功耗分析的提升率δ為18.75%。
3.2節(jié)、3.3節(jié)分別對AES和DES進(jìn)行單個字節(jié)的CPA攻擊,本節(jié)將給出所有字節(jié)的CPA攻擊的綜合結(jié)果。
以圖5(b)中時刻250處的泄露點進(jìn)行CPA分析為例(以5(a)、圖5(c)、圖5(d)為例也能得到類似的結(jié)論),結(jié)果如圖6所示。其中,橫坐標(biāo)表示功耗曲線數(shù)量,縱坐標(biāo)表示密鑰相關(guān)性,每一條曲線代表每一種假設(shè)密鑰的相關(guān)性。
圖6 相關(guān)性與曲線數(shù)量的關(guān)系
當(dāng)功耗曲線數(shù)量較少時,虛線和實線都未能與灰色曲線區(qū)分;隨著使用功耗曲線的數(shù)量增加,正確曲線的相關(guān)性與錯誤曲線區(qū)分增大。當(dāng)功耗曲線數(shù)量達(dá)到600條時,正確密鑰曲線開始與錯誤曲線區(qū)分,最終灰色曲線的相關(guān)性的收斂于±0.06,虛線的最高相關(guān)性為-0.08,實線的最高相關(guān)性為-0.12。
從圖6還可以發(fā)現(xiàn),虛線在曲線數(shù)量為1 800時與灰色曲線有重合部分,然而實線從500條開始就與錯誤曲線產(chǎn)生了良好的區(qū)分度。結(jié)果表明,本文采用的同步采集比異步采集更容易產(chǎn)生泄露,只需利用較少的功耗曲線即可攻擊出正確密鑰。
上文為單字節(jié)CPA分析,下面將剩余所有字節(jié)進(jìn)行CPA攻擊,統(tǒng)計攻擊出所有正確密鑰所需的曲線數(shù)如表1、表2所示(考慮實驗環(huán)境對功耗曲線的微小影響,表中曲線數(shù)為多次實驗統(tǒng)計的近似結(jié)果)。其中,表1 是未防護(hù)的AES算法的攻擊結(jié)果,表2是帶防護(hù)的DES算法的攻擊結(jié)果。
表1 未防護(hù)的AES的攻擊結(jié)果
表2 帶防護(hù)的DES的攻擊結(jié)果
如表1所示,當(dāng)示波器的采樣率為250 MS/s時,同步采集的功耗分析提升率為7.1%,這是由于采樣率遠(yuǎn)高于待測芯片工作時鐘后,每條功耗曲線的泄漏點增多,異步采集的不良效應(yīng)被稀釋。然而,隨著示波器采樣率的降低,提升率迅速上升,在采樣率為25 MS/s時產(chǎn)生了最佳的效果,同步采集相比異步采集減少了37.5%的功耗曲線數(shù)量。
表2與表1的結(jié)果類似。當(dāng)示波器采樣率為250 MS/s時,功耗曲線的CPA攻擊提升率為5.0%。隨著示波器采樣率的降低,提升率迅速上升,在采樣率為25 MS/s時產(chǎn)生了最佳的效果,同步采樣相比異步采樣減少了35.0%的功耗曲線數(shù)量。
在早期實驗時發(fā)現(xiàn)采集過程中出現(xiàn)明顯的噪聲,這是由于待測芯片使用了外部時鐘。較差的信噪比將影響功耗分析的成功率。下文討論耦合噪聲對功耗曲線的影響。
每條功耗曲線lk都由n個功耗點組成,公式表達(dá)如下:
(5)
其中,lk(t)為示波器在第t時刻采集的功耗點的值,它的大小由待測芯片中的密碼算法產(chǎn)生的中間值δ(t)和噪聲ε決定,即:
lk(t)=δ(t)+ε
(6)
其中,δ(t)為S盒的輸出產(chǎn)生的功耗,與明文和密鑰k相關(guān),ε的大小獨立于δ(t),與外部設(shè)備的時鐘頻率相關(guān)(暫不考慮待測芯片內(nèi)部的其他噪聲)。在給定的場景中,功耗曲線lk第t個點的信噪比的計算公式如下[19]:
(7)
其中,Var(·)表示方差,Var(δ(t))量化了可利用的信號造成的功耗點的變化大小,Var(ε)量化了由噪聲導(dǎo)致的該點的變化。
為提升功耗曲線的信噪比,有以下兩種減少ε的方法:1)為外部時鐘設(shè)備提供高質(zhì)量的穩(wěn)壓電源,把電源噪聲的影響降至最低,但此方法對信噪比的改善不明顯;2)對時鐘信號進(jìn)行電氣解耦處理,屏蔽其對待測芯片的影響。
考慮成本和性能,本文使用高速光耦6N137作為信號隔離器[20]。光耦的輸入端連接發(fā)光二極管,電信號驅(qū)動半導(dǎo)體發(fā)光器件發(fā)光,而接收端的光敏管將接收到的光信號轉(zhuǎn)換為電信號輸出。6N137具備比普通光耦更快的速度和更強(qiáng)的驅(qū)動能力。將光耦元件應(yīng)用在時鐘同步設(shè)備輸出端(如圖1所示解耦電路的輸入端),其電路如圖7所示。其中,CLK1代表輸入端,CLK1’代表輸出端。調(diào)整電阻和電容的大小至最佳性能后,完成功耗曲線的采集。
圖7 解耦電路示意圖
選擇功耗曲線中包含密鑰信息量最大的點,根據(jù)式(7),計算功耗曲線解耦前后的信噪比,結(jié)果如表3所示。
表3 功耗點信噪比對比
由于待測設(shè)備的算法是硬件實現(xiàn),且芯片內(nèi)部存在其他電子噪聲,導(dǎo)致信噪比相對較低。經(jīng)過解耦處理后的功耗曲線,信噪比得到明顯改善。
表4列出了目前相關(guān)研究的關(guān)鍵指標(biāo)。待測芯片執(zhí)行的算法包括軟件實現(xiàn)(SW)和硬件實現(xiàn)(HW)的AES和DES算法等,本文進(jìn)行了硬件AES算法和硬件DES算法的功耗分析實驗,證明了本文方法的提升效果。
表4 相關(guān)方法性能對比
工作頻率是待測芯片執(zhí)行密碼算法時的工作時鐘頻率。本文的同步采集方法對待測芯片的工作頻率最高為10 MHz(受限于6N137光耦器件的最高信號轉(zhuǎn)換頻率,性能更優(yōu)的光耦器件會提升此參數(shù))。
采樣頻率是采集設(shè)備的時鐘頻率。文獻(xiàn)[4]采集設(shè)備的采樣頻率為96 MS/s時達(dá)到了最優(yōu);文獻(xiàn)[6]采集設(shè)備的采樣頻率為31.2 MS/s時達(dá)到了最優(yōu);本文在示波器采樣頻率為25 MS/s時達(dá)到最優(yōu)。因此,本文對采集設(shè)備的采樣頻率要求最低,降低了對采集設(shè)備的成本要求。
預(yù)處理包括功耗曲線的再對齊、調(diào)整等優(yōu)化操作。本文無需對功耗曲線進(jìn)行處理,減少了分析的復(fù)雜度。
提升率利用了CPA攻擊的結(jié)果,此列數(shù)據(jù)是各自采集環(huán)境下的計算結(jié)果(文獻(xiàn)[4,6]未具體給出提升率,但可結(jié)合原文圖表近似計算得到提升率)。本文方法的提升率最高達(dá)到66.7%。
本文提出一種基于FPGA的時鐘同步功耗信息采集方法。運用該方法設(shè)計同步采集平臺,實現(xiàn)了同步功耗信息的采集。通過相關(guān)功耗分析進(jìn)行實驗驗證,結(jié)果表明,與AES和DES算法相比,本文同步采集方法功耗分析的成功率有較大提升。本文利用光電解耦原理改善了采集過程中的噪聲問題,使信噪比得到一定提升,為解決功耗信息采集過程中的噪聲問題提供了新思路。本文時鐘同步設(shè)備和耦合電路是分離的,下一步通過將其合理整合并制板,以進(jìn)一步提升采集的信噪比。