基于汉明距离的CPU指令型硬件木马的检测方法转让专利

申请号 : CN201510523958.3

文献号 : CN105138910B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王丽娟张荣周昱杨露

申请人 : 中国电子科技集团公司第五十八研究所

摘要 :

本发明提供基于汉明距离的CPU指令型硬件木马的检测方法。首先,设置初始状态CPU指令,检测所述指令是否为木马指令。若不是木马指令,对初始状态CPU指令以汉明距离为1进行扩展得到一个指令集。然后,检测指令,当有木马指令时说明该CPU有指令型硬件木马,若检测当前指令集不包含木马指令,汉明距离加1,进行指令扩展并抽样得到指令集,再返回上一步检测指令,若到汉明距离等于CPU指令长度时都未检测到木马指令,则判断为CPU无指令型硬件木马。本发明相对于传统的遍历方法,在遍历指令中可能包含的所有触发位数的同时遍历所有指令位,而且试验的次数大大减少,能够快速有效的检测出单个指令位和连续指令位触发的CPU硬件木马。

权利要求 :

1.一种基于汉明距离的CPU指令型硬件木马的检测方法,其特征在于,包括以下步骤:步骤1:设置初始状态CPU指令,检测所述初始状态CPU指令是否为木马指令,若所述初始状态CPU指令不满足预先设计的要求则认为所述指令为木马指令,所述CPU内部含有硬件木马,否则进入下一步;

步骤2:对所述初始状态CPU指令以汉明距离为1进行扩展,得到一个指令集,所述指令集的元素总数等于CPU指令长度,且每个元素与所述初始状态CPU指令的汉明距离为1;

步骤3:对所述指令集中的指令进行检测,若存在指令不满足预先设计的要求则认为所述指令为木马指令,所述CPU内部含有硬件木马,若检测所述指令集中指令没有木马指令,直接进入下一步;

步骤4:若汉明距离小于CPU指令长度,则汉明距离加1,对所述初始状态CPU指令进行扩展并抽样,得到一个指令集,返回步骤3,若汉明距离大于等于CPU指令长度,直接进入下一步;

步骤5:若到汉明距离等于CPU指令长度时都未检测到木马指令,则判断为CPU无指令型硬件木马;

所述步骤4中对所述初始状态CPU指令进行扩展并抽样按照以下原则:

1)抽样的样本容量等于CPU指令长度;

2)对所述初始状态CPU指令进行扩展时,为保证指令位的遍历,第n个样本是从第n位开始连续循环的设置值为1,长度为汉明距离,剩余位为0的指令。

2.如权利要求1所述的基于汉明距离的CPU指令型硬件木马的检测方法,其特征在于:所述步骤1中设置初始状态CPU指令时为避免用汉明距离扩展指令时发生混淆,将初始状态CPU指令设置为全零。

说明书 :

基于汉明距离的CPU指令型硬件木马的检测方法

技术领域

[0001] 本发明涉及一种针对CPU指令型硬件木马的搜索方法,主要针对第三方提供的SoC内核IP和使用第三方进口内核的SoC芯片。

背景技术

[0002] 近年来发生的“斯诺登棱镜门”,“伊朗震网”和“利比亚、叙利亚战争”等事件表明集成电路内的硬件木马可以作为一种武器来进行信息战,网络战,甚至物理摧毁军事装备与关键设施,严重威胁着国家安全。因此需采取有效措施来对集成电路内的硬件木马进行有效识别,保证集成电路的安全可信。
[0003] 国内外对硬件木马检测的研究都是针对纯硬件的木马检测方法,目前主要有破坏性检测,系统运行检测,逻辑测试和旁路分析四种。其中研究最多的就是基于旁路分析的硬件木马检测技术。旁路分析是利用芯片工作时的旁路信息(如电磁辐射,电流或者电路延时等信息)来对木马进行检测。其原理是因为电路中植入的硬件木马会对芯片的一些旁路信号,如电流,频率或路径延时产生影响,因此通过观察芯片的旁路信号并与原始芯片的旁路信息作比较,进而检测出芯片中是否有硬件木马的存在。对电路进行基于旁路分析的硬件木马检测的最大优点是可以使硬件木马不被触发的情形下被检测出来,但是其也有显著的缺点,即当待测电路的规模很大,电路内部被植入的硬件木马的规模很小,一些旁路信息,比如电流和路径延时,其变化幅度极小。考虑到测量过程中引入的噪声,以及芯片制造过程中由于工艺漂移带来的噪声,这种极小的旁路信号变化将无法被实际测量出来或者即使被测量出来也难以确定时由于硬件木马引起的,还是由于测量噪声,工艺漂移噪声引起的。
[0004] 但对于CPU,SOC等电路内部是否存在隐藏指令这一类固定型的硬件木马的研究基本处于空白状态。且由于这类隐藏指令型硬件木马需要由软件控制来触发,因为传统的如基于旁路分析检测的技术,无法适用于这类硬件木马的检测,因此需要有全新的检测方法来专门应对CPU内指令型的硬件木马检测。
[0005] SoC是在一个芯片上由于广泛使用预定制模块IP(Intellectual Property)而得以快速开发的集成电路。SoC是System on a Chip的简称。

