对密码装置的激光故障注入攻击的改进检测的制作方法

文档序号:24732484发布日期:2021-04-20 15:31阅读:139来源:国知局
对密码装置的激光故障注入攻击的改进检测的制作方法

1.本发明整体涉及装置的安全。更具体而言,本发明涉及检测对密码装置的激光故障注入攻击。


背景技术:

2.密码算法被用到越来越多的携带敏感信息的装置中,所述装置例如是智能卡、蜂窝电话、机顶盒等。
3.密码算法用于在数字数据的存储和/或其经由不安全网络的传输期间确保数字数据的保密性、安全性、认证、完整性和私密性。它们还可以用于确保装置之间的事务处理和交易、安全支付、网络中的装置的安全认证等的安全。
4.为了保护装置携带的敏感信息免受攻击,往往实施基于密码算法的一项或多项加密功能。加密功能使用一个或多个加密密钥对原始数据或“明文”加密。加密过程产生了密码数据或“密文”,所述密码数据或“密文”只有在采用适当密钥进行解密的情况下才能以其原始形式查看。
5.密码算法(诸如des(数据加密标准)算法和aes(高级加密标准)算法)基于每一用户/装置所特有的秘密密钥,并且允许该用户/装置对消息或数据安全地加密/解密。
6.密码算法可以通过将被嵌入到装置内的一般具有小尺寸的集成电路(ic)来实施。例如,uicc(通用集成电路卡)卡或信用卡包括密码ic,其被提供为使用与用户等绑定的一个或多个密码秘密密钥确保交易或通信的安全。因而,保存此类秘密密钥使之免受攻击对于增强大量嵌入装置的安全性来讲是至关重要的。
7.为了保存秘密密钥,将密码密钥设计为非常难以数学破解:寻求秘密密钥的攻击者必须执行蛮力分析,其要求攻击者尝试所有可能的秘密密钥。相应地,将密码算法设计为使这样的攻击需要超出合理限度的时间和资源才能有效。
8.然而,被称为“故障注入攻击”的其他种类的攻击已经出现了,其使攻击者能够更快地获得秘密密钥。故障注入攻击包括对ic执行硬件攻击,以获得秘密密钥。一种类型的故障注入攻击包括在密码ic的计算当中插入故障,以生成故障结果,并且包括对故障结果进行分析,以获得与ic相关联的秘密密钥。将用以推断出与秘密密钥有关的信息的这种对故障结果的分析称为dfa(差分故障分析)。对抗故障注入攻击的保护是当今密码装置面临的主要挑战,因为这样的攻击急剧降低了攻击者破解嵌入在密码ic内的秘密密钥所需的尝试的次数。在barenghi,a.,breveglieri,l.,koren,i.,&naccache,d.(2012),fault injection attacks on cryptographic devices:theory,practice,and countermeasures,proceedings of the ieee,100(11),3056

3076中提供了对故障注入攻击和现有对策的概述。
9.激光故障注入是一种尤其强大的故障注入攻击。激光故障注入包括在ic的特定点处发送激光束,从而在密码计算期间生成位错误,由此在密码计算中注入故障。激光故障注入攻击尽管昂贵,但已知是非常强大的攻击,因为其在ic的非常精确的位置上注入故障从
而具有高效性。此外,还可以非常准确地复制故障注入攻击。
10.例如,很多密码ic包含执行加密/解密的互连的触发器(ff)。每一ff存储二进制值。这些ff使用时钟同步。每一ff的二进制值在每一时钟信号处(往往是在该时钟信号的上升沿处)依据连接至其输入端口的其他ff的二进制值的组合受到更新。ff的互连允许使用秘密密钥执行加密和解密,秘密密钥往往存储在可以通过物理不可克隆功能(puf)或者一次性可编程(otp)主密钥受到保护的外部存储器中。该密钥被通过总线传输至密码电路。激光故障注入攻击能够以单个ff为目标,从而在计算期间注入位故障。位故障可以包括将ff的值人为设置成0或1,或者执行位翻转。
11.激光故障注入攻击一般按照两个主要步骤执行。第一校准步骤包括在ic的随机或伪随机位置上执行故障注入,从而识别出最敏感ff,这些ff是要想破解秘密密钥而必须攻击的ff。第二步骤包括在敏感ff中实际执行故障注入,对故障结果进行分析,之后对秘密密钥解密。激光故障注入攻击的强大之处在于其能够在同一型号/制造商的ic上容易地复制。这是因为属于同一型号的ic(例如,同一型号的uicc卡)的拓扑结构是等同的,而只有ic使用的秘密密钥(这一示例中的sim密钥)是变化的。因此,一旦执行了校准步骤,并且识别出了电路的敏感ff,就可以按照相当简单的方式在同一型号的ic上复现故障注入攻击,从而取出存储在每一ic内的秘密密钥中的每者。
12.可以从ic的正面(正面攻击)或者从ic的背面(背面攻击)执行激光故障注入攻击。在每种情况下,激光束的波长都必须具有特定值。就正面攻击而言,激光束的波长必须至少为800nm,才能具有足够的能量来注入故障。就背面攻击而言,激光束的波长必须基本上等于1064nm,因为该波长是使ic的硅衬底表现出透明性的唯一波长,因而是允许从ic的背面进行激光故障注入的唯一波长。
13.已知有很多对策保护ic免受激光故障注入攻击。
14.例如,可以将屏蔽罩置于ic顶上,从而防止激光束抵达ic。然而,这样的解决方案成本高,而且不能保护ic免受背面攻击。
15.另一种对策包括在ic中安放模拟光传感器,以检测激光束并且在检测到激光束的情况下保护电路(例如,通过停止加密/解密的执行或者提交错误结果)。这种解决方案的优势在于确保了在ic的能够通过传感器检测到激光束的区域中无法成功地执行激光故障注入。然而,模拟传感器往往无法感测ic的整个表面上的光。相应地,可能无法检测到出现在ic的远离传感器的区域中的激光故障注入。此外,这样的传感器往往较大,因而占据着显著的表面,否则这些表面可以用于计算逻辑单元和/或允许降低ic的尺寸和功耗。模拟传感器还可以容易地被攻击者检测到。
16.在一些现有方案中,已知通过数字光传感器代替模拟传感器。数字传感器比模拟传感器小,从而允许优化所占据尺寸。然而,其仍然能够被有经验的攻击者检测到。此外,尽管激光检测一般是有效的,但是非常难以量化数字传感器提供的保护。因而,使用模拟或数字光传感器解决方案很难以合理的确定性来定义ic的实际受保护的面积(即,ic的将由数字传感器检测到激光束的面积)。
17.因此,针对激光故障注入攻击的现有技术对策具有不完全、不可能量化和/或高成本的缺点。
18.相应地,需要能够以合理的成本、以定义的确定性检测整个密码ic上的激光故障
注入攻击的密码装置。


技术实现要素:

