基于漢明距離的cpu指令型硬件木馬的檢測(cè)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種針對(duì)CPU指令型硬件木馬的搜索方法,主要針對(duì)第三方提供的SoC內(nèi)核IP和使用第三方進(jìn)口內(nèi)核的SoC芯片。
【背景技術(shù)】
[0002]近年來發(fā)生的“斯諾登棱鏡門”,“伊朗震網(wǎng)”和“利比亞、敘利亞戰(zhàn)爭(zhēng)”等事件表明集成電路內(nèi)的硬件木馬可以作為一種武器來進(jìn)行信息戰(zhàn),網(wǎng)絡(luò)戰(zhàn),甚至物理摧毀軍事裝備與關(guān)鍵設(shè)施,嚴(yán)重威脅著國(guó)家安全。因此需采取有效措施來對(duì)集成電路內(nèi)的硬件木馬進(jìn)行有效識(shí)別,保證集成電路的安全可信。
[0003]國(guó)內(nèi)外對(duì)硬件木馬檢測(cè)的研究都是針對(duì)純硬件的木馬檢測(cè)方法,目前主要有破壞性檢測(cè),系統(tǒng)運(yùn)行檢測(cè),邏輯測(cè)試和旁路分析四種。其中研究最多的就是基于旁路分析的硬件木馬檢測(cè)技術(shù)。旁路分析是利用芯片工作時(shí)的旁路信息(如電磁輻射,電流或者電路延時(shí)等信息)來對(duì)木馬進(jìn)行檢測(cè)。其原理是因?yàn)殡娐分兄踩氲挠布抉R會(huì)對(duì)芯片的一些旁路信號(hào),如電流,頻率或路徑延時(shí)產(chǎn)生影響,因此通過觀察芯片的旁路信號(hào)并與原始芯片的旁路信息作比較,進(jìn)而檢測(cè)出芯片中是否有硬件木馬的存在。對(duì)電路進(jìn)行基于旁路分析的硬件木馬檢測(cè)的最大優(yōu)點(diǎn)是可以使硬件木馬不被觸發(fā)的情形下被檢測(cè)出來,但是其也有顯著的缺點(diǎn),即當(dāng)待測(cè)電路的規(guī)模很大,電路內(nèi)部被植入的硬件木馬的規(guī)模很小,一些旁路信息,比如電流和路徑延時(shí),其變化幅度極小??紤]到測(cè)量過程中引入的噪聲,以及芯片制造過程中由于工藝漂移帶來的噪聲,這種極小的旁路信號(hào)變化將無法被實(shí)際測(cè)量出來或者即使被測(cè)量出來也難以確定時(shí)由于硬件木馬引起的,還是由于測(cè)量噪聲,工藝漂移噪聲引起的。
[0004]但對(duì)于CPU,SOC等電路內(nèi)部是否存在隱藏指令這一類固定型的硬件木馬的研究基本處于空白狀態(tài)。且由于這類隱藏指令型硬件木馬需要由軟件控制來觸發(fā),因?yàn)閭鹘y(tǒng)的如基于旁路分析檢測(cè)的技術(shù),無法適用于這類硬件木馬的檢測(cè),因此需要有全新的檢測(cè)方法來專門應(yīng)對(duì)CPU內(nèi)指令型的硬件木馬檢測(cè)。
[0005]SoC是在一個(gè)芯片上由于廣泛使用預(yù)定制模塊IP (Intellectual Property)而得以快速開發(fā)的集成電路。SoC是System on a Chip的簡(jiǎn)稱。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的不足,提供一種基于漢明距離的CPU指令型硬件木馬的檢測(cè)方法,本發(fā)明采用的技術(shù)方案是:
一種基于漢明距離的CPU指令型硬件木馬的檢測(cè)方法,包括以下步驟:
步驟1:設(shè)置初始狀態(tài)CPU指令,檢測(cè)所述初始狀態(tài)CPU指令是否為木馬指令,若所述初始狀態(tài)CPU指令不滿足預(yù)先設(shè)計(jì)的要求則認(rèn)為所述指令為木馬指令,所述CPU內(nèi)部含有硬件木馬,否則進(jìn)入下一步;
步驟2:對(duì)所述初始狀態(tài)CPU指令以漢明距離為I進(jìn)行擴(kuò)展,得到一個(gè)指令集,所述指令集的元素總數(shù)等于CPU指令長(zhǎng)度,且每個(gè)元素與所述初始狀態(tài)CPU指令的漢明距離為I ; 步驟3:對(duì)所述指令集中的指令進(jìn)行檢測(cè),若存在指令不滿足預(yù)先設(shè)計(jì)的要求則認(rèn)為所述指令為木馬指令,所述CPU內(nèi)部含有硬件木馬,
若檢測(cè)所述指令集中指令沒有木馬指令,直接進(jìn)入下一步;
步驟4:若漢明距離小于CPU指令長(zhǎng)度,則漢明距離加I,對(duì)所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展并抽樣,得到一個(gè)指令集,返回步驟3,
若漢明距離大于等于CPU指令長(zhǎng)度,直接進(jìn)入下一步;
步驟5:若到漢明距離等于CPU指令長(zhǎng)度時(shí)都未檢測(cè)到木馬指令,則判斷為CPU無指令型硬件木馬。
[0007]進(jìn)一步地:
所述步驟I中設(shè)置初始狀態(tài)CPU指令時(shí)為避免用漢明距離擴(kuò)展指令時(shí)發(fā)生混淆,將初始狀態(tài)CPU指令設(shè)置為全零。
[0008]進(jìn)一步地:
所述步驟4中對(duì)所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展并抽樣按照以下原則:
1)抽樣的樣本容量等于CPU指令長(zhǎng)度;
2)對(duì)所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展時(shí),為保證指令位的遍歷,第η個(gè)樣本是從第η位開始連續(xù)循環(huán)的設(shè)置值為1,長(zhǎng)度為漢明距離,剩余位為O的指令。
[0009]本發(fā)明的優(yōu)點(diǎn)在于:由于CPU的木馬指令可能由指令的任意位觸發(fā)。本發(fā)明通過依次遍歷不同漢明距離時(shí)所有指令位形成指令碼,進(jìn)行指令測(cè)試,根據(jù)檢測(cè)結(jié)果是否滿足預(yù)先設(shè)計(jì)的要求來判斷是否有木馬指令存在。本發(fā)明方法對(duì)不同漢明距離時(shí)所有指令位都進(jìn)行了測(cè)試,同時(shí)對(duì)每一個(gè)漢明距離的擴(kuò)展指令采用抽樣方法遍歷了所有指令位,使得對(duì)指令檢測(cè)具有較高的準(zhǔn)確性;又由于采用抽樣方法,相對(duì)于傳統(tǒng)的全部遍歷方法,試驗(yàn)的次數(shù)大大減少。本發(fā)明能夠快速有效檢測(cè)出單個(gè)指令位和連續(xù)指令位觸發(fā)的CPU硬件木馬。
【附圖說明】
[0010]圖1為本發(fā)明的方法流程示意圖。
[0011]圖2為本發(fā)明的基于漢明距離擴(kuò)展初始指令并抽樣的示意圖。
【具體實(shí)施方式】
[0012]下面結(jié)合具體附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。
[0013]現(xiàn)在的CPU體系中,指令是重要的組成部分,用戶對(duì)CPU的各種操作,都是通過指令來完成的。由于當(dāng)前最流行的CPU架構(gòu)如Intel X86,MIPS,ARM等,其指令集都是由國(guó)外公司開發(fā),對(duì)于是否存在不在指令列表中的隱藏指令無從得知,也缺乏相應(yīng)的檢測(cè)手段來識(shí)別其電路或者IP內(nèi)部是否存在有隱藏指令觸發(fā)的某種后門功能。一旦其存在隱藏指令,并且為攻擊者所知,則攻擊者就可以利用這些隱藏指令來取得芯片的控制權(quán)從而完成對(duì)電路或者系統(tǒng)的攻擊。
[0014]基于上述情形,本發(fā)明提供了一種基于漢明距離的CPU指令型硬件木馬的檢測(cè)方法。對(duì)CPU來說,其指令碼是一組固定長(zhǎng)度的0-1碼。假設(shè)CPU指令長(zhǎng)度為m,通過設(shè)置一個(gè)初始碼和一個(gè)漢明距離d(0〈d〈=m),就可以得到一組新的指令碼。如圖1為本發(fā)明的流程示意圖,該方法共分五步。
[0015]步驟1:設(shè)置初始狀態(tài)CPU指令,檢測(cè)所述初始狀態(tài)CPU指令是否為木馬指令; 設(shè)置CPU初始狀態(tài)指令時(shí)將初始狀態(tài)CPU指令設(shè)置為全零,這樣設(shè)置可保證進(jìn)行漢明距離為d擴(kuò)展時(shí),得到的指令碼中I的個(gè)數(shù)為d,避免用漢明距離擴(kuò)展指令時(shí)發(fā)生混淆。若檢測(cè)所述初始狀態(tài)CPU指令不滿足預(yù)先設(shè)計(jì)的要求則認(rèn)為所述指令為木馬指令,所述CPU內(nèi)部含有硬件木馬,否則進(jìn)入下一步;
步驟2:對(duì)所述初始狀態(tài)CPU指令以漢明距離d為I進(jìn)行擴(kuò)展,得到一個(gè)指令集;所述指令集的元素總數(shù)等于CPU指令長(zhǎng)度,且每個(gè)元素與所述初始狀態(tài)CPU指令的漢明距離為1也就是說對(duì)于指令長(zhǎng)度為m的CPU,以漢明距離為I進(jìn)行指令擴(kuò)展,得到的指令集包含m個(gè)指令,且每個(gè)指令