电路保护系统和方法转让专利

申请号 : CN201580053627.6

文献号 : CN107111727B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·吉耶T·波特伯夫J-L·当热

申请人 : 智能IC卡公司

摘要 :

本发明提出了一种与包括基本布尔变量的电路的结构描述相关联的布尔电路的保护方法,每个基本布尔变量由一位表示,该方法包括以下操步骤,所述步骤在于:‑根据预定义的选择标准来选择电路的k个基本布尔变量的集合,‑通过根据选定的顺序对k个所选择的变量进行级联来构造由k位表示的变量x,‑根据与二进制码C的补码D的对偶距离有关的条件来确定二进制码C以及二进制码C的补码D,二进制码C包括一组代码字并属于给定的向量空间,二进制码C具有长度n和大小2k,其中k指示表示所述变量x的位数;‑用由n位表示的受保护的变量z来代替布尔电路的结构描述中的变量x,从而:‑用写入变量z的操作来代替写入电路中的变量x的任何操作,通过对将所述代码C编码的变量x加到由补码D编码的随机位向量y来生成变量z,以及‑用读取受保护的变量z的值的操作和使用大小为(n×k)的解码矩阵J来对所述受保护的变量z的读取值进行解码的操作,来代替读取电路中的变量x的任何操作,该大小为(n×k)的解码矩阵J由二进制码C和二进制码C的补码D来确定。

权利要求 :

1.一种用于布尔电路(11)的保护(100)的方法,所述布尔电路(11)与包括基本布尔变量的电路的结构描述相关联,每个所述基本布尔变量由一位表示,所述方法包括以下步骤,所述步骤在于:-根据预定义的选择标准来选择所述电路的k个基本布尔变量的集合,

-通过根据选定的顺序对所选择的k个基本布尔变量进行级联来构造由k位表示的变量x,

-根据与二进制码C的补码D的对偶距离有关的条件来确定所述二进制码C以及所述二进制码C的所述补码D,所述二进制码C包括一组码字并属于给定的向量空间,所述二进制码C具有长度n和大小2k,其中,k指示表示所述变量x的位数;

-用由n位表示的受保护的变量z来代替所述布尔电路的所述结构描述中的所述变量x,从而:

-用写入所述受保护的变量z的操作来代替写入所述电路中的所述变量x的任何操作,通过将由所述二进制码C编码的所述变量x加到由所述补码D编码的随机位向量y来生成所述受保护的变量z,以及-用读取所述受保护的变量z的值的操作和使用大小为(n×k)的解码矩阵J来对所述受保护的变量z的读取值进行解码的操作,来代替读取所述电路中的所述变量x的任何操作,所述大小为(n×k)的解码矩阵J由所述二进制码C和所述二进制码C的所述补码D来确定。

2.根据权利要求1所述的方法,其特征在于,选择所述基本布尔变量的步骤包括选择具有不同用途的基本布尔变量。

3.根据权利要求1所述的方法,其特征在于,所述二进制码C是包括大小为k×n的生成矩阵G的线性码,所述大小为k×n的生成矩阵G用于根据关系式xG对所述变量x的状态进行编码,并且其特征在于,所述补码D包括大小为(n-k)×n的生成矩阵H,所述大小为(n-k)×n的生成矩阵H用于根据关系式yH对随机位的所述向量y进行编码,所使用的所述矩阵J由所述二进制码C的所述生成矩阵G和所述补码D的所述生成矩阵H来确定。

4.根据权利要求3所述的方法,其特征在于,所述方法包括步骤(312),所述步骤(312)在于:通过判断与所述随机位向量有关的条件是否被验证来检测注入到所述受保护的变量z中的故障,如果所述随机位向量y不同于所述受保护的变量z的所述读取值并且所述随机位向量y由大小为n×(n-k)的解码矩阵K进行解码,则所述条件被验证,所述矩阵K由所述二进制码C和所述补码D来确定。

5.根据权利要求4所述的方法,其特征在于,所述解码矩阵K由所述二进制码C的所述生成矩阵G和所述补码D的所述生成矩阵H来确定。

6.根据权利要求4所述的方法,其特征在于,所述解码矩阵J和/或所述解码矩阵K由以下关系式来确定:

其中,G指示所述二进制码C的所述生成矩阵G,并且H指示所述补码D的所述生成矩阵。

7.根据权利要求4所述的方法,其特征在于,由所述补码D编码的所述随机位向量y进一步由维度大于或等于n-k的码E进行编码并产生大小为m的字,所述码E与解码矩阵M和编码矩阵L相关联,所述码E还与补码F相关联,所述补码F具有编码矩阵P和与所述码E的控制矩阵相对应的解码矩阵N,所述随机位向量y以与由所述码E对所述随机位向量进行编码相对应的y'的形式进行存储。

8.根据权利要求7所述的方法,其特征在于,对注入到所述受保护的变量z中的故障进行检测的步骤包括验证与对所述随机位向量y的故障测试有关的条件,如果取决于所述受保护的变量z的所述值和所述解码矩阵K的量zK不同于量y'M,则与所述故障测试有关的所述条件被验证,其中,y'指示由所述码E编码的所述随机位向量y,并且M指示与所述码E相关联的所述解码矩阵。

9.根据权利要求8所述的方法,其特征在于,对注入到所述变量y'中的故障进行检测的步骤包括验证与所述随机位向量y'有关的条件,如果量y'N不为零,则与所述随机位向量y'有关的所述条件被满足。

10.根据权利要求7和8中的任一项所述的方法,其特征在于,所述码E等于所述二进制码C的所述补码D,并且其特征在于,所述码E的所述补码F等于所述二进制码C,继而已编码的变量y'的大小为n-k并等于y.H。

11.根据权利要求7和8中的任一项所述的方法,其特征在于,所述码E等于所述二进制码C,并且其特征在于,所述码E的所述补码F等于所述二进制码C的所述补码D,(n-k)位的所述变量y被变换为k位的变量yk,并且已编码的变量y′的大小为n并等于ykG。

12.根据前述权利要求1至8中的任一项所述的方法,其特征在于,预先生成选定的码和所述补码,以满足与相对于目标值的所述补码的所述对偶距离的值有关的主要安全条件。

13.根据权利要求12所述的方法,其特征在于,预先生成选定的码和所述补码,以满足与所述二进制码C的长度n有关和/或与选定的二进制码C的最小距离dC有关的次要安全条件。

14.根据权利要求12所述的方法,其特征在于,预先产生选定的码和所述补码,以满足与量 有关的次要安全条件。

15.一种包括布尔电路(11)的电路保护系统(100),所述布尔电路(11)与包括基本布尔变量的结构描述相关联,每个所述基本布尔变量由一位表示,所述基本布尔变量包括根据预定义的选择标准而预选择的k个基本布尔向量变量的集合,在所述电路中包括保护元件的所述系统被配置为:用由n位表示的受保护的变量z来代替由k位表示并通过根据选定的顺序对预选择的所述k个基本布尔向量变量进行级联而构造的变量x,所述保护元件包括:-如下配置的电路元件:通过将由预确定的二进制码C编码的所述变量x与由所述二进制码C的补码D编码的随机位向量相加,来用写入所述受保护的变量z的操作替换写入所述变量x的任何操作,所述二进制码C包括一组码字并属于给定的向量空间,所述二进制码C具有长度n和大小2k,其中,k表示用于表示所述变量x的位数,以及-如下配置的电路元件:用读取所述受保护的变量z的值的操作和使用大小为(n×k)的矩阵J来对所述受保护的变量z的读取值进行解码的操作来替换读取所述变量x的任何操作,所述矩阵J由所述二进制码C和所述补码来确定,根据与所述补码D的对偶距离有关的条件来预确定所述二进制码C。

说明书 :

电路保护系统和方法

技术领域

