中只有一個指令位的值為I。
[0016]步驟3:對基于漢明距離擴(kuò)展得到的指令集中的指令進(jìn)行檢測,若存在指令不滿足預(yù)先設(shè)計的要求則認(rèn)為所述指令為木馬指令,所述CPU內(nèi)部含有硬件木馬,
若檢測指令集中的指令沒有木馬指令,直接進(jìn)入下一步;
步驟4:若漢明距離小于CPU指令長度,則漢明距離加I,對所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展并抽樣,得到一個指令集,返回步驟3進(jìn)行檢測。
[0017]若漢明距離大于等于CPU指令位總數(shù),也就是說重復(fù)上述擴(kuò)展和檢測流程直到漢明距離值等于CPU指令位總數(shù)時都未檢測到木馬,直接進(jìn)入下一步;
對CPU初始狀態(tài)指令進(jìn)行擴(kuò)展并抽樣按照以下原則:
抽樣的樣本容量等于CPU指令位長度,也就是說樣本容量為m。同時對初始指令進(jìn)行擴(kuò)展時為保證指令位的遍歷,當(dāng)漢明距離為m時,第η個樣本是從CPU指令第η位開始連續(xù)循環(huán)的設(shè)置值為1,長度為漢明距離d,剩余位為O的指令。對CPU指令為m位,漢明距離為d時,對初始狀態(tài)指令進(jìn)行擴(kuò)展并抽樣的示意圖如圖2所示。
[0018]步驟5:若到漢明距離等于CPU指令位總數(shù)時都未檢測到木馬指令,則判斷為CPU無指令型硬件木馬。
[0019]如32 位 CPU 指令,初始狀態(tài)指令為 0000 0000 0000 0000 0000 0000 0000 0000, 當(dāng)漢明距離d=l時,依次取不同位的值為1,可得到擴(kuò)展指令集Cl,其中包含有
1000 0000 0000 0000 0000 0000 0000 0000、
0100 0000 0000 0000 0000 0000 0000 0000、
0010 0000 0000 0000 0000 0000 0000 0000、
0000 0000 0000 0000 0000 0000 0000 0001
共32個指令碼。
[0020]當(dāng)d=12時,根據(jù)設(shè)定的擴(kuò)展和抽樣原則,依次取連續(xù)長度為d位的I碼,其他位碼值為0,樣本容量等于指令碼長度,指令集C12中有
1111 1111 1111 0000 0000 0000 0000 0000、
0111 1111 1111 1000 0000 0000 0000 0000、
* * *、
1000 0000 0000 0000 0000 0111 1111 1111、
* * *、
1111 1111 1110 0000 0000 0000 0000 0001 共 32 個指令碼。
[0021]若在指令集Cl 中檢測到 1000 0000 0000 0000 0000 0000 0000 0000 為木馬指令,那么指令位I為觸發(fā)位,該CPU有硬件木馬;若在d〈12時,都沒有檢測到木馬指令,繼續(xù)對漢明距離加1,在指令集C12中檢測到0111 1111 1111 1000 0000 0000 0000 0000為木馬指令,那么指令位2?13為觸發(fā)位,所以說本發(fā)明方法遍歷了所有可能的觸發(fā)位位數(shù),同時也遍歷了所有的指令位。
[0022]基于漢明距離擴(kuò)展抽樣得到的指令集共包含m*(m-l)+l個指令碼,對得到的指令集進(jìn)行檢測,如果有指令操作的執(zhí)行結(jié)果不符合預(yù)期,則認(rèn)為其為指令木馬,該CPU有單個指令位和連續(xù)指令位觸發(fā)的CPU硬件木馬。若采用全遍歷的方法,需要進(jìn)行2m次檢測才能判斷是否有木馬,當(dāng)m=32時,由于檢測次數(shù)巨大無法實現(xiàn),而本發(fā)明提出的方法最多需要進(jìn)行993次檢測就可以判斷是否有單個指令位和連續(xù)指令位觸發(fā)的CPU硬件木馬。可見上述檢測方法對CPU木馬指令具有良好的檢測效果。
【主權(quán)項】
1.一種基于漢明距離的CPU指令型硬件木馬的檢測方法,其特征在于,包括以下步驟: 步驟1:設(shè)置初始狀態(tài)CPU指令,檢測所述初始狀態(tài)CPU指令是否為木馬指令,若所述初始狀態(tài)CPU指令不滿足預(yù)先設(shè)計的要求則認(rèn)為所述指令為木馬指令,所述CPU內(nèi)部含有硬件木馬,否則進(jìn)入下一步; 步驟2:對所述初始狀態(tài)CPU指令以漢明距離為I進(jìn)行擴(kuò)展,得到一個指令集,所述指令集的元素總數(shù)等于CPU指令長度,且每個元素與所述初始狀態(tài)CPU指令的漢明距離為I ; 步驟3:對所述指令集中的指令進(jìn)行檢測,若存在指令不滿足預(yù)先設(shè)計的要求則認(rèn)為所述指令為木馬指令,所述CPU內(nèi)部含有硬件木馬, 若檢測所述指令集中指令沒有木馬指令,直接進(jìn)入下一步; 步驟4:若漢明距離小于CPU指令長度,則漢明距離加I,對所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展并抽樣,得到一個指令集,返回步驟3, 若漢明距離大于等于CPU指令長度,直接進(jìn)入下一步; 步驟5:若到漢明距離等于CPU指令長度時都未檢測到木馬指令,則判斷為CPU無指令型硬件木馬。2.如權(quán)利要求1所述的基于漢明距離的CPU指令型硬件木馬的檢測方法,其特征在于: 所述步驟I中設(shè)置初始狀態(tài)CPU指令時為避免用漢明距離擴(kuò)展指令時發(fā)生混淆,將初始狀態(tài)CPU指令設(shè)置為全零。3.如權(quán)利要求2所述的基于漢明距離的CPU指令型硬件木馬的檢測方法,其特征在于: 所述步驟4中對所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展并抽樣按照以下原則: 1)抽樣的樣本容量等于CPU指令長度; 2)對所述初始狀態(tài)CPU指令進(jìn)行擴(kuò)展時,為保證指令位的遍歷,第η個樣本是從第η位開始連續(xù)循環(huán)的設(shè)置值為1,長度為漢明距離,剩余位為O的指令。
【專利摘要】本發(fā)明提供基于漢明距離的CPU指令型硬件木馬的檢測方法。首先,設(shè)置初始狀態(tài)CPU指令,檢測所述指令是否為木馬指令。若不是木馬指令,對初始狀態(tài)CPU指令以漢明距離為1進(jìn)行擴(kuò)展得到一個指令集。然后,檢測指令,當(dāng)有木馬指令時說明該CPU有指令型硬件木馬,若檢測當(dāng)前指令集不包含木馬指令,漢明距離加1,進(jìn)行指令擴(kuò)展并抽樣得到指令集,再返回上一步檢測指令,若到漢明距離等于CPU指令長度時都未檢測到木馬指令,則判斷為CPU無指令型硬件木馬。本發(fā)明相對于傳統(tǒng)的遍歷方法,在遍歷指令中可能包含的所有觸發(fā)位數(shù)的同時遍歷所有指令位,而且試驗的次數(shù)大大減少,能夠快速有效的檢測出單個指令位和連續(xù)指令位觸發(fā)的CPU硬件木馬。
【IPC分類】G06F21/56, G06F21/55
【公開號】CN105138910
【申請?zhí)枴緾N201510523958
【發(fā)明人】王麗娟, 張 榮, 周昱, 楊露
【申請人】中國電子科技集團(tuán)公司第五十八研究所
【公開日】2015年12月9日
【申請日】2015年8月24日