一种基于部分扫描的集成电路故障注入攻击模拟方法与流程

文档序号:12456208阅读:170来源:国知局

本发明属于集成电路安全领域,尤其是涉及一种基于部分扫描的集成电路故障注入攻击模拟方法。



背景技术:

集成电路故障注入攻击模拟是一种模拟故障注入攻击效果以检测和评估电路设计的抗故障注入攻击能力的技术。现有的集成电路故障注入攻击模拟方法主要包括芯片测试[1]、软件仿真[2]和硬件模拟[3]-[4]。芯片测试对制造出来的芯片进行真实的故障注入攻击,检测效率低,费用高,设计修改周期长,成本极高。软件仿真运行速度较慢,需要较长的时间才能获得模拟结果。硬件模拟利用FPGA原型开发平台加速仿真过程。现有的基于FPGA的硬件模拟方法主要包括重配置[3]和插入控制逻辑[4]。基于重配置的方法对于每一个故障案例都需要重新生成比特流,增加了时间成本。插入控制逻辑的方法可以降低时间成本。现有的实现方法主要包括对每个故障位置分别插入控制逻辑[4]和使用全扫描技术插入扫描链。前者带来了巨大的资源消耗,而后者采用全扫描技术也带来了较高的资源消耗。

[1]C.Sun,H.Li,Y.Yang,J.Chen,“Research on fault-electromagnetic attack on block cipher,”Journal of Convergence Information Technology,pp.409-417,2011.

[2]F Pournaghdali,A Rajabzadeh M Ahmadi,“VHDLSFI:a simulation-based multi-bit fault injection for dependability analysis,”International Econference on Computer&Knowledge Engineering,pp.354-360,2013.

[3]E.Sanchez,L.Sterpone,A.Ullah,“Effective emulation of permanentfaults in ASICs through dynamically reconfigurable FPGAs,”International Conference on Field Programmable Logic&Applications,pp.2336-2342,2014.

[4]A.Janning,J.Heyszl,F.Stumpf,G.Sigl,“A cost-effective FPGA-based fault simulation environment,”Fault Diagnosis and Tolerance in Cryptography,pp.21-32,2011.



技术实现要素:

本发明的目的是为了克服现有技术中的不足,提供一种基于部分扫描的集成电路故障注入攻击模拟方法,通过在电路综合后的原始网表中选取部分寄存器插入扫描链,实现集成电路故障注入攻击模拟,降低了资源消耗,实现了自动化。

本发明的目的是通过以下技术方案实现的。

本发明的一种基于部分扫描的集成电路故障注入攻击模拟方法,包括以下步骤:

(1)提取故障注入的目标寄存器:将待测电路设计源码综合成原始网表,设置故障注入的目标变量,提取故障注入的目标寄存器;

(2)部分扫描插入:从原始网表中选取部分寄存器作为扫描寄存器,在原始网表中插入扫描链和故障注入控制模块生成新网表;

(3)故障向量生成:按最小逻辑距离对原始网表中的寄存器进行分组,对原始网表进行软件仿真,得到各组的寄存器数值向量,根据故障类型,重新计算目标寄存器的值,更新各组的寄存器数值向量,通过原始网表和逆推算法,利用各组的寄存器数值向量,逆推得到各组的扫描寄存器数值向量和对应的时钟周期数;若逆推失败则重复上述步骤(2)和(3),若逆推成功则得到多组由扫描寄存器数值向量和时钟周期数构成的故障向量;

(4)故障注入和仿真:故障注入控制模块向待测电路提供输入向量,运行待测电路直至注入故障的时刻,将待测电路由正常模式切换至扫描模式,从组号最大的故障向量开始,依次扫入扫描寄存器并运行相应的时钟周期,操作完成后则将待测电路切换至正常模式,继续运行待测电路,收集待测电路的输出数据;

(5)安全评估:对收集到的待测电路的输出数据进行分析,评估待测电路的抗故障注入攻击能力。