发明内容

[0006] 本发明的目的在于克服现有技术中存在的不足,提供一种基于汉明距离的CPU指令型硬件木马的检测方法,本发明采用的技术方案是:
[0007] 一种基于汉明距离的CPU指令型硬件木马的检测方法,包括以下步骤:
[0008] 步骤1:设置初始状态CPU指令,检测所述初始状态CPU指令是否为木马指令,若所述初始状态CPU指令不满足预先设计的要求则认为所述指令为木马指令,所述CPU内部含有硬件木马,否则进入下一步;
[0009] 步骤2:对所述初始状态CPU指令以汉明距离为1进行扩展,得到一个指令集,所述指令集的元素总数等于CPU指令长度,且每个元素与所述初始状态CPU指令的汉明距离为1;
[0010] 步骤3:对所述指令集中的指令进行检测,若存在指令不满足预先设计的要求则认为所述指令为木马指令,所述CPU内部含有硬件木马,
[0011] 若检测所述指令集中指令没有木马指令,直接进入下一步;
[0012] 步骤4:若汉明距离小于CPU指令长度,则汉明距离加1,对所述初始状态CPU指令进行扩展并抽样,得到一个指令集,返回步骤3,
[0013] 若汉明距离大于等于CPU指令长度,直接进入下一步;
[0014] 步骤5:若到汉明距离等于CPU指令长度时都未检测到木马指令,则判断为CPU无指令型硬件木马。
[0015] 进一步地:
[0016] 所述步骤1中设置初始状态CPU指令时为避免用汉明距离扩展指令时发生混淆,将初始状态CPU指令设置为全零。
[0017] 进一步地:
[0018] 所述步骤4中对所述初始状态CPU指令进行扩展并抽样按照以下原则:
[0019] 1)抽样的样本容量等于CPU指令长度;
[0020] 2)对所述初始状态CPU指令进行扩展时,为保证指令位的遍历,第n个样本是从第n位开始连续循环的设置值为1,长度为汉明距离,剩余位为0的指令。
[0021] 本发明的优点在于:由于CPU的木马指令可能由指令的任意位触发。本发明通过依次遍历不同汉明距离时所有指令位形成指令码,进行指令测试,根据检测结果是否满足预先设计的要求来判断是否有木马指令存在。本发明方法对不同汉明距离时所有指令位都进行了测试,同时对每一个汉明距离的扩展指令采用抽样方法遍历了所有指令位,使得对指令检测具有较高的准确性;又由于采用抽样方法,相对于传统的全部遍历方法,试验的次数大大减少。本发明能够快速有效检测出单个指令位和连续指令位触发的CPU硬件木马。

附图说明

[0022] 图1为本发明的方法流程示意图。
[0023] 图2为本发明的基于汉明距离扩展初始指令并抽样的示意图。

具体实施方式

