本发明涉及集成电路可信任性检测领域,尤其是硬件木马快速激活技术。具体讲,涉及基于遗传算法和mers(multipleexcitationofrareswitching,多次激发少态翻转)融合的优化测试向量生成方法。
背景技术
近年来,随着集成电路技术的飞速发展,集成电路的功能变得越来越强大,它已经被广泛应用到社会生活的各个方面。集成电路行业日趋激烈的竞争使得集成电路设计与制造逐步实现全球化,分工合作已经成为了现代集成电路设计与制造的一个重要特点。为缩短设计周期,降低设计成本,现代集成电路的设计与制造过程通常不是由一家公司完成的。而这些公司的可信程度值得商榷。一些敌人或竞争对手可能会利用集成电路设计与制造过程中的某个环节对原始电路进行篡改或秘密地植入恶意的微小破坏电路,也就是所谓的硬件木马。
与原始芯片相比,感染了木马的芯片可以具有相同的物理外形、管脚特征,以及非常相似的输入(输出)信号行为,即对于大多数的输入信号,隐藏有硬件木马的芯片相应的输出信号,与真正原始芯片的输出信号很难有差异。直到其被特定条件触发,才产生攻击者想要的输出结果或造成其他恶意输出行为。利用这种新的攻击方式,使得攻击者能够干扰系统的正常工作,窃取机密信息,甚至破坏硬件电路,造成严重的经济损失与社会危害。
目前非入侵性的硬件木马检测方法包括旁路信号分析技术和逻辑测试技术。旁路信号分析技术是基于观察插入的硬件木马对电路的瞬态电流、功耗或路径延时等物理参数的影响。但随着现代纳米技术中越来越大的工艺偏差,旁路信号分析技术已经不能检测出小型硬件木马。逻辑测试技术主要通过产生一些合适的测试向量来进行木马检测。这种方法通过找到一个测试向量来激活可能存在的硬件木马,并将木马的效果传递到芯片的输出引脚进行观察。但是攻击者往往将电路中的少态节点作为木马的触发部分,所谓少态节点就是电路中翻转率较低的节点。以这些节点的稀有值作为木马的触发条件时,木马是很难通过测试向量触发的。而且随着电路规模不断增加,产生大量的测试向量来进行遍历测试检测可能存在的硬件木马是几乎不可能的。
技术实现要素:
为克服现有技术的不足,针对现代集成电路规模不断增加而导致的穷举测试向量不可行的问题,本发明旨在提出一种基于遗传算法和mers融合的优化测试向量生成算法,生成高效的测试向量,实现少态节点翻转率的提高,并降低电路功耗,可以有效的激活硬件木马,增加测试效率。为此,本发明采用的技术方案是,基于遗传算法和mers融合的优化测试向量生成方法,将多次激发少态翻转mers和遗传算法相结合,具体地,将电路中的少态节点作为多次激发少态翻转mers中需要被激发节点,多次激发少态翻转mers的少态节点的翻转次数作为遗传算法的适应度,并以选择、交叉和变异算子更新向量,最终得到测试向量。
具体细化步骤如下:
步骤1:搭建测试平台,产生随机测试向量,并使其激励电路,使用模拟器编译器vcs(verilogcompilersimulator)仿真工具对原始电路进行仿真测试并保存仿真过程开关行为内部交换格式文件saif(switchingactivityinterchangeformat,)文件;
步骤2:统计电路节点的翻转率
根据电路的仿真过程saif文件,使用shell编程脚本统计电路节点的翻转次数,进而确定各个节点的翻转概率;
步骤3:设定临界概率阈值pth,并确定电路中的少态节点
设定临界概率阈值pth,将翻转概率小于临界概率阈值pth的节点认定为mers算法中需要多次激发的少态节点,并去除重复节点和不活动节点;
步骤4:初始化测试向量组
生成随机测试向量组作为遗传算法初始种群,并设定交叉概率、变异概率和最大迭代次数;
步骤5:计算每个个体适应度
根据少态节点的翻转次数计算每个个体的适应度值,当所有个体适应度值之和大于设定阈值时停止算法,并输出这一代测试向量组;否则继续遗传算法;
步骤6:对种群中的个体进行遗传算法选择、交叉和变异操作
将mers算法中少态节点被激活的次数以遗传算法的适应度表示,根据每个个体的适应度值对种群中的个体进行选择操作,舍弃适应度值低的个体,以交叉和变异代替mers算法中的按位更新,使适应度值高的个体进行交叉和变异操作,产生下一代个体;
步骤7:判断迭代终止条件是否满足
判断当前迭代次数是否大于最大迭代次数,如果大于则输出这一代测试向量组;否则返回步骤5继续进行迭代操作;
步骤8:测试向量组再排序
使用汉明距离最小的方法对测试向量组进行再排序。
采用适应度排序法进行选择操作,不管个体的适应度是多少,被选择的概率只与适应度大小的排列顺序有关。
本发明的特点及有益效果是:
本发明从传统硬件木马的检测难点出发,以电路的少态节点作为研究方向,结合遗传算法和mers算法,使初始测试向量不断迭代为可以使少态节点多次翻转的测试向量,有效解决了传统逻辑测试方法需要穷举向量的问题,大大减少了所需测试向量的数量,在此基础上可以快速激活硬件木马,并降低了电路功耗,提高了检测硬件木马的效率。
附图说明:
图1基于遗传算法和mers融合的优化测试向量生成算法流程图。
图2遗传算法。
具体实施方式
本发明首先使用一组随机测试向量输入到待测电路中,然后统计每个向量使少态节点达到稀有值的数量,并通过遗传算法从这些向量中筛选出能够使多个少态节点达到稀有值的向量,最后按照汉明距离最小的排序方法将向量排序,得到了在电路的总翻转率较低的情况下,提高少态节点翻转率的测试向量。
本发明完整技术方案如下:
图1为基于遗传算法和mers融合的优化测试向量生成算法的流程图,该算法主要包括以下步骤:
步骤1:搭建测试平台,产生随机测试向量,并使其激励电路。
围绕原始电路搭建测试平台,使用vcs仿真工具对原始电路进行仿真测试并保存仿真过程saif文件。
步骤2:统计电路节点的翻转率
根据电路的仿真过程saif文件,使用shell编程脚本统计电路节点的翻转次数,进而确定各个节点的翻转概率。
步骤3:设定临界概率阈值pth,并确定电路中的少态节点
设定临界概率阈值pth,将翻转概率小于临界概率阈值pth的节点认定为少态节点,并去除重复节点和不活动节点。
步骤4:初始化测试向量组
生成随机测试向量组作为初始种群,并设定交叉概率、变异概率和最大迭代次数等参数。
步骤5:计算每个个体适应度
根据少态节点的翻转次数计算每个个体的适应度值。当所有个体适应度值之和大于设定阈值时停止算法,并输出这一代测试向量组;否则继续算法。
步骤6:对种群中的个体进行选择、交叉和变异操作
根据每个个体的适应度值对种群中的个体进行选择操作,舍弃适应度值低的个体,使适应度值高的个体进行交叉和变异操作,产生下一代个体。
步骤7:判断迭代终止条件是否满足
判断当前迭代次数是否大于最大迭代次数,如果大于则输出这一代测试向量组;否则返回步骤5继续进行迭代操作。
步骤8:测试向量组再排序
使用汉明距离最小的方法对测试向量组进行再排序,可以减少非少态节点的翻转次数,从而降低电路的动态功耗。
下面介绍一下遗传算法和mers算法,如图2所示。遗传算法模拟生命进化机制,也就是模拟了自然选择和遗传进化中发生的繁殖和突变现象,从任意一个初始种群出发,通过随机选择、交叉和变异操作,产生一群新的更适应环境的个体,使群体进化到搜索空间中越来越好的区域。这样一代一代的不断进化,最后收敛到一群最适应环境的个体上,求得问题的最优解。遗传算法对于复杂的优化问题无需建模和复杂运算,只要使用遗传算法的3个算子:选择、交叉和变异,就能得到最优解。
遗传算法的选择算子就是用来确定如何从父代群体中按照某种方法,选择哪些个体作为子代的遗传算子。选择算子建立在对个体适应度进行评价的基础上,目的是避免优良基因损失。一般的选择算子存在两个问题:群体中极少数适应度相当高的个体被迅速选择、复制遗传,引起算法提前收敛于局部最优解;当群体中个体适应度非常接近时,算法趋于纯粹的随机选择,使优化过程趋于停止。所以本发明采用适应度排序法进行选择操作。不管个体的适应度是多少,被选择的概率只与适应度大小的排列顺序有关。这样避免了一代群体中过于适应或过于不适应个体的干扰。
遗传算法的交叉算子模仿基因重组过程,其作用在于将原有的优良基因遗传给下一代,并生成包含更复杂结构的新个体。具体的操作过程就是从选择算子选出的中间代的个体中随机抽取两个个体,交换两个个体的某些位,从而形成两个继承父代特征的新个体。
遗传算法的变异算子模拟自然界生物进化中,染色体上某位基因发生的突变现象。它以一定的概率选择个体中的某一位或几位,随机地改变该位基因值。
mers算法是使少态节点多次翻转的算法。将向量的第一位按位取反,然后观察电路中被激活的节点数量是否增加。若增加,则替换原有向量,并将此向量的下一位取反;若不增加,则将原有向量的下一位取反。直到向量的所有位都经过按位取反的操作完成,则对下一个向量进行取反操作。直到少态节点的翻转次数大于阈值或全部向量更新完毕,则算法结束。
由于mers算法是按位更新向量,所以其运算速度较慢。将少态节点的翻转次数作为遗传算法的适应度,并以选择、交叉和变异算子更新向量。这种将遗传算法和mers算法融合的方法可以大大缩短原有mers算法的运行时间,高效的得到优质测试向量。
使少态节点多次翻转的测试向量生成流程图如图1所示。执行以上操作,首先对电路中的节点进行筛选,得到少态节点的集合。然后通过遗传算法对测试向量做选择、交叉和变异运算,得到能够多次激活少态节点的测试向量。最后根据汉明距离最小的原则对向量组中的向量进行排序,以减小电路的整体翻转率。