19.为此,本发明公开了一种密码集成电路(ic),其包括:被配置为生成属于一组允许序列的一个或多个位序列的一个或多个处理逻辑单元;一组触发器(ff),其包括被配置为存储所述位序列的两个或更多触发器;被配置为在由所述组的所述两个或更多ff存储的位所定义的位序列不属于该组允许序列的情况下生成指示故障注入攻击的发生的信号的一个或多个处理逻辑单元。
20.有利地,属于该组允许序列的两个不同序列之间的汉明距离至少等于二。
21.有利地,该组允许序列包括两个序列,该组的第一序列是该组的第二序列的补码。
22.有利地,被配置为生成属于一组允许序列的一个或多个位序列的一个或多个处理逻辑单元包括被配置为存储所述位序列的所述两个或更多ff、以及被连接以在每一时钟周期生成属于该组允许序列的不同位序列的一个或多个逻辑门;被配置为生成指示故障注入攻击的发生的信号的一个或多个处理逻辑单元包括被配置为执行逻辑操作从而在处于被配置为存储所述位序列的所述两个或更多ff的输出处的位序列不属于该组允许序列的情况下生成预定义信号的一个或多个逻辑门。
23.有利地,所述ff中的至少一者具有是其输出的补码的输入。
24.有利地,所述密码集成电路(ic)包括至少一个第一ff,该至少一个第一ff的输出连接至至少一个第二ff的输入和not(非)逻辑门的输入,所述not逻辑门的输出连接至所述第一ff的输入。
25.有利地,密码集成电路(ic)包括:用以存储所述位序列的第一ff和第二ff;not逻辑门;xnor(异或非)逻辑门;其中,第一ff的输出连接至not逻辑门的输入,连接至第二ff的输入,并且连接至第二xnor逻辑门的第一输入;not逻辑门411a的输出连接至第一ff的输入;第二ff的输出连接至xnor逻辑门的第二输入;指示故障注入攻击的发生的信号是xnor逻辑门的等于1的输出。
26.有利地,密码集成电路(ic)包括在同一时钟信号上连接的多个ff,这些ff中的每者的输出分别被求反(negated)并连接至其输入。
27.有利地,密码集成电路(ic)包括:错误校正代码编码器,其被配置为生成一个或多个位序列,该组允许序列包括无错误代码;一组ff,其被配置为存储错误校正代码编码器的输出处的一个或多个位序列;错误校正代码解码器,其被配置为对该组ff中存储的代码进行解码,并且在存储于该组ff中的所述代码包括错误的情况下生成指示故障注入攻击的发生的信号。
28.有利地,错误校正代码是汉明码。
29.有利地,密码集成电路(ic)包括被配置为响应于接收到指示故障注入攻击的发生的信号而修改密码算法的执行的输出的安全管理器。
30.有利地,安全管理器被配置为对故障注入的总数计数,并且响应于接收到指示故障注入攻击的发生的信号,依据故障注入的总数而修改密码算法的执行的输出。
31.有利地,安全管理器被配置为在故障注入的总数高于或等于预定义阈值的情况下禁用密码集成电路(ic)。
32.有利地,密码集成电路(ic)进一步包括一个或多个传感器,所述传感器被配置为检测对该集成电路(ic)执行的全局故障注入攻击。
33.有利地,所述一个或多个传感器包括在由下述选项构成的组中选择的至少一种传感器:被配置为检测光或激光故障注入攻击的模拟或数字光传感器;被配置为基于集成电路(ic)的电压的修改而检测故障注入攻击的电压表;被配置为基于集成电路(ic)的过热而检测故障注入攻击的温度传感器;被配置为基于集成电路(ic)的时钟的修改而检测故障注入攻击的时钟传感器。
34.本发明还公开了一种用于检测对集成电路(ic)执行的故障注入攻击的方法,所述集成电路(ic)包括一组触发器(ff),其中,该方法包括:生成属于一组允许序列的一个或多个位序列;将所述位序列存储到包括两个或更多触发器的一组所述触发器(ff)中;如果由该组的所述两个或更多ff存储的位所定义的位序列不属于该组允许序列,那么生成指示故障注入攻击的发生的信号。
35.本发明还公开了一种用于检测对集成电路(ic)执行的故障注入攻击的计算机程序产品,所述集成电路(ic)包括一组触发器(ff),该计算机程序产品包括:非暂态计算机可读存储介质;以及存储在该非暂态计算机可读存储介质上的程序代码,所述程序代码在由一个或多个处理器执行时使所述一个或多个处理器:生成属于一组允许序列的一个或多个位序列;将所述位序列存储到包括两个或更多寄存器的一组寄存器中;如果由该组的所述两个或更多寄存器存储的位所定义的位序列不属于该组允许序列,那么生成指示故障注入攻击的发生的信号。
36.本公开允许准确地定义集成电路的要保护的区域,并且量化保护的水平。
37.本公开还允许确定ic的认证水平,该水平表征该ic的对抗故障注入攻击的保护。
38.本公开还在不需要校准阶段的同时以低成本提供了解决方案。
39.除了其他保护解决方案之外,还可以使用本公开。
40.本公开的各种实施例的另一优点在于它们不生成误报警报。
41.此外,攻击者不能检测出集成电路是否受到本公开保护。
42.未来,在相对于激光波长的限制条件保持相同的同时,随着触发器进一步微型化,激光束在命中敏感触发器时还命中包括地雷触发器的附近触发器的概率也将提高。因此,可以预计未来由本公开使用所定义数量的触发器提供的保护水平将提高。
附图说明
43.通过下文对若干示例性实施例及其附图的描述,本发明将得到更好的理解,并且其各种特征和优点将显见,附图中:
44.图1描绘了本发明的若干实施例中的密码集成电路的示例;
45.图2a和图2b描绘了本发明的一些实施例中的故障注入攻击检测群集的触发器的定位的两个示例;
46.图3a和图3b分别描绘了本发明的若干实施例中的故障注入攻击检测群集的两个框图;
47.图4a、图4b和图4c分别示出了本发明的一些实施例中的故障注入攻击检测群集的三个示例;
48.图5描绘了本发明的实施例中的使用错误校正代码的故障注入攻击检测群集的示例;
49.图6a和图6b分别描绘了本发明的一些实施例中的使用有限状态机的故障注入攻击检测群集的两个示例;
50.图7显示了本发明的若干实施例中的故障注入攻击检测方法的示例。
具体实施方式
51.参考图1,其示出了根据与所公开的解决方案有关的一些实施例的密码集成电路的示例。
52.集成电路(ic)100(又称为“密码ic”)被配置为实施密码功能。ic 100可以用于任何需要密码术的应用。例如,ic 100可以用于执行安全认证或者安全交易。
53.ic 100可以是(例如)soc(片上系统)。然而,可以将本发明嵌入到诸如封装内系统(sip)或封装上系统(sop)的其他种类的ic内。
54.密码ic 100可以包括处理器110、运行密码算法的密码群集120、故障注入攻击检测群集130和安全管理器140以及被配置为确保前述部件之间的通信的总线150。处理器110可以通过总线150向密码群集120发送命令,以要求采用密钥对消息编码。安全管理器可以是(例如)在处理器上运行的软件,或者可以是独立的硬件群集。
55.密码群集120和故障注入攻击检测群集130两者依赖于由ic的触发器(ff)执行的计算。故障注入攻击、以及更具体而言的激光故障注入攻击基于对执行密码算法的ff的位翻转的注入来分析故障结果。根据一些实施例,故障注入攻击检测群集130可以包括一组的两个或更多ff。此外,故障注入攻击检测群集130可以被配置为:如果由该组ff中的至少一个ff表示的位发生了变化,例如,在激光故障注入攻击期间被激光束命中,则发出指示故障注入攻击的发生的警报信号s
a
。因而,故障注入攻击检测群集130适于检测依赖于使用辐射注入向ff中注入故障的任何攻击,例如激光故障注入攻击、光故障注入攻击或者电磁故障注入攻击。
56.响应于故障注入攻击检测群集130检测到攻击并且发出警报信号s
a
,可以将该警报信号发送至安全管理器140。安全管理器140可以被配置为按照不同方式对警报信号做出响应。安全管理器140可以被配置为修改由密码群集120执行的密码算法的输出,从而不传输攻击者所预期的故障结果。为了达到这一效果,有可能简单地不传输任何结果,或者传输故障结果(例如,随机值)。相应地,当前攻击尝试失败。传输故障结果有利地让攻击者相信攻击未被检测到。
57.根据本发明的实施例,可以按照不同方式执行对密码算法输出的修改。例如,可以简单地停止密码算法的执行。替代性地,可以使计算的结果混乱/对其进行破坏,或者安全管理器140可以重置ic 100。
58.在故障注入攻击期间,攻击者一般执行多次连续的故障注入,从而识别出允许破解秘密密钥的敏感ff。在一些实施例中,安全管理器140可以被配置为例如通过在每次接收到警报信号时使计数器加一而使用计数器来计数故障注入的次数。之后,安全管理器140可以依据已经执行的故障注入的次数调整对故障注入攻击的响应。例如,在第一次故障注入时,可以简单地停止密码算法的执行或者发送随机值作为结果,同时在接下来的注入中,可
以执行更强的响应,例如,如果检测到的故障注入的次数对应于预定义的最大故障注入次数,那么安全管理器140可以明确禁用ic 100。安全管理器140还可以被配置为暂时禁用ic 100,从而在预定义的时间量期间不能执行其他攻击。这一时间量可以随着时间的推移急剧增大。
59.这允许根据攻击的强度定制响应。例如,安全管理器140可以被配置为仅在检测到有经验的攻击者执行的严重攻击的情况下禁用ic 100。然而,安全管理器140将在所有情形中确保在检测到故障注入的情况下攻击者将不能分析故障结果。
60.应当指出,本发明不限于这样的示例,并且包含任何适当的措施以在检测到故障注入攻击时避免攻击者获得故障结果。
61.图2a和图2b分别描绘了根据本发明的一些实施例的故障注入攻击检测群集的触发器定位的两个示例。
62.参考图2a,密码ic 100是以密码ic 200a的形式实施的。图2a中所示的圆圈中的每者(例如,圆圈210)表示故障注入攻击检测群集130的ff。例如,ff 131和ff 132属于故障注入攻击检测群集130。从图2a中可以看出,可以将这样的ff放置为遍布于ic 200a的各处。下文还将故障注入攻击检测群集130的ff称为“激光地雷”或“地雷”,因为在激光攻击的情况下,如果激光束命中了故障注入攻击检测群集130的ff之一,就将生成警报信号s
a
,并且安全管理器140将引起对攻击的检测和适当动作的执行。
63.本发明的实施例有利地允许在激光故障注入攻击的情况下对引入到ic200a的保护进行量化。更具体而言,可以将保护比定义为:
[0064][0065]
在公式1中:
[0066]

