本發(fā)明屬于集成電路安全領(lǐng)域,尤其是涉及一種基于部分掃描的集成電路故障注入攻擊模擬方法。
背景技術(shù):
集成電路故障注入攻擊模擬是一種模擬故障注入攻擊效果以檢測和評估電路設(shè)計的抗故障注入攻擊能力的技術(shù)。現(xiàn)有的集成電路故障注入攻擊模擬方法主要包括芯片測試[1]、軟件仿真[2]和硬件模擬[3]-[4]。芯片測試對制造出來的芯片進(jìn)行真實的故障注入攻擊,檢測效率低,費(fèi)用高,設(shè)計修改周期長,成本極高。軟件仿真運(yùn)行速度較慢,需要較長的時間才能獲得模擬結(jié)果。硬件模擬利用FPGA原型開發(fā)平臺加速仿真過程?,F(xiàn)有的基于FPGA的硬件模擬方法主要包括重配置[3]和插入控制邏輯[4]?;谥嘏渲玫姆椒▽τ诿恳粋€故障案例都需要重新生成比特流,增加了時間成本。插入控制邏輯的方法可以降低時間成本。現(xiàn)有的實現(xiàn)方法主要包括對每個故障位置分別插入控制邏輯[4]和使用全掃描技術(shù)插入掃描鏈。前者帶來了巨大的資源消耗,而后者采用全掃描技術(shù)也帶來了較高的資源消耗。
[1]C.Sun,H.Li,Y.Yang,J.Chen,“Research on fault-electromagnetic attack on block cipher,”Journal of Convergence Information Technology,pp.409-417,2011.
[2]F Pournaghdali,A Rajabzadeh M Ahmadi,“VHDLSFI:a simulation-based multi-bit fault injection for dependability analysis,”International Econference on Computer&Knowledge Engineering,pp.354-360,2013.
[3]E.Sanchez,L.Sterpone,A.Ullah,“Effective emulation of permanentfaults in ASICs through dynamically reconfigurable FPGAs,”International Conference on Field Programmable Logic&Applications,pp.2336-2342,2014.
[4]A.Janning,J.Heyszl,F.Stumpf,G.Sigl,“A cost-effective FPGA-based fault simulation environment,”Fault Diagnosis and Tolerance in Cryptography,pp.21-32,2011.
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為了克服現(xiàn)有技術(shù)中的不足,提供一種基于部分掃描的集成電路故障注入攻擊模擬方法,通過在電路綜合后的原始網(wǎng)表中選取部分寄存器插入掃描鏈,實現(xiàn)集成電路故障注入攻擊模擬,降低了資源消耗,實現(xiàn)了自動化。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的。
本發(fā)明的一種基于部分掃描的集成電路故障注入攻擊模擬方法,包括以下步驟:
(1)提取故障注入的目標(biāo)寄存器:將待測電路設(shè)計源碼綜合成原始網(wǎng)表,設(shè)置故障注入的目標(biāo)變量,提取故障注入的目標(biāo)寄存器;
(2)部分掃描插入:從原始網(wǎng)表中選取部分寄存器作為掃描寄存器,在原始網(wǎng)表中插入掃描鏈和故障注入控制模塊生成新網(wǎng)表;
(3)故障向量生成:按最小邏輯距離對原始網(wǎng)表中的寄存器進(jìn)行分組,對原始網(wǎng)表進(jìn)行軟件仿真,得到各組的寄存器數(shù)值向量,根據(jù)故障類型,重新計算目標(biāo)寄存器的值,更新各組的寄存器數(shù)值向量,通過原始網(wǎng)表和逆推算法,利用各組的寄存器數(shù)值向量,逆推得到各組的掃描寄存器數(shù)值向量和對應(yīng)的時鐘周期數(shù);若逆推失敗則重復(fù)上述步驟(2)和(3),若逆推成功則得到多組由掃描寄存器數(shù)值向量和時鐘周期數(shù)構(gòu)成的故障向量;
(4)故障注入和仿真:故障注入控制模塊向待測電路提供輸入向量,運(yùn)行待測電路直至注入故障的時刻,將待測電路由正常模式切換至掃描模式,從組號最大的故障向量開始,依次掃入掃描寄存器并運(yùn)行相應(yīng)的時鐘周期,操作完成后則將待測電路切換至正常模式,繼續(xù)運(yùn)行待測電路,收集待測電路的輸出數(shù)據(jù);
(5)安全評估:對收集到的待測電路的輸出數(shù)據(jù)進(jìn)行分析,評估待測電路的抗故障注入攻擊能力。
所述步驟(2)利用啟發(fā)式算法從原始網(wǎng)表中選取部分寄存器作為掃描寄存器。
所述步驟(3)最小邏輯距離定義為寄存器輸入到前級寄存器輸出的所有連通路徑中包含該寄存器在內(nèi)的寄存器個數(shù)的最小值,規(guī)定寄存器到自身的最小邏輯距離為零。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案所帶來的有益效果是:
本發(fā)明基于部分掃描,通過在原始網(wǎng)表中選取部分寄存器作為掃描寄存器,對原始網(wǎng)表進(jìn)行掃描鏈插入和故障注入控制模塊插入生成新網(wǎng)表,控制這些掃描寄存器,降低資源消耗,實現(xiàn)低資源消耗和高效率的集成電路故障注入攻擊自動模擬;整個模擬過程對用戶透明,用戶只需提供待測電路設(shè)計源碼和輸入向量,本發(fā)明裝置給出待測電路設(shè)計的故障注入攻擊模擬輸出。
附圖說明
圖1是本發(fā)明的流程框圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步的描述。
如圖1所示,本發(fā)明的一種基于部分掃描的集成電路故障注入攻擊模擬方法,解決現(xiàn)有的集成電路故障注入攻擊模擬方法資源消耗高的問題,具體包括以下步驟:
步驟一,提取故障注入的目標(biāo)寄存器
將待測電路設(shè)計源碼(即為待測電路設(shè)計硬件描述源碼)綜合成原始網(wǎng)表,設(shè)置故障注入的目標(biāo)變量,提取故障注入的目標(biāo)寄存器。
步驟二,部分掃描插入
利用啟發(fā)式算法或其他算法從原始網(wǎng)表中選取部分寄存器作為掃描寄存器,在原始網(wǎng)表中插入掃描鏈和故障注入控制模塊生成新網(wǎng)表。
步驟三,故障向量生成
(1)分別計算原始網(wǎng)表中所有寄存器到掃描寄存器之間的最小邏輯距離;所述最小邏輯距離定義為寄存器輸入到某個前級寄存器輸出的所有連通路徑中包含該寄存器在內(nèi)的寄存器個數(shù)的最小值,規(guī)定寄存器到自身的最小邏輯距離為零。
(2)按最小邏輯距離對原始網(wǎng)表中的所有寄存器進(jìn)行分組,假設(shè)最終分為n(n=0,1,2,3…)組,即G0,G1,G2,G3…Gn,其中,G0組中的寄存器同時也是掃描寄存器。
(3)假設(shè)故障注入的目標(biāo)寄存器分布在不同的寄存器組中,這些寄存器組組號的最大值為m(m≤n),對原始網(wǎng)表進(jìn)行軟件仿真,得到G0組到Gm組的m+1個寄存器數(shù)值向量。
(4)根據(jù)故障類型,重新計算目標(biāo)寄存器的值,更新G0組到Gm組的寄存器數(shù)值向量。
(5)通過原始網(wǎng)表和逆推算法,利用G0組到Gm組的寄存器數(shù)值向量,逆推得到m+1個掃描寄存器數(shù)值向量和對應(yīng)的時鐘周期數(shù),其中,G0組的寄存器數(shù)值向量,即其對應(yīng)的掃描寄存器數(shù)值向量,而對應(yīng)的時鐘周期數(shù)則為0;若逆推失敗則重復(fù)上述步驟二和步驟三,重新選擇掃描寄存器;若逆推成功則得到m+1組由掃描寄存器數(shù)值向量和時鐘周期數(shù)構(gòu)成的故障向量,即(S0,0),(S1,1),…,(Sm,m)。
步驟四,故障注入和仿真
①利用新網(wǎng)表生成FPGA配置文件,將配置文件下載到FPGA中;
②故障注入控制模塊執(zhí)行③至⑦,向待測電路注入故障,收集待測電路的輸出數(shù)據(jù);
③向待測電路提供輸入向量,運(yùn)行待測電路直至注入故障的時刻,將待測電路由正常模式切換至掃描模式;
④初始化編號索引k為m;
⑤凍結(jié)編號大于k的寄存器組中的寄存器;
⑥從組號最大的故障向量開始,依次掃入掃描寄存器并運(yùn)行相應(yīng)的時鐘周期,即將掃描寄存器數(shù)值向量Sk掃入掃描寄存器,讓待測電路運(yùn)行k個時鐘周期,將故障注入目標(biāo)寄存器;
⑦操作完成后,如果k小于0,則解凍待測電路的所有寄存器,將待測電路切換至正常模式,繼續(xù)運(yùn)行待測電路,收集待測電路的輸出數(shù)據(jù);否則k減1,并重復(fù)⑤至⑦。
步驟五,安全評估:利用評估算法,對收集到的待測電路的輸出數(shù)據(jù)進(jìn)行分析,評估待測電路的抗故障注入攻擊能力。