所述步骤(2)利用启发式算法从原始网表中选取部分寄存器作为扫描寄存器。

所述步骤(3)最小逻辑距离定义为寄存器输入到前级寄存器输出的所有连通路径中包含该寄存器在内的寄存器个数的最小值,规定寄存器到自身的最小逻辑距离为零。

与现有技术相比,本发明的技术方案所带来的有益效果是:

本发明基于部分扫描,通过在原始网表中选取部分寄存器作为扫描寄存器,对原始网表进行扫描链插入和故障注入控制模块插入生成新网表,控制这些扫描寄存器,降低资源消耗,实现低资源消耗和高效率的集成电路故障注入攻击自动模拟;整个模拟过程对用户透明,用户只需提供待测电路设计源码和输入向量,本发明装置给出待测电路设计的故障注入攻击模拟输出。

附图说明

图1是本发明的流程框图。

具体实施方式

下面结合附图对本发明作进一步的描述。

如图1所示,本发明的一种基于部分扫描的集成电路故障注入攻击模拟方法,解决现有的集成电路故障注入攻击模拟方法资源消耗高的问题,具体包括以下步骤:

步骤一,提取故障注入的目标寄存器

将待测电路设计源码(即为待测电路设计硬件描述源码)综合成原始网表,设置故障注入的目标变量,提取故障注入的目标寄存器。

步骤二,部分扫描插入

利用启发式算法或其他算法从原始网表中选取部分寄存器作为扫描寄存器,在原始网表中插入扫描链和故障注入控制模块生成新网表。

步骤三,故障向量生成

(1)分别计算原始网表中所有寄存器到扫描寄存器之间的最小逻辑距离;所述最小逻辑距离定义为寄存器输入到某个前级寄存器输出的所有连通路径中包含该寄存器在内的寄存器个数的最小值,规定寄存器到自身的最小逻辑距离为零。

(2)按最小逻辑距离对原始网表中的所有寄存器进行分组,假设最终分为n(n=0,1,2,3…)组,即G0,G1,G2,G3…Gn,其中,G0组中的寄存器同时也是扫描寄存器。

(3)假设故障注入的目标寄存器分布在不同的寄存器组中,这些寄存器组组号的最大值为m(m≤n),对原始网表进行软件仿真,得到G0组到Gm组的m+1个寄存器数值向量。

(4)根据故障类型,重新计算目标寄存器的值,更新G0组到Gm组的寄存器数值向量。

(5)通过原始网表和逆推算法,利用G0组到Gm组的寄存器数值向量,逆推得到m+1个扫描寄存器数值向量和对应的时钟周期数,其中,G0组的寄存器数值向量,即其对应的扫描寄存器数值向量,而对应的时钟周期数则为0;若逆推失败则重复上述步骤二和步骤三,重新选择扫描寄存器;若逆推成功则得到m+1组由扫描寄存器数值向量和时钟周期数构成的故障向量,即(S0,0),(S1,1),…,(Sm,m)。

步骤四,故障注入和仿真

①利用新网表生成FPGA配置文件,将配置文件下载到FPGA中;

②故障注入控制模块执行③至⑦,向待测电路注入故障,收集待测电路的输出数据;

③向待测电路提供输入向量,运行待测电路直至注入故障的时刻,将待测电路由正常模式切换至扫描模式;

④初始化编号索引k为m;

⑤冻结编号大于k的寄存器组中的寄存器;

⑥从组号最大的故障向量开始,依次扫入扫描寄存器并运行相应的时钟周期,即将扫描寄存器数值向量Sk扫入扫描寄存器,让待测电路运行k个时钟周期,将故障注入目标寄存器;

⑦操作完成后,如果k小于0,则解冻待测电路的所有寄存器,将待测电路切换至正常模式,继续运行待测电路,收集待测电路的输出数据;否则k减1,并重复⑤至⑦。

步骤五,安全评估:利用评估算法,对收集到的待测电路的输出数据进行分析,评估待测电路的抗故障注入攻击能力。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1