一种芯片顶层覆盖完整性保护方法和装置
技术领域
本发明涉及芯片物理完整性保护领域。
背景技术
芯片顶层金属覆盖是高安全智能卡芯片的设计方法之一。通过在芯片顶层覆盖一层金属介质,可以有效保护芯片底层电路及信号不被实施外部恶意攻击。但近年来随着攻击手段的不断提高,顶层金属很容易被攻击者剥离而失去其保护意义。因此安全且完备的顶层金属覆盖还必须同步对金属覆盖完整性做逻辑保护。
现有顶层金属覆盖完整性逻辑保护电路的设计原理是:在顶层覆盖的多条金属线两端分别增加逻辑门电路,若金属有效连接则电路逻辑值是应被正确传输的,反之若金属两端逻辑值不等则金属被划断。
如图1所示的单条金属,在两端各加一反相器,若din=dout表明该条金属正常连接,否则判断金属断开,芯片遭到恶意破坏,由保护电路发出报警信号,通知芯片控制电路,从而达到保护芯片的目的。
如图2所示,现有设计通常将顶层覆盖分为n组,每组m条金属连线。金属线的两端为约定好的固定值或采用比较有规律的变化(如递增、循环),判断din[i]是否等于dout[i](i=0~m),通过比对n*m条金属两端逻辑值是否相等来判断芯片是否遭到攻击。
从原理上,每次启动顶层金属保护时电路检测的是一组固定或有规律变化的数据,攻击者经过几次模拟,通过电流变化就可以很容易探测到金属连线左端的数值,即掌握了所有金属连线输入端的数字pattern。只要按该pattern控制输出端就可以将保护电路屏蔽,从而达到攻击芯片的目的。现有顶层金属覆盖完整性保护电路存在检测机制简单、安全性低、功耗较大,此外,现有技术在一组m条金属输入端同时变化,而顶层金属的电阻值较小,多条电路在瞬间翻转,会导致芯片瞬间功耗剧增。
发明内容
本发明所要解决的技术问题是为了提高芯片顶层覆盖完整性保护电路的安全性、降低功耗,提出一种芯片顶层覆盖完整性保护方法和装置。
为了解决上述技术问题,本发明提供的技术方案如下:
一种芯片顶层覆盖完整性保护方法,应用于物理层保护电路,所述物理层保护电路被分为n组,每组M条金属线,
所述方法包括,在每个检测周期进行如下操作:
A、产生随机二进制数,所述随机二进制数至少包括M位;
B、将所述随机二进制数按位输入至每组的所述M条金属线的输入端;
C、检测所述M条金属线的输出信号;若所述输出信号与输入到所述M条金属线的随机二进制数不同,则判断芯片遭到攻击。
进一步地,对应于所述n组金属线的M位随机二进制数相同或者不同。
进一步地,所述步骤B具体包括:
B1、对于每组金属线,将该组对应的输入序列按照初始状态分别输入给该组的M条金属线;
B2、对输入给M条金属线的序列按照预设变化规律进行变化,将变化后的输入序列输入给该组的M条金属线;
B3、判断输入给金属线的序列是否为所述输入序列的最终状态;如果不是则返回步骤B2;
所述输入序列为分别输入到所述M条金属线的M位二进制数;
所述初始状态或所述最终状态为所述随机二进制数。
进一步地,所述步骤C具体包括:
C1、当第一次收到所述M条金属线的输出信号时,判断该输出信号是否与所述输入序列的初始状态相同,不相同则进行步骤C3;如果相同则进行步骤C2;
C2、按照所述预设变化规律对所收到的输出信号进行变化;当再收到输出信号时,判断收到的输出信号是否与变化后得到的序列相同;如果不同则进行步骤C3;相同则返回步骤C2;
C3、判断芯片遭到攻击。
进一步地,所述预设变化规律为:
输入序列由每一位均为初始值开始,依次按位改变与所述随机二进制数不同的位,直到所述输入序列与所述随机二进制数相同。
进一步地,所述预设变化规律为:
输入序列由每一位均为初始值开始,依次查找与所述随机二进制数不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述随机二进制数相同。
进一步地,所述预设变化规律为:
输入序列由所述随机二进制数开始,依次按位改变与终止值不同的位,直到所述输入序列与所述终止值相同。
进一步地,所述预设变化规律为:
输入序列由所述随机二进制数开始,依次查找与终止值不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述终止值相同。
进一步地,所述预设变化规律为:
输入序列由每一位均为初始值开始,依次查找与所述随机二进制数不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述随机二进制数相同;再由所述随机二进制数开始,依次查找与终止值不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述终止值相同。
为了解决上述技术问题,本发明还提供了一种芯片顶层覆盖完整性保护装置,包括随机数发生器、控制器、检测端;
所述随机数发生器,用于产生随机二进制数,所述随机二进制数至少包括M位;
所述控制器,用于将所述随机二进制数按照预设变化规律按位输入至所述M条金属线的输入端;
所述检测端,用于检测所述M条金属线的输出信号;若所述输出信号与所述预设变化规律输入到所述M条金属线的随机二进制数不同,则判断芯片遭到攻击。
进一步地,所述控制器包括寄存器、主控单元和使能信号单元;
所述寄存器用于在主控单元的控制下,在每个检测周期开始时存储所述随机二进制数;
所述主控单元用于控制所述寄存器所述随机二进制数,并按照预设变化规律控制使能信号单元产生使能信号;
所述使能信号单元用于主控单元的控制下,产生使能信号。
本发明提供的方法和装置对芯片顶层金属覆盖完整性的保护基于随机数比较方法,相比传统设计,解决了其安全性较低、功耗较大的技术缺陷。
附图说明
图1为现有技术物理层保护电路金属线的结构示意图;
图2为现有技术物理层保护电路的结构示意图;
图3为本发明实施例的芯片顶层覆盖完整性保护装置的结构示意图;
图4为本发明实施例的芯片受到攻击的剖面图;
图5为本发明实施例的芯片物理层保护电路仿真波形图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
结合图3说明本发明实施例的芯片顶层覆盖完整性保护方法和装置,本发明的完整性保护方法应用于物理层保护电路,所述物理层保护电路被分为n组,每组M条金属线,
本发明实施例提供的一种完整性保护方法在每个检测周期进行如下操作:
A、产生随机二进制数,所述随机二进制数至少包括M位;
B、将所述随机二进制数按位输入至每组的所述M条金属线的输入端;
C、检测所述M条金属线的输出信号;若所述输出信号与输入到所述M条金属线的随机二进制数不同,则判断芯片遭到攻击。
其中,对应于所述n组金属线的M位随机二进制数相同或者不同。
本发明实施例随机产生二进制数每一位输入至一条金属线,攻击者无法找到规律,从而无法控制输出端的输出值,使得芯片一旦受到攻击,立刻可以知道。由于利用随机二进制数,不必所有M条金属线全部同时电平翻转,只有部分金属线的电平翻转,因此可以达到降低功耗的目的。
优选地,所述步骤B具体包括:
B1、对于每组金属线,将该组对应的输入序列按照初始状态分别输入给该组的M条金属线;
B2、对输入给M条金属线的序列按照预设变化规律进行变化,将变化后的输入序列输入给该组的M条金属线;
B3、判断输入给金属线的序列是否为所述输入序列的最终状态;如果不是则返回步骤B2;
所述输入序列为分别输入到所述M条金属线的M位二进制数;
所述初始状态或所述最终状态为所述随机二进制数。
与步骤B对应的,所述步骤C具体包括:
C1、当第一次收到所述M条金属线的输出信号时,判断该输出信号是否与所述输入序列的初始状态相同,不相同则进行步骤C3;如果相同则进行步骤C2;
C2、按照所述预设变化规律对所收到的输出信号进行变化;当再收到输出信号时,判断收到的输出信号是否与变化后得到的序列相同;如果不同则进行步骤C3;相同则返回步骤C2;
C3、判断芯片遭到攻击。
本发明实施例中输入、输出端都知道预设变化规律,并且都知道输入信号的初始状态,步骤B和C交替进行,变化一次,检测一次。
预设变化规律为单比特变化方式,可以为:
输入序列由每一位均为初始值开始,依次按位改变与所述随机二进制数不同的位,直到所述输入序列与所述随机二进制数相同。
更具体的:
输入序列由每一位均为初始值开始,依次查找与所述随机二进制数不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述随机二进制数相同。
预设变化规律为单比特变化方式,还可以为:
输入序列由所述随机二进制数开始,依次按位改变与终止值不同的位,直到所述输入序列与所述终止值相同。
更具体的:
输入序列由所述随机二进制数开始,依次查找与终止值不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述终止值相同。
还可以是上述两种方式的结合:将所述随机二进制数作为中间值,有初始值变化值随机二进制数,再由随机二进制数变化值终止值,具体为:
输入序列由每一位均为初始值开始,依次查找与所述随机二进制数不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述随机二进制数相同;再由所述随机二进制数开始,依次查找与终止值不同的位,获得差异位,按照低位到高位或者高位到低位的顺序,将所述差异位的二进制数依次取反,直到所述输入序列与所述终止值相同。
所述单比特变化方式可以为以下的一种:
1、从初始值的低位到高位的顺序按位变化到所述随机二进制数,每次变化一位;如果某一位或者某几位所述初始值与所述随机二进制数相同,则不变化;
2、从初始值的高位到低位的顺序按位变化到所述随机二进制数,每次变化一位;如果某一位或者某几位所述初始值与所述随机二进制数相同,则不变化;
3、从所述随机二进制数的低位到高位的顺序按位变化到终止值,每次变化一位;如果某一位或者某几位所述终止值与所述随机二进制数相同,则不变化;
4、从所述随机二进制数的高位到低位的顺序按位变化到终止值,每次变化一位;如果某一位或者某几位所述终止值与所述随机二进制数相同,则不变化;
5、从初始值的低位到高位的顺序按位变化到所述随机二进制数,每次变化一位;然后从所述随机二进制数的低位到高位的顺序按位变化到终止值,每次变化一位;如果某一位或者某几位所述初始值与所述随机二进制数相同,或者某一位或者某几位所述终止值与所述随机二进制数相同,则不变化;
6、从初始值的高位到低位的顺序按位变化到所述随机二进制数,每次变化一位;然后从所述随机二进制数的高位到低位的顺序按位变化到终止值,每次变化一位如果某一位或者某几位所述初始值与所述随机二进制数相同,或者某一位或者某几位所述终止值与所述随机二进制数相同,则不变化。
可以预先设置每条金属线的初始值为0;每条金属线的终止值为1。
所述完整性保护装置包括随机数发生器(RNG,random numbergenerator)、控制器、检测端;
所述随机数发生器,用于产生随机二进制数,所述随机二进制数至少包括M位;
所述控制器,用于将所述随机二进制数按照预设变化规律按位输入至所述M条金属线的输入端;
所述检测端,用于检测所述M条金属线的输出信号;若所述输出信号与所述预设变化规律输入到所述M条金属线的随机二进制数不同,则判断芯片遭到攻击。
其中,控制器包括寄存器、主控单元和使能信号单元;
所述寄存器用于在主控单元的控制下,在每个检测周期开始时存储所述随机二进制数;
所述主控单元用于控制所述寄存器所述随机二进制数,并按照预设变化规律控制使能信号单元产生使能信号;
所述使能信号单元用于主控单元的控制下,产生使能信号。本发明实施例的完整性保护方法和装置,通过随机数发生器产生的随机二进制数作为检测电路的输入,按照规律变化进行数据检测。
本发明中所有顶层金属线初值可配,采样到n*M个随机二进制数bit位后关闭RNG。RNG产生的随机二进制数可以作为整个变化阶段的中间值,引导初值变化方向。检测端检测过程中,变化方向先由初值向随机二进制数变化,每次变化1bit(即一根金属线逻辑值),变化方式可配;例如从高位到低位的顺序或者从低位到高位的顺序,在随机二进制数中全部的’1’变化完成后,将其他为’0’的金属线顺序变为’1’,每变化1bit,每次变化,检测端都要对比这条金属线所在整个组金属线两端的逻辑值。这种单bit动态变化的方式保证了电路高安全性和低功耗的要求。
实施例
本发明实施例中,将顶层金属分为n组,每组8条金属线,即M=8。系统复位之后,每组金属线([7:0])初始值为全“0”。工作使能信号有效(en=“1”),电路进入工作模式,开始检测整个芯片顶层金属是否异常,并且支持循环检测。
顶层金属线覆盖整个芯片,当芯片遭到顶层“剥离“攻击时,无论只划断顶层一根、多根金属线,或者是划断整个顶层,都可以产生异常报警中断。图4所示,未连接上的第二条虚线表示被划断的金属线:
检测顺序:顺序检查第一组、第二组连接,以此类推,最后检查第n组。
当检测某一组时,将预先采样到的随机二进制数(sn[7:0])存入寄存器,顶层金属线初值为data_in[7:0]=0000_0000。基于芯片安全性考虑,在检测过程中,顶层金属线数值要处于动态变化,data_in[7:0]变化顺序:
0000_0000——>sn[7:0]——>1111_1111
顶层金属线长度覆盖整个芯片,长度跨度很大,所以产生功耗较大。基于低功耗设计和顶层金属线的延迟,每次变化data_in[7:0]只变化1bit,同时检测一组(8条)金属线数值。
这样,初值(0000_0000)先变成采样到的随机二进制数值(sn[7:0]);考虑到每条金属线至少要跳变一次,所以再变化成“全1”形式(1111_1111)。
如图5,时钟频率16MHZ的保护电路仿真波形,寄存器rn_r用于储存随机二进制数。
举例说明:
rn_r=0001_1001。具体递增的单bit变化检测顺序(din_1),如下:
初值向“rn_r”变化:0000_0000—>0000_0001;
0000_0001—>0000_1001;
0000_1001—>0001_1001(rn_r);
rn_r向全“1”变化:1000_1001—>0001_1011;
0001_1011—>0001_1111;
0001_1111—>0011_1111;
0011_1111—>0111_1111;
0111_1111—>1111_1111;
如图5,仿真模拟的第“[4]“条金属线受到异常攻击为“高电平”,则dout_1初值变成0000_1000。
第一次单bit变化:0000_1000—>0000_1001。
进行对比检测,0000_1001=dout_1[7:0]≠din_1[7:0]=0000_0001。则,判断判断芯片遭到攻击,可以产生error异常中断信号(高电平),发送至CPU,触发系统中断。
虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。