n
mine
表示激光地雷的数量,即,故障注入攻击检测群集130的ff的数量;
[0067]

n
ff
表示ic密码群集120的ff的总数;
[0068]

l表示激光束的半径,该激光束的半径至少等于该激光束的波长;
[0069]

s表示ff的表面积。
[0070]
可以按照下述方式解释公式1:在攻击者执行激光故障注入攻击时,攻击者不具有用于密码计算或故障注入检测的ff的先验知识(假设攻击者甚至知道ic 100执行故障注入检测)。被地雷ff占据的表面积与ff的总表面积之比为此外,被激光束命中的表面积取决于激光束的波长,并且等于因为激光束命中的是具有等于激光波长的直径的圆。ff具有等于s的表面积。因此,每次激光束命中ic 200a,激光束将平均命中个ff,其中,每一ff是地雷的概率为
[0071]
因而,可以根据故障注入攻击检测群集130使用的ff的数量衡量由本发明的各种实施例提供的保护的水平。此外,本发明允许通过设置激光地雷的适当水平来确定受到保
护的电路的面积并且达到预期的保护水平。在一些实施例中,有可能通过相对于密码群集120的最敏感ff(即,作为密码计算的最关键ff的ff)放置激光地雷从而提高在敏感ff被命中的情况下检测到攻击的概率,由此进一步增强保护。具体而言,这样的增强的保护可以是通过在密码群集120的最敏感ff的邻域中放置激光地雷而获得的。
[0072]
因而,对保护的量化允许以定义的确定性来确定将检测到每次尝试的可能性。因此,有可能证实ic对抗故障注入攻击的合格性。
[0073]
圆220表示被激光束命中的面积的尺寸。如图2a中所示,圆220的尺寸大于ff的尺寸。这归因于这样一个事实:对于正面攻击,激光束的波长一般等于800nm,并且对于背面攻击一般等于1064nm,而ff一般具有大约400nm的平均高度,其远低于被激光束命中的圆的直径。因而,在攻击者命中敏感ff时,命中邻域地雷的可能性高。
[0074]
应当指出,利用ff尺寸设置的预期变化,由本发明的实施例提供的保护的水平预期随着时间的推移而增大。例如,ff的平均高度预期未来将随着时间的推移而下降,而执行激光故障注入攻击所需的激光束的波长预期不会受到修改。因此,由于ic和ff将进一步微型化,因而攻击者要想在不命中附近的地雷的情况下命中敏感ff将变得困难得多。
[0075]
本发明的实施例的优点还在于以低成本提供了良好保护,使用ff作为地雷的成本几乎为零。此外,攻击者在攻击之前几乎不可能检测到使用了根据本发明的实施例的保护,因为不能将属于密码群集120的ff与属于故障注入攻击检测群集130的ff区分开。仅可能在攻击失败之后推断出使用了根据本公开的保护。
[0076]
此外,本发明的故障注入攻击检测群集有利地不需要任何校准阶段。
[0077]
参考图2b,其示出了根据一些实施例的故障注入攻击检测群集的触发器的定位的另一示例。
[0078]
在图2b中,密码ic 200b与密码ic 200a类似,但是进一步包括全局攻击检测器230b。全局攻击检测器230b可以是检测全局故障注入攻击的任何检测器。全局故障注入攻击是对ic的全局参数(诸如电压、时钟、温度等)建立干扰的故障注入攻击。例如,全局攻击检测器230b可以是电压表、温度传感器或时钟传感器。因而,这样的全局攻击检测器可以检测到若干全局故障注入攻击(即,修改整个ic的行为的故障注入攻击),例如基于电源电压的变化的攻击、基于时钟频率的修改的攻击、基于过热的攻击等。
[0079]
响应于检测到全局攻击,安全管理器140可以基于与前文解释的相同的原理修改密码算法的输出和/或ic的行为。相应地,可以将根据本发明的实施例的用于检测故障注入的方法和系统与任何其他故障注入攻击对策结合使用。
[0080]
应当指出,本发明不限于上文列举的示例性传感器,并且可以使用适于全局性地检测故障注入攻击的任何传感器或传感器组合。可以使用不止一个传感器和/或不止一种类型的传感器。例如,ic 230b可以包括电压和温度传感器;处于两个不同的地方的两个光传感器等。
[0081]
图3a和图3b分别描绘了本发明的若干实施例中的故障注入攻击检测群集的两个框图。
[0082]
图3a示出了根据本发明的实施例的故障注入攻击检测群集的框图。
[0083]
可以将故障注入攻击检测群集300结合到集成电路内,例如,该集成电路可以是soc 100的部分。如上文参考图2a和图2b所指出的,故障注入攻击群集300包括多个ff,它们
可以是密码算法使用的ff的部分。因而,一些ff可以同时用于密码算法和故障注入攻击检测。
[0084]
如图3中所示,故障注入攻击检测群集300可以包括一个或多个序列发生处理逻辑单元310,其被配置为生成属于一组允许序列的一个或多个位序列。根据本发明的各种实施例,处理逻辑单元可以是适于根据输入执行计算或操作的任何逻辑单元,例如逻辑门、触发器、根据软件指令操作的处理器、处理器的硬件构造或其组合。
[0085]
一个或多个处理逻辑单元310可以被配置为在每一时钟信号处,例如,在时钟信号的上升沿处生成不同位序列。由一个或多个序列发生处理逻辑单元310生成的位序列属于一组允许序列。相应地,如果该序列包括n个位,那么可以生成所有的2
n
个可能序列或者仅生成其子集。
[0086]
本发明可以使用任何适当的允许生成属于一组允许序列的位序列的手段。例如,可以根据预定义的一组允许序列生成序列。
[0087]
故障注入检测群集300可以进一步包括一组ff 320,其包括两个或更多ff 321、322,以存储由该一个或多个处理逻辑单元310生成的位序列。尽管图3a示出了包括两个ff 321、322的一组320以存储位序列,但是本领域技术人员将容易地认识到可以使用更多ff,ff的数量至少等于序列中的位的数量。在一些实施例中,故障注入攻击检测群集因而可以包括更高数量的ff。
[0088]
故障注入攻击检测群集300可以进一步包括一个或多个序列检查处理逻辑单元330,其被配置为检测由该组ff 320存储的位所定义的位序列是否属于该组允许序列。如果其不属于该组允许序列,那么序列检查处理逻辑单元330可以被配置为生成指示故障注入攻击的发生的信号s
a