[0024] 下面结合具体附图和实施例对本发明作进一步说明。
[0025] 现在的CPU体系中,指令是重要的组成部分,用户对CPU的各种操作,都是通过指令来完成的。由于当前最流行的CPU架构如Intel X86,MIPS,ARM等,其指令集都是由国外公司开发,对于是否存在不在指令列表中的隐藏指令无从得知,也缺乏相应的检测手段来识别其电路或者IP内部是否存在有隐藏指令触发的某种后门功能。一旦其存在隐藏指令,并且为攻击者所知,则攻击者就可以利用这些隐藏指令来取得芯片的控制权从而完成对电路或者系统的攻击。
[0026] 基于上述情形,本发明提供了一种基于汉明距离的CPU指令型硬件木马的检测方法。对CPU来说,其指令码是一组固定长度的0-1码。假设CPU指令长度为m,通过设置一个初始码和一个汉明距离d(0
[0027] 步骤1:设置初始状态CPU指令,检测所述初始状态CPU指令是否为木马指令;
[0028] 设置CPU初始状态指令时将初始状态CPU指令设置为全零,这样设置可保证进行汉明距离为d扩展时,得到的指令码中1的个数为d,避免用汉明距离扩展指令时发生混淆。若检测所述初始状态CPU指令不满足预先设计的要求则认为所述指令为木马指令,所述CPU内部含有硬件木马,否则进入下一步;
[0029] 步骤2:对所述初始状态CPU指令以汉明距离d为1进行扩展,得到一个指令集;所述指令集的元素总数等于CPU指令长度,且每个元素与所述初始状态CPU指令的汉明距离为1。也就是说对于指令长度为m的CPU,以汉明距离为1进行指令扩展,得到的指令集包含m个指令,且每个指令中只有一个指令位的值为1。
[0030] 步骤3:对基于汉明距离扩展得到的指令集中的指令进行检测,若存在指令不满足预先设计的要求则认为所述指令为木马指令,所述CPU内部含有硬件木马,[0031] 若检测指令集中的指令没有木马指令,直接进入下一步;
[0032] 步骤4:若汉明距离小于CPU指令长度,则汉明距离加1,对所述初始状态CPU指令进行扩展并抽样,得到一个指令集,返回步骤3进行检测。
[0033] 若汉明距离大于等于CPU指令位总数,也就是说重复上述扩展和检测流程直到汉明距离值等于CPU指令位总数时都未检测到木马,直接进入下一步;
[0034] 对CPU初始状态指令进行扩展并抽样按照以下原则:
[0035] 抽样的样本容量等于CPU指令位长度,也就是说样本容量为m。同时对初始指令进行扩展时为保证指令位的遍历,当汉明距离为m时,第n个样本是从CPU指令第n位开始连续循环的设置值为1,长度为汉明距离d,剩余位为0的指令。对CPU指令为m位,汉明距离为d时,对初始状态指令进行扩展并抽样的示意图如图2所示。
[0036] 步骤5:若到汉明距离等于CPU指令位总数时都未检测到木马指令,则判断为CPU无指令型硬件木马。
[0037] 如32位CPU指令,初始状态指令为0000 0000 0000 0000 0000 0000 0000 0000,[0038] 当汉明距离d=1时,依次取不同位的值为1,可得到扩展指令集C1,其中包含有[0039] 1000 0000 0000 0000 0000 0000 0000 0000、
[0040] 0100 0000 0000 0000 0000 0000 0000 0000、
[0041] 0010 0000 0000 0000 0000 0000 0000 0000、
[0042] …
[0043] 0000 0000 0000 0000 0000 0000 0000 0001
[0044] 共32个指令码。
[0045] 当d=12时,根据设定的扩展和抽样原则,依次取连续长度为d位的1码,其他位码值为0,样本容量等于指令码长度,指令集C12中有
[0046] 1111 1111 1111 0000 0000 0000 0000 0000、
[0047] 0111 1111 1111 1000 0000 0000 0000 0000、
[0048] …、
[0049] 1000 0000 0000 0000 0000 0111 1111 1111、
[0050] …、
[0051] 1111 1111 1110 0000 0000 0000 0000 0001共32个指令码。
[0052] 若在指令集C1中检测到1000 0000 0000 0000 0000 0000 0000 0000为木马指令,那么指令位1为触发位,该CPU有硬件木马;若在d<12时,都没有检测到木马指令,继续对汉明距离加1,在指令集C12中检测到0111 1111 1111 1000 0000 0000 0000 0000为木马指令,那么指令位2~13为触发位,所以说本发明方法遍历了所有可能的触发位位数,同时也遍历了所有的指令位。
[0053] 基于汉明距离扩展抽样得到的指令集共包含m*(m-1)+1个指令码,对得到的指令集进行检测,如果有指令操作的执行结果不符合预期,则认为其为指令木马,该CPU有单个m指令位和连续指令位触发的CPU硬件木马。若采用全遍历的方法,需要进行2次检测才能判断是否有木马,当m=32时,由于检测次数巨大无法实现,而本发明提出的方法最多需要进行
993次检测就可以判断是否有单个指令位和连续指令位触发的CPU硬件木马。可见上述检测方法对CPU木马指令具有良好的检测效果。