CN110287735B - 基于芯片网表特征的木马感染电路识别方法 - Google Patents
基于芯片网表特征的木马感染电路识别方法 Download PDFInfo
- Publication number
- CN110287735B CN110287735B CN201910597285.4A CN201910597285A CN110287735B CN 110287735 B CN110287735 B CN 110287735B CN 201910597285 A CN201910597285 A CN 201910597285A CN 110287735 B CN110287735 B CN 110287735B
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- trojan
- chip
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例提供的一种基于芯片网表特征的木马感染电路识别方法,涉及硬件安全技术领域,该方法利用芯片网表的SCOAP度量值和k‑means++聚类网络,初步检测出可疑节点集,然后结合芯片网表的拓扑结构,进一步修正可疑节点集,其后,通过节点可达分析,能够还原同一木马触发模块的所有节点,并且完备地检测出宿主电路中所有被木马感染的电路。
Description
技术领域
本发明涉及硬件安全技术领域,具体而言,涉及一种基于芯片网表特征的木马感染电路识别方法。
背景技术
集成芯片中的硬件木马指的是:芯片在设计、制造过程中被第三方恶意修改的模块或者附加电路。这种恶意电路会降低性能、泄露信息或者改变芯片功能,其引发的安全问题将造成财产损失、隐私泄露,甚至威胁国家信息安全,因此硬件木马检测与识别的研究非常有意义。
目前硬件木马的检测方法主要分为3类:逆向工程法、边信道信号分析法、逻辑测试法。
逆向工程法是一种具有破坏性的硬件木马检测方式。该方法需要将待检测的芯片拆开,再使用特定的仪器对芯片走线以及元件进行扫描,还原出物理芯片的电路图,最后将还原的电路图和原版图对比,二者之间的不同之处即为硬件木马。Bao等人使用逆向工程法,通过逆向后的单层成像图与可信任的成像图之间的差值来检测芯片中的硬件木马,该方法虽然有很好的检测效果,但缺点明显,如时间消耗过长、仪器成本很高、对芯片不可逆转的破坏等。所以该方法只能适用于对同一批次的大量芯片进行抽样检查的场景。
边信道信号分析法通过检测异常的边信道信息来检测硬件木马,这些信息包括功耗、延时、电压、电流、温度、电磁等。Alkabani等人通过检测IC静态电流的异常情况判断芯片是否被木马入侵,Jin等人通过使用路径延迟指纹检测硬件木马,Hassan Salmani等人通过分析芯片电流检测和孤立硬件木马,同时通过放大硬件木马活动时的功耗提高木马检测效率。由于硬件木马产生的异常信息较弱,所以边信道信号容易淹没在芯片工作时的各种噪声中,甚至被工艺误差所掩盖,所以很难提高边信道信号分析法的木马检测精度。
逻辑测试法通过向芯片输入随机测试矢量来激活掩藏在芯片中的木马。随着集成电路规模的增大,遍历芯片的所有测试矢量是非常困难的,所以该方法陷入了数据爆炸的瓶颈中,如何快速找到能有效检测出硬件木马的测试矢量成为关键。
发明内容
本发明实施例在于提供一种基于芯片网表特征的木马感染电路识别方法,其能够缓解上述问题。
为了缓解上述的问题;本发明实施例采取的技术方案如下:
本发明实施例提供的一种基于芯片网表特征的木马感染电路识别方法,该方法包括:
步骤A1:计算芯片网表中每个节点的SCOAP度量值,将其作为节点的特征向量;
步骤A2:将节点的特征向量输入k-means++聚类网络中,得到可疑节点集;
步骤A3:判断可疑节点集是否为空,如果是,则芯片为非木马芯片,识别过程结束,如果不是,则芯片为木马芯片,继续执行步骤A4;
步骤A4:提取芯片网表的拓扑结构;
步骤A5:修正可疑节点集;
步骤A6:还原硬件木马触发电路;
步骤A7:根据木马感染源识别木马感染电路,识别过程结束。
在本发明实施例中,该方法利用芯片网表的SCOAP度量值和k-means++聚类网络,初步检测出可疑节点集,然后结合芯片网表的拓扑结构,进一步修正可疑节点集,其后,通过节点可达分析,能够还原同一木马触发模块的所有节点,并且完备地检测出宿主电路中所有被木马感染的电路。
可选地,在步骤A1中,节点的特征向量的获取方法是:
获取芯片网表节点集N={n1,n2,…,nM},n表示芯片网表中的节点,其下标为节点序号,M表示芯片网表中节点的总数,各节点的SCOAP度量值包括0可控制性值CC0(ni)、1可控制性值CC1(ni)、可观测性值CO(ni),其中i∈[1,M],将每个节点的SCOAP度量值作为该节点的特征向量:
(CC0(ni),CC1(ni),CO(ni)),ni∈N (1)
可选地,k-means++聚类网络中,将节点的特征向量输入k-means++聚类网络中的步骤包括:
步骤B1:节点预筛选
将N={n1,n2,…,nM}中的节点分为两类,该两类节点分别构成芯片网表节点集N1和芯片网表节点集N2,其中N1由可观测并且是可控制的节点组成,N2由不可观测或者不可控制的节点组成,然后直接将N2中的节点加入到可疑节点集S中,只将N1作为k-means++聚类网络的输入样本;
步骤B2:获取输入特征向量
将N1中每个节点的0可控制性值CC0(ni)和1可控制性值CC1(ni)合并为一个特征元素CC(ni),计算公式如下:
将CC(ni)作为节点ni的可控制性度量值,CO(ni)作为节点ni的可观测性度量值,得到k-means++聚类网络的输入特征向量集D:
D={(CC(ni),CO(ni)),ni∈N1} (3)
节点ni和特征向量di(di∈D)是一一对应的关系;
步骤B3:初始化簇中心,其包括以下步骤:
步骤C1:从D中随机选择第一个簇中心μ1(μ1∈D);
步骤C2:计算每个特征向量di(di∈D)与当前已有的簇中心之间的最短欧式距离,用Ds(ni),ni∈N1表示,并计算每个特征向量的分值pi:
在[0,1]区间内为每个特征向量划分长度为pi区段,并随机生成一个0~1之间的数a,查看a落在哪个区段内,对应的特征向量就是下一个簇中心;
步骤C3:重复步骤C2直到选择出3个簇中心{μ1,μ2,μ3};
步骤B4:聚类
每次将D中的所有特征向量输入到k-means++聚类网络中,计算每个特征向量di(di∈D)与各簇中心μj(1≤j≤3)的欧式距离:
dij=||di-μj||2 (5)
根据距离最近的簇中心确定di的簇标记λi:
λi=argminj∈{1,2,3}dij (6)
将di划入相应的簇:
重复遍历,直到所有节点簇划分情况都不改变,则聚类完毕,得到三个节点簇{C1,C2,C3}。
可选地,判断可疑节点集是否为空的方法是:
首先,设定木马簇划分阈值t,通过公式(8)得到:
t=mean(D)+std(D) (8)
其中,mean(D)表示特征向量集D的均值,std(D)表示特征值向量集D的标准差。
然后,计算三个节点簇{C1,C2,C3}两两之间的簇间距离,即两个簇中相邻最近的两个节点之间的欧式距离,通过比较该簇间距离与木马簇划分阈值t的大小,判断可疑节点集是否为空,具体方法如下:
首先找到距离原点最近的簇Cr(r∈[1,3]),然后通过公式(9)决定是否将其它两个节点簇(Cj表示)判定为木马簇:
其中,||Cj-Cr||表示Cr与Cj之间的簇间距离;
最后,将木马节点簇中的所有节点添加进可疑节点集S中,判断S是否为空。
在本发明实施例中,若可疑节点集S=Φ,则能够判断该芯片为非木马芯片;若可疑节点集S≠Φ,则能够判断该芯片为木马芯片,即完成了芯片的安全性判定。
可选地,提取芯片网表的拓扑结构的方法是:
针对木马芯片,通过结合芯片网表的拓扑结构和可疑节点集S来识别它的木马感染电路;
首先,读取芯片网表文件,将芯片网表中的每个节点抽象为有向图的点,提取每个逻辑单元的输入和输出节点,若ni为输入节点,nj为输出节点,则得到一条有向边eij:
eij=<ni,nj> (10)
如此,芯片网表遍历完毕之后,得到一个有向图,有向图中的节点对应芯片网表节点集N,有向图的边用于记录节点之间的连接关系,通过索引节点ni(i∈[1,M])可获得该节点的输出集Oi和输入集Ii。
可选地,修正可疑节点集方法是:
结合可疑节点集S和有向图结构,在芯片网表节点集N={n1,n2,…,nM}中,查找所有满足公式(11)的节点ni:
nx∈S (12)
则判定ni为木马节点,然后将ni加入可疑节点集S中,对节点集N中全部节点进行上述修正可疑节点集的操作后,得到所有被k-means++聚类网络漏检的木马节点。
可选地,还原硬件木马触发电路的具体操作方法是:
根据更新后的可疑节点集S,还原每个节点对应的逻辑单元,并通过节点直达和节点可达原理,找到每个木马触发模块的所有组成节点;
在有向图中,从可疑节点集S中任意节点ni(ni∈S)开始,通过节点可达策略,每得到一个节点就将该节点加入节点集Sc,直到S中没有其它符合条件的节点时为止;
然后在S中重新选择未被访问的节点,重复操作,直到S中的所有节点都被划分到了子节点集中;
最后得到S的子集{S1,S2,…,ST},它们满足条件:
其中,T表示还原所得的木马触发模块个数,下标c表示模块序列号;
可选地,若节点nx在节点ni的输入集Ii或者输出集Oi中,则nx节点是ni节点直接可达的;若存在集合{n1,n2,…,nz},其中z表示集合中节点总数,下标表示节点序列号,假设节点ni直达ni+1,对任意i=1,2,…,z成立,则节点nz是可达n1的。
可选地,识别木马感染电路的方法是:
在有向图中查找满足公式(14)的节点ni:
其中,O表示节点集Sc所有节点的输出节点集,得到所有满足条件的节点组成的节点集{n1,n2,…,nb},该节点集就是木马触发模块Sc的感染源,b表示感染源节点总数,下标表示节点序号,然后通过有向图的层级遍历的方式遍历有向图,得到Sc的感染电路集合Gc;
当识别完所有的木马触发模块后,得到宿主电路中被感染的电路合集{G1,G2,…,GT},(Qc,Gc),c=1,2,…,T即每个硬件木马模块的感染电路。
可选地,层级遍历的方法是:
以节点集{n1,n2,…,nb}作为遍历的起始节点,包括以下步骤:
步骤D1:选择感染源集合中的任意未被访问过的节点,入队,并将这个节点所对应的逻辑单元加入感染电路集合Gc中;
步骤D2:当队列不为空的时候循环执行,出队,找到出队节点ni在有向图中的输出节点集Oi,将Oi中没有被访问过的节点入队,并将该节点对应的逻辑单元加入到感染电路集合Gc中;
步骤D3:当队列为空跳出循环,查看感染源集合中是否还有未被访问的节点,如果有,跳转至步骤D1,否则,层级遍历结束。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举本发明实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明所述木马感染电路识别的流程图。
图2是本发明所述木马节点k-means++聚类的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,本发明提供的一种基于芯片网表特征的木马感染电路识别方法,该方法包括:
步骤A1:计算芯片网表中每个节点的SCOAP度量值,将其作为节点的特征向量。
可选地,按以下方法计算节点的SCOAP度量值:
获取芯片网表节点集N={n1,n2,…,nM},n表示芯片网表中的节点,其下标为节点序号,M表示芯片网表中节点的总数,各节点的SCOAP度量值则包括0可控制性值CC0(ni)、1可控制性值CC1(ni)、可观测性值CO(ni),其中i∈[1,M];
之后便可将每个节点的SCOAP度量值作为该节点的特征向量:
(CC0(ni),CC1(ni),CO(ni)),ni∈N (1)
步骤A2:将节点的特征向量输入k-means++聚类网络中,得到可疑节点集;
在步骤A2中,k-means++聚类网络分析如下:
结合图2所示,将网表节点集N={n1,n2,…,nM}的所有特征向量输入到k-means++聚类网络中进行节点的聚类划分,具体流程如下:
步骤B1:节点预筛选
可选地,针对节点的特征向量中是否存在无穷大值,将N={n1,n2,…,nM}中的节点分为两类,该两类节点分别构成芯片网表节点集N1和芯片网表节点集N2,其中N1由可观测并且是可控制的节点组成,N2由不可观测或者不可控制的节点组成,然后直接将N2中的节点加入到可疑节点集S中,只将N1作为k-means++聚类网络的输入样本。
步骤B2:获取输入特征向量
将N1中每个节点的0可控制性值CC0(ni)和1可控制性值CC1(ni)合并为一个特征元素CC(ni),计算公式如下:
将CC(ni)作为节点ni的可控制性度量值,CO(ni)作为节点ni的可观测性度量值,得到k-means++聚类网络的输入特征向量集D:
D={(CC(ni),CO(ni)),ni∈N1} (3)
节点ni和特征向量di(di∈D)是一一对应的关系。
步骤B3:初始化簇中心,其包括以下步骤:
步骤C1:从D中随机选择第一个簇中心μ1(μ1∈D);
步骤C2:计算每个特征向量di(di∈D)与当前已有的簇中心之间的最短欧式距离,用Ds(ni),ni∈N1表示,并计算每个特征向量的分值pi:
在[0,1]区间内为每个特征向量划分长度为pi区段,并随机生成一个0~1之间的数a,查看a落在哪个区段内,对应的特征向量就是下一个簇中心;
步骤C3:重复步骤C2直到选择出3个簇中心{μ1,μ2,μ3}。
步骤B4:聚类
每次将D中的所有特征向量输入到k-means++聚类网络中,计算每个特征向量di(di∈D)与各簇中心μj(1≤j≤3)的欧式距离:
dij=||di-μj||2 (5)
根据距离最近的簇中心确定di的簇标记λi:
λi=argminj∈{1,2,3}dij (6)
将di划入相应的簇:
重复遍历,直到所有节点簇划分情况都不改变,则聚类完毕,得到三个节点簇{C1,C2,C3}。
步骤A3:判断可疑节点集是否为空,如果是,则芯片为非木马芯片,识别过程结束,如果不是,则芯片为木马芯片,继续执行步骤A4;
可选地,设定木马簇划分阈值t,通过公式(8)得到:
t=mean(D)+std(D) (8)
其中,mean(D)表示特征向量集D的均值,std(D)表示特征值向量集D的标准差
然后,计算三个节点簇{C1,C2,C3}两两之间的簇间距离,即两个簇中相邻最近的两个节点之间的欧式距离,通过比较该簇间距离与木马簇划分阈值t的大小,判断可疑节点集是否为空,具体方法如下:
首先找到距离原点最近的簇Cr(r∈[1,3]),然后通过公式(9)决定是否将其它两个节点簇(Cj表示)判定为木马簇:
其中,||Cj-Cr||表示Cr与Cj之间的簇间距离;
然后将木马节点簇中的所有节点添加进可疑节点集S中。然后判断S是否为空,若S=Φ,则判断该芯片为普通芯片;若S≠Φ,则判断该芯片为木马芯片。
步骤A4:提取芯片网表的拓扑结构
可选地,针对木马芯片,通过结合芯片网表的拓扑结构和可疑节点集S来识别它的木马感染电路;首先,读取网表文件,将网表中的每个节点抽象为有向图的“点”,提取每个逻辑单元的输入输出节点,若ni为输入节点,nj为输出节点,就可以得到一条有向边eij:
eij=<ni,nj> (10)
如此,芯片网表遍历完毕之后,得到一个有向图。有向图中的节点对应芯片网表节点集N={n1,n2,…,nM},M为网表中节点的总数,有向图的边用于记录节点之间的连接关系。通过索引节点ni(i∈[1,M])可获得该节点的输出集Oi和输入集Ii。
步骤A5:修正可疑节点集
可选地,查找所有满足公式(11)的节点ni:
nx∈S (12)
则判定ni为木马节点,然后将ni加入可疑节点集S中,对节点集N中全部节点进行上述修正可疑节点集的操作后,得到所有被k-means++聚类网络漏检的木马节点。
步骤A6:还原硬件木马触发电路
可选地,根据更新后的可疑节点集S,还原每个节点对应的逻辑单元,并通过节点直达和节点可达原理,找到每个木马触发模块的所有组成节点;
节点直达:若节点nx在节点ni的输入集Ii或者输出集Oi中,则nx节点是ni节点直接可达的。
节点可达:若存在集合{n1,n2,…,nz},其中z表示集合中节点总数,下标表示节点序列号,假设节点ni直达ni+1,对任意i=1,2,…,z成立,则节点nz是可达n1的。
在有向图中,从可疑节点集S中任意节点ni(ni∈S)开始,通过节点可达策略,每得到一个节点就将该节点加入节点集Sc,直到S中没有其它符合条件的节点时为止;
然后在S中重新选择未被访问的节点,重复操作,直到S中的所有节点都被划分到了子节点集中;
最后得到S的子集{S1,S2,…,ST},它们满足条件:
其中,T表示还原所得的木马触发模块个数,下标c表示模块序列号;
集合N中每一个节点ni都对应一个逻辑单元qi,使用{S1,S2,…,ST}表示木马触发模块的节点集合,{Q1,Q2,…,QT}表示木马触发模块的逻辑单元集合。下标相同的Sc和Qc一一对应。
步骤A7:根据木马感染源识别木马感染电路,识别过程结束。
在步骤A7中,需要分别对每个木马触发模块进行分析,下面以Mi,i=1,2,…,T为例。
可选地,在有向图中查找满足公式(14)的节点ni:
其中,O表示节点集Sc所有节点的输出节点集,得到所有满足条件的节点组成的节点集{n1,n2,…,nb},该节点集就是木马触发模块Sc的感染源,然后通过有向图的层级遍历的方式遍历有向图。
层级遍历的操作可以简单地概括如下(需要使用一个队列),以节点集{n1,n2,…,nb}作为遍历的起始节点,包括以下步骤:
步骤D1:选择感染源集合中的任意未被访问过的节点,入队,并将这个节点所对应的逻辑单元加入感染电路集合Gc中;
步骤D2:当队列不为空的时候循环执行,出队,找到出队节点ni在有向图中的输出节点集Oi,将Oi中没有被访问过的节点入队,并将该节点对应的逻辑单元加入到感染电路集合Gc中;
步骤D3:当队列为空跳出循环,查看感染源集合中是否还有未被访问的节点,如果有,跳转至步骤D1,否则,层级遍历结束。
对所有的木马触发模块{S1,S2,…,ST}做上面的识别操作,得到宿主电路中被感染的电路合集{G1,G2,…,GT},(Qc,Gc),c=1,2,…,T即每个硬件木马的感染电路。
下面以案例实验对本发明进行说明,本实验采用的是Trust-hub网站上的门级网表芯片测试用例,首先分别获取网表节点的SCOAP组合度量值,将其作为特征向量输入到k-means++(k=3)聚类网络中。本实验使用的测试基准用例木马信息如表1所示。
表1 beachmark信息
分别对每个芯片网表进行独立实验。将芯片网表中所有节点的特征向量输入到改进型的聚类网络中,重复聚类操作20次,将可疑节点集S中的节点与木马触发电路原始数据相比较,最后得到聚类网络对木马节点的平均检测率。其后,随机选择一个可疑节点集,结合网表芯片的拓扑结构,进行木马感染电路的还原操作。实验检测结果如表2所示。
表2实验检测结果
在本发明实施例中,该方法利用芯片网表的SCOAP度量值和k-means++聚类网络,初步检测出可疑节点集,然后结合芯片网表的拓扑结构,进一步修正可疑节点集,其后,通过节点可达分析,能够还原同一木马触发模块的所有节点,并且完备地检测出宿主电路中所有被木马感染的电路,与现有技术相比,其消耗时间更短、仪器成本低,不会对芯片造成不可逆转的破坏,并能够保证极高的木马检测精度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于芯片网表特征的木马感染电路识别方法,其特征在于,该方法包括:
步骤A1:计算芯片网表中每个节点的SCOAP度量值,将其作为节点的特征向量;
步骤A2:将节点的特征向量输入k-means++聚类网络中,得到可疑节点集;
步骤A3:判断可疑节点集是否为空,如果是,则芯片为非木马芯片,识别过程结束,如果不是,则芯片为木马芯片,继续执行步骤A4;
步骤A4:提取芯片网表的拓扑结构;
步骤A5:修正可疑节点集;
步骤A6:还原硬件木马触发电路;
步骤A7:根据木马感染源识别木马感染电路,识别过程结束;
可疑节点集为节点簇{C1,C2,C3},步骤A3中判断可疑节点集是否为空的方法是:
设定木马簇划分阈值t,通过公式(1)得到:
t=mean(D)+std(D) (1)
其中,mean(D)表示特征向量集D的均值,std(D)表示特征值向量集D的标准差;
然后计算三个节点簇{C1,C2,C3}两两之间的簇间距离,即两个簇中相邻最近的两个节点之间的欧式距离,通过比较该簇间距离与木马簇划分阈值t的大小,判断可疑节点集是否为空,具体方法如下:
首先找到距离原点最近的簇Cr(r∈[1,3]),然后通过公式(2)决定是否将其它两个节点簇Cj判定为木马簇:
其中,||Cj-Cr||表示Cr与Cj之间的簇间距离;
然后将木马节点簇中的所有节点添加进可疑节点集S中,判断S是否为空;
步骤A4的具体操作方法是:
针对木马芯片,通过结合芯片网表的拓扑结构和可疑节点集S来识别它的木马感染电路;
首先,读取芯片网表文件,将芯片网表中的每个节点抽象为有向图的点,提取每个逻辑单元的输入和输出节点,若ni为输入节点,nj为输出节点,则得到一条有向边eij:
eij=<ni,nj> (3)
如此,芯片网表遍历完毕之后,得到一个有向图,有向图中的节点对应芯片网表节点集N,有向图的边用于记录节点之间的连接关系,通过索引节点ni(i∈[1,M])获得该节点的输出集Oi和输入集Ii;
步骤A5的具体操作方法是:
结合可疑节点集S和有向图结构,在芯片网表节点集N={n1,n2,…,nM}中,查找所有满足公式(4)的节点ni:
nx∈S (5)
则判定ni为木马节点,然后将ni加入可疑节点集S中,对节点集N中全部节点进行上述修正可疑节点集的操作后,得到所有被k-means++聚类网络漏检的木马节点;
步骤A6的具体操作方法是:
根据修正后的可疑节点集S,还原每个节点对应的逻辑单元,并通过节点直达和节点可达原理,找到每个木马触发模块的所有组成节点;
在有向图中,从可疑节点集S中任意节点ni(ni∈S)开始,通过节点可达策略,每得到一个节点就将该节点加入节点集Sc,直到S中没有其它符合条件的节点时为止;
然后在S中重新选择未被访问的节点,重复操作,直到S中的所有节点都被划分到了子节点集中;
最后得到S的子集{S1,S2,…,ST},它们满足条件:
其中,T表示还原所得的木马触发模块个数,下标c表示模块序列号;
集合N中每一个节点ni都对应一个逻辑单元qi,使用{S1,S2,…,ST}表示木马触发模块的节点集合,{Q1,Q2,…,QT}表示木马触发模块的逻辑单元集合,下标相同的Sc和Qc一一对应。
2.根据权利要求1所述基于芯片网表特征的木马感染电路识别方法,其特征在于,在步骤A1中,节点的特征向量的获取方法是:
获取芯片网表节点集N={n1,n2,…,nM},n表示芯片网表中的节点,其下标为节点序号,M表示芯片网表中节点的总数,各节点的SCOAP度量值包括0可控制性值CC0(ni)、1可控制性值CC1(ni)、可观测性值CO(ni),其中i∈[1,M],将每个节点的SCOAP度量值作为该节点的特征向量:
(CC0(ni),CC1(ni),CO(ni)),ni∈N (7)。
3.根据权利要求2所述基于芯片网表特征的木马感染电路识别方法,其特征在于,在k-means++聚类网络中,将节点的特征向量输入到k-means++聚类网络的步骤包括:
步骤B1:节点预筛选
将N={n1,n2,…,nM}中的节点分为两类,该两类节点分别构成芯片网表节点集N1和芯片网表节点集N2,其中N1由可观测并且是可控制的节点组成,N2由不可观测或者不可控制的节点组成,然后直接将N2中的节点加入到可疑节点集S中,只将N1作为k-means++聚类网络的输入样本;
步骤B2:获取输入特征向量
将N1中每个节点的0可控制性值CC0(ni)和1可控制性值CC1(ni)合并为一个特征元素CC(ni),计算公式如下:
将CC(ni)作为节点ni的可控制性度量值,CO(ni)作为节点ni的可观测性度量值,得到k-means++聚类网络的输入特征向量集D:
D={(CC(ni),CO(ni)),ni∈N1} (9)
节点ni和特征向量di(di∈D)是一一对应的关系;
步骤B3:初始化簇中心,其包括以下步骤:
步骤C1:从D中随机选择第一个簇中心μ1(μ1∈D);
步骤C2:计算每个特征向量di(di∈D)与当前已有的簇中心之间的最短欧式距离,用Ds(ni),ni∈N1表示,并计算每个特征向量的分值pi:
在[0,1]区间内为每个特征向量划分长度为pi区段,并随机生成一个0~1之间的数a,查看a落在哪个区段内,对应的特征向量就是下一个簇中心;
步骤C3:重复步骤C2直到选择出3个簇中心{μ1,μ2,μ3};
步骤B4:聚类
每次将D中的所有特征向量输入到k-means++聚类网络中,计算每个特征向量di(di∈D)与各簇中心μj(1≤j≤3)的欧式距离:
dij=||di-μj||2 (11)
根据距离最近的簇中心确定di的簇标记λi:
λi=argminj∈{1,2,3}dij (12)
将di划入相应的簇:
重复遍历,直到所有节点簇划分情况都不改变,则聚类完毕,得到三个节点簇{C1,C2,C3}。
4.根据权利要求1所述基于芯片网表特征的木马感染电路识别方法,其特征在于,
若节点nx在节点ni的输入集Ii或者输出集Oi中,则nx节点是ni节点直接可达的;
若存在集合{n1,n2,…,nz},其中z表示集合中节点总数,下标表示节点序列号,假设节点ni直达ni+1,对任意i=1,2,…,z成立,则节点nz是可达n1的。
6.根据权利要求5所述基于芯片网表特征的木马感染电路识别方法,其特征在于,层级遍历的操作方法是:
以节点集{n1,n2,…,nb}作为遍历的起始节点,包括以下步骤:
步骤D1:选择感染源集合中的任意未被访问过的节点,入队,并将这个节点所对应的逻辑单元加入感染电路集合Gc中;
步骤D2:当队列不为空的时候循环执行,出队,找到出队节点ni在有向图中的输出节点集Oi,将Oi中没有被访问过的节点入队,并将该节点对应的逻辑单元加入到感染电路集合Gc中;
步骤D3:当队列为空跳出循环,查看感染源集合中是否还有未被访问的节点,如果有,跳转至步骤D1,否则,层级遍历结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910597285.4A CN110287735B (zh) | 2019-07-04 | 2019-07-04 | 基于芯片网表特征的木马感染电路识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910597285.4A CN110287735B (zh) | 2019-07-04 | 2019-07-04 | 基于芯片网表特征的木马感染电路识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110287735A CN110287735A (zh) | 2019-09-27 |
CN110287735B true CN110287735B (zh) | 2021-05-04 |
Family
ID=68021959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910597285.4A Active CN110287735B (zh) | 2019-07-04 | 2019-07-04 | 基于芯片网表特征的木马感染电路识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110287735B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111353182B (zh) * | 2020-03-11 | 2023-05-05 | 电子科技大学 | 一种面向fpga芯片的网表环路识别方法 |
CN111414622B (zh) * | 2020-03-26 | 2023-03-28 | 电子科技大学 | 针对ip固核网表的硬件后门移除方法 |
CN111695320B (zh) * | 2020-06-15 | 2023-10-03 | 汪子岩 | 一种基于遍历导线的获取电路有向图的方法 |
CN111488629B (zh) * | 2020-06-29 | 2020-12-15 | 广东电网有限责任公司佛山供电局 | 基于差分放大可控性的系统芯片硬件木马检测方法和系统 |
CN114692227B (zh) * | 2022-03-29 | 2023-05-09 | 电子科技大学 | 一种规模化芯片网表级硬件木马检测方法 |
CN116108789B (zh) * | 2023-04-12 | 2023-06-30 | 广州智慧城市发展研究院 | 一种模拟电路版图结构化特性表示还原方法及组件 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102854454A (zh) * | 2012-08-23 | 2013-01-02 | 天津大学 | 在集成电路测试中用于缩短硬件木马的验证时间的方法 |
CN104133747A (zh) * | 2014-07-17 | 2014-11-05 | 清华大学 | 一种现场可编程门阵列芯片应用电路的测试方法 |
CN104168272A (zh) * | 2014-08-04 | 2014-11-26 | 国家电网公司 | 一种基于通信行为聚类的木马检测方法 |
CN104215895A (zh) * | 2014-09-02 | 2014-12-17 | 工业和信息化部电子第五研究所 | 基于测试向量的硬件木马检测方法及系统 |
CN104330721A (zh) * | 2014-10-29 | 2015-02-04 | 工业和信息化部电子第五研究所 | 集成电路硬件木马检测方法和系统 |
US9003248B2 (en) * | 2013-06-17 | 2015-04-07 | Mentor Graphics Corporation | Fault-driven scan chain configuration for test-per-clock |
CN107016223A (zh) * | 2017-06-06 | 2017-08-04 | 宁波千里电子科技有限公司 | 一种抗硬件木马芯片设计方法及系统 |
CN107703186A (zh) * | 2017-09-26 | 2018-02-16 | 电子科技大学 | 基于芯片温度场效应的硬件木马检测方法 |
CN108052840A (zh) * | 2017-11-13 | 2018-05-18 | 天津大学 | 基于神经网络的硬件木马检测方法 |
CN108647533A (zh) * | 2018-02-14 | 2018-10-12 | 清华大学 | 用于检测硬件木马的安全断言自动生成方法 |
CN109784096A (zh) * | 2019-01-18 | 2019-05-21 | 电子科技大学 | 基于聚类算法的硬件木马检测和剔除方法 |
CN109815705A (zh) * | 2019-01-31 | 2019-05-28 | 福州大学 | 一种基于扫描链特征分析的硬件木马检测方法 |
CN109858246A (zh) * | 2018-12-24 | 2019-06-07 | 福州大学 | 一种针对控制信号型硬件木马的分类方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488947A (zh) * | 2013-10-11 | 2014-01-01 | 北京金山网络科技有限公司 | 即时通信客户端盗号木马程序的识别方法及装置 |
CN104215894B (zh) * | 2014-08-28 | 2017-04-05 | 工业和信息化部电子第五研究所 | 集成电路硬件木马检测方法和系统 |
-
2019
- 2019-07-04 CN CN201910597285.4A patent/CN110287735B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102854454A (zh) * | 2012-08-23 | 2013-01-02 | 天津大学 | 在集成电路测试中用于缩短硬件木马的验证时间的方法 |
US9003248B2 (en) * | 2013-06-17 | 2015-04-07 | Mentor Graphics Corporation | Fault-driven scan chain configuration for test-per-clock |
CN104133747A (zh) * | 2014-07-17 | 2014-11-05 | 清华大学 | 一种现场可编程门阵列芯片应用电路的测试方法 |
CN104168272A (zh) * | 2014-08-04 | 2014-11-26 | 国家电网公司 | 一种基于通信行为聚类的木马检测方法 |
CN104215895A (zh) * | 2014-09-02 | 2014-12-17 | 工业和信息化部电子第五研究所 | 基于测试向量的硬件木马检测方法及系统 |
CN104330721A (zh) * | 2014-10-29 | 2015-02-04 | 工业和信息化部电子第五研究所 | 集成电路硬件木马检测方法和系统 |
CN107016223A (zh) * | 2017-06-06 | 2017-08-04 | 宁波千里电子科技有限公司 | 一种抗硬件木马芯片设计方法及系统 |
CN107703186A (zh) * | 2017-09-26 | 2018-02-16 | 电子科技大学 | 基于芯片温度场效应的硬件木马检测方法 |
CN108052840A (zh) * | 2017-11-13 | 2018-05-18 | 天津大学 | 基于神经网络的硬件木马检测方法 |
CN108647533A (zh) * | 2018-02-14 | 2018-10-12 | 清华大学 | 用于检测硬件木马的安全断言自动生成方法 |
CN109858246A (zh) * | 2018-12-24 | 2019-06-07 | 福州大学 | 一种针对控制信号型硬件木马的分类方法 |
CN109784096A (zh) * | 2019-01-18 | 2019-05-21 | 电子科技大学 | 基于聚类算法的硬件木马检测和剔除方法 |
CN109815705A (zh) * | 2019-01-31 | 2019-05-28 | 福州大学 | 一种基于扫描链特征分析的硬件木马检测方法 |
Non-Patent Citations (1)
Title |
---|
基于门级网表的硬件木马检测技术研究;房磊;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110287735A (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287735B (zh) | 基于芯片网表特征的木马感染电路识别方法 | |
CN109359439B (zh) | 软件检测方法、装置、设备及存储介质 | |
Guan et al. | Y-means: A clustering method for intrusion detection | |
CN107480561B (zh) | 基于少态节点遍历的硬件木马检测方法 | |
Gao et al. | Android malware detection via graphlet sampling | |
CN110414277B (zh) | 基于多特征参数的门级硬件木马检测方法 | |
CN108733404B (zh) | 一种针对fpga固件的精准逆向工程方法 | |
CN109784046B (zh) | 一种恶意软件检测方法、装置与电子设备 | |
Zhao et al. | Community identification in signed networks: a k-truss based model | |
CN112364637A (zh) | 一种敏感词检测方法、装置,电子设备及存储介质 | |
More et al. | Trust-based voting method for efficient malware detection | |
Voevodski et al. | Efficient clustering with limited distance information | |
Zhang et al. | Efficient and high-quality seeded graph matching: Employing higher-order structural information | |
Vyverman et al. | A long fragment aligner called ALFALFA | |
Kurihara et al. | Hardware-Trojan Detection Based on the Structural Features of Trojan Circuits Using Random Forests | |
KR102318991B1 (ko) | 유사도 기반의 악성코드 진단 방법 및 장치 | |
WO2019053844A1 (ja) | メール検査装置、メール検査方法およびメール検査プログラム | |
CN114692227B (zh) | 一种规模化芯片网表级硬件木马检测方法 | |
CN113486347B (zh) | 一种基于语义理解的深度学习硬件木马检测方法 | |
Hashemi et al. | Graph centrality algorithms for hardware trojan detection at gate-level netlists | |
McGeehan et al. | Hardware IP Classification through Weighted Characteristics | |
CN114398887A (zh) | 一种文本分类方法、装置及电子设备 | |
Waller et al. | Character Reassignment for Hardware Trojan Detection | |
CN113821840A (zh) | 基于Bagging的硬件木马检测方法、介质、计算机 | |
Samyukta et al. | Detection of Hardware Trojan Horse using Unsupervised Learning Approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |