一种安全测试方法及系统
技术领域
本发明属于信息安全技术领域,尤其涉及一种安全测试方法及系统。
背景技术
随着信息技术的快速发展,信息安全的重要性越来越突出,电子芯片设备如手机、银行卡、电子护照和公民的ID卡等正被更加广泛的应用于各种场合。现有的电子芯片设备一般通过芯片中存储的加密算法来保证信息的安全。然而,基于半导体硬件实现的芯片已经受到故障注入攻击的严重威胁。
故障注入攻击是一种通过人为注入一定的故障,根据故障传输机理和加/解密的结果分析出密钥信息的方法,最常见的故障注入攻击手段包括:向电源电压或外部时钟引入瞬态脉冲、温度跳变、白色光攻击、激光、X射线和离子束攻击等。然而,由于引入有效故障的难度高,再加上观测和控制寄存器的值也很复杂,针对故障注入攻击的安全测试,需要花费一位有经验的测试工程师数天甚至更长的测试时间,所以密码芯片的测试仍旧是费时费力的采样测试,而不是批量测试。
发明内容
鉴于此,本发明实施例提供一种安全测试方法及系统,以更高效、更快捷的批量测试密码芯片。
本发明实施例是这样实现的,一种安全测试方法,所述方法包括:
建立软故障仿真平台;
基于所述软故障仿真平台,并结合加密算法的故障注入攻击,筛选出故障敏感的寄存器;
将筛选出的所述寄存器插入扫描链,并在测试模式下仿真故障注入攻击,将测试结果与预先存储的参考值进行比对以确定电路的安全性能。
本发明实施例的另一目的在于提供一种安全测试系统,所述系统包括:
仿真平台建立单元,用于建立软故障仿真平台;
寄存器筛选单元,用于基于所述软故障仿真平台,并结合加密算法的故障注入攻击,筛选出故障敏感的寄存器;
测试单元,用于将筛选出的所述寄存器插入扫描链,并在测试模式下仿真故障注入攻击,将测试结果与预先存储的参考值进行比对以确定电路的安全性能。
本发明实施例与现有技术相比存在的有益效果是:本发明实施例针对安全测试提出一种创新性的部分扫描链方法。该方法通过建立一个自动化软故障仿真平台,结合加密算法的故障注入攻击,筛选出故障敏感的寄存器,将其插入扫描链并综合,然后在测试模式下仿真故障注入攻击,将得到的结果和参考值进行比对来确定电路的安全性能。本发明实施例具有面积开销小、自动化程度高的特点,适合密码芯片的批量测试,有效提高密码芯片的安全性能,具有较强的易用性和实用性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的安全测试方法的实现流程图;
图2a是本发明实施例一提供的故障注入攻击对AES的一次仿真结果与部分密钥破解的一个示例图;
图2b是本发明实施例一提供的故障注入攻击对AES的一次仿真结果与部分密钥破解的另一个示例图;
图3是本发明实施例一提供的基于部分扫描链可测性设计的安全测试流程图;
图4a是本发明实施例一提供的控制相关寄存器软件故障发生率的仿真示例图;
图4b是本发明实施例一提供的中间寄存器软件故障发生率的仿真示例图;
图4c是本发明实施例一提供的密钥相关寄存器软件故障发生率的仿真示例图;
图5是本发明实施例二提供的安全测试系统的组成结构图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透切理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
图1示出了本发明实施例一提供的安全测试方法的实现流程,该方法过程详述如下:
在步骤S101中,建立软故障仿真平台。
在本发明实施例中,为筛选出用于插入扫描链的敏感寄存器,通过SynopsysVCS软件和Perl脚本搭建软故障测试仿真平台。
在步骤S102中,基于所述软故障仿真平台,并结合加密算法的故障注入攻击,筛选出故障敏感的寄存器。
具体的可以是,如图2所示:
Step 1.为门级网表选择多组随机输入值,并进行电路加密仿真,获得仿真输出值;
Step 2.将所述仿真输出值分配给参考值;
Step 3.根据选择的所述输入值和时刻信息生成相应加密算法的测试模块和激励;
Step 4.进行故障注入仿真操作,记录所述仿真操作得到的密文;
Step 5.将所述密文和所述参考值进行对比,记录匹配和不匹配的次数;
Step 6.计算寄存器软故障发生率以筛选出故障发生率大于预设值的寄存器;
Step 7.返回step 4,移动至下一个寄存器,直到所有的寄存器都受到故障注入攻击。
在本实施例中,所述仿真平台满足以下两个条件:
1)瞬态故障攻击每次仅攻击一个寄存器,并且电路复位之后该攻击效果消失;
2)瞬态故障的作用时间小于一个时钟周期,使得注入故障的寄存器将在一个时钟周期内翻转其值,并在下一个时钟变成正常值。
上述条件基于软故障注入特征和测试技术。故障注入攻击操作针对每一个寄存器,依次在每一个仿真周期对其赋值高电平或者低电平(模拟故障注入攻击),然后仿真并统计每次故障注入后的加密结果。
其中,筛选敏感寄存器的规则如下:
1)如果寄存器的软故障发生率(Soft Error Rate,SER)值接近0(如表1中的text_out_regs,text_in_regs,sa_regs),则所述寄存器对故障注入不敏感;
表1
表1表示AES基准电路中寄存器的名称,数目分布及其对应的平均软故障发生率(SER)值。
2)对AES故障注入的仿真表明,在第9轮列混淆操作前引入一个字节瞬态故障后,通过差分故障分析(Differential Fault Attack,DFA)可以破解密钥信息(见表2,图2a、2b)。表明与此相关的寄存器应该被插入扫描链中增加观察性,因此sa_regs寄存器(见表1)应该成为敏感寄存器的一部分,尽管它们的SER非常低;
表2
表2为通过图2a、2b的示例结果,说明运用故障注入攻击,能够破解的AES第10轮的4个子密钥字节,其中,K10i表示第10轮的第i个字节的子密钥。图2a表示向AES加密算法第9轮的列混淆之前注入1字节故障后,得到的错误的解密结果与正确解密结果异或后的分布图,灰色背景方块表示两次运算有差异的结果;图2b表示AES的第16轮子密钥,灰色背景方块表示通过正确与错误的加解密结果能够破解的第10轮子密钥字节序号。
3)与密钥相关的寄存器可能会引起致命的信息泄露问题,因此需要从扫描链中移除,或者设计特定的结构防止测试模式和功能模式的随意转化。
在步骤S103中,将筛选出的所述寄存器插入扫描链,并在测试模式下仿真故障注入攻击,将测试结果与预先存储的参考值进行比对以确定电路的安全性能。
由于现有的安全测试需要花费大量的时间来获取有效的安全检测结果。因此,本发明实施例提出通过运用部分扫描链的可测性设计(DFT)技术来加快安全测试,具体包括:
软故障安全测试;
故障注入(Fault Injection,FI)攻击分析;
扫描链综合;
生成寄存器传输级(Register Transfer Level,RTL)网表、带扫描链的门级网表、测试协议文件以及测试向量,具体如图3所示。
需要说明的是,一个具有高软故障发生率(SER)的寄存器更有可能在被实际的故障注入攻击后引起系统故障,因此它将被标记为敏感寄存器并插入扫描链中,以增加测试性和可观测性。另一方面,由于传统的扫描链可能通过扫描输出端口移出密钥信息,因此本发明实施例将与密钥相关的敏感寄存器移出扫描链,或者设计一种新的扫描寄存器结构来掩模扫描输出。
为了更好的说明本发明技术方案获得的有益效果,本发明实施例以高级加密标准(AES)基准电路为测试电路,通过Synopsys VCS软件和Perl脚本搭建一个自动化软故障仿真平台,对554个寄存器AES基准电路中的敏感寄存器进行筛选。仿真在一台主频3.5GHz,32G内存的Intel Quad Core Xeon处理器上进行,针对特定的设计,只需要进行一次敏感寄存器筛选即可。结合加密算法AES的故障注入攻击和扫描链输出端可能泄露密钥相关信息的情况,最终筛选出138个寄存器作为对瞬态故障攻击敏感的寄存器:10个控制相关寄存器和128个sa_regs寄存器,后者属于中间状态寄存器(见表1)。图4a、4b、4c为AES基准电路在故障安全测试仿真平台下寄存器对应的软故障发生率(SER)的分布图,横坐标表示故障注入攻击对应寄存器的个数,纵坐标表示寄存器的软故障发生率值。其中,图4a所示的控制相关寄存器主要指控制AES加密流程的开始,完成和计数的寄存器;图4b所示的中间寄存器存储了AES算法中输入/输出,列混淆等中间状态,包括128位用于存储明文的text_in_regs寄存器,寄存输出密文的128位text_out_regs寄存器和128位作为行移位操作和列混淆操作的中间交换sa_regs寄存器;图4c所示的密钥相关寄存器主要保存密钥生成运算所产生的密钥值。
经过部分扫描链综合并在测试模式下仿真故障注入攻击,将得到的结果和参考值进行比对确定电路的安全性能。利用Synposys公司的Design CompilerTM工具通过部分插入扫描链命令‘set_scan_element false{list}’将敏感寄存器插入扫描链,并在GSMC.18um的工艺下实现部分扫描链的综合,可以看出,相比于普通的AES设计,基于可测性测试的部分扫描链结构只增加了7.6%的面积消耗和11%的功耗(见表3),表3为电路进行部分扫描链综合后的面积、功耗值,及与未插入扫描链原设计电路的对比情况。
表3
在商用自动测试向量生成(ATPG)软件TetramaxTM的帮助下,通过使用快速时序生成技术的命令‘set_atpg-capture_cycles 7’,获得了针对部分扫描链门级网表的测试向量和高的故障覆盖,即通过1239条内部的测试向量取得了99.69%的故障覆盖率。测试向量的仿真在3.5GHz,32G内存的Intel Quad Core Xeon处理器上共花费3分钟。
对AES加密模型的实验结果表明,该方法具有面积开销小、自动化程度高的特点,适合安全芯片批量测试,可改变密码芯片未经测试即投放市场的现状,从而大幅提高密码芯片的安全性能。
需要说明的是,本发明实施例中所述加密算法包括但不限于高级加密标准(AES)、数据加密标准(Data Encrypt ion Standard,DES)、RSA公钥加密体制等。
实施例二:
图5示出了本发明实施例二提供的安全测试系统的组成结构,为了便于说明,仅示出了与本发明实施例相关的部分。
该安全测试系统可以是内置于终端设备(如个人计算机、笔记本电脑、平板电脑、智能手机等)中的软件单元、硬件单元或者软硬件相结合的单元,或者作为独立的挂件集成到终端设备或者终端设备的应用系统中。
该安全测试系统包括:
仿真平台建立单元51,用于建立软故障仿真平台;
寄存器筛选单元52,用于基于所述软故障仿真平台,并结合加密算法的故障注入攻击,筛选出故障敏感的寄存器;
测试单元53,用于将筛选出的所述寄存器插入扫描链,并在测试模式下仿真故障注入攻击,将测试结果与预先存储的参考值进行比对以确定电路的安全性能。
进一步的,所述寄存器筛选单元52包括:
输出值获取模块521,用于为门级网表选择多组随机输入值,并进行电路加密仿真,获得仿真输出值;
参考值获取模块522,用于将所述仿真输出值分配给参考值;
处理模块523,用于根据选择的所述输入值和时刻信息生成相应加密算法的测试模块和激励;
密文记录模块524,用于进行故障注入仿真操作,记录所述仿真操作得到的密文;
次数记录模块525,用于将所述密文和所述参考值进行对比,记录匹配和不匹配的次数;
计算模块526,用于计算寄存器软故障发生率,以筛选出故障发生率大于预设值的寄存器;
控制模块527,用于返回密文记录模块,并移动至下一个寄存器,直到所有的寄存器都受到故障注入攻击。
进一步的,所述测试单元53包括:
测试模块531,用于软故障安全测试;
分析模块532,用于故障注入攻击分析;
综合模块533,用于扫描链综合;
生成模块534,用于生成寄存器传输级网表、带扫描链的门级网表、测试协议文件以及测试向量。
其中,所述仿真平台满足以下两个条件:
瞬态故障攻击每次仅攻击一个寄存器,并且电路复位之后该攻击效果消失;以及瞬态故障的作用时间小于一个时钟周期。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元、模块既可以采用硬件的形式实现,也可以采用软件功能单元、模块的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
综上所述,本发明实施例针对安全测试提出一种创新性的部分扫描链方法。该方法通过建立一个自动化软故障仿真平台,结合加密算法的故障注入攻击,筛选出故障敏感的寄存器,将其插入扫描链并综合,然后在测试模式下仿真故障注入攻击,将得到的结果和参考值进行比对来确定电路的安全性能。本发明实施例具有面积开销小、自动化程度高的特点,适合密码芯片的批量测试,有效提高密码芯片的安全性能。而且,本发明实施例在实现上述过程中,不需要增加额外的硬件,可有效降低成本,具有较强的易用性和实用性。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元、模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明实施例各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。