[0089]
作为结果,如果未发生故障注入攻击,那么不对该组ff 320的ff存储的位做出修改,并且由它们定义的序列属于该组允许序列。相反,如果发生了故障注入攻击,例如激光故障注入攻击,并且如果该注入攻击命中了该组ff 320中的ff之一并且改变了由被命中的ff存储的位,那么由该组ff 320的ff定义的位序列将不再属于该组允许序列。
[0090]
因而,将只有在发生了故障注入攻击的情况下生成攻击信号s
a
。因而,本发明避免了误报。
[0091]
因而,如果该组320的ff中的至少一个被命中,本发明的实施例将使得检测故障注入攻击成为可能,其包括任何种类的基于辐射(激光、光、电磁)的故障注入攻击。
[0092]
在一些实施例中,ff可以与振荡器相关联,例如,所述振荡器可以是通过将由时钟的上升沿予以时钟控制的ff与通过时钟的下降沿予以时钟控制的ff耦合而创建的,如breier,j.,bhasin,s.,&he,w.(2017,march),an electromagnetic fault injection sensor using hogge phase

detector,quality electronic design(isqed),2017 18th international symposium,(pp.307

312),ieee所提出的。这样做提高了ic检测电磁故障注入的能力。
[0093]
在一个实施例中,该组允许序列中的两个不同位序列之间的汉明距离至少等于序列中的位的数量。这意味着该组允许序列中的任何一对位序列都不具有任何共同位。因而,如果故障注入攻击执行该组320中的单个ff的位翻转,那么所得到的位序列将不可能属于该组允许序列。因此,要求攻击同时命中该群集中的至少两个ff才能不被检测到。假定攻击
342输出锁定的警报信号s
al
,其在这种情况下具有值“0”。因而,“或”门341具有两个“0”输入,并且输出“0”,其将不修改另一ff 342的状态,直到发出第一警报信号为止。如果发出了警报,那么信号s
a
获得值“1”,“或”门341的输出也变为1,并且在下一时钟信号,该另一ff 342采取值“1”。而后,该另一ff 342的输出保持1,因为其起着对“或”门341的输入的作用,因此即使ff 320表现出了允许序列并且警报信号s
a
回到值0,“或”门341总是输出“1”。因此,即使警报信号s
a
回到值0,锁定警报信号s
al
也保持1。因而,警报信号足以将该另一ff的值锁定至1,并且保存曾发出过警报的信息。
[0105]
该另一ff 342还可以接收时钟信号343,其可以与提供给ff 320的时钟信号相同,并且可以接收重置信号344,该重置信号344可以用于将该另一ff 342的值重置为0,从而对该信号去锁定。
[0106]
图4a到图4c以及图5描绘了使用自动发生序列或错误校正代码的允许序列的示例性生成。
[0107]
图4a、图4b和图4c分别示出了根据一些实施例的故障注入攻击检测群集的三个示例。
[0108]
在本发明的若干实施例中,故障注入检测群集包括其输出被求反继而连接至其输入的至少一个ff。这允许生成替代信号,该替代信号使其值在每一时钟信号处在0和1之间变化,而不需要任何输入。以后,可以将这一替代信号用作其他ff的输入和/或处理逻辑单元的输入,以生成警报信号。
[0109]
这允许地雷独立于任何输入。例如,这允许将地雷置于电路的其中数字输入不可得的位置上。其还将ff用于生成和存储允许位序列两者,因而故障注入检测群集所需的ff更少。
[0110]
图4a、图4b和图4c提供了此类故障注入检测群集的示例。然而,提供它们只是为了举例,并且可以借助于在每一时钟周期自主建立信号振荡的这种ff来定义其他故障注入检测群集。
[0111]
在本发明的若干实施例中,将这种生成震荡信号的ff的输出作为输入提供给故障注入检测群集的至少一个其他ff。因而,能够自主生成位序列并且将其存储到多个ff上,而无需外部输入。
[0112]
这样的设计还具有相对于编译优化的鲁棒性。实际上,ic(例如,ic 100)往往是使用高级语言设计的。高级设计提供了很多优点:其使得ic设计更容易并且更快速。其还允许执行对电路的高级验证,例如,履行电路的目标功能或者符合目标定时的验证。高级语言的编译器还执行对电路的优化,从而(例如)去除冗余性。包含这种生成震荡信号的ff的故障注入群集设计提供了相对于编译优化具有鲁棒性的优点:编译器将检测到在每一时钟上意在使各ff表现出不同值。另一方面,其中不同ff接收相同外部输入(其目的是引入冗余性,以检测两个ff之一是否曾受攻击)的电路可能在编译器检测并删除冗余时受到不希望发生的编译器优化。
[0113]
因此,在一种故障注入检测群集设计中,第一ff的输出被求反并且被提供作为该第一ff的输入以生成震荡信号,并且第一ff的输出被作为输入提供给至少一个其他ff,这样的故障注入检测群集设计提供了如下优点:允许独立于数字输入的存在将故障注入检测群集置于电路中的任何地方,同时允许使用高级语言编译器并且相对于不希望发生的编译
器优化具有鲁棒性。
[0114]
更具体而言,图4a示出了根据一个实施例的故障注入攻击检测群集的第一示例。如图4a中所示,故障攻击检测群集400a由两个ff 421a和422a、not逻辑门411a和xnor逻辑门430a形成。
[0115]
第一ff 421a的输出连接至第二ff 422a的输入,并且连接至not逻辑门411a的输入。not逻辑门411a的输出连接至第一ff 421a的输入。第一ff 421a和第二ff 422a的输出分别连接至xnor逻辑门430a的输入。
[0116]
ff 421a和ff 422a通过时钟同步。该时钟可以是与用于运行密码算法的时钟相同的时钟,或者可以是不同时钟。在每一时钟信号处,例如,在该时钟信号的上升沿上,每一ff可以采取存在于其输入处的值,之后发送这样的值作为输出。因此,ff和逻辑门的组合依据在先序列在每一时钟信号自动生成位序列。
[0117]
需指出的是:
[0118]