[0001] 本发明总体上涉及电子电路,并且更具体地涉及用于保护这种电子电路的系统和方法。现有技术
[0002] 制造电子组件需要极其复杂的工艺。此外,制造这种组件需要复杂且昂贵的基础设施,例如用于制造通常由硅组成并使用掩模的这些电子组件的电子电路的代工型工厂。特别地,已经观察到电子组件的技术越发达,制造它们所需要的工厂数量越少。继而,小数量的这种工厂必须以强约束运转(举例来说,例如可用性和生产能力限制),以便能够处理交付给它们的不同类型的电子组件。继而,变得难以选择特定的代工厂。为了通过使这些约束(例如在延迟方面)最小化来优化电子组件的制造成本,可能需要在其它地理区域中制造组件。在一些技术行业中,这种选择可能受到由代工厂提供的缺少或保证的限制,并且具体而言不可能确保代工厂操作人员在制造电子组件的背景下没有恶意。例如,难以检查代工厂是否进行以下操作:
[0003] -生产比所要求的样本更多的样本,以便将其在灰色市场(这是被称为过度生产的概念)上销售;
[0004] -复制电子组件的蓝图,以便将其转售;
[0005] -在制造电子电路之前对其蓝图进行修改(称为仿造)。
[0006] 对电子电路进行修改是尤其敏感的威胁。很多动机可能导致代工厂恶意地修改这些蓝图,举例来说,例如:
[0007] -使得电路有意地比竞争对手的电路表现得差;
[0008] -插入“后门”,以便提供远程访问或简单地以谨慎的方式过滤掉信息;
[0009] -插入能够远程销毁组件的逻辑单元(被称为终止开关)。
[0010] 对电子电路的这种恶意修改通常被称为硬件特洛伊木马。特洛伊木马包括两部分:
[0011] 1、激活部分(触发器),其监视电路的状态以从中推断出用于触发特洛伊木马的条件,以及
[0012] 2、动作部分(有效载荷),其在触发之后执行恶意动作。
[0013] 为了执行其恶意动作,特洛伊木马必须同时访问包括触发器和有效载荷的两个功能部分。
[0014] 引申开来,特洛伊木马设陷所涉及的ASIC(专用集成电路)和FPGA(现场可编程门阵列)配置文件的掩模与处理器二进制机器码一样多。
[0015] 有两种经典的方法用来对抗特洛伊木马。第一种方法或主动方法在于预防插入,而第二种方法或被动方法在于检测插入。
[0016] 被动方法是缓解的解决方案,因为该方法基于特洛伊木马事实上已经成功地被引入到电路中的假设。该方法的可靠性也难以量化。
[0017] 事实上,可能会出现误报(false positives)(检测到实际上不存在的特洛伊木马)和漏报(false negatives)(未检测到实际上存在的特洛伊木马,例如如果其足够谨慎)。
[0018] 同样可能的是,在有特洛伊木马的情况下制造相同电子组件的一些样本,而在没有特洛伊木马的情况下制造电子组件的其它样品,这是可能的,例如,如果全部的掩模仅用于一个或几个仿造管芯。如果检测测试不是穷尽的,而是以个案为基础进行应用(这种方法被称为筛查),则被感染的样品有可能绕过过滤器。
[0019] 一些现有的检测方法直接内建在组件上:这继而被称为监视器。对组件进行完全逆向设计并验证蓝图的完整性也是可能的,例如在Randy Torrance和Dick James.的“The State-of-the-Art in IC Reverse Engineering,In CHES,volume 5747of LNCS,pages 363-381.Springer,September 6-9 2009.Lausanne,Switzerland”中所描述的。然而,如果电路包含几百万个门(这使得该方法非常昂贵),则可以证明通过对组件进行逆向设计的这种研究特别冗长且复杂。
[0020] 其它已知的检测方法使用逻辑测试,举例来说,例如在M.Bang和M.S.Hsiao.的“ODETTE:A Non-Scan Design-for-Test Methodology for Trojan Detection in ICs.In International Workshop on Hardware-Oriented Security and Trust(HOST),IEEE,pages 18-23,2011”中所描述的方法。这篇文章描述了总是被激活的逻辑链(类似于扫描链)的产生,因为当采用双相输出 时,其被连接到锁存器D的Q输出,反之亦然。这种检测方法使得有可能具有相关的两个功能(所需要的功能,以及验证功能)。因此,可以经由验证功能来检测对电路规格的修改。还提出了物理观察技术,例如描绘或测量将暴露特洛伊木马的存在的物理量(在逻辑路径、电磁发射、光子发射等中的传播时间)。在这样的方法中,为了获得令人满意的检测能力,需要具有可用的健康参考样品以执行差异测量,这使得该方法更加复杂且昂贵。
[0021] 通过预防插入,主动方法使得有可能补救消极方法的一些缺点。已经提出了用于预防特洛伊木马插入的各种解决方案。一种已知的预防解决方案在于使用仅给予代工厂关于电子组件的信息的一部分的设计过程,该部分被充分地限制以防止黑客设计有用的特洛伊木马,举例来说,例如:
[0022] -在于以下操作的过程:在给定代工厂中制造组件的一部分,然后在另一个代工厂中制造该组件的其它部分(该方法被称为划分代工厂);
[0023] -基于使用可编程存储器(例如FPGA类型的可重配置区域或存储器)来实现组件的一些部分的方法,这使得有可能在制造之后对关键组件进行编程,而不将其公开给代工厂(Jarrod A.Roy、Farinaz Koushanfar和lgor L.Markov.的“EPIC:Ending Piracy of Integrated Circuits.In DATE,pages 1069-1074.IEEE,2008”)。
[0024] 然而,使用两个代工厂特定于制造用于ASIC(专用集成电路)类型的专用电路的掩模,导致高物流成本并降低生产效率。
[0025] 此外,尽管使用在制造之后配置的存储器使得有可能提供取决于密钥的功能,但是这导致高附加成本:可以估计FPGA类型的可再编程面积比专用区域大40倍。此外,对于正确的密钥来说,电路假定功能语义。因此,该方法不受电子电路的部分结构(被称为网表)的静态分析的保护。已经开发了强大的工具(例如,SAT-solvers和SMT)来解决这样的布尔问题。不同于加密密钥(没有一个是有区别的),在理论上,相同的密钥不适用于在其制造期间采用从组件中减去信息的对策。此外,这种保护是静态的,即一旦组件已经被定制,就无法防止黑客探测缺失的配置。
[0026] 另一种预防解决方案在于实现高密度放置,这使得难以插入大型特洛伊木马(Shivam Bhasin、Jean-Luc Danger、Sylvain Guilley、Xuan Thuy Ngo、和Laurent Sauvage的“Hardware Trojan Horses in Cryptographic IP Cores.In Wieland Fischer and -Marc Schmidt,editors,FDTC,pages 15-29.IEEE,2013”)。
[0027] 尽管基于增加放置密度的这种解决方案使得插入大型特洛伊木马更加复杂,但是实际上,除了这种解决方案以外黑客也有可能生产足够强大的特洛伊木马并将其插入目标电路中。
[0028] 如美国专利US 7994042 B2中所描述的,另一个预防解决方案基于混淆操作,例如导致复杂布线(被称为Spaghetti布线)或伪装的门的混合。
[0029] 这些预防技术基于使用手动设计或者自动设计,例如使用专用于设计电子电路的CAD(计算机辅助设计)工具(被称为电子设计自动化(EDA))。可以引导这样的工具(例如,经由脚本)以实现这样的保护。此外,这样的工具适合于设计ASIC(专用集成电路)型专用电路掩模。还存在用于设计FPGA(现场可编程门阵列)类型的可重配置电路的配置文件(比特流)和在处理器上运行的软件的二进制程序的类似工具。
[0030] 然而,这种特洛伊木马插入预防技术证明是昂贵的和/或相对无法证实的。事实上,混淆(例如,白盒加密)本质上是固有地不可证实的。

发明内容

[0031] 本发明通过提出如权利要求1中所限定的布尔电路保护方法和如权利要求15中所限定的电路保护系统来对所述情形进行改进。在权利要求1至14中描述了一些优选实施例。
[0032] 因此,本发明的各种实施例使得有可能补救间谍和/或电路修改的任何企图,以提供相对低成本的解决方案,该方案可以通过修改逻辑综合(源码编译)阶段的结果来实现,而不影响整体技术架构。本发明的各种实施例还通过借助使用关于每个时钟事件更新的随机数来提供可证明的且动态的解决方案。

附图说明

[0033] 鉴于以下描述和附图,本发明的其它特征和优点将变得显而易见,在附图中:
[0034] -图1是根据某些实施例的电路保护系统的图示;
[0035] -图2是示出了对来自两个互补向量空间的数据进行编码的示图;
[0036] -图3是表示根据某些实施例的保护方法的流程图;
[0037] -图4是表示根据保护用于启动电路的变量的某些实施例的方法的流程图;
[0038] -图5是表示根据某些实施例的故障检测方法的流程图;
[0039] -图6表示由根据第一实施例的保护系统所保护的电路;
[0040] -图7表示由根据具有故障检测的第二实施例的保护系统所保护的电路;
[0041] -图8表示由根据具有故障检测的第三实施例的保护系统所保护的电路;
[0042] -图9表示由根据具有在另一空间中实现的故障检测、验证的第四实施例的保护系统所保护的电路;
[0043] -图10是表示根据某些实施例的码生成方法的流程图;
[0044] -图11示出了通过应用保护方法来保护向量信号类型变量的电路变换;
[0045] -图12示出了通过应用保护方法来保护时序逻辑门类型变量的电路变换;
[0046] -图13示出了通过应用保护方法来保护线性组合门类型变量的电路变换;
[0047] -图14表示根据以结构级进行表示的电路来构造向量布尔变量的示例;以及[0048] -图15表示根据具有异构语义的信号来构造全局变量的示例。

具体实施方式

