本发明涉及一种基于扫描链的电路设计方法及对硬件木马的检测方法,尤其是一种通过在电路的设计阶段在电路中插入扫描链,通过扫描链检测不同区域的侧信道数据,提高了硬件木马的检测分辨率的电路设计方法及对硬件木马的检测方法,尤其是对于占整体电路规模较小的硬件木马。
背景技术:
:芯片在设计与制造的过程中,为了降低成本与缩短集成电路设计周期,通常会采用第三方提供成熟的IP(IntellectualProperty)、软件以及不受控的晶园厂和封装测试厂,在从设计到封装成产品的过程中,芯片很有可能被人为的修改,比如在电路的版图中添加计数器,形成时间炸弹,或者在流片过程中对线上工艺参数进行修改,使电路的驱动发生改变,这些对于电路结构、参数、可靠性等会产生影响的修改统称为硬件木马。近几年国际上出现的多件由硬件木马引起的危害国家安全的严重事件,比如“斯诺登棱镜门”事件和伊朗的“震网”事件。这都给国家的信息安全和社会安全带来了巨大的威胁。硬件木马的检测方法主要有破坏性检测、系统运行检测、逻辑测试和侧信道分析四类。破坏性检测耗时且随着工艺尺寸的变小,一个芯片上有几千万的晶体管,检测规模很小的硬件木马变的愈加困难。系统运行检测即是将待测芯片用于原系统中,通过系统运行,来观测芯片的运行过程中功能是否正确,此方法虽然可以检测出大多数在运行过程中出现的问题,但是对于一些需要很长时间才能触发的硬件木马,这种方法显得不现实。逻辑测试是根据可测试性设计(DFT,DesignforTest)的概念,在芯片测试过程中,在输入端添加不同的测试向量,观测输出。此方法的缺陷是随着芯片规模的增大,测试覆盖率很难达到100%。侧信道分析是利用电路工作时的侧信道信息(如电流、电磁辐射、电路延时等)对硬件木马进行检测。其原理是因为植入的硬件木马会对原始电路的侧信道信息产生影响。通过芯片的侧信道信息对比,进而检测出芯片中是否含有硬件木马的存在。这种方法的优点在于不需要激活木马程序,但是其也有缺点,即当待测电路的规模很大而木马电路的规模很小的时候,侧信道信息变化很小,而且加上测量时的噪声,很难确定侧信道信息的变化是由硬件木马引起的。技术实现要素:本发明要解决的技术问题是克服现有的缺陷,提供一种基于扫描链的电路设计方法及对硬件木马的检测方法,在降低整体芯片的侧信道数据的同时,提高了硬件木马电路的侧信道数据占整体电路的侧信道数据的比例,更好的区分含有硬件木马电路和无硬件木马电路在侧信道数据上的区别,有利于提高检测硬件木马的分辨率,并通过此方法判断硬件木马插入的大体位置。为了解决上述技术问题,本发明提供了如下的技术方案:本发明一种基于扫描链的电路设计方法,包括如下步骤:(1)完成电路的功能设计,并完成功能仿真;(2)将电路按照一定的规则划分为多个区域,每个区域包括一个或者多个功能模块;(3)对上述划分的各个区域插入扫描链,且每一条扫描链相互独立,只受扫描链的控制信号的影响;(4)在工作模式下,电路进行正常的工作,测试模式下,通过扫描链的控制信号,选择不同的链进行电路测试,在测量电路内部结构的同时,测量电路的侧信道参数。进一步地,电路顶层包括使能信号SCAN_EN,扫描链数据输入SCAN_IN,工作模式下的数据输入DATA,扫描链数据输出SCAN_OUT,扫描链控制信号SCAN_TEST_SELECT[n-1:0],n为正整数;扫描链结构包括一个多路选择器和一个D触发器,其中多路选择器的控制信号为使能信号SCAN_EN,通过使能信号SCAN_EN选择不同的数据,多路选择器的输入为工作模式下的数据DATA和测试模式下的测试数据,多路选择器的输出为D触发器的数据输入。进一步地,使能信号SCAN_EN为低电平时,电路在正常工作模式下,此时扫描链的输入端选择工作模式下的数据DATA;使能信号SCAN_EN为高电平时,电路进入测试模式,扫描链的输入端选择测试模式下的测试数据。进一步地,不同扫描链之间的选择通过控制信号SCAN_TEST_SELECT[n-1:0]来控制,2n-1大于或者等于扫描链的条数,n为正整数;当控制信号SCAN_TEST_SELECT[n-1:0]的值为m(0≤m≤2n-1)时,选中第m+1条扫描链,此时只有当前扫描链进入测试模式,其他扫描链关闭时钟,处于复位状态,m为正整数。进一步地,扫描链与每个划分的区域的连接关系为:每条扫描链结构上的D触发器都由统一的使能信号SCAN_EN控制,使能信号SCAN_EN由电路内部寄存器的输出产生,或者直接为电路外部的输入信号;每条扫描链都只与一个划分的区域相连,且每个区域只能包含有一条扫描链。采用上述设计方法设计电路并制造芯片,本发明提出了根据上述电路设计方法的对硬件木马的检测方法,包括如下步骤:(1)在制造完毕后的芯片中任意选取一颗,首先选择工作模式,测试芯片的功能,在功能正确的基础上,选择测试模式;在测试模式下,通过扫描链来关闭除一个区域外其他区域的时钟,并通过添加不同激励测量只有一个区域工作下的侧信道信息,如电路、电磁信息、频率等,用不同的测试激励进行多次测量,得到所有区域单独测试下的侧信道信息的数据曲线;(2)对电路进行拍照,并与原始版图对比,以确定芯片中是否含有硬件木马,若拍照分析后确定电路中含有硬件木马,则重复(1)、(2)两个步骤,重新选择一颗待测芯片,直到找到不含有硬件木马的参照电路;(3)将不含有硬件木马的电路所测得的各区域的侧信道信息的数据曲线作为各个区域的基准曲线;(4)将其余的待测芯片也按照上述方法,通过扫描链轮流选择不同的区域进行测试,并得到其侧信道信息的数据曲线,并与各区域的基准曲线进行比较,若与基准曲线的差值超过阈值,则认为芯片中含有硬件木马,反之,则认为芯片中不含有硬件木马。进一步地,上述对硬件木马的检测方法中,侧信道信息的数据曲线是指每一个区域的不同测试激励下的动态电流与动态电流曲线。本发明的有益效果:本发明首先将原始电路按照一定的规则分成不同的区域,并在电路中插入扫描链;插入扫描链后的电路分为工作模式和测试模式,在工作模式下,电路正常的进行工作;在测试模式中,通过扫描链控制信号选择不同的电路区域进行测试,并对电路的侧信道数据进行测量。当硬件木马的规模占芯片的比例很小时,所植入的硬件木马对整个芯片的侧信道(电路,电磁等)的改变很小,很难区分开。通过本发明的方法,减小了处于工作状态下的电路规模,从而提高硬件木马在工作电路中所占的电路规模的比例,提高了硬件木马对电路侧信道信息改变的比例,从而使硬件木马被检测出来。附图说明图1为本发明在一实施例中的流程示意图;图2为本发明在一实施例中CAN总线控制器的框架图;图3为本发明在加入扫描链后,对原有的D触发器进行改装后的D触发器的结构图;图4为本发明在将电路进行分区,并对电路加入扫描链的结构图;图5为本发明在一实施例中一个区域的动态电流和动态电流的关系图;图6为未采用本发明的全芯片的动态电流与动态电流关系图。具体实施方式本发明所列举的实施例,只是用于帮助理解本发明,不应理解为对本发明保护范围的限定,对于本
技术领域:
的普通技术人员来说,在不脱离本发明思想的前提下,还可以对本发明进行改进和修饰,这些改进和修饰也落入本发明权利要求保护的范围内。芯片的侧信道信息的种类有很多种,比如电流,频率,内部电路延时,电磁辐射等。本实施例中讨论侧信道信息是不同测试激励下的动态电流与动态电流的关系。现有的理论可以表明,一个电路的动态电流的电流方程为:Iddt,i1≈kav·ntot1,i·(VDD-VT-ΔVTi)α(1)其中kav是常数,ntot1,i为电路工作状态下翻转的MOS管的数量,VT为阈值电压,ΔVTi为VT在工艺漂移下的漂移量,α是值在1-2之间速率饱和指数。当电路被植入硬件木马后,其动态电流的方程变为:Iddt,i2≈kav·(ntot1,i+ntrojan,i)·(VDD-VT-ΔVTi)α(2)其中ntrojan,i是加入的硬件木马电路翻转的MOS管的数量。将公式(1)与公式(2)相除,得到:当处于工作状态下的硬件木马电路规模很小,而处于工作状态下的电路的总规模很大时,即ntrojan,i《ntot,i,硬件木马对动态电流的改变将会极小的,无法进行区分,由于硬件木马一般只存在某一个区域内,因此,如果不测量整个电路的电流,而只测量电路某一个功能区域内的电流,则如果区域内含有硬件木马,则由硬件木马造成的电流值占整个电路的比值必然增大,如公式(3)所示。本实施例选择了CAN总线控制器芯片作为目标电路,向电路内部植入一个64位的计数器,当计数器的值达到某一个特定的值时,硬件木马触发,改变芯片中信号的值。使用Synopsys公司的HSIM作为仿真工具,基于SMIC0.13μm工艺库中的工艺漂移模型。进行MonteCarlo仿真,测试10个工艺角,并测试电路在不同测试激励下的动态电流与动态电流的关系。将每个工艺角下获得的动态电流与动态电流的关系一一对应,即得到了在工艺漂移条件下,原始电路与含有硬件木马电路动态电流与动态电流的关系。通过在电路设计时将电路按照功能模块划分为三个不同的区域,使得在电路制造以后进行时,能够测量某一个单独模块的动态电流,而不是整个电路的动态电流,从而提高了硬件木马产生的动态电流占总动态电流的比值,更好的将硬件木马的电路区分出来。一种基于扫描链的电路设计方法,以及根据该设计方法对硬件木马的检测方法,在本实施例中的流程图如图1所示,包括如下步骤:S100、进行原始电路设计,完成功能设计,以及功能仿真;S101、电路设计过程中将电路按照功能模块划分为多个区域,每个区域包括一个功能模块;S102、在划分好的区域通过脚本在电路中插入扫描链;S103、完成电路的设计,并进行流片;S104、在制造完毕后的芯片中任意选取一颗,在完成功能测试的基础上,通过扫描链来测试单独的一个区域,并测量测试模式下的不同测试激励的动态电流,并建立动态电流与动态电流的曲线关系;S105、对电路进行拍照,并与原始版图对比,以确定芯片中是否含有硬件木马,若拍照分析后确定电路中已经含有硬件木马,则重复S104和S105,重新选择一颗待测芯片,测量其动态电流与动态电流的关系曲线,然后进行拍照分析,直到得到不含有硬件木马的参照电路为止;S106、将不含有硬件木马的电路所测得的各区域的动态电流与动态电流的关系曲线作为各个区域的基准曲线;S107、将其余的芯片也按照上述方法,测量每个区域的动态电流与动态电路曲线,并与基准曲线进行对比,若与基准曲线的对比没有超过比较阈值,则认为芯片中不含有硬件木马,若超过阈值,则认为芯片中含有硬件木马。测量所有的芯片,即可将含有硬件木马的芯片与不含有硬件木马的芯片区分出来。下面结合具体附图和实施例对本发明作进一步说明,但本发明的实施方式不限于此。图2为CAN总线控制器的框架图。主要由位时序逻辑、错误管理逻辑、复位、位流处理器、验收滤波器、信息缓冲器、振荡器、接口管理逻辑等模块构成。根据
发明内容提到的规则,将电路分为三个模块,其中:区域一主要是信息缓冲器,是验收滤波器和CPU之间的接口,用来存储从CAN总线上接收和发送的信息,接收缓冲器作为接收FIFO的一个窗口,可被CPU访问。区域二是由位流处理器和验收滤波器组成,位流处理器是一个在发送缓冲器、RXFIFO和CAN总线之间的控制数据流的程序装置,还在CAN总线上执行错误检测、仲裁、填充和错误处理;验收滤波器是把数据与接收的识别码的内容进行比较,以决定是否接受数据。区域三是由位时序逻辑和错误管理逻辑组成,位时序逻辑监视串口的CAN总线核处理有关的位时序,同步CAN总线位流,可用可编程的时间段来补偿传播延时等;错误逻辑管理负责传送层模块的错误管制,接收位流处理器的出错报告,通知位流处理器和接口管理逻辑进行错误统计;插入扫描链后,将每个区域中的标准D触发器替换为图3所示的结构,SE信号为扫描链使能信号,在正常工作模式下,SE为0,数据D进入触发器,SE为1时,数据SI进入触发器。如图4所示,在所示的三个区域中,通过SCAN_EN和TEST_MODE[1:0]共同控制芯片的工作状态。SCAN_EN为0时,芯片处在正常工作模式,时钟信号can_clk进入三个模块,芯片能进行正常的通信;SCAN_EN为1时,芯片进入测试模式,具体信号配置如下表1。表1加入扫描链的CAN总线控制器在工作模式和测试模式下的信号配置情况表SCAN_ENTEST_MODE[1:0]模式clk_bspclk_btlclk_reg0XX正常模式can_clkcan_clkcan_clk101can_bspcan_clk00110can_btl0can_clk0111can_reg00can_clkTEST_MODE[1:0]为01时,此时只对can_bsp模块进行测试,can_btl和can_reg没有时钟输入,不能进行工作,在扫描链的输入端输入两组不同的测试激励,并测量此时的动态电流值;TEST_MODE[1:0]为10时,此时只对can_btl模块进行测量,clk_bsp和clk_reg没有时钟输入;TEST_MODE[1:0]为11时,此时只对can_reg模块进行测量,clk_bsp和clk_btl没有之中输入。测量完成后对电路进行去封装并拍照,将照片与原始版图进行对比,若没有硬件木马,则将此芯片作为基准芯片。考虑到工艺漂移的影响,为了检测的准确性,重复上述S105步骤,找出10颗基准芯片,以这10颗不含木马的基准芯片测得的动态电流为基准,进行木马检测。当只测量can_bsp模块时,此时电流的改变量为2.49%,超过工艺漂移噪声存在的条件下的结果,正确区分了电路内部的是否含有硬件木马,测量的结果如图5。图6为在没有加入扫描链的全芯片中有硬件木马和没有硬件木马的曲线图,从图5和图6的对比中可以看出,插入扫描链前,芯片中电流的最大改变量为0.94%,没有超过工艺漂移存在下的检测的阈值。因此不能检测芯片中是否含有硬件木马。上述方法可以对电路规模较大而所含的硬件木马较小的电路进行有效的检测。克服了因为木马规模较小而导致的测信道数据改变较小而无法区分的问题,能够有效提高检测效率。此方法虽然增加设计成本,但是在一些关键设备电路上,从安全角度来讲是可以接受的。当前第1页1 2 3