ff 421a和not逻辑门411a形成了处理逻辑单元410a,其被配置为生成位序列(又称为“序列发生器”);
[0119]

ff 421a和ff 422a是用于存储位序列的ff 420a;
[0120]

xnor逻辑门430a为处理逻辑单元,其被配置为:如果由ff 420a存储的位所定义的位序列不属于该组允许序列,那么生成指示发生了故障注入攻击的信号(s
a
)。
[0121]
因而,ff 421a同时用于生成(与not逻辑门411a结合)和存储位序列。这样的设计的有利之处在于,其提供了生成和存储位序列的低成本解决方案。如上文所指出的,这允许在不需要外部输入的情况下生成震荡输入信号,该信号充当该组允许序列的基础。
[0122]
联系在没有和具有故障注入攻击的情况下由故障攻击检测群集生成的位序列,在相继的时钟信号上定义了以下位值:
[0123]

处于第一ff 421a的输出、第二ff 422a的输入和xnor逻辑门430a的输入的值441a,其还是由ff 421a存储的值;
[0124]

处于第一ff 421a的输入的值442a,因而其对应于对位值441a应用not逻辑门411a;
[0125]

处于ff 422a的输出和xnor逻辑门430a的输入的值443a,其还是由ff 422a存储的值;
[0126]

处于xnor逻辑门430a的输出的值444a。
[0127]
在没有故障注入攻击的情况下,在相继时钟周期处的位值可以包括:
[0128]
时钟周期位值441a位值442a位值443a位值444a10110210003011041000
[0129]
表格1

在没有攻击的情况下,在相继时钟周期处的位序列
[0130]
如表格1中所示,如果未执行攻击,那么由ff 421a和422a存储的位所形成的序列总是(1,0)或(0,1)。这样的两个序列形成了允许序列,其中,汉明距离等于2。xnor逻辑门430a被配置为接收这样的值作为输入,并且在ff中存储的位值(441a,443a)属于允许序列
时,总是输出等于0的值444a。
[0131]
假定在周期3处例如通过使用激光故障注入攻击对第一ff 421a执行了故障注入攻击,那么ff 421a存储的位翻转至1,并且位的值包括:
[0132][0133]
表格2

在第三周期处对ff 421a进行攻击的情况下在相继时钟周期处的位序列
[0134]
在第3周期,位序列因而变为(1,1),其不属于允许序列。在xnor门430a的输出处的位值444a变为1而非0,由此表明发生了故障注入攻击。
[0135]
假定在周期3处例如通过使用激光故障注入攻击对第二ff 422a执行了故障注入攻击,那么ff 422a存储的位翻转至0,并且位的值包括:
[0136][0137][0138]
表格3

在第三周期处对ff 422a进行攻击的情况下在相继时钟周期处的位序列
[0139]
在第3周期,位序列因而变为(0,0),其不属于允许序列。在xnor门430a的输出处的位值444a也变为1而非0,由此表明发生了故障注入攻击。
[0140]
这样的示例表明,如果ff 421a或ff 422a之一被故障注入攻击命中,那么位值444a必然变为1而非0。因此,等于1的位值444a是指示执行了故障注入攻击的信号s
a

[0141]
根据此类实施例的故障注入攻击检测群集提供了很多优点,其包括但不限于下述优点:
[0142]

其不生产误报警报:在位值441a或443a中没有故障注入的情况下,位值444a总为0;
[0143]

其形成了低成本解决方案,而不需要操作大传感器;
[0144]

其不需要任何校准阶段;
[0145]

ff 421a和422a可以与用于运行密码算法的ff交错;因此攻击者不可能知道用于密码术或攻击检测的ff,乃至不可能识别是否有一些ff被用于攻击检测;
[0146]

如果两个ff 421a和422a中的任何一个被故障注入命中(这这一示例中,如果444a=1),将发出警报信号s
a
;如果两个ff被同时命中,那么该攻击最终可能保持不被检测到,尽管这样的情况可能性非常低;
[0147]

可以将多个故障注入攻击检测群集(例如,群集400a)置于ic中,并且它们的输出可以例如通过使用or门结合而被结合到单个警报中。因此,可以发出全局信号警报,其将指示故障注入攻击检测群集的任何ff是否已被命中,无论其数量如何。这允许设置用于检测故障注入攻击的地雷ff的预期数量。激光故障注入攻击需要执行一定数量的初步攻击,以识别最敏感的ff。因而,可以将地雷ff的数量定义为具有高的概率使攻击者在攻击的校准阶段期间命中至少一个地雷ff。
[0148]
图4b示出了根据一些实施例的故障注入攻击检测群集的第二示例。群集400b与群集400a类似,只是具有包括下述部件在内的更高数量的部件:
[0149]