[0049] 图1以图解的方式示出了根据用于保护电子电路11的某些实施例的保护系统100,以旨在保护电路11。
[0050] 保护系统100包括可变保护设备10,可变保护设备10包括一组电路保护元件,所述一组电路保护元件被配置为保护电子电路11的一个或多个变量,以便于预防恶意电路(例如,特洛伊木马)插入到电路11中。保护系统100还可以包括故障检测器12,故障检测器12包括一组检测电路元件,所述一组检测电路元件被配置为检测由恶意电路(例如,特洛伊木马)注入的故障以完成对电路的保护,例如在不能预防恶意电路的插入并由此妨碍恶意电路起作用的情况下。
[0051] 应当注意,图1的表示是有助于理解本发明的图解表示。实际上,通过与电路的某些组件组合,可以直接对电路11实施可变保护设备10的元件和系统100的检测器12的元件。
[0052] 电路11是由二进制结构描述生成的布尔电路,其中电路的变量由基本布尔变量表示,每个基本布尔变量由一位表示。
[0053] 举例来说,电路11可以是任何类型,例如ASIC、FPGA或CPU类型的电路。
[0054] 例如,布尔电路可以是同步数字电路,其时序元件由同一个时钟来定时。关于每个时钟事件(例如,每个上升时钟沿),时序元件(例如,锁存器)对它们的输入进行采样,因此可以将该输入复制到它们的输出,并且在这之后在下一个时钟脉冲上被重新采样之前由组合元件进行处理。在变型的实施例中,可以存在将一组时序元件和组合元件组合在一起的多个时钟域。
[0055] 借助于非限制性示例,本说明书的其余部分主要涉及这样的同步数字电路。
[0056] 这样的电路11可以包括一组逻辑门12,一组逻辑门12有可能被分为两类(逻辑门12在图1中以图解的方式表示):
[0057] -时序门120,其存储电路的状态(在表示电路的框图中通常用一面上具有小三角形的框(例如,矩形)来表示),以及
[0058] -组合门122,其执行中间计算:从中间计算得到的值不被本地存储,而是被传输到时序门。特别地,由组合门实施的组合逻辑通常专用于两种用途,即对数据进行计算和对计算进行检查。
[0059] 如本身所已知的,由线来连接逻辑门,信号在该线上传送。电路11的各种逻辑门之间的连接可以由逻辑门互连图(网表)来表示。存储在时序门中的变量对应于门的输出线可以输送的变量。
[0060] 因为时序门包含电路的有用信息(例如,加密密钥、标识符等),所以特洛伊木马实质上以时序门为目标。
[0061] 时序门(下文也被称为时序资源或寄存器)通常可以包括诸如锁存器的存储点,但同样可以包括存储器(SRAM、FLASH等)。
[0062] 此外,通过进行显微观察可在电路中容易识别时序门,因为时序门通常具有特定形状(例如,锁存器比组合门大得多),并且时序门在电路的特定区域中组合在一起(与总线相对应,术语总线指示作为一个或多个字节进行均匀处理的一组位)。
[0063] 此外,时序门比组合门更容易理解。实际上,时序门以少数存在并在连接的区域中组合在一起,而组合门非常多,结果是理解它们的作用是复杂的(基于需要语义解释的函数抽象)。
[0064] 如本说明书中所使用的,术语变量指示能够输送数据并与读取数据和写入数据的操作相关联的容器。例如,该定义可以对应于电路11的门或一组时序逻辑门。类似地,可以由术语变量指示电路11的线或一组线,在大多数情况下通过分别测量和修改由一条或多条线输送的电压电平来实现读取和写入。
[0065] 在下文中存储在时序门中的电路的变量指示时序变量。因此,时序变量表示包含在时序资源(时序门)中的数据项,即存储的数据。这种时序变量存储计算的状态,并且它们在电路中的作用特别容易解释。此外,因为寄存器和存储器的大尺寸和它们的特性形状,所以它们是最容易识别的逻辑门。因此,时序资源的数量对应于时序变量的数量。
[0066] 特洛伊木马是被配置为出于恶意目的而连接到源电路11(主机)的信号以从主机读取和写入数据的电路(时序门和组合门的集合)。读取用于触发特洛伊木马,而写入用于激活有效载荷。
[0067] 例如,特洛伊木马可以被配置为仔细检查电路11的输入以检测对应于其激活的特定数据(或特定数据序列)。继而特洛伊木马可以将故障注入到主机系统或者通过将包含敏感数据的寄存器连接到电路11的输出寄存器来过滤掉信息。
[0068] 根据本发明的保护系统100使得能够对主机11的至少一个清除变量(例如,对应于电路的信号或时序门)进行修改,从而对诸如特洛伊木马之类的任何恶意电路隐藏其含义。如本文所使用的,表达清除的变量指示任何不受保护的变量。因此,任何清除变量使得特洛伊木马能够受益于连接到该变量以用于使其攻击成功,即经由其触发器部分来读取它的值并经由其有效载荷执行部分来写入另一个值。
[0069] 制造电路的过程包括多个连续阶段,其包括以下初步阶段:
[0070] -对电路(硬件和软件)进行建模的阶段,其中以非常高的水平对电路进行建模,以便于在性能方面相对于应用约束来验证所选定的架构;
[0071] -高级语言描述阶段(在建模阶段验证了架构之后),其中采用时序元件(寄存器、锁存器)和组合逻辑元件的形式、以寄存器传输级(RTL)来描述电路的实施方式,时序元件和组合逻辑元件与时序元件的输入/输出与电路的主要输入/输出之间的组合相对应;使用高级编程语言(例如,RTL等)对该描述(被称为行为描述)进行编码;
[0072] -逻辑仿真阶段,其用于使用仿真器对描述进行仿真。仿真器根据之前描述的输入刺激及时仿真每个互连信号。如果电路包括处理器,则仿真可以包括对与电路的处理器相关联的可执行程序进行仿真;
[0073] -可以被实施为对仿真进行补充的功能验证阶段,该阶段尤其对更长的操作进行仿真,以使用基于通过断言而建模的语言对电路必须验证的功能性质进行定义来加速仿真并获得更完整的结果。可以或者在具有结果相对于参考模型的自动验证的随机刺激发生器的基础上实施功能验证,或者使用形式化功能验证工具来实施功能验证;
[0074] -逻辑综合阶段,其中基于针对制造电路的目标技术和/或代工厂的逻辑门库(例如与门、或门、锁存器等)来改善电路的行为描述,以产生处于逻辑门(网表)级的结构描述。逻辑综合可以考虑各种操作约束。可以借助于EDA工具来实施逻辑综合,EDA工具被配置为以高级语言形式将行为描述变换成以通用形式描述组合和时序逻辑元件的通用结构描述(独立于逻辑门库),继而用来自逻辑门库的元件代替它们,以便满足相对于时间约束(例如,电路操作频率)和空间约束(硅的尺寸)的与电路特性(例如,电路的逻辑路径)有关的条件。如果所选择的元件不满足约束,则综合工具可以对库中的其它门进行测试。在逻辑综合之后,以选定的格式(例如,Verilog、VHDL、EDIF)来获得计算机文件(对应于结构描述)。该文件表示库中的门的例示及其互连,其表示电子电路(网表)。这样的表示仅包括均由1位表示的布尔变量。
[0075] 然后可以在工厂(代工厂)中制造电路。
[0076] 保护电路或程序的经典方法基于由以高级语言形式来描述电路或程序的开发人员来利用其行为描述。因为去除了变量的表示和处理,所以这样的行为描述通常相对简洁。可以容易地理解变量,因为行为描述不仅提供变量的值,而且提供其含义。因此,在经典方法中,开发人员可以语义地对变量进行解释,以便具有对码的智能掌握。
[0077] 更准确地说,在对行为描述进行手动分析之后,常规电路保护解决方案以字节(8位向量)级单独保护每个自然变量。这样做的结果是,使用具有长(最小的和对偶的)距离的码和/或大长度的码是非常困难的,结果是用于保护自然变量的码不是最佳的。另外地,常规解决方案旨在选择性地保护特定类别的信号(例如存储数据的时序信号),而非用于检查数据的时序信号。
[0078] 然而,实际上,以行为描述级应用保护具有若干缺点:
[0079] -变量被单独保护,结果是要保护的电路的语义而非安全目标对保护进行指导,[0080] -举例来说,诸如处于AES(高级加密标准)加密算法状态中的一些变量是非常短的(仅k=8位),这损害了码的质量和有效性,
[0081] -可以从保护步骤中省略一些隐性变量,例如循环计数器。
[0082] 与行为描述不同,结构描述不会使得将任何含义赋予布尔变量,该布尔变量可能是在简化、变量之间的融合之后而获得的并且其表示不直观。
[0083] 然而,发明人已经基于电路的结构描述开发了电路保护系统和方法。
[0084] 更准确地说,保护系统100被配置为在逻辑综合阶段之后对电路的结构描述进行修改,以便通过将电路元件(可变保护元件10)直接插入到电路中来将一个或多个变量转换为受保护的一个或多个变量,在制造电路之后这些元件有可能对受保护变量的变化进行控制。在一些实施例中,保护系统100还被配置为插入电路元件,该电路元件被配置为检测注入到电路(故障检测元件12)中的故障。
[0085] 然后,利用这种保护元件(可变保护元件和适用的故障检测元件)来制造电路,这种保护元件用于对受保护变量的状态进行更新和/或用于根据时钟事件进行故障检测。
[0086] 在逻辑综合阶段中,根据本发明的保护系统100被配置为根据预定义的标准来选择电路的结构描述的k个基本布尔向量变量(在下文中也被称为基本变量)的集合,在预定义的选择标准的基础上每个变量由1位表示。继而,通过在k位的向量中以选定的顺序来级联所选的基本变量,所选的k个基本变量用于构造长度为k(即,由k位表示)的全局变量x。然后通过对大小为k的清除变量x的内容进行编码并使用随机位向量来保护该清除变量x,这会产生受保护的变量z。级联k个变量的顺序可以是任意的。其可以被存储以在读取受保护变量z(由于保护布尔向量变量x而产生)和/或写入受保护变量z的阶段中使用。
[0087] 更准确地说,在长度为n并且大小为2k(k对应于变量x的大小)的二进制码C的基础上保护系统100对长度为k的变量x进行编码,生成随机位向量并利用向量空间中的码C的补码D对其进行编码,该二进制码C包括一组字并属于向量空间。码C具有等于码的两个不同字之间的最短汉明距离的给定最小距离dC。在这之后,在将以码D的编码形式的随机位向量y与由码C编码的变量x相加之前,保护系统100通过码D对随机位向量y进行编码,这会产生代替不受保护的变量x的由n位表示的受保护的变量z。随机位向量包括一组随机的不可预测的位。电路的原始变量x被受保护的变量z代替,写入x的操作本身也被新的操作代替,新的操作在于:首先通过码C对x进行编码,通过码D对随机位向量y进行编码,组合以这种方式获得的两个码字并将结果写入变量z。类似地,读取x的操作被新的操作代替,新的操作读取z并且在这之后进行解码以检索原始变量x。在保持相同的读取和写入数据(在不受保护的电路中由x输送)方面的功能的同时,这些新的操作符使得可以用受保护的变量z来代替变量x。为了对变量x进行编码和解码而确定的可变保护元件被插入到电路的结构描述中。在下文中描述了编码操作符和解码操作符的选择。在制造电路11之后,这些可变保护元件用于根据时钟事件来更新受保护的变量的状态。
[0088] 此外,保护系统100被配置为确定要插入到电路中的故障检测元件,以阻止对触发的正确操作和对引入到受保护的电路11中的特洛伊木马的有效负载的执行。
[0089] 在制造电路之后,故障检测元件用于对电路进行监控,并且一旦在电路11中检测到故障就触发警报。
[0090] 关于每个时钟事件,理论上清除变量x改变状态。此外,随机位向量生成器尤其是随机数的生成器,其适于针对每个时钟事件(例如,每个时钟上升沿)更新随机位向量y。继而,变量z进入下一个状态。
[0091] 例如,当在电路(所制造的电路)的操作模式下应用于信号类型变量时,可变保护元件10被配置为在随机位向量的新的值的基础上对受保护变量z进行更新,并且然后可以应用解码操作。当应用于存储在逻辑门中的变量时,保护系统100应用码C,在门的输入处加上已编码的随机位向量,并且然后在门的输出处应用解码器。
[0092] 因此,不再可能对k位的不受保护的变量x进行访问。因此,如果仅对z的某些位实现连接,则系统100确保到受保护的变量z(信号值或者存储在时序逻辑门120中的值)的任何连接都不公开关于其内容的信息(特洛伊木马插入预防功能)。
[0093] 在某些实施例中,可以预先生成码C及其补码D,以便满足与补码D的对偶距离有关的第一安全条件。
[0094] 二进制码D的对偶码D┴包含与D的码字正交的所有码字,这表示D的码字和D┴的码字的数量积等于零。当码D是线性的时,补码D的对偶距离对应于D的对偶码的最小距离(表示为dD┴)。
[0095] 基于候选二进制码的数据库,第一安全条件可以特别地定义码D的对偶距离的预定义的目标值,而码C被确定为使得其大小至少等于所选择的电路的变量的数量k并且与码D互补。当码D不是线性的时,对偶距离概念与更一般的定义相关联。
[0096] 以补充的方式,可以确定码C和码C的补码D,以便满足与码C的长度n和/或码C的最小距离dC有关的次要安全条件。
[0097] 此外,可以预先确定码C和补码D,以便满足与量 有关的次要安全条件。
[0098] 在以目标对偶距离(表示为 )为基础计算码C的实施例中,针对由诸如特洛伊木马的恶意电路的触发或有效载荷注入操作来优化电路11的保护。如发明人所确立的,选择这样的码的效果是,试图解扰电路11以检索其功能以便在变量(信号和/或门)中识别那些敏感的(并且因此对特洛伊木马有兴趣)变量的任何攻击电路都不能插入木马,除非它连接到至少等于C的补码D的对偶距离(表示为 )的电路的若干线路,以消除随机位的影响并且因此能够出于触发目的使用清除位。
[0099] 实际上,对于均匀分布的掩码y和对于具有对偶距离 的D,如果其由位组成,则坐标为yH的任何元组都是平衡的(A.Samad Hedayat,Neil 
James Alexander Sloane,and John Stufken.Orthogonal Arrays,Theory and Applications.Springer series in statistics.Springer,New York,1999.ISBN 978-0-
387-98766-8)。因此,黑客探测的变量z的 位被Vernam数(即,不可预测的一次性掩码)掩蔽。
[0100] 然而,对于连接到这样数量 的线路的进行攻击的攻击系统来说,特洛伊木马将必须具有大尺寸,并且因此可以通过经典可视化或边缘效应分析装置(过量消耗等)来对其进行识别。
[0101] 特别地,用于对变量进行编码的码C可以是线性码C。通过非限制性示例的方式,本说明书的其余部分涉及有限体 的向量子空间类型的线性二进制码的使用,并且涉及时序变量类型的变量(取决于先前计算并存储在存储器中的值的变量,例如受保护的电路11的寄存器和/或存储器输出变量)。
[0102] 码C的特征在于参数n、k以及dC使得:
[0103] -n指示码的长度,
[0104] -k指示有效载荷位的数量(在编码之前),也被称为维度,以及
[0105] -dC表示在编码的两个不同字之间的最小汉明距离。
[0106] 码C的效率r指示比率r=k/n。经由码的效率r(效率被定义为k对n的比r,r=k/n)来测量与编码相关联的超额成本。效率越高,超额成本越低。现在,效率r与码的长度和/或大小成比例(根据Claude Shannon源编码定理)。因此,如果效率高(以给定距离dC),则n位的码字不比k位的信息字长多少,并且因此该码是高效的。因此,通过聚集大量位来获得对向量变量的保护有利于减少实施的超额成本。
[0107] 最小距离dC可以被选定为足够大,以使得编码能够通过允许参数n和k增长来对故障进行检测和/或校正。本说明书的其余部分主要考虑故障的检测。
[0108] 根据以下等式1,线性码C与大小为k×n的生成矩阵G相关联,使得有可能根据是布尔向量变量的k位的变量x(k位的字)来生成n位的码字c:
[0109] c=xG   (等式1)
[0110] 这种表示法使得有可能通过具有生成矩阵G的码C来表示变量x的编码,这给出了码字c。
[0111] 根据以下等式,码C的补码D使得完整空间 对应于码C和码D的直和:
[0112]
[0113] 然后可以通过以线性方式并且以唯一形式来组合C和D的字来表示主体 的所有元素。码D的生成矩阵被表示为H。矩阵H的大小为(n-k)×n。以以下方式借助于C和D相应的生成矩阵G和H来表示C和D之间的互补性质:
[0114] 大小为n×n的矩阵 具有最大秩n,即它是可逆的。
[0115] 借助于将yD与y相关联的线性应用的图像而获得码D的元素由d指示,d由以下等式2给出:
[0116] d=yH   (等式2)
[0117] 其中 且
[0118] 这样的表示法使得有可能通过具有生成矩阵H的码D来表示向量y的编码,这会产生码字d。
[0119] 因此,主体 的任何元素z可以被写为:
[0120]
[0121] 根据本发明的可变保护设备100依赖于这种性质来将随机值注入到k位的变量x中,并且实施用写入z的操作符来代替写入x的原始操作符。因此,可变保护设备10被配置为基于使用由yH表示的随机掩码的元素z的信息来阻碍/阻止旨在提取变量x的攻击。
[0122] 可以根据生成矩阵G和H以及随机位向量y的信息以组合逻辑的方式对被植入电路中的受保护的变量z进行解码。事实上,可以根据以下形式重写等式3:
[0123]
[0124] 上述关系式可以如下重写:
[0125]
[0126] 然后使用以下表示法:
[0127] 其中J指示大小为n×k的矩阵,并且K指示大小为n×(n-k)的矩阵。
[0128] 在受保护的变量z、J和K的定义以及因此G和H(等式4)的定义的基础上,可以根据等式5和等式6推导出x和/或y以及z的对应值:
[0129] x=zJ   (等式5)
[0130] y=zK   (等式6)
[0131] 等式5和等式6对应于解码操作,其使得有可能分别重构x和y的值,并执行代替读取x的原始操作的读取z的操作(以z对x和y进行编码是可逆的)。矩阵J表示与编码矩阵G相关联的解码矩阵。类似地,矩阵K表示与编码矩阵H相关联的解码矩阵。注意,借助于矩阵的唯一逆来验证以下显著的等式关系:
[0132]
[0133] 其中
[0134] GJ=Ik;
[0135] GK=Ok×(n-k);
[0136] HJ=O(n-k)×k;
[0137] HK=In-k。
[0138] 在上述等式中,对于l∈k,n-k(因此l=k或l=n-k)的Il指示等于单位矩阵的大小为l×l的方阵,并且Ok×(n-k)指示大小为k×(n-k)的矩形矩阵,其所有输入为0。
[0139] 图2示出了k位的变量x(有效载荷)、(n-k)位的掩码y以及n位的受保护的变量z(经过编码和掩码的数据)之间的关系。
[0140] 该图示出了由根据对偶距离dD┴确定的二进制码C对清除变量x进行编码,然后与掩码(码字yH)相加并存储在n位的寄存器z中。以这种方式,除非对应于D的对偶距离(表示为 )的至少若干位被特洛伊木马读取,否则黑客只能访问受保护的值z,其不能泄露关于k位的变量x(与电路的结构描述的原始的k个清除变量相对应)的有用信息。
[0141] 向量空间D┴与大小为k×n的生成矩阵H'相关联,使得有可能根据k位的字y'来生成n位的对偶码字d':
[0142] d'=y'H'   (等式7)
[0143] 二进制码D的对偶码D┴包含与D的码字正交的所有码字(即,D的码字与D┴的码字的数量积等于零)。
[0144] 这种正交性质在编码生成矩阵上表示为:
[0145] HH'┬=0,其中H'┬指示H'的转置矩阵。
[0146] 汉明加权函数(被表示为wH)指示返回在位向量中设定的位数的函数。
[0147] 正式来说,码C的最小距离dC由以下公式给出:
[0148]
[0149] 码C的对偶距离被表示为 码C的最小对偶距离 由以下关系式给出:
[0150]
[0151] 在以上关系式中,表示法c'.c指示两个位向量c'和c的正则数量积(canonic scalar product)。
[0152] 注意,两个正交线性码的对偶距离的最小距离验证以下等式8:
[0153]
[0154] 考虑一种情景示例,其中黑客试图插入接触电路的多条线路的特洛伊木马,或者借助于咨询以触发特洛伊木马或者借助于修改以执行其有效载荷。如上所述,基于安全特性预防特洛伊木马的触发器部分(如果有的话)的插入,借此如果黑客探测到给定变量z的最多 行,则黑客无法访问关于x的信息(如果掩码y均匀分布(性质1))。
[0155] 因此,码D的对偶距离 表示安全参数,其可以定义:
[0156] -特洛伊木马的输入/输出的最小数量,其使得特洛伊木马的触发器部分能够对电路的清除信息进行解码,
[0157] -探测平台的点的最小数量,黑客必须利用该探测平台来提取包括清除数据的信息,
[0158] -侧-信道攻击的最小顺序。从受保护的变量z提取随机掩码(等式6)不可能向黑客提供清除信息。然而,黑客可能仍然希望将错误注入到变量z的内容中,以便经由对z进行解码来传播错误x。
[0159] 然而,在一些实施例中参数y可以用于检测故障注入攻击的存在,故障注入攻击由特洛伊木马的有效载荷引起,或者由关于将向量y与zK进行比较的外部注入(时钟、电压毛刺、激光发射等)引起。
[0160] 实际上,故障检测器12可以确定是否满足关系式y=zK(验证或测试),并且根据该验证来检测由恶意电路(到部分电路的连接)进行的攻击的存在,不管这是经由特洛伊木马的有效载荷的内部攻击还是经由物理注入干扰的外部攻击。
[0161] 如果故障被注入到具有故障ε的码C的码字c=xG中,则可以以的形式分解所产生的错误码字。通过应用矩阵K,根据先前所述的关于矩阵G、H、J以及K的显著的标识获得以下关系式: 数据εK对应于校验子(syndrome)并且可
以在解码步骤中使用以对信息进行校正。
[0162] 这种测试的可靠性基于如下性质:如果黑客利用均匀分布的故障 来篡改变量z的状态,则它们将导致其自身被检测到的概率是: (性质2)。
[0163] 以补充的方式,可以借助于等式5来验证以码C级的计算的完整性,达到关于受保护的变量z的故障可以传播到变量x的程度,其对应于对黑客有用的故障。由于变量z包含关于清除变量x的所有信息,因此可以保留z的副本z'并对它们的投影zJ和z'J进行比较,也就是说通过进行与关于掩码y相同的操作,但是对称地关于信息部分x(换句话说,通过测试是否x=zJ)。在没有(多个)故障的情况下,x和zJ这两个量相等。然而,x与zJ之间的差异显露了(多个)故障的注入。
[0164] 为了检测故障,保护系统100可以使用包括验证是否y=zK的测试。这种测试的可靠性基于如下性质:如果黑客利用均匀分布的故障 来篡改变量z的状态,则它们将导致其自身被检测到的概率是: (性质2)。
[0165] 实际上,如果黑客注入故障 则z被变换成 因为ε=0对应于不对z进行修改的故障(即对应于不存在故障注入),所以消除了这种情况,从而假设ε在(表示去掉零的 的表示法)中均匀分布。ε在 中均匀分布的假设表示,如果黑客已经设法注入了故障(ε≠0),则ε的所有其它值都是可能的且等概率的。因为 对应于C和D的直和,所以存在唯一对 从而 如果 则故障是可
以检测的。这个条件等效于 (即f≠0)。因此,相反地,如果f=0(即ε=eG∈C),则故障是不可检测的。假设,由于ε在 中均匀分布,因此未检测到的概率为(2k-1)/(2n-1),其给出检测到的概率为
[0166] 注意,该故障检测概率不取决于码dC的最小距离。在另一方面,为了使故障不被检测到,黑客必须注入汉明加权大于或等于dC的故障ε,其在黑客的该模型中对应于故障注入的成本。此外,在低权重的故障比高权重的故障更可能的实施例中,检测的概率也可以取决于n和dC。
[0167] 这样的结果是,如果黑客连接到多达变量z和y的dC-1行,并且在其中注入故障,则将会检测到该故障的概率为1(特定检测)。
[0168] 在保护系统包括故障检测器12的实施例中,可以根据码C的最小距离性质来确定故障检测器12。
[0169] 事实上,当且仅当ε∈C时,故障ε≠0是不可检测的。如果故障ε≠0达到z的dC-1行(继而 ),则C的所有非零元素具有大于或等于最小距离dC的汉明加权,并且因此检测到故障。
[0170] 因此,值 和dC构成两个其它(所谓次要的)安全参数,其使得有可能量化防止受到故障注入的电路的安全等级。根据故障模型(主要是均匀的或者相当低的汉明加权),可以考虑这些参数中的一个参数或其它参数。
[0171] 此外,在黑客处于定位变量y的位置的情况下,可以设想新的攻击场景,借此攻击系统可以将故障注入到变量z中而不被检测到。这种场景包括将故障ε注入到将产生校验子εK的变量z中,并且将等于εK的故障注入到变量y中。以这种方式,故障检测器12的测试将影响比较式 针对所有的ε来验证这种相等性。这种故障将修改状态而不触发警报(图7的实施例)。
[0172] 为了解决这样的攻击场景并获得可证明的安全性,除了通过码D(码C的补码)进行编码之外,还可以通过维度大于或等于n-k的码E对变量y进行编码并产生大小为m的字,其与生成矩阵L和解码矩阵M相关联。码E伴随有补码F,其解码矩阵N对应于E的控制矩阵,即对应于能够对E进行故障检测的矩阵。此外,码F具有生成矩阵P,以使得以下关系式得到验证:
[0173]
[0174] 借助于非限制性示例,以与码C和码D相同的方式,在向量空间 中码E和码F可以是互补的,这对应于m=n的特殊情况。
[0175] 在该实施例中,可以以编码的形式y'=yL来存储用于验证对变量z的故障注入的随机变量y。然后,故障检测器12执行测试zK=y'M和y'N=0。第一测试使得有可能验证攻击系统还未将故障注入到汉明加权小于dC的变量z,而第二个测试使得有可能验证攻击系统还未将故障注入到汉明加权小于码E的最小距离(表示为dE)的已编码变量y'。
[0176] 在这样的实施例中,不可检测的攻击的最小汉明加权成本是min(dE,dC)。在关于已编码变量z和y'的故障均匀分布的情况下,并且对于大小为m的码字E来说,检测到的概率变为:
[0177]
[0178] 在保护系统包括故障检测器12的实施例中,可以基于码C的最小距离性质和码E的最小距离来确定故障检测器12。
[0179] 通过使用码C代替码E或者再次通过使用码D代替码E,可以有利地重新使用上文中定义的矩阵操作符G、H、J以及K(例如,在n-k≤k的情况下)。这使得有可能在减少必要的资源的同时保持可证明的安全性免受对编码寄存器z和y'的故障注入攻击。
[0180] 因此,在一个特定实施例中,可以将码E选定为等于码D(二进制码C的补码),继而已编码的变量y'的大小为n-k并且等于y.H。
[0181] 在第一实施例中,可以使用码D来代替码E,以对变量y进行编码(而码E的补码F等于二进制码C),这使得y'=yH,故障检测器执行测试zK=y'K和y'J=0。继而不可检测攻击的最小汉明加权成本等于min(dC,dD)。在关于已编码的变量z和y'的故障均匀分布的情况下,检测到的概率变为:
[0182]
[0183] 替代地,在第二实施例中,可以使得码E等于二进制码C,而码E的补码F等于码C的补码D,(n-k)位的变量y被变换为n位的变量yk,并且已编码的变量y'大小为n且等于ykH。
[0184] 特别地,如果n-k
[0185] 在该实施例中,不可检测攻击的最小汉明加权成本是dC。如果关于已编码的变量z和y'的故障均匀分布,则检测到的概率再次变为:
[0186]
[0187] 保护系统100对与对偶距离 有关的第一首要安全条件进行验证以阻止读取敏感变量x(即阻止插入特洛伊木马触发器),可以以补充的方式使得有可能在使用二进制码并且尤其是线性码的基础上来检测故障(特洛伊木马有效载荷)。因此,保护系统可以对与以下参数中的一个或多个相关的次要安全条件进行验证:
[0188] -参数 和/或
[0189] -参数dC,和/或
[0190] -参数 和/或
[0191] -参数dD,和/或
[0192] -参数 和/或
[0193] -参数dE,和/或
[0194] -参数
[0195] 如果尽管使用了插入预防方法仍然触发了假设的特洛伊木马,则对故障进行检测尤其使得有可能检测到假设的特洛伊木马。
[0196] 在一个特定实施例中,码C的补码D可以是码C的对偶码。
[0197] 图3示出了根据在逻辑综合阶段中实施的某些实施例的电路保护方法。
[0198] 在步骤300中,在电路的逻辑综合阶段中,根据以高级语言的行为描述来生成以低级语言的电子电路的结构描述,例如使用EDA型逻辑综合工具。
[0199] 结构描述包括对电路11的变量和电路11的元件进行描述,例如组合的资源、时序资源和线路。在结构描述中,电路的变量由一位表示。
[0200] 在步骤301中,如在结构描述中所描述的,举例来说,在一个或多个预定义的标准(例如,灵敏度准则)的基础上或者考虑临界参数来选择电路的一组基本变量(均由1位表示)。所选择的基本变量可以是相同种类的或不同种类的(异构变量)。所选择的变量的数量被表示为k。
[0201] 当然,本发明不限于这些特定的基本变量选择准则。在一个实施例中,可以在步骤301(保守方法)中选择电路的所有基本变量的集合。替代地,在逻辑综合期间步骤301中所采用的选择标准可以与变量的名称有关,该逻辑综合通过指示综合工具以互连图(网表)的形式来保持信号(或至少信号根)的命名而使用(在适当的情况下)常规的表达式。
[0202] 按层设计的集成系统可以包括安全根(信任根),其是确保平台的整体启动的部分。在这样的实施例中,替代地,基本变量选择标准可以在于选择与安全根相关联的基本布尔变量,这可以通过实现产生系统的分层结构描述的分层逻辑综合来完成。继而可以仅将保护应用于被认为形成安全根的一部分的所识别的(多个)变量。
[0203] 在另一变型中,选择标准可以与和互连图中的变量相关联的灵敏度指示符(例如,通过污染技术)有关。
[0204] 在步骤302中,以k位的唯一变量的形式来生成以这种方式所选择的k个变量的表示,例如通过以所选择的顺序对变量进行级联。
[0205] 在步骤303中,根据可应用的安全规则,预定义表示用于编码的线性码C的补码D的目标对偶最小距离的安全参数 该参数对应于电路的变量的最小数量,特洛伊木马必须连接到该变量以恢复(即解码)清除信息并因此具有有用的行为(从攻击系统的视角来看)。
[0206] 以补充的方式,可以接收次要安全参数(304)。这些次要参数可以包括:
[0207] -码的目标长度ncible,其被选定为足够短以在保护之后不过度增加电路的大小,[0208] -足够高的目标检测概率 和/或
[0209] -对于码C的足够大的目标最小距离
[0210] 在步骤305中,根据目标安全参数 和二进制码库来确定二进制码C及其补码D。特别地,确定二进制码C,从而使其补码D的对偶距离(表示为 )达到目标安全参数以补充的方式,如果这些参数已经在步骤304中定义,则可以确定码C,以便满足与次要安全参数相关的条件,包括:
[0211] -将码的长度n链接到目标长度ncible的条件:例如,可以确定码C,从而使其长度n小于目标长度ncible,和/或
[0212] -将检测的概率链接到检测的目标概率的条件:例如,可以确定码C,从而使参数大于或等于目标检测概率 和/或
[0213] -将码的最小距离dC链接到目标最小距离 的条件:例如,可以确定码C,从而使其最小距离dC大于或等于目标最小距离
[0214] 在步骤306中,根据等式4(G和H是已知的)在信息编码矩阵(G)和掩码(H)的基础上确定矩阵J和K:
[0215]
[0216] 在步骤307中,对电路的结构描述进行修改以插入随机数生成器RNG,该随机数发生器RNG被配置为当电路可操作时每个时钟周期生成由n-k个随机位所表示的随机位向量y。
[0217] 在步骤308中,对电路的结构描述进行修改,以便用写入由n位表示的受保护的变量z的操作来代替写入变量x的任何操作,通过以下方式获得变量z:
[0218] -对k位的清除变量x进行编码,其与由码C所选择的原始的k个变量相关联,即如果二进制码C通过对应于xG的n位的新状态与生成矩阵G相关联;
[0219] -通过维度大于或等于n-k的码并且特别地通过补码D来对位向量y进行编码(如果用于对y进行编码的码具有生成矩阵H,则用yH代替y),继而借助于关系式 来获得受保护的变量z。
[0220] 以这种方式获得的受保护的变量z形成馈送1位的n个寄存器的新库的输入。
[0221] 在变量是构成时序资源的输入的时序变量的某些情况下,变量的当前状态x可以用于计算时序资源的输出。现在,由于已经用受保护的变量z代替未受保护的变量x,所以当前状态x从此开始变得不可访问。然而,可以在对受保护的变量z进行解码的基础上确定时序资源的输出,在矩阵J的基础上对受保护的变量z进行解码,在码C和码D的基础上(并且特别地在码C和码D的生成矩阵的基础上)确定矩阵J。
[0222] 更一般地,在步骤310中,用读取受保护的变量z的操作代替读取未受保护的变量x的任何操作,随后进行使用解码矩阵J来解码变量z的读取值的操作(根据等式4的关系式x=zJ)。
[0223] 以补充的方式,在电路保护方法被配置为检测故障是否已经被注入到电路中(例如,通过故障使寄存器降级)的实施例中,该方法可以包括步骤312,其在于修改结构描述以便验证与随机位向量y的值相关的一个或多个条件(也被称为故障检测条件),并且如果至少一个故障检测条件得到验证,则触发警报。
[0224] 在步骤314中,例如,借助于与用于在步骤300中生成电路11的EDA类型相同类型的EDA可以综合电路11的新的结构描述。该步骤使得有可能对直接添加到电路11的新的功能块的混合进行优化以保护其变量。
[0225] 继而可以基于新的结构描述(互连图)来制造电路。
[0226] 基于互连图,防止电路受到恶意电路的插入,并且其中适用于对出于恶意目的而引入的故障进行监测的方法,具有特别适合于由EDA工具来实施的优点。这样的EDA工具还可以执行逻辑简化,其减小保护电路的尺寸和/或增加保护电路的速度。
[0227] 图4是根据某些实施例的在操作模式下(在制造电路之后)保护电路的方法的流程图。电路由时钟clk定时。
[0228] 在步骤400中,产生新的时钟事件(例如时钟上升沿)。
[0229] 在步骤402中,该事件触发对k位上的清除变量x(其进入下一状态)(401)的状态进行更新,以及对随机位向量进行更新(由随机数生成器生成新的随机位向量)。
[0230] 变量x的下一状态被更新为变量x的当前状态的函数。由于在设计阶段变量x的当前状态已经变得不可访问,所以通过借助于矩阵J来对z进行解码,根据代替x的量zJ来计算变量x的下一状态(等式5),其中z指示受保护变量z的当前状态。
[0231] 在步骤403中,使用线性码C及其生成矩阵G对以这种方式确定的被表示为xnext的k位的变量x的新的状态(与k个所选择的原始变量相对应)进行编码。1位上的k个原始清除变量的新的状态xnext由与xnextG相对应的n位上的新的状态替换。
[0232] 在步骤404中,根据等式 (H产生与由G所产生的向量空间互补的向量空间)来计算由n位表示的受保护的变量z的下一状态(表示为znext),该状态与由码C编码的不受保护的变量xnext和由补码D编码的向量y的和相对应。
[0233] 因此,通过插入随机数来修改表示k个源清除变量的新状态的变量x的新状态xnext,从而使连接到受保护变量的任何尝试不会公开关于k个原始变量的内容的任何信息。
[0234] 在步骤406中,根据等式xnext=znextJ(等式5),如果变量x是时序变量并且电路的变量x的当前状态用于计算相关联的时序资源的输出,则所获得的变量z的新状态znext可以用于计算资源的输出。
[0235] 在电路保护方法被配置为执行故障检测的实施例中,执行步骤407,以通过验证与在矩阵J和K(其自身由生成矩阵G和H确定)基础上的随机位向量y有关的至少一个条件(步骤408)(考虑在步骤402中生成的随机位向量y的新值)来确定故障是否已经被注入到与电路的变量相关联的资源中(例如,通过故障使寄存器降级)。如果检测到故障(409),则在步骤410中触发警报。如果没有检测到故障,则在下一个时钟事件时重复该方法(步骤400)。
[0236] 图5是示出根据某些实施例的故障检测方法(图4中的步骤407)的流程图。
[0237] 在步骤500中,对与随机位向量y有关的一个或多个条件进行测试,以检测注入到受保护的变量z中的故障。
[0238] 这种故障检测条件可以包括步骤504,其在于验证与向量y与量zK之间的差异有关的第一条件(框501)。
[0239] 以补充的方式,在由大小大于或等于n-k的码E对随机位向量y进行编码并产生大小为m的字的实施例中,码E与解码矩阵M相关联,并且与具有与E的控制矩阵相对应的解码矩阵N的补码F相关联(由码E对位向量y进行编码所产生的变量表示为y'),故障检测方法可以包括:
[0240] -步骤505,其在于验证与随机位向量y有关的第二条件(框502),如果量zK不等于量y'M,则该第二条件得到验证,在这种情况下,这表示攻击系统已经将故障注入到汉明加权小于dc的变量z中;和/或
[0241] -步骤506,其在于验证与随机位向量y有关的第三条件(框503),如果量y'N不为零,则该第三条件得到验证,在这种情况下,确定攻击系统已经将故障注入到汉明加权小于码E的最小距离(表示为dE)的已编码的变量y'中。
[0242] 码E可以与生成矩阵L相关联,从而y'=yL。此外,码F可以与生成矩阵P相关联,从而:
[0243]
[0244] 继而,如果与向量y有关的条件中的任何一个条件得到验证(507),则在图4的步骤410中故障检测方法可以触发警报。
[0245] 可以使用EDA类型工具来实施特洛伊木马插入预防方法和故障检测方法。这样的工具还可以实现逻辑简化,这减小了受保护电路11的尺寸并且增大了受保护电路11的速度。以补充的方式来约束工具可以是有用的,从而使优化不会消除(甚至部分地)所插入的保护措施,例如通过执行块重新综合。
[0246] 图6示出了根据一个实施例的保护系统100的元件,其与电路11组合以保护电路11。
[0247] 图6的电路11是由摩尔机器表示的时序系统。由以下两种操作对电路11的组合门122进行归类:由参考63所指示的矩阵运算符J进行解码的操作,以及由参考65所指示的G进行重新编码的操作。随机数y是在每个时钟周期产生n-k个随机位的随机数发生器(例如,RNG)62的基础上生成的。
[0248] 因此,根据等式 通过由具有生成矩阵G的码C进行编码并且加上由具有生成矩阵H(66)的补码D进行编码的信号y,将电路11的组合部分122的每个非清除输入x变换为受保护的变量z。
[0249] 例如,在变换期间,状态寄存器120的输入处的变量从k位到n位。
[0250] 此外,运算符J(63)用于计算量x=zJ(等式4),并且将所获得的结果放置在n位寄存器库的输出处。
[0251] 图7示出了根据另一实施例的用于通过线性编码来保护电路11的保护系统100,该保护系统100设置有故障检测单元12。故障检测单元12包括比较器72,该比较器72用于将由发生器62生成的随机位y与在矩阵运算符K(71)的基础上计算出的量zK进行比较。如果y≠zK(检测到注入电路的故障),则可以触发警报信号。
[0252] 图8示出了用于保护电路11的保护系统100,该系统包括根据变型实施例的故障检测单元。
[0253] 图8对应于第一实施例,其中将用于对变量y进行编码的码E(除了通过码D进行的初始编码之外)选定为等于码D,而将码E的补码F被选定为等于二进制码C(y'=yH)。在该实施例中,故障检测器执行测试zK=y'K和y'J=0。
[0254] 通过确定连接故障的汉明加权wH(ε)to与最小距离dC和/或对偶距离dD的条件是否得到了验证,图8的保护系统100使得能够对注入到受保护的电路中的故障进行检测。
[0255] 故障可以是影响受保护的变量z的故障,继而将变量z修改为 或者故障可以是影响已编码的随机位向量yH的验证故障H(将变量yH修改为 )。继而,如果汉明加权wH(εz,εyH)严格地小于min{dC,dD},则可以检测到故障。
[0256] 实际上:
[0257] -验证故障εyH=0并且因此εz∈ker(K)*=C*并且因此wH(εz)≥dC,[0258] -或者,验证故障εyH≠0,并且因此εyH∈ker(J)*并且因此wH(εyH)≥dD。
[0259] 然后可以添加新资源80以存储从一个时钟周期到下一个时钟周期的掩码。
[0260] 图9示出了根据用于保护电路11的另一实施例的保护系统100。
[0261] 图9对应于第二实施例,其中使得码E等于二进制码C,而码E的补码F等于码C的补码D,将(n-k)位上的变量y变换为n位上的变量yk,并且已编码的变量y'大小为n并等于ykH。
[0262] 在该实施例中,通过采用可以大于或等于n-k的大小为k的输入的矩阵运算符G(67)对变量y进行编码。随机数y被生成为具有(n-k)的大小,并且继而由数据填充运算符91完成以形成包含y的k位的向量yk。继而,由矩阵运算符G(67)对向量yk进行编码。为了执行在于确定是否y=zK的测试,读取存储在90中的已编码的值,继而由矩阵运算符J(92)进行解码。抽样块94用于产生将与zK进行比较的包括(n-k)位的向量y'。此外,为了完成防止电路受到特洛伊木马的有效负载的执行,进行第二操作,该第二操作在于由矩阵运算符K(93)对包含在90中的值进行解码并且继而执行与空向量95的比较测试。
[0263] 图10是示出根据生成码C和码D的一个实施例的方法(图3中的步骤305)的流程图。
[0264] 码生成方法可以包括初步步骤900,其在于确定具有k的维度和至少等于 的最小距离dC的码C'。总是有可能确定这样的编码:实际上,它等效于解决问题n2(k,d),其中nq(k,d)对应于最小的整数n,对此在Galois体Fq上存在长度为n、维度为k以及最小距离为d的线性码。然而,在每种情况下令人满意的码都将具有尽可能小的n的值和dC'的值:这两个约束都是有联系的,因为码越短,其最小距离越小。考虑到Singleton限制,将满足以下关系式:
[0265] n≥k+dC'-1
[0266] 为了检测到更多的故障,有利地有可能选择大于最小值的n,这增加了故障检测概率。借助于简化,假设可以获得维度恰好为k且最小距离恰好为 的C',这经常是实际上的情况。因此码C'具有参数
[0267] 可以使用数据库来实施步骤900,该数据库如Alexandre  Duc、Stefan Dziembowski和Sebastian Faust的“Unifying Leakage Models:from Probing Attacks to Noisy Leakage.IACR Cryptology ePrint Archive,2014:79,2014 or constructive methods”中所述。因为没有适合的方法来查找具有大的对偶距离的码,所以步骤900用于准备构造对偶码D。
[0268] 在步骤902中,计算对偶码C'。对偶码表示为D=C'┬。D以长度n、维度(n-k)以及对偶距离 作为参数(等式7)。此码满足安全性性质1。注意,在这个阶段C'和D不一定是主体的两个互补的向量空间。
[0269] 在步骤904中,使用主体 的(n-k)个向量来完成D,以生成整个空间 (其维度为)。与D互补的 的向量子空间表示为C,以使得以下关系式得到验证:
[0270]
[0271] C的参数是[n,k]。在保护系统100包括故障检测单元12的实施例中,向量子空间C可以被有利地选择有大于预定义的值的最小距离dC(符合特性2的含义(coronary),借此如果攻击系统篡改直到z的dc-1行,则其可以被检测到的概率为1)。
[0272] 尽管在某些应用中使用线性码是有益的,但是本发明不限于使用线性码。如本文所使用的,非线性码(被称为非限制性码)指示不具有向量空间结构的子集。可以使用其它类型的码,举例来说,例如 线性码,其通常不是 中的线性码。在将非线性码用于编码的实施例中,码生成方法继而可以局限于步骤902和904,而步骤902直接包括搜索非线性码D:
[0273] -长度为n,
[0274] -大小为2k,
[0275] -对偶距离为
[0276] 例如,可以如以下示例中以MAGMA伪码(用//来标记伪码的注释)所描述的来确定矩阵G、H、J以及K:
[0277]
[0278]
[0279] 在下文中描述了符合图9方法的码生成的示例:
[0280] 1、根据步骤900来确定码C';
[0281] 2、然后,根据步骤902将补码D确定为C'的对偶码(D=C'┬)。利用单位矩阵在右边以系统形式写入D的生成矩阵H,如下所示:
[0282] H=(M In-k),其中M是计算H的控制位的大小为(n-k)×k的矩阵。
[0283] 3、然后,码C由其生成矩阵G=(IkOk×(n-k))定义。大小为n×n的方阵 是在对角线上仅有1的上三角矩阵。因此它是可逆的。
[0284] 注意,有可能根据G和H来以分析的方式计算矩阵J和K:
[0285]
[0286] 第二个等式使用 中的事实,-x=x。注意,例如Ok×(n-k)类型的矩阵不引起任何资源的创建,并且1l类型的矩阵在于拉入l行,矩阵G和H是中空的(除了部分M)。根据等式(9),由于通过对G和H的块进行分组而获得矩阵 和 因此它们也是中空的。
[0287] 注意,最小距离d的码的效率r=k/n可以与k成比例。因此,对多个位执行编码是有利的。此外,随着k增加,最小距离的增益变得越来越临界。这样的最小距离对应于离散数学,其中某些奇点对于k的特定值来说是显然的,从而使它们不具有与码的维度连续的演进。尤其会发生,对于具有参数[n,k]的码和具有参数[n=2,k=2]的码都达到性质1的约束。
[0288] 因此,在某些实施例中,针对实施复杂性的原因,构造两个矩阵 而不是大小为k×n的单个矩阵是有利的。事实上,实施矩阵k×n的成本是n log k,而实施矩阵的成本是 其少于n log k。
[0289] 这种方法(即构造2个矩阵)可以应用于矩阵G和/或H和/或J和/或K:
[0290] -对于大小为k×n的矩阵G,矩阵的实施成本为n log k,其大于
[0291] -对于大小为(n-k)×n的矩阵H,矩阵的实施成本是n log(n-k),其大于[0292] -对于大小为n×k的矩阵J,矩阵的实施成本是k  log(n),其大于
[0293] -对于大小为n×(n-k)的矩阵K,矩阵的实施成本为(n-k)log(n),其大于[0294] 使用具有较小维度的多个码来对系统的状态进行编码使得有可能减小实施大小而不会损害安全要求。
[0295] 在通过插入特洛伊木马类型的恶意电路的攻击的示例中,假设通过触发特洛伊木马而对其进行激活,特洛伊木马可以引导其对电路的任何部分进行攻击,举例来说,例如:
[0296] ·承载计算数据的变量,例如,加密密钥或敏感数据,即取决于已知变量和密钥二者的数据;
[0297] ·监测执行计算的变量(例如,轮流的计数器)。
[0298] 特洛伊木马所进行的攻击旨在破坏数据,例如执行故障注入(举例来说,在某些内容中可利用的,例如在加密中)。另一个攻击示例还可以旨在破坏程序的流控制图,例如完全跳过加密操作或引起在软件中可以利用的硬件错误(特洛伊木马修改函数的返回地址,如果这样则已经检测到软件激活条件)。
[0299] 本发明的实施例提供了免受这种攻击的有效保护,因为它们使得以相同的方式保护异构基本变量的集合成为可能。事实上,对于黑客来说,基本变量是所有潜在的目标,而基于对每个变量进行单独保护的经典方法易于忽略可能形成特洛伊木马的目标的某些变量。
[0300] 本发明的实施例可以实施动态地且同时地应用于大量异构二进制变量的编码,这降低了省略保护敏感变量的风险。因此,面对由特洛伊木马进行的有效载荷类型攻击,保证了覆盖。如果对所有信号(例如,所有锁存器D)都进行了编码,则可以实现最大安全级别。类似地,本发明的实施例可以防止特洛伊木马的正确触发。
[0301] 可以根据电路11的结构描述的一种或多种类型的基本布尔向量变量来构造变量x,这种类型的变量可以包括具有时序门或具有组合门的与行相关联的变量。例如,变量x可以是:
[0302] 1、信号(k行的向量)
[0303] 2、k个时序门的集合(k位的DFF寄存器)
[0304] 3、XOR类型的k个组合门的向量
[0305] 图11示出了由k位表示的向量信号类型x的向量变量x,并且其根据均由一位表示的信号类型的k个基本变量而构成。馈送向量信号x的互连图(网表)的部分由参考100(上游网表)来指示,而接收向量信号x作为输入的互连图的部分由参考101(下游网表)来指示。
[0306] 电路保护方法修改电路的结构描述,以便在要保护的信号x的部分100上游中插入到电路中,电路元件被配置为由写入变量z的操作来代替写入信号x的操作,变量z通过以下操作获得:
[0307] 1、通过具有生成矩阵G的码C对信号x进行编码,以及
[0308] 2、使用异或103加上掩码y H。
[0309] 因此,原始向量信号x被等于xG+yH的受保护的向量信号z代替。在n优选地大于或等于k的情况下,从此开始用于表示xG、yH以及z的位数等于参数n(码的长度)。
[0310] 电路保护方法进一步修改电路的结构描述,以便在要保护的信号x的部分101下游中插入到电路中:
[0311] -电路元件,其被配置为用读取z的操作来替代读取信号x的操作,然后进行使得能够通过应用矩阵J来恢复原始向量信号x的解码,
[0312] -电路元件,其被配置为通过将z传递到矩阵K中来对随机位向量y实施完整性验证;如果向量y不同于zK,则检测到关于变量z的故障。
[0313] 图12示出了类似的示例,其中要保护的变量x是通过存储同步位类型的库)的k个基本变量(k个一位寄存器或DFF(数据触发器))而构造的时序逻辑门。
[0314] 该实施例与图11的实施例的不同之处在于,在DFF 104的输入处应用上游部分100的修改,而在DFF 104的输出处应用下游部分101的修改。在该变换期间,k位的DFF变为n位的DFF。如果原始DFF 104的初始状态(关于接通或者由于复位信号的影响而重新初始化之后)为x0,则变换后的DFF的初始状态变为x0G。
[0315] 图13示出了线性组合门105,例如具有k位的两个向量输入x1和x2的异或(XOR)门,并且因此具有由k位表示的k位的输出x3。如在第一张图中所示的情况下,保护方法可以应用于两个输入向量信号x1和x2中的一个,或者应用于输出向量信号x3。假设针对组合门105的两个输入x1和x2以及输出x3选择相同的码C。用码C的生成矩阵G对XOR门(被单独地认为是要保护的变量x)的每个输入进行编码。加上不同的掩码y1H和y2H。因此,两个输入z1和z2等于z1=x1G+y1H且z2=x2G+y2H。这两个输入在n位上表示。由于XOR门的线性,可以通过将矩阵J应用于输出z3=z1+z2来获得输出x3=x1+x2。在将z1和z2相加之后,因为它们的分布保持均匀,两个掩码也已经相加而没有这种妥协的安全性。因此z3K的结果为y1+y2,这使得有可能对z3的完整性进行测试。
[0316] 应当注意,同样有可能将保护方法应用于根据具有两个输入和一个输出的k个XOR门而构造的全局变量x。
[0317] 还应当注意,这种变换是组合的,这表示它们可以(通过重现)应用于比向量信号、向量存储元件或向量时序门更复杂的结构。
[0318] 图14示出了根据以结构级(例如通过互连图(网表))表示的电路来构造向量布尔变量的一个示例。被指示为A、B以及C的三个独立子组件馈送三个布尔信号,其进入三个独立锁存器(DFF)D。每个DFF产生输出布尔信号,该信号转而馈送被称为A'、B'以及C'的三个独立分量。
[0319] 三个DFF过程数据没有关系。现在,可以将它们视为人工子组件,其输入是子组件A、B以及C级联的三个输出,并且其输出是子组件A'、B'以及C'的三个级联的输入。在该示例中,k等于3。继而,级联的三个变量被表示为k位的总线,通常被表示为在与“在选择变量之后”表示相对应的图13的下半部分。
[0320] 图15示出了根据异构语义信号来构造全局变量x的另一示例。该示例更加精确地对应于处理器(中央处理单元(CPU))的表示,该处理器包括:
[0321] -控制单元,其由控制输入x1(举例来说,例如计算机程序)和状态演进表110来控制。该表被编码为组合逻辑块111(表示为Combi 1),其构成处理器CPU的有限状态机(FSM)。
[0322] -数据处理单元112,其被表示为流水线,进入寄存器113的数据x2继而由组合块113处理(表示为Combi 2),也由控制单元控制。在流水线中实现计算。例如,Combi 2块可以被认为是算术和逻辑单元(ALU)。
[0323] 在采用这种方式以结构级描述的电路中,存在异构类型的寄存器:由k1位的向量信号x1所表示的FSM的控制寄存器,和由k2位的向量信号x2所表示的流水线数据寄存器。
[0324] 可以级联这两个信号,并且甚至对它们进行交错(即混合x1的位和x2的位),并将k=k1+k2位的新的向量认为是要保护的信号。
[0325] 因此,根据各种实施例的电路保护系统和方法使得有可能提供免受特洛伊木马类型攻击的高级保护。
[0326] 所提出的保护系统和方法不一定需要知道受保护的变量的含义。它们甚至可以针对异构类型基本变量的级联来进行操作,以及满足安全性和功能非回归目标。一旦已经识别出k个基本变量并且已经定义了安全对象的值,在将原始结构描述变换为另一个受保护的结构描述和新的结构描述的编译之后,就可以动态地应用保护。
[0327] 使电路保护基于结构描述提供了许多优点,包括:
[0328] ·要保护的变量被级联为大的位向量,其大小由安全目标(码的对偶距离或最小距离)确定;
[0329] ·因为该方法不取决于电路的语义,所以该方法是动态的,这特别地使得有可能限制保护电路的成本;
[0330] ·通过根据所选定的(例如,任意的)顺序来级联k个二进制信号而获得的k位的全局变量,这表示考虑到通过应用保护而实现的信号的交错,一旦受保护的电路被模糊化,其功能性就更难以理解;
[0331] ·最后,可以产生长的位向量,其有助于获得令人满意的码,令人满意的码是在双重距离或最小距离方面实现或超过其目标的码,并且其具有高效率(在线性码情况下定义为其长度与其维度之比)。
[0332] 本发明的实施例可以应用于基本布尔变量的任何集合,无论这些变量的性质如何:以长度为k的异构向量的形式在块中对要保护的基本变量进行操作,其中k可以多达几千位。
[0333] 因此,本发明有助于使用有效的码(具有大维度和/或具有长距离的长度的码)。本发明不受必须考虑其语义而一个接一个地对要保护的多个基本变量进行选择和处理的限制,并且因此根据动态方法来操作。
[0334] 本发明的另一个优点在于:在寄存器输出处对时序变量进行随机编码(掩蔽),而不允许直接识别是否通过辅助信道分析来移植特洛伊木马或观察敏感变量的泄漏的信息。
[0335] 根据各种实施例的保护方法可以与防止特洛伊木马插入的其它经典方法相结合,例如在制造之后将全部或部分功能放置在要编程的存储器中、使用密集布局、或门结构(也称为网表)混淆。
[0336] 可以将循环随机数的对策的逻辑门与相邻的门(例如,借助于EDA工具)混合,这可以使得攻击的初始阶段变得复杂,该攻击在于执行电路的功能反向设计。因此,电路11的组合部分122与由保护系统100所添加的部分(用于编码并且适用于故障检测)的相同电路中的混合涉及数据上的计算部分与对计算进行检查一样多,这是使得电路11的描述较不容易理解的另外的优点。
[0337] 可以在许多应用中使用根据各种实施例的保护系统100,举例来说,例如:
[0338] -保护电路11以防特洛伊木马,状态的随机编码不允许在逻辑上移植特洛伊木马;
[0339] -防止反向设计,电路的功能埋设有解码/重新编码逻辑;
[0340] -防止前侧和后侧二者的探测攻击;探测攻击可以是点探测类型或通过组件发出的信号噪声测量而进行的探测(也称为隐藏信道分析的威胁);表示用于成功提取清除数据位而放置的探针的数量的安全参数可以与用于针对特洛伊木马插入的安全参数相同;
[0341] -防止SCA(侧-信道分析),即针对时序变量的经由频带泄漏信息的研究(例如,通过所消耗的电流、所辐射的场、进行计算所花费的时间等)对变量进行保护防止构建泄漏模型;
[0342] -如果保护系统100包括检测单元12,则通过验证管芯的完整性(故障检测)来防止故障注入攻击。
[0343] 无论什么类型的控制或数据,本发明还使得能够进行掩蔽而不管信息的类型。继而可以存在实质上针对数据的掩蔽方案。
[0344] 另一个优点在于使得能够独立于逻辑的布尔线性性质针对电路的组合部分进行编码和重新编码。
[0345] 此外,通过在使用综合(EDA)工具的逻辑综合期间进行简化,可以将时序资源保护方法的逻辑与组合资源进行混合。
[0346] 掩蔽方法是完全可自动化的,而在具有现有数据掩蔽方法的情况下则不是这样。此外,掩蔽方法可证明以验证编码的功能一致性。
[0347] 根据某些实施例的随机数的验证构成了免受故障注入攻击的保护。
[0348] 所使用的码可以特别地是灵活的码。有可能通过正交投射使用补充对偶(SuD)码来促进验证。一些循环码具有这样的SuD性质。例如,对于k=2163位的状态,可以找到具有参数[n=4327;k=2163;d≥66]的码。然而,可以使用其它更有效的构造(通过查找具有给定大小和最小距离的码,并使其长度最小化)。当然,本发明不限于SuD类型的码。可以使用其它类型的码来放松约束,以获得更短的编码长度,和/或使得能够独立地选择安全参数,例如dC(所选择的码C的最小距离)和对偶码D┴的最小距离。
[0349] 特别地,使用非线性码针对给定的维度和长度来实现更大的最小距离可能是有利的。
[0350] 例如,特洛伊木马可以被视为集成到受到攻击的组件中的点探测站。现在,这样的站难以读取或写入多于大约十个信号。由于特洛伊木马被集成,与外部站相比它可以连接到更多的资源。继而,所选择的安全参数可以相对较大,例如大约32或64位。
[0351] 检测单元12同样可以用于检测成功插入的特洛伊木马。
[0352] 本领域技术人员将理解,根据各种实施例的保护方法可以通过硬件、软件或者硬件和软件的组合以各种方式实施。
[0353] 特别地,保护方法的软件实施方式可以有利地用于防止网络威胁,即,在数据或码损坏(即,存储器损坏)之后的存储器公开和控制流劫持(hijacking)。应当注意,在保护方法的软件实施方式中,存储器可以指示整个存储器级,其包括寄存器、高速缓冲存储器以及存储器(RAM、SRAM、SDRAM、EEPROM、闪速存储器等)。
[0354] 本发明不限于上文借助于非限制性示例而描述的实施例。本发明包括本领域技术人员可以设想到的所有变型的实施例。特别地,本发明不限于使用线性码,非线性码的使用显著地使得有可能针对给定的维度和长度来实现更大的最小距离。
[0355] 此外,应当注意,为了说明的目的,本发明不限于出于解释目的以MAGMA伪码形式所给出的二进制码C和补码D的示例性构造。可以根据不同的方法来构造码C和码D,举例来说,例如通过在更大的二进制字母表上(即在Galois域GF(2m)上,其中m是正整数)对码进行扩展,或者通过使用直和、直积,或者Plotkin和来组成码。还可以通过使用例如削弱、缩短或扩展根据其它码对码进行推导来构造码C和D。
[0356] 此外,根据本发明的保护系统100不限于特定类型的布尔电路11。例如,电路11可以是ASIC,保护系统可用于防止在代工厂中插入木马,或者电路11可以是FPGA电路,保护系统可用于防止在比特流编译上插入特洛伊木马。电路11同样可以对应于由二进制码所描述的软件程序,保护系统可用于防止在编译时或在二进制码中插入特洛伊木马。正如电路的结构描述,二进制码是关于二进制字的连续计算。更一般地,本发明涉及与结构描述相关联的任何类型的布尔电路,结构描述描述了对由位表示的基本布尔变量进行的计算的集合,不管是以下哪种形式:
[0357] ·以硬件形式,举例来说,例如互连基本逻辑门的电路,或者
[0358] ·以软件形式,举例来说,例如对位向量进行的一系列计算(典型地,具有可变大小的字节[k=8]、字[k=16]、双字[k=32]、四字[k=64]等,其具有通常由处理器操作的变量的大小)。