由用于存储3位序列的三个ff 421b、422b和423b构成的组420b;
[0150]

被配置为生成属于一组允许序列的一个或多个位序列的处理逻辑单元410b,其包括ff 421b和第一not门411b;
[0151]

由处理逻辑单元构成的组430b,其被配置为在所述组的两个或更多ff存储的位所定义的位序列不属于该组允许序列的情况下生成指示故障注入攻击的发生的信号(s
a
),并且该组430b包括第二not门431b、nor门432b、and(与)门433b和xnor门434a。
[0152]
该群集的部件通过下述方式互连:
[0153]

第一ff 421b的输出连接至第一not门411b的输入、第二not门432b的输入、第二ff 422b的输入和第三ff 423b的输入;
[0154]

第一not门431b的输出连接至第一ff 421b的输入;
[0155]

第二ff 422b的输出连接至nor门432b的输入和and门433b的输入;
[0156]

第二not门431b的输出连接至nor门432b的输入和and门433b的输入;
[0157]

第三ff 423b的输出连接至nor门432a的输入和and门433b的输入;
[0158]

nor门432a的输出和and门433b的输出连接至xnor门434b的输入。
[0159]
因而在每一时钟周期生成了位序列。在没有或具有故障注入攻击的情况下,将在每一时钟周期验证该群集中的下述位值:
[0160]

第一ff 421b的输出处的值441b(其还是由ff 421b存储的值,以及第一和第二not门411b和431b的输入、第二和第三ff 422b和423b的输入处的值);
[0161]

第一not门411b的输出和第一ff 421b的输入处的值442b;
[0162]

第二ff 422b的输出、nor门432b和and门433b的输入处的值443b,其还是第二ff 422b存储的值;
[0163]

第二not门431b的输出、nor门432a和and门433b的输入处的值444b;
[0164]

第三ff 423b的输出、nor门432a和and门433b的输入处的值445b,其还是由第三ff 423b存储的值;
[0165]

nor门432b的输出以及xnor门434b的输入处的值446b;
[0166]

and门433b的输出以及xnor门434b的输入处的值447b;
[0167]

xnor门434b的输出处的值448b。
[0168]
因而在没有攻击的情况下,位值在相继的时钟周期处采取下述值:
[0169]
时钟周期位441b位442b位443b位444b位445b位446b位447b位448b101111010210000100301111010410000100
[0170]
表格4

没有攻击的情况下,在相继的时钟周期处的位序列
[0171]
应当指出,在没有攻击的情况下,由位(441b,443b,445b)形成的序列属于一组互补的两个允许序列(0,1,1)和(1,0,0)。这两个允许序列之间的汉明距离为3。如果符合这些允许序列,位448b总是等于0。
[0172]
在第3周期处第一ff 421b、第二ff 422b和第三ff 423b受到故障注入攻击的情况下,序列相应地变为:
[0173]
时钟周期位441b位442b位443b位444b位445b位446b位447b位448b101111010210000100310101001
[0174]
表格5

在周期3处具有对第一ff 421b的攻击的情况下,在相继时钟周期处的位序列
[0175]
时钟周期位441b位442b位443b位444b位445b位446b位447b位448b101111010210000100301011001
[0176]
表格6

在周期3处具有对第二ff 422b的攻击的情况下,在相继时钟周期处的位序列
[0177]
时钟周期位441b位442b位443b位444b位445b位446b位447b位448b101111010210000100301110001
[0178]
表格7

在周期3处具有对第三ff 423b的攻击的情况下,在相继时钟周期处的位序列
[0179]
相应地,在每一可能的攻击中,位序列(441b,443b,445b)不属于该组允许序列,并且位448b采取值1,其为警报信号s
a
。为了不被检测到,该攻击将需要同时命中ff 421b、422b和423b,这几乎是不可能的,因为其将要求使用三个激光束执行同步故障注入攻击,并且在没有对用于密码术或攻击检测的ff的先验知识的情况下同时攻击三个ff 421b、422b和423b。
[0180]
图4c示出了根据一些实施例的故障注入攻击检测群集的第三示例。
[0181]
在本发明的若干实施例中,故障注入检测群集包括在同一时钟信号上连接的多个ff,这些ff的每者的输出分别受到求反并连接至其输入。因而,故障注入检测群集的每一ff独立地生成在每一时钟周期处在0和1之间振荡的信号。该组允许序列因而只包括两个允许
序列,第一允许序列是第二允许序列的补码。如果故障注入检测群集的ff之一被命中,那么整个序列将不再属于这两个允许序列之一。可以检测到这种情况下,例如,对ff的输出使用逻辑门的组合,以发出警报信号。
[0182]
这样的设计提供了很多优点:
[0183]

不需要外部输入信号,前提条件是每一ff生成其自己的振荡输入;
[0184]

该组允许序列的汉明距离等于该故障注入群集中的ff的数量。因而,能够对故障注入检测群集进行定制,以确保满足所检测攻击的目标复杂度水平;
[0185]

在ff被攻击命中时,其值在每一后续时钟周期保持振荡。因而,在后续周期,其值将与该故障注入检测群集的其他ff的值保持不同步,并且警报信号将保持生效;
[0186]

假设这些ff在同一时钟信号中同步,那么它们将在这两个允许序列之一上永久性同步,除非这些ff之一被攻击命中。由于可以使用逻辑门对ff的输出进行组合,以检测它们是否表现出这两个允许序列之一,因而能够无延迟地检测到攻击:早在ff之一被攻击命中时,ff的输出的组合就发出警报信号。因而,不到一个时钟周期就发出了警报449c。
[0187]
图4c示出了群集400c,仅以举例方式将其提供为包括在同一时钟信号上连接的多个ff的群集,这些ff中的每者的输出分别使其输入被求反并且连接至其输入。
[0188]
群集400c包括下述部件:
[0189]

由存储4位序列的四个ff 421c、422c、423c和424c构成的组420c;
[0190]

处理逻辑单元410c,其被配置为生成属于一组允许序列的一个或多个位序列,并且包括四个ff 421c、422c、423c和424c、第一not门412c和第二not门414c。第一ff 421c的输出处的位是反转的411c,并且第三ff 423c的输出处的位是反转的413c,也就是说ff 421c和423c输出的位是所存储的位的反转。由于ff 421c和423c的输出连接至它们各自的输入,因而在每一时钟周期使ff 421c和423c存储的位的值反转;
[0191]

由处理逻辑单元构成的组430c,其被配置为在由组420c的两个或更多ff所存储的位定义的位序列不属于该组允许序列的情况下生成指示故障注入攻击的发生的信号(s
a
),并且包括第一xnor门431c、第二xnor门433c以及or门432c。
[0192]
该群集的部件通过下述方式互连:
[0193]

由于反转411c的原因,第一ff 421c的输出是第一ff 421c内存储的值的反转,并且其连接至第一ff 421c和第一xnor门431c的输入;
[0194]

第二ff 422c的输出连接至第一not门412c和第一xnor门431c的输入;
[0195]

由于反转413c的原因,第三ff 423c的输出是第三ff 423c内存储的值的反转,并且其连接至第三ff 423c和第二xnor门433c的输入;
[0196]

第四ff 424c的输出连接至第二not门414c和第二xnor门433c的输入;
[0197]

第一not门412c的输出连接至第二ff 422c的输入;
[0198]

第二not门414c的输出连接至第四ff 424c的输入;
[0199]

第一xnor门431c和第二xnor门433c的输出连接至or门432c的输入。
[0200]
因而在每一时钟周期生成了位序列。在没有或具有故障注入攻击的情况下将在每一时钟周期验证该群集中的下述位值:
[0201]

第一ff 421c的输出处的值441c(其还是由ff 421c存储的值的反转以及第一ff 411c和第一xnor门431c的输入处的值);
[0202]

第一not门412c的输出和第二ff 422c的输入处的值442c;
[0203]

第三ff 423c的输出和输入处的值443c。因而,值443c是第三ff 423c内存储的值的反转;
[0204]

第二not门414c的输出和第四ff 424c的输入处的值444c;
[0205]

第二ff 422c的输出和xnor门431c的输入处的值445c;
[0206]

第四ff 424c的输出、第二not门414c的输入和第二xnor门433c的输入处的值446c;
[0207]

第一xnor门431c的输出和or门432c的输入处的值447c;
[0208]

第二xnor门433c的输出和and门432c的输入处的值448c;
[0209]

and门432c的输出处的值449c。
[0210]
因而在没有攻击的情况下,位值在相继的时钟周期处采取下述值:
[0211]
时钟周期位441c位442c位443c位444c位445c位446c位447c位448c位449c11111000002000011000311110000040000110005111100000
[0212]
表格8

在没有攻击的情况下,在相继时钟周期处的位序列
[0213]
为了简单起见,将位序列定义为四个ff的输出处的位(441c,443c,445c,446c),尽管第二ff 422c和第四ff 424c的输出处的位445c和446c实际上是所述ff内存储的位的反转。
[0214]
应当指出,在没有攻击的情况下,由位(441c,443c,445c,446c)形成的序列属于一组互补的两个允许序列:(1,1,0,0)和(0,0,1,1)。这两个允许序列之间的汉明距离为4。如果符合这些允许序列,位449b总是等于0。
[0215]
在第3周期处第一ff 421c、第二ff 422c、第三ff 423c和第四ff 424c受到故障注入攻击的情况下,序列相应地变为:
[0216]
时钟周期位441c位442c位443c位444c位445c位446c位447c位448c位449c11111000002000011000301110010141000111015011100101
[0217]
表格9

在周期3处存在对第一ff 421c的攻击的情况下,在相继时钟周期处的位序列
[0218]
时钟周期位441c位442c位443c位444c位445c位446c位447c位448c位449c1111100000200001100031011101014000001101
5101110101
[0219]
表格10

在周期3处存在对第二ff 422c的攻击的情况下,在相继时钟周期处的位序列
[0220]
时钟周期位441c位442c位443c位444c位445c位446c位447c位448c位449c11111000002000011000311010001140010110115110100011
[0221]
表格11

在周期3处存在对第三ff 423c的攻击的情况下,在相继时钟周期处的位序列
[0222]
时钟周期位441c位442c位443c位444c位445c位446c位447c位448c位449c11111000002000011000311100101140000100115111001011
[0223]
表格12

在周期3处存在对第四ff 424c的攻击的情况下,在相继时钟周期处的位序列
[0224]
相应地,在每一可能的攻击中,位序列(441c,443c,445c,446c)不属于该组允许序列,并且位449c采取值1,其为警报信号s
a
。该攻击将需要同时命中ff 421c、422c、423c和424c才能不被检测到,这几乎是不可能的,因为其将要求使用四个激光束执行同步故障注入攻击,并且在没有对用于密码术或攻击检测的ff的先验知识的情况下同时攻击四个ff 421c、422c、423c和424c。
[0225]
如上文所指出的,一旦ff被命中,就将无延迟地发出警报。此外,在后续周期当中被命中的ff的值保持与其他ff不同步,并且警报信号在每一时钟周期处保持被触发。本领域技术人员可以针对可能的允许序列的每种组合定义逻辑门的组合,以测试ff是否表现出了两种可能允许序列之一。
[0226]
仅以举例方式将群集400c提供为包括在同一时钟信号上连接起来的多个ff的群集,这些ff中的每者分别使其输出被求反并且连接至其输入。可以定义相同类型的具有不同数量的ff的其他群集。例如,可以将ff 421c、422c与逻辑门411c、412c、431c结合以用作具有两个ff的故障注入检测群集,如果两个ff 421c、422c之一被命中,则信号447c采取值1。
[0227]
应当指出,图4a到图4c是非限制性示例,根据本发明的实施例,其被提供以例示属于一组允许序列的位序列的生成,并且例示使用逻辑门来验证序列是否属于该组允许序列,继而验证是否执行了故障注入攻击。
[0228]
本领域技术人员将容易地理解本发明涵盖相同类型的其他故障攻击检测群集,所述群集使用ff和/或逻辑门的组合来执行序列的自动生成和验证。
[0229]
有利地,该组允许序列可以只包括两个允许序列,该组的第一序列是该组的第二
序列的补码,例如,如图4a到图4c中所示。因而,在这样的实施例中,两个允许序列之间的汉明距离等于序列中的位的数量(即,ff的数量),并且可以在任何ff被命中的情况下发出警报,只有在所有ff被同时命中的情况下攻击才不会被检测到,而即使采用一组两个ff,这也是极不可能的,而且随着ff的数量的提高,这将变得几乎不可能。
[0230]
这样的种类的故障攻击检测群集可以有利地包括至少一个ff,其输入在每一周期处是其输出的补码。在每一时钟周期处,ff中存储的位被更新以采取其输入的值,这有利地提供了一种简单并且有效的方式来在每一时钟周期处更改存储在ff中的值(例如,ff 421a、421b、421c、422c、423c和424c就是这种情况)。
[0231]
尽管在上文对一些实施例的描述中通过等于1的输出位定义指示攻击的发生的信号s
a
,但是应当指出本发明不限于这样的定义,并且涵盖任何适当的对信号s
a
的定义。
[0232]
图5描绘了根据本发明的实施例的使用错误校正代码的故障注入检测群集的示例。
[0233]
如图5中所示,群集500接收一组的四个位501作为输入。该组的三个位501由汉明编码器(7,4)510处理,其增加3个冗余位,并且将该组的四个位编码到分别存储在7个ff 520上的7个位上。ff 520的输出被汉明解码器(7,4)处理:如果未执行攻击,那么在ff 520存储的位中未发现错误,并且发送等同于该组的位501的一组位502作为输出。
[0234]
作为对照,如果执行了故障注入攻击,从而引起该组520的ff中的任何ff的位翻转,那么汉明解码将检测出发生了错误,并且发出警报信号s
a

[0235]
由于汉明解码器引入的冗余的原因,只有在组520的至少四个ff被命中的情况下攻击才不会被检测到,这一点如前所述是几乎不可能的。可以对输入/输出位组的尺寸和/或冗余位的数量进行设置,以定义由汉明编码器生成的序列的汉明距离。
[0236]
在图5的示例中:
[0237]

汉明编码器510生成属于一组允许序列的位序列(即,未发现错误的序列);
[0238]

组520的ff存储所述位序列;
[0239]

如果组520的ff中的至少一个被故障注入攻击命中,从而引起位翻转,那么所存储的序列将不再属于该组允许序列;
[0240]

汉明解码器530检测在该组ff 520中存储的位序列所定义的代码中是否存在错误。如果存在错误,那么该组ff 520中存储的位序列将不属于该组允许序列,故障注入攻击已经被执行,并且发出警报信号s
a

[0241]
尽管根据本发明的故障注入攻击检测群集是使用汉明编码器和解码器实施的,但是应当指出本发明不限于这样的实施方式,并且可以使用任何适当错误校正代码来替代汉明代码。
[0242]
此外,图5的实施例提供了这样的优点:输入和输出信号501、502可以有利地是密码算法的部分。因而,该组ff 520可以用于存储被密码处理使用的位数据。输入501、输出502和该组ff 520的尺寸也可以受到修改,因而冗余位的数量也可以受到修改。
[0243]
其他实施例也是可用的。例如,如果使用电路生成由多个二进制值定义的状态机(其仅采取可能值的子集),那么可以提供定义该状态机的状态的值作为ff的输入,并且可以执行测试来看ff是否表现出该状态机的可能状态之一。因而,可以重复使用该电路执行的计算,以作为用于地雷ff的输入。
[0244]
图6a和图6b分别描绘了根据本发明的一些实施例的使用有限状态机的故障注入攻击检测群集的两个示例。
[0245]
在图6a中,ic被配置为使用作为由该ic执行的计算的部分的fsm 610,其被配置为在三个状态611a、612a和613a之间切换。这些状态由两个ff的值定义。三个定义的状态分别对应于值“0,1”、“0,0”和“1,0”。在本发明的若干实施例中,对fsm 610增加另一ff,并且通过奇偶校验位丰富可能状态的值。因此,将fsm 610变换成了fsm 620a,并且三个状态611a、612a和613a分别变成了三个状态621a、622a和623a,它们分别对应于值“0,1,0”、“0,0,1”和“1,0,0”。因此,在每种情况下,第三位的值对应于奇偶校验位,如果两个其他位之和为偶数,那么第三位的值等于1,如果两个其他位之和是非偶数,那么第三位的值等于0。因而,每当两个其他位之一的值发生改变时,奇偶校验位的值就被更新,并且将等于相关奇偶校验位,除非故障注入攻击命中ff之一。因此,这样做允许在使用由该ic当前执行的计算的同时检查是否发生了攻击。
[0246]
换言之并且使用图3的一般结构,在这一示例中,状态部分320是功能状态机(例如,具有状态00、01、10的三状态机)和用于地雷的仅一个额外的ff之间的合并。增添其是为了通过奇偶校验扩展状态编码,因此,现在将状态编码为001、010和100,它们具有这样的特性:在状态之间的任何转变序列中,检查模块330都将看到一个字的汉明重量。任何偏差指示故障注入,并且将发出警报。
[0247]
在图6b中,使用了相同的原理,只是将fsm 610变换成了fsm 620b,fsm 620b具有两个奇偶校验位而非一个:位之和非偶数的状态611和613分别被变换成了具有两个额外的“0”位的状态621b和623b。与此同时,位之和等于0的状态612被拆分成两个状态6221b、6222b,它们具有额外的位“1”和“0”。因此,对于这两个状态中的每者,在没有攻击的情况下存在“1”奇偶校验位,并可以检查这一特性,以发出警报。这里,其再次使用了ic的现有计算来检测攻击。此外,第二奇偶校验位的添加使得检测甚至更加灵敏,因为有更多的命中一个ff的机会。
[0248]
换言之,状态机可能在长时间周期内卡在给定状态(比如状态00)中。因此,还有可能将这样的状态复制成两个状态,它们相等并且在逻辑单元计算出不必进行功能状态转变的情况下交替。所得到的编码仍然能够享有汉明重量一的特性,其代价是在地雷中再增加一个ff。现在,在每一时钟周期处的每一转变都是有效的,并且状态是等同的(0010和0001),加上2个功能状态0100和1000。
[0249]
仅通过本发明的实施例的示例的方式提供图4a到图4c以及图5、图6a和图6b。更一般地,本发明适用于属于一组允许序列的序列的任何种类的生成,使用ff存储所述序列,以及检测ff是否表现出允许序列之一。
[0250]
应当指出,可以使用并且合并多个群集,和/或可以将多个警报合并到单个警报内(例如,使用or门),从而使合并后的警报信号在至少一个群集被攻击命中的情况下受到激活。
[0251]
图7描绘了根据本发明的一些实施例的检测故障注入攻击的方法。
[0252]
该方法(块700)包括生成属于一组允许序列的一个或多个位序列的第一步骤710。
[0253]
在步骤720中,将位序列存储在包括两个或更多触发器的一组触发器中。
[0254]
在步骤730中,如果由该组的这两个或更多ff存储的位所定义的位序列不属于该
组允许序列,那么生成信号s
a
,信号s
a
指示发生了故障注入攻击。
[0255]
方法700可以进一步包括验证步骤731,其验证存储在ff中的位序列是否属于允许序列,如果是则进行步骤730。
[0256]
参考图4a到图4c以及图5描述的实施例可分别通过方法700实施。
[0257]
还可以将本发明实施成被配置为执行密码操作的计算机程序。如果攻击者攻击存储着用于密码操作的位值的寄存器,那么这样的计算机程序可能受到故障注入攻击。参考图4a到图4c以及图5描述的实施例可分别由这样的计算机程序实施,以检测对存储着用于密码操作的位值的寄存器的故障注入攻击。
[0258]
体现在这样的计算机程序中的程序代码能够以各种各样的不同形式单独或总体作为程序产品分配。具体而言,可以使用计算机可读存储介质分配这样的程序代码,所述计算机可读存储介质具有存储于其上的计算机可读程序指令,这些程序指令用于使处理器执行本发明的实施例的各个方面。
[0259]
在某些替代的实施例中,可以对流程图、顺序图和/或框图中指定的功能、动作和/或操作重新排序、串行处理和/或并行处理,以符合本发明的实施例。此外,这些流程图、顺序图和/或框图中的任何图可以包括比所例示的更多或更少的块,以符合本发明的实施例。
[0260]
尽管已经通过对各种实施例的描述例示了本发明的全部,并且尽管这些实施例是以相当多的细节描述的,但是发明的申请人并非意在通过任何方式使所附权利要求的范围局限或限制于这样的细节。额外的优点和修改对于本领域技术人员而言将是显而易见的。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1