基于Benes网络的PCB混淆保护

基于混淆的印刷电路板未经授权操作与逆向工程保护框架

郭子慕,佛罗里达大学邸佳,阿肯色大学马克·M·特拉尼普尔和多梅尼克·福尔特,佛罗里达大学

印刷电路板(PCBs)是所有现代电子系统的基本必需品,但正变得越来越容易受到克隆、过度生产、篡改和未经授权的操作等威胁。目前大多数防范此类攻击的努力仅集中在芯片层面,导致在印刷电路板及其更高层次的抽象层面存在保护空白。本文中,我们提出了首个基于混淆的印刷电路板保护框架。该方法的核心是一种置换模块,用于隐藏印刷电路板上芯片之间的芯片间连接,并通过一个密钥进行控制。当应用正确密钥时,芯片之间的正确连接得以建立;否则,连接将被错误地置换,导致印刷电路板/系统无法正常运行。我们提出一种基于Benes网络的置换网络,并将其添加到印刷电路板上,该网络可方便地在复杂可编程逻辑器件或现场可编程门阵列中实现。基于此实现,我们分析了本方法在以下几方面的安全性:(i)逆向工程印刷电路板的暴力破解尝试;(ii)猜测正确密钥的暴力破解尝试;(iii)各类攻击者实施的物理和逻辑攻击。对12个参考设计的性能评估结果表明,暴力破解通常需要难以承受的时间才能攻破该混淆机制。此外,我们还针对不同类别的攻击者,提供了防止逆向工程、未经授权的操作等行为的详细对策要求。

1. 引言

印刷电路板(PCBs)为电子元器件和芯片之间的机械支撑和电气连接提供了基础。因此,它们几乎被用于所有现代电子产品中,包括智能设备、个人计算机、家用电器、汽车、工业控制系统等。近年来,针对印刷电路板的攻击以及相应对策的开发引起了越来越多的关注[Tehranipooretal. 2015]。现代印刷电路板是包含关键设计信息和知识产权(IP)的复杂多层结构,但却几乎没有受到保护。任何人都可以购买印刷电路板或包含印刷电路板的系统从市场中获取并进行克隆、篡改和未经授权的操作。此外,印刷电路板设计、制造和装配的新兴商业模式倾向于外包[Ghosh等 2014],,这进一步加剧了印刷电路板/系统盗版和篡改的威胁。

克隆可能由合法购买产品的最终用户或捕获军用系统的敌对方实施[Hartmann和Steup2013]。克隆的第一步是逆向工程印刷电路板/系统,即识别印刷电路板上的芯片及其连接方式。已有大量前期研究表明,即使使用低成本的家庭解决方案,对印刷电路板进行逆向工程(RE)也相对简单[Grand2014]。通过X射线计算机断层扫描实现更昂贵但自动化的逆向工程方法也是可行的[Asadizanjani2015]。如今大多数系统均由商用现成组件(COTS)构成,因此很容易创建系统的克隆版本,并在市场上作为正品销售。甚至iPhone也被克隆,在一些国家市场上已有成千上万的假冒产品在销售[Pacific2011]。

过度生产是指拥有详细印刷电路板(PCB)设计的代工厂生产超出授权数量的PCB。这些PCB可用于制造类似于克隆产品的假冒产品。无论是克隆还是过度生产,产品的知识产权所有者都会遭受严重的利润损失。然而,克隆可能造成更大的危害。例如,克隆产品若采用低质量芯片、篡改的电子元器件和/或额外的功能(新的布线和组件、隐藏的过孔等)[Ghosh等人2014]可能会意外失效,从而损害知识产权所有者的声誉。在最坏的情况下,此类产品甚至可能导致人员伤亡。篡改攻击还可用于获取系统中存储的机密数据,或绕过保护机制(例如数字版权管理[奥唐奈,2013年;Fitzgerald2005])。这些目标可以通过直接窃听芯片间通信,或使用专用设备探测这些连接来实现。最后,未经授权的操作意味着攻击者在未经许可的情况下使用或操控设备。一些设备对此类行为的保护机制较弱。例如,智能手机在使用前需要输入密码解锁,但这些密码通常较短且容易被观察到。

针对这些攻击的对策有多种形式。Ravi等人[2004]将嵌入式系统上的攻击分为三类:隐私攻击,包括窃听;完整性攻击,包括功耗/时序/电磁分析和故障注入;以及可用性攻击,包括软件木马。Anderson和Kuhn[1998]提出了一种针对RSA公钥密码系统、数据加密标准(DES)和分组密码的低成本攻击。Weingart[2000]列出了一系列应对篡改攻击的方法。然而,这些防篡改技术仅关注如何防止攻击者在设备运行期间获取密钥信息,但未涉及印刷电路板的逆向工程、克隆和过度生产。最近,Ghosh等人[2014]分析了印刷电路板在木马攻击下的安全性,并讨论了印刷电路板的反向工程防护。然而,作者并未展示任何详细的印刷电路板实现设计流程,也未对其性能进行量化。

Tehranipoor等人[2015]和Guin等人[2014]提出了一种针对假冒集成电路(IC)的全面分类与展示框架。“脱氧核糖核酸(DNA)标记”[Hayward和Meraglia2011]由AppliedDNASciences公司开发,可将独特且不可克隆的植物DNA嵌入产品中。在特定光照下,IC标记的荧光与供应链中的DNA配合使用,可用于识别正品芯片。Yang等人[2015]提出了一种基于射频识别的方法,用于电子元器件和系统counterfeit检测。板上所有芯片的标识(IDs)共同生成板级ID。然而,这些技术仅关注检测板上的假冒芯片,而非印刷电路板本身。

据我们所知,防止系统未经授权操作的研究非常有限,但对商业和军事应用中的隐私保护可能具有重大影响。目前最广泛使用的策略依赖于软件/固件授权机制,该机制需要加密系统和额外存储器的支持[Simpson和Schaumont2006]。然而,这些需求引入了更多的安全问题,例如密钥信息提取和授权系统的绕过[Brijbasi 2003]。

在本文中,我们提出了首个板级混淆方法,旨在保护印刷电路板免受克隆、过度生产、逆向工程和未经授权的操作。我们的主要贡献总结如下: (1)板级混淆:所提方案通过在可编程组件(例如微控制器单元(MCU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA))与非可编程组件之间添加一个置换模块,对它们之间的连接进行混淆。该置换模块仅在提供正确密钥时才使印刷电路板(PCB)正常工作。由于连接关系被隐藏,印刷电路板无法被逆向工程。此外,通过保留密钥,可以缓解PCB的克隆和过度生产问题。最后,如果密钥仅提供给系统所有者/用户,则可以防止系统被未经授权的操作。在所有情况下,密钥无需永久存储在PCB中,从而增强了对物理攻击的抵御能力。(2)实现:我们研究了置换网络的不同实现方式,并确定Benes网络是最有前景的候选方案。研究了两种配置场景。(3)抵抗暴力破解攻击:我们开发了度量方法,用于评估在不同场景下针对暴力破解攻击的混淆性能:(1)应用所有可能的输入/输出组合;(2)向Benes网络应用随机密钥。对12个工业参考设计的结果表明,在任一情况下破解混淆都是不可行的。比较这两种场景,密钥方法在平均情况和最坏情况下所需时间更长。(4)物理攻击与对策:针对我们的方法可能遭受的攻击,根据攻击者所拥有的资源进行了研究和分类。在对策方面,我们为不同应用提出了三个级别的安全要求。我们利用球栅阵列(BGA)封装用于可编程组件和置换模块,并隐藏它们之间的连接,以防止硬件探测。我们讨论了将一种新型板级物理不可克隆函数(PUF)与所提出的混淆方案结合,以提供额外的保护。

本文的其余部分组织如下。第2节介绍了混淆及其关键元素。在第2.1节中,介绍了PCB混淆的基本思想。详细的方法、实现以及性能评估度量在第3节和第4节中给出。第5节提供了潜在的攻击场景并对其进行分类。针对这些攻击,在同一节中讨论了相应的对策和安全性要求级别。第6节展示了以多个印刷电路板作为基准的混淆性能。最后,第7节包含未来工作和结论。

2. 基于混淆的保护

本节对硬件混淆进行了更广泛的描述。我们还讨论了芯片级混淆技术及其为何不适用于印刷电路板。

硬件混淆的一般概念如图1所示。实心矩形表示属于原始设计的组件。在芯片级别,这些组件可以是逻辑门或寄存器。在板级,这些组件可以是板上的芯片。在原始设计中,这些组件直接连接到固定的导线或走线。由于所有组件间连接均已建立,因此无法对硬件功能进行控制。具备芯片级或板级逆向工程能力的攻击者可以获取该设计。图1中的问号表示由混淆引入的模糊性,这种模糊性可表现为互连排列、信号连接修改,或两者的组合,从而防止简单的逆向工程。在硬件混淆中,通常使用一个密钥来消除这种模糊性,使设计能够按原始预期运行。

现有的芯片级方法利用混淆来隐藏功能,并旨在使芯片仅在授权权限下工作。从广义上讲,我们可以将芯片级技术分为两类:门级技术和寄存器传输级技术[查克拉博蒂和巴纽2009;Desai等 2013]。门级技术可能是基于逻辑混淆或基于排列的[拉杰nd兰等2013;Roy等 2008]。

尽管上述技术非常适合芯片级保护,但芯片与印刷电路板之间存在根本性差异,使得这些技术无法适用于印刷电路板。印刷电路板更容易被探测,且增加额外组件的成本更高。用于加密和解密可编程组件与非可编程组件之间信号的加密模块很容易被移除。逻辑排列方法[Zamanzadeh和Jahanian 2013]若不进行必要修改,则无法应用于板级,因为组件与芯片之间的信号保持不变。

2.1. 提出的PCB混淆概述

考虑到之前描述的系统级问题(过度生产、克隆和未经授权的操作),印刷电路板级混淆是一种可行的解。通过对设计进行混淆并withholding其密钥,可以缓解印刷电路板的克隆和过度生产问题。即使系统上的商用现成芯片可以被识别,缺少密钥的情况下,混淆后的系统仍然无法运行。此外,如果唯一的密钥仅提供给系统所有者/用户,则未经授权的操作也能得到覆盖。本节讨论了我们所提出的混淆方案的一般硬件实现。

在实施混淆方案之前,我们针对每个应用将电路板上的组件分类为可编程和非可编程。pro-grammable component是最关键的组件,负责执行嵌入式系统的主要功能。通常每块电路板上至少有一个此类组件。该组件可以是微控制器单元、数字信号处理器或现场可编程门阵列。非可编程组件是指电路板上除可编程组件以外的其他组件。这些组件通常由可编程组件控制,执行特定功能,例如定时器、显示驱动器等。

为了说明整体方法,原始设计和混淆设计如图2(a)和(b)所示。在原始设计中,虚线矩形内组件之间的连接对设计者是已知的,且拥有该系统的攻击者也可通过逆向工程确定这些连接。在混淆设计(所提出的方法)中,组件之间的连接被置换模块隐藏。具体而言,我们插入一个permutation block,使设计者能够隐藏这些连接。置换模块是为实现混淆而添加到电路板上的额外组件。该组件可通过复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)实现。

示意图0
示意图1

在图2(b)中,由系统的可信用户施加一个密钥,并配置置换模块,从而使系统正常工作。只有正确的密钥才能实现可编程与非可编程组件之间的正确连接。该密钥可以通过多种方式在板上和板外生成。板上密钥可以由某些模拟信号(如生物特征:指纹、语音等)生成,以实现更强的保护。可以将密钥提取模块集成到系统中,从这些模拟信号中提取密钥。板外密钥可通过键盘输入或来自安全令牌(例如智能卡)。

图2还说明了我们可以利用的引脚/端口的一些其他重要特征/场景。真实端口表示可编程组件中用于在原始设计(混淆前)连接非可编程组件的引脚。置换模块隐藏了组件之间的这些连接。此外还有虚拟端口,它们代表原始设计中未使用的端口。在混淆设计(所提出的方法)中,虚拟端口可用于增加攻击者需要搜索的状态空间。直观来说,作为置换模块输入的真实端口和虚拟端口的数量决定了攻击者必须研究的连接组合数,以确定正确的系统设计。

图2提供了所提出的混淆实现的整体思路。所提出的PCB混淆的实现与评估包括三个部分。—端口选择框架:并非所有可编程组件的端口都可用于混淆。原因见第2.2节中的功能逆向工程攻击。本文提出了一个三阶段框架,用于选择适合进行混淆的端口。该框架包括预处理阶段、分组阶段和度量计算阶段。—混淆强度评估:提出了用于评估所提出混淆方法性能的定量指标。这些指标表明了攻击者通过暴力破解方式突破混淆的概率。—多密钥计算:我们研究了在置换模块中实现的置换网络的特性。分析了一种称为多密钥效应的现象。由于该现象影响破解概率,因此对混淆强度进行了重新评估和比较。

2.2. 对PCB混淆的攻击

在本文中,我们考虑了针对PCB混淆的几种攻击。这些攻击中的任何一种都可能导致攻击者能够解锁系统或克隆/过度生产系统,从而破坏所提出的方法的目的。因此,我们还将在后面的章节中讨论缓解这些攻击的方法。

(1)功能逆向工程:由于板上组件都有详细文档,攻击者可以通过研究端口的功能部分地发现正确的连接排列。尽管攻击者从可编程组件中获得的信息有限,但他们可以从非可编程组件(特别是那些在可编程组件上具有专用端口的组件)中了解连接的功能。因此,应利用通用输入/输出(GPIOs)及其他具有设计特定功能的端口来抵御此类攻击。幸运的是,许多印刷电路板包含微控制器单元、数字信号处理器(DSPs)和现场可编程门阵列(FGPAs),这些器件包含大量通用输入输出端口(详见第6节)。在混淆中利用这些端口将使攻击者极难通过暴力方式找出真实的互连关系。因此,我们应更多关注GPIOs。选择合适端口用于混淆以及评估该方法性能的方案将在第4.1节中讨论。

(2)对正确连接和/或密钥的物理逆向工程:攻击者可以使用多种物理攻击来破解所提出的混淆方案。例如,攻击者可能尝试同时采用板级和芯片级逆向工程来获取芯片间的正确连接。在板级层面,可以通过探测识别进入和离开置换芯片的信号。掌握这些信息后,攻击者即可克隆设计、进行过度生产等操作。或者,通过攻击置换芯片,攻击者可能能够提取出密钥。针对具备不同能力范围的攻击者的缓解措施将在第5.1节中讨论。

(3)暴力破解攻击:如果上述攻击被成功防范,那么攻击者唯一的选择就是暴力破解搜索(穷举搜索)。本文中存在两种可能的暴力破解方法:(i)连接组合和(ii)向混淆芯片输入的密钥条目。在第一种情况下,攻击者会测试所有可能的芯片间连接,以确定哪一种连接能够实现系统的正确运行。在第二种情况下,攻击者通过混淆模块接口测试所有可能的密钥输入,直到系统正常工作为止。请注意,这种情况与第一种不同,因为它完全取决于置换网络的实现方式(即密钥与输入/输出组合之间的关系)。在第4节中,我们将建立评估方法来估算破解概率。

3. 置换网络实现

本节介绍了各种置换网络的背景,并选择了最适合实现所提出混淆方案的候选置换网络。根据选定的置换网络,我们提供了不同场景下的配置方法。

3.1. 置换网络介绍

在我们的保护方案中,选择合适的置换网络并在置换模块中实现它起着至关重要的作用。在我们的应用中,置换网络的输入是连接到可编程组件的信号,输出则连接到非可编程组件。根据是否能够实现完整的输入/输出置换,置换网络可分为blocking和nonblocking网络[Waksman 1968]。

阻塞置换网络表示该网络只能实现部分输入/输出组合。蝶形网络[Thamarakuzhi和Chandy2010]以及基本 Omega网络[Mitra和Cieslak1987]是阻塞置换网络的两个例子。

非阻塞置换网络表示该网络能够在有约束或无约束的情况下实现所有输入/输出组合。此类置换网络包括三个子类别。(i)严格意义无阻塞网络[Giacomazzi和Trecordi1995]能够构建一条新路径以连接未连接的输入和输出,而不论任何已建立的路径。(ii)广义无阻塞网络[Feldman等人1988]不提供像严格意义无阻塞网络那样的严格独立性保证,但仍可通过某些算法将任意未使用的输入连接到任意未使用的输出。(iii)最弱的非阻塞置换网络概念是可重排无阻塞网络[Pippenger1978]。这类网络无法在不了解输入和输出顺序的前提下完全实现网络配置。Benes网络[Chang和Melhem1997]就是这种网络的一个示例。

我们在三种置换网络之间进行了比较:Omega网络(阻塞型)、基于多路复用的网络(严格无阻塞型)和Benes网络(可重排无阻塞型)。这些网络使用QuartusII软件进行综合,并在AlteraMAXVCPLD上实现。目标CPLD包含570个逻辑单元(LEs),这是CPLD中的基本逻辑单元。面积开销以已使用逻辑单元的百分比表示。结果表明,Benes网络所使用的逻辑单元为60%,而基于多路复用的网络为115%。除了面积开销外,还估算了功耗开销和传播延迟。这些开销是基于在MAXVCPLD上实现的32位Benes网络进行估算的。功耗开销为0.04mW,平均管脚到管脚延迟为20.5ns。

为了抵御暴力破解攻击的鲁棒性,所需的最小置换网络规模为32个输入和32个输出(详见第6节)。我们决定在本文余下的部分中重点实现Benes网络作为置换模块,原因如下:(i)显然,阻塞型置换网络并不合适,因为它们产生的输入/输出组合有限。例如,一个32位Omega网络仅提供1.2379E+ 27种输入/输出组合。而32个输入的完全混洗应为32的阶乘,即2.6313E+ 35。因此,Omega网络仅能达到总计输入/输出组合数的1/2.1256E+08。与阻塞型网络相比,无阻塞网络(如Benes网络)能够实现所有可能的输入/输出组合。就本案例而言,设计者应从无阻塞网络中选择候选方案。(ii)考虑到硬件面积开销,Benes网络远优于基于多路复用器的网络。对于此应用,严格意义上的无阻塞网络具有显著的开销,而其优势在我们的使用场景中并不需要。

3.2. 置换网络配置

最基本的Benes网络单元是一个如图3(a)所示的1比特控制的2到2开关。这些开关在两种模式下运行:当控制位为0时处于直通模式,当控制位为1时处于交换模式。混淆key中的位被用作每个开关的控制位。我们将每一列开关定义为一级。Benes网络的symmetry property在配置过程中起着关键作用。该特性意味着Benes网络在中心级上具有旋转对称性。根据此特性,中心级左侧的级被称为前向级,右侧的级被称为后向级。这些级的分类如图3(b)所示。设计者可以利用这些特性来简化配置过程。

示意图2

网络配置可以根据先验知识和目标分为两种情况。

情况1:设计者旨在根据已知的输入顺序和预定义密钥来确定输出的顺序。由于Benes网络具有旋转对称性,它始终由奇数个级组成。级的数量(S)可以通过以下方式求得 S= 2∗log2N−1,其中N是网络维度(即Benes网络的输入数量)。每一级都可以通过从密钥导出的方置换矩阵(PM)进行数学表示。置换矩阵在每一行/列中恰好有一个“1”,其余为“0”。每个置换矩阵表示经过相应级的排列后的输入。置换矩阵的乘法表示连贯地通过多个级。对称性特性有助于设计者简化置换矩阵的计算。在计算出置换矩阵和输入顺序(I)后,我们可以将输出顺序(O)形式化如下:
O= I ×
log2 N−1

i=1
PMi, (1)
其中N表示输入数量。在已知输出顺序和密钥的情况下,可以采用相同的步骤计算输入顺序。

情况2:设计者的目标是找到一个或多个能够实现所需输入/输出置换的密钥。此过程也称为网络路由。先前的研究,例如Nassimi和Sahni[1982]提出了一种基于搜索环路(后文定义)的高效路由算法,这些环路涉及外级。外级(OS)被定义为像图3(b)中第0阶段和第4阶段这样的镜像阶段对。外级数量K根据输入数量N按如下方式定义:
K= log2 N −1. (2)

环结构如图4所示。举例来说,假设网络输入为[0 1 2 3 4 5 6 7],输出为[3 7 1 0 4 2 5 6]。为了确定环路,所提出的方法将每个开关符号化为一个节点,标记为x0, y0,等,如图4(b)所示。节点之间的连接是基于输入/输出顺序构建的。一个环路包含所有互连的节点。在同一环路中,通过跟随它们之间的互连,一个节点可以到达任意节点(包括其自身)。如果两个节点直接连接(例如,x1和y0)或间接连接(例如,x2和y0),则它们应被归入同一个环路。例如,虚线环由节点x0和y1组成。一个环内的节点不应与该环之外的节点相连。除了由第0阶段和第4阶段形式化的外层阶段之外,在图3(b)中的子阶段1.1和子阶段3.1等其他外级中也可以发现类似的环结构。配置可以通过为每个节点(开关)分配“0”或“1”来完成。如Nassimi和Sahni[1982],所述,每个环路可分配两种等效的密钥配置。这两种配置是互补二进制链,例如“1011”和“0100”。

这种多配置现象可能导致多个密钥实现相同的输入/输出组合。在本文中,我们将此现象称为multiple-key effect。这种效应可能通过增加破解概率(即通过穷举搜索获得正确配置的概率)而削弱保护强度。

示意图3 开关连接和(b)组示意图。](图4)

4. 混淆与评估方法

在第2.1节中,给出了基于置换的混淆的整体思路。如前所述,真实/虚拟端口由置换模块进行置换。如第2.2节所述,并非所有原始连接都可用于混淆。本节提出了一种端口选择框架,用于选择适合混淆的端口。根据所选端口的类型和数量,确定破解概率。最后,我们提出了一种针对多个密钥数量的概率计算方法。

4.1. 端口选择框架

所提出的框架包含三个阶段:(i)预处理阶段,用于确定用于混淆的端口候选;(ii)分组阶段,在此阶段我们根据可编程组件和非可编程组件的端口描述对端口进行分组;以及(iii)度量计算阶段,在此阶段计算混淆强度。混淆强度推断了攻击者通过暴力破解学习正确连接/密钥的难度。

在本节中,我们提供了图5中恩智浦(NXP)的一个参考设计。该图展示了基于飞思卡爾ColdFireV1MCF51MM256CLL微控制器[Fre2014]的飞思卡爾活动监测器参考设计的框图。这是一个非侵入式采集系统,集成了计步器、心电图、饮食摄入表、数据存储、无线通信、定时器和计时器。该参考设计被用作后续预处理阶段和分组阶段讨论的示例,可视为图2的实际实现。其中,可编程组件为ColdFireV1MCF51MM256CLL微控制器单元,非可编程组件以紫色表示。在所有非可编程组件中,只有触摸感应设备和显示模块的连接可以参与混淆(原因见下文的预处理阶段)。

示意图4

预处理阶段:首先,我们将未使用的端口分组,并将该集合命名为虚拟端口集(SetD)。在所有连接的端口中,我们排除用于以下用途的端口:模拟输入/输出(因为置换模块只能处理数字信号);串行或并行通信端口(由于它们具有可预测用途,因此不适合用于混淆);以及任何对时序敏感的端口(因为置换模块可能会引入额外延迟)。剩余的连接端口将被命名为真实端口集(SetR)。

分组阶段:分组的原因是为了评估混淆的强度。分组不会影响实际硬件实现。这是必要的,因为智能攻击者可能从可编程和非可编程组件的端口描述中获得一些信息(参见第2.2节中的功能逆向工程)。对于非可编程组件,大多数端口的功能是专用的。例如,如图5所示,触摸感应模块将通过快速通用输入输出(RGPIO)与微控制器单元通信。并非该微控制器单元上的所有端口都具备作为RGPIO工作的能力(实际上只有16个端口)。在这种情况下,攻击者可以通过仅从16个端口中搜索触摸感应设备的正确连接,而不是从微控制器单元的所有端口中搜索,从而缩小搜索范围。对端口进行分组有助于我们在后续的度量计算阶段避免高估混淆强度。

分组阶段有两个步骤: 步骤1包括对SetR中的真实端口进行分组。由于非可编程组件的端口具有更专用的功能,我们的目标是在可编程组件上找到具有对应功能的端口。图6基于图5中的设计给出了一个示例。图6左侧是微控制器的端口描述,可从手册/数据表中轻松获取。X/Y/…/Z表示该端口可能具有多个可能的功能。对于图6所示的端口描述,PTXX(PTH2、PTE1等)表示此端口具有通用输入输出功能,RGPIOX(RGPIO2、RGPIO3等)表示此端口具有快速通用输入输出功能。图6右侧展示了两个连接到微控制器单元的非可编程组件。这些端口的名称(T_DWN、LCD_CS等)可以从这些芯片的文档中获知。与微控制器的端口描述不同,这些端口的功能是专用的。

示意图5

在图6中,以粗体显示的端口描述意味着攻击者可以根据非可编程组件的信息,从所有可能的功能中轻松确定该功能。例如,攻击者可能知道微控制器单元的某些端口应作为触摸感应设备所需的电阻式通用输入输出工作。

本例中的功能组为SetR(RGPIO)和SetR(GPIO),如图6所示。SetR(RGPIO)组包含原始设计中用作RGPIO的所有微控制器单元端口。除了RGPIO外,其他微控制器单元也可能具有其他功能组。例如,飞思卡尔MKM34Z128CLL5微控制器有45个端口用于液晶显示器。飞思卡尔KinetisKEA128微控制器上有10个FlexTimer(FTM)端口可用于生成脉宽调制(PWM)信号。德州仪器TMS320F2837xD系列微控制器有24个端口可生成PWM信号。微芯科技PIC32MZEC系列微控制器有5个端口作为外部中断。来自不同制造商的许多微控制器单元和数字信号处理器(DSPs)都具有上述功能组,但端口名称不同。除了这些具有特定功能的端口外,其余端口仅需通用输入输出端口功能,这些端口被归入SetR(GPIO)中。

步骤2:在从步骤1获得若干组后,我们基于此信息分析虚拟端口。虚拟端口有两种类型,如下所示:—虚拟端口在步骤1中只能用于一种且唯一的一种功能(单功能虚拟端口),例如 PTA2/KBI1P1/RX1/ADP4PTA3/KBI1P2/FBD6/ADP5. —虚拟端口可在步骤1中用于两种或更多种功能(多功能虚拟端口),例如PTB6/KBI1P3/RGPIOP0/FBAD17 PTB7/KBI1P4/RGPIOP1/FBAD0._

如图5所示的示例中,共有33个虚拟端口。其中4个可同时用作GPIO和RGPIO;29个仅用作GPIO。攻击者可以对如何将多功能虚拟端口分配到不同组进行任意猜测。不同的虚拟端口分配方式会产生不同的混淆强度估计。

度量计算阶段:在此阶段,我们计算混淆强度。此步骤可用于确定在资源约束(如置换块输入输出数量和时序约束)下能够实现最佳混淆效果的端口。相关度量将在第4.2节中讨论。

对于包含多个可编程组件的印刷电路板,端口选择框架可以分别应用于每个可编程组件。来自多个可编程组件的选定端口由同一个置换模块进行置换。

4.2. 混淆强度

攻击者的目标是找出芯片之间的正确连接。为实现这一目标,攻击者可以直接检查置换模块的输入/输出组合,或检查密钥。攻击者实现该目标的难度被定义为混淆强度,可用破解概率来表示。在本文中,当攻击者尝试输入/输出组合时,破解概率表示为Pcom;当攻击者尝试密钥时,表示为Pkey。Pcom和Pkey相等当且仅当输入/输出组合与密钥之间存在一一对应关系。

在本节余下部分,提出一个流程来估算Pcom。如第4.1节所述,虚拟端口可以采用不同的方式进行分组。攻击者可能在所有可能性中对如何分组虚拟端口进行盲目猜测。他任意选择一种虚拟端口分组方式。这种选择可能导致需要尝试的暴力组合数达到最小值。这正是本节试图估算的混淆强度的下界。在分析攻击者检查输入/输出组合时的混淆强度时,需考虑不同的情形。

情况1:仅使用真实端口的混淆。根据有限的信息(已在第4.1节中说明),真实端口可以被划分为M(M 1)组。设每组包含Rk(1 k M)个端口。我们以图5中的应用为例。在预处理阶段和分组阶段之后,仅剩下触摸感应设备和显示模块的连接需要进行混淆处理(M= 2)。R1= 6,因为微控制器单元上有6个真实端口与触摸感应设备通信;R2= 13,因为显示模块需要微控制器单元上的13个端口。

我们还定义了两种子情况,称为单组测试可行(IGTP)和单组测试不可行(IGTI)。IGTP意味着攻击者只需研究组内的连接即可确定正确性,而无需考虑所有其他组的连接。这将导致攻击者需要考虑的组合数减少,从而降低混淆强度。另一方面,IGTI意味着一组的连接可能与其他组的连接对攻击者而言相互混淆。这会增强混淆强度。For IGTP,该度量由公式(3)给出,而IGTI由公式(4)给出,
CR IGTP=
M1

k=1
Rk!, (3) CR IGTI=
M2

k=1
Rk!, (4)
其中M1(1 steIGTP组的数量,M2(M2 M)是IGTI组的数量。可以很容易地看出M= M1+ M2。 M) i h

情况2:包含真实端口和虚拟端口的混淆。这与情况1类似,但还为每组额外包含Dk(1 k M)个虚拟端口。对于IGTP,该度量由公式(5)给出。对于IGTI,该度量由公式(6)给出。
CD&R IGTP=
M 1
∑ k=1(
Dk+ Rk
Rk)Rk!, (5) CD&R IGTI=
M 2
∏ k=1(
Dk+ Rk
Rk)Rk! (6)

在情况1和2中,IGTP组可能不存在。在这种情况下,我们可以将组合数C写为 h i i d IGTI b h i I h
C= CD&R IGTP+ CD&R IGTI OR C= CR IGTP+ CR IGTI . (7)

在图5所示的示例中,Dk对于相同的k可能具有不同的值,因为攻击者可以以多种不同方式分配多功能虚拟端口。这意味着组合总数可能有多个值。我们可以将其形式化为一个优化问题,以求得混淆强度的最坏情况估计。公式(8)是目标函数,其形式如公式(7)所示。我们需要在混淆中使用所有虚拟端口(TD),如公式(9)所示。公式(10)表示每个变量( Dh)应位于对应组的单功能虚拟端口数量(TDUh)与对应组的多功能和单功能虚拟端口总数(TDAh)之间的范围内。公式(11)表示任意两个不同变量之和应小于或等于这两个对应组并集中的端口数量(TDAi,j)。公式(12)对于增加一个组的情况同理。如果组的数量更多,约束的数量也将增加。该优化问题可通过在线性约束下寻找多项式的最小值来求解。然而,我们发现组的数量很少,因此可以轻松枚举所有解以确定最小值。注意,上述问题的解代表了本节开头提到的混淆性能的下界。

Minimize C, (8)
Subject to
M

k=1
Dk= TD, (9) TDUh Dh TDAh, ∀h ∈[1, M], (
示意图6
示意图7

当攻击者试图检查输入/输出组合时,破解概率(Pcom)可通过公式(13)计算。
Pcom= 1 C
. (13)

4.3 多密钥计算

如本节前面所述,只有当密钥与输入/输出组合之间存在一一对应关系时,Pkey才等于Pcom。然而,当实现某些置换网络(例如Benes网络)时,这种情况并不成立。当攻击者选择检查密钥时,破解概率可通过公式(14)计算。
Pkey= Number of correct keys Total number of keys
. (14)

由于密钥总数大于输入/输出组合的总数,多密钥效应可能会或可能不会增加破解概率。第 3.2节中的第二种配置情况意味着在已知输入/输出顺序的情况下计算密钥。在此配置中,每个环路内的开关可以有两种配置方式,例如“1101”和“0010”。这些开关的配置相互连接形成密钥。通常,环路数量与多个密钥(Mkey)之间的关系可以用公式(15)来描述。

Mkey=
K

k=1
2li= 2∑K i=1 lk, (15)
其中K为外层阶段的数量,每个外层阶段包含lk环路。如图7(第3.2节)所定义,一个环路由两个或更多相互连接的开关组成。注意,环路是计算多重密钥数量的基本单位。

环路数量(lk)取决于输入/输出组合。当置换网络包含超过16个输入时,这些组合的数量变得极为庞大且无法枚举。

在本节中,我们提出了一种逐步方法来估计lk的概率分布。所提出的方法使设计者能够估算多个密钥的最小值、最大值和平均数量。基于这一知识,设计者可以确定攻击者在检查密钥时的预期破解概率。为实现此目标,应依次完成以下阶段:—阶段1:第一外级分析旨在计算第一外级中的环路数量分布。第一外级由第一级和最后一级(即图3(b)中的第0阶段和第4阶段)组成。该分布在计算内部级的分布时被用作基础概率。在此阶段中,为简化起见,我们假设Benes网络输入和输出顺序是均匀分布的,但我们的方法具有通用性,也可处理其他先验概率。—阶段2:条件概率估计在给定第(n − 1)个外级的环路数量的情况下,确定第n个外级的环路数量,其中n>= 2。例如,该阶段会估计当第一外级包含三个循环时,第二外级(图 3(b)中的第1级和第3级)包含两个循环的概率。这一估计至关重要,因为除了第一个外级之外,其余所有外级均不满足均匀分布假设。在外级与其更高级别的外级之间观察到存在依赖关系。—阶段3:多重密钥分布分析通过结合第一外级环路数量(阶段1)和条件概率(阶段2)来实现其目标。

4.3.1. 第一外级分析。在本节中,我们提出一个数学模型来计算第一外级中环路数量的概率。为实现这一目标,提出了两步法。结果将在第6.3节通过模拟数据进行验证。

步骤1根据环路数量对开关进行分组。图4(b)展示了具有两个循环的第一外级。一个环包含两个开关(x0和y1,,用红色虚线表示),而另一个环由六个开关组成(x1, x2, x3, y0, y2和y3,用实心蓝线表示)。构成同一环的这些开关被归为一个开关组。由于任意开关组中的开关数量始终为偶数,因此该开关组可用实体{1, 3}表示,其值等于每个环中的开关数量除以2。这种组表示意味着:(i)该开关组中的元素数量为2,等于环路数量;(ii)该开关组中元素之和为4,等于一级中的开关数量。

根据环的定义,一个环中开关的最小数量为2。因此,一个外级中的最大环路数等于一级中的开关数量。例如,在图7(a)中,该外级由四个环路组成,每个环路由两个开关构成 (x0和y1,,x1和y0,等)。一级中的开关数量记为W,这是一个仅取决于网络维度的参数。当所有开关都被包含在一个环路中时,环路的最小数量为1(如图7(b)所示)。由于所有节点都可以通过互连相互到达,因此所有节点都属于同一个环路。换句话说,这些节点中的任意两个都直接或间接地相互连接。

此步骤的目标是收集环路数量从1到W的所有可能的开关组。为实现这一目标,我们求解公式(16)的所有正整数解。每个解对应一个可能的开关组。
n

i=1
ai= W, 1 ≤ ai ≤ W, (16)
其中n表示第一外级中的环路数量,其值可以是1到W之间的任意值。解(开关组)定义为
a={ai, a2,…,an},其中ai是一个开关组元素。对于一个给定的n值,可能找到多个解。这些解被收集为对应于该n值的解集。每个解集将进一步通过去除重复解来精炼。例如,解{121}是解{112}的一个重复解。最终,针对每一个n值计算出一个包含一个或多个解的解集。

我们以16位Benes网络为例讨论此步骤,并在表I中展示结果。在此情况下,W= 8,且我们将n从1变化到8。开关组(SwG)用符号{·}表示。SwGn i表示当环路数量为n时的第i个开关组。每个开关组由一个或多个开关组元素SEn ,i j组成,这表示SwG n i中的第j个元素。我们还将环路数量为n时的开关组总数定义为TSwGn。例如,在表I中,SwG4 2表示开关组{1124},该开关组中的第三个元素是SE4 2 3= 2,。产生四个环路的开关组数量为 TSwG4= 5。此外,开关组{1124}意味着开关被分组成四个环路,分别包含两个、两个、四个和八个开关。对于不同的n值,开关组的数量为TSwG,且每组中的元素数量可能不同。

步骤2计算第一外级包含n个环路的概率Pr(n)。计算Pr(n)等同于在随机选择输入/输出置换时,求出SwG n

多于一个开关组对Pr(n)产生贡献。在这些情况下,计算Pr(n)时应包含所有开关组。
Pr(n)=
TSwGn
∑i=1 Pr(SwGn i). (17)
在公式(17)中,TSwGn表示形成n个循环时的开关组总数。Pr(SwGn i)表示开关组SwGn i出现的概率。Pr(SwGn i)的计算依赖于开关组SwGni中的每个开关组元素(SEi,nj)。由 SEn,ij提供的概率定义为Pr(SEn,ij)。Pr(SEn,ij)可通过从交换机池中无放回地抽样SEn,i j个开关直至所有开关都被抽样来计算。池中开关的数量取决于网络维度。最后,Pr(SwGn i)可由公式(18)计算得出。上述计算过程在算法1中进行了详细总结。
Pr(SwGn i)=∏j Pr(SEn,i j). (18)

算法1的主要思想如下所述。该算法旨在计算每个开关组的概率(例如,表I第二列中的{1 7}、{125}等)。此计算通过一种无放回选择过程实现。算法1中的第5到16行用于实现该过程。例如,为了计算开关组{1 2 5}(表I第四行第二列的第一个组)的概率,应按顺序执行以下步骤。在第一次迭代期间,算法计算从由八个开关组成的交换机池中随机选择一个开关的概率。该概率记录为Pr(SE3,1 1)。由于该过程需在无放回条件下完成,因此在从交换机池中选择一个开关后,交换机池中的开关数量减少至7。然后,从7个开关中随机选择两个开关的概率被存储为Pr(SE3,1 2)。在此迭代之后,交换机池中的开关数量减少至5。最后一次迭代从池中选择五个开关,并将概率存储为Pr(SE3,1 3)。这三个概率在第18行相乘 (即公式(18))。第19到27行展示了调整过程。由于某些组合被多次计数,因此需要对概率进行调整。当处理完特定环路数量的所有开关组后,可在第29行得到概率Pr(n)。

算法1提供了一种比穷举法更快的方法来估计分布。根据仿真结果,在Matlab中配置一个16输入Benes网络的1E6个输入/输出组合需要12小时。而通过穷举法搜索所有这些组合将耗时超过1E7小时,相当于数千年。因此,对具有超过16个输入的Benes网络的输入/输出组合进行穷举搜索在时间上不可行。然而,运行所提出的算法在Matlab中仅需几秒钟。

4.3.2. 条件概率估计。在第4.3.1节中,根据随机输入/输出假设计算了第一外级中包含的 n个环路的概率。然而,除第一外级之外的其他外级不满足该假设,因为它们的输入和输出在内部相互连接。换句话说,外级之间的环路数量存在相关性。例如,对于一个8位 Benes网络,如果第一外级由一个环组成,则第二外级只能由一个或三个循环组成。这一观察结果通过对8位Benes网络的输入/输出组合进行穷尽搜索得到验证。因此,

算法1:概率计算 input:SwGni,开关组集合表(表1) input:W,任意级中的开关数量 input:K,外级数量 input:TSwGn,当环路数量等于n时的集合数量 输出:Pr(n),第一外级包含n个环路的概率
1对于n← 1到W; /*对于所有可能的环路数量*/
2 do
3对于i ← 1到TSw; /*对于所有可能的开关组*/
4 do
5 Pr(SwGn i) ← 1; /*初始化概率*/
6 mRest ← W;/*恢复可选择的开关数量*/
7 对于j ← 1到Length(SwGn i);/*对于每个可能的开关组元素*/
8 do
9
如果SEn,i j = 1; /*计算以下概率的Const*/ 计算*/
10 then
11 Const ←∏
SEn,i j
−1 i=1 (2 ∗SEn ,ij −2 ∗i);
12 else
13 Const ← 1;
14 end
15
Pr(SE n , i j) ←(mRest , SEni
j)
2 ∗ 2 ∗ SEn,i j
∗ Const2/2W∗(2K+1); /*计算 每个开关对的概率*/
16 mRest ← W − SEn,i j;/*减少交换机池中的开关数量(该 可选择的开关数量)*/
17 end
18 Pr(SwGn i)=∏j= 1 Pr(SEn ,
i j);/*计算每个开关组的概率 */
19 foreach unique SE ∈ SwGn i& SE = 1;调整计算出的概率 (某些组合被多次计数)*/
20 do
21 r ←重复次数;
22 如果r=2那么
23 Pr(SwG n i) ←Pr(SwG n i)/2;
24 else
25 Pr(SwG n i) ←Pr(SwG n i)/2 r;
26 end
27 end
28 end
29 Pr(n)=∑ TSwGn
i=1 Pr(SwG n i); /*收集每种可能的 开关组的概率,并将它们相加*/
30end

第二外级中的环路数量取决于第一外级中的环路数量。为表示这种相关性,引入了在外级 (K个外层阶段(OS1到OSK)之间的条件概率Pr(·|·),定义如下:
Pr(OSk= lk|OS1= l1,…, OSk−1= lk−1) k ∈[2: K]. (19)
公式(19)计算了当其他外级(OS1到OSk−1 )包含特定数量的环路(l1到lk−1 )时,第k个外级(OSk)包含lk个环路的概率。每级的环路数量l1到lk的取值范围为1到W,即

任意级中的开关。针对每个k构建一个条件概率矩阵。该矩阵包含所有环路组合。由于某些组合无效,这些矩阵中的并非所有条件概率都非零。例如,当第一外级包含W个环路时,第二外级不能包含1个环。这些条件概率可通过少量仿真准确估计。

4.3.3. 多重密钥分布分析。通过分析环路数量的概率分布,可以进行多密钥数量分布的概率分布研究。在第4节中,结合了第4.3.1节和第4.3.2节所得的结果。在第4.3.1节中,计算了第一外级环路数量的概率分布。在第4.3.2节中,估算了条件概率。

一个包含K个外级且第k个外级(OSk)由lk ∈[1:W]环路组成的Benes网络,其概率
Pr(l1,…,lK)定义为以下事件同时发生:OS1包含l1个环路,OS2包含l2个环路,依此类推。
该概率可计算如下
Pr(l1,…, lK)=
K

k=2
Pr(OSk= lk|OS1= l1,…, OSk−1= lk−1) ∗ Pr(l1). (20)
Pr(·|·)的值可以从4.3.2节条件概率估计阶段估算出的条件概率矩阵中获得。Pr(l1)表示第一外级包含l1个环路的概率。为了计算网络包含L个环路的概率(Pr(L)),需要根据公式(21)获取所有可能的{l1,…,lK}组合数。
L=
K

k=1
lk, 1 ≤ lk ≤ W. (21)
固定L、K和W,所有可能的{l1,…,lK}组合数被收集到集合Q={{l1,…,lK}1,{l1,…, lK}2,…,{l1,…, lK}q}中。Pr(L)的计算可由公式(22)表示。
Pr(L)= ∑
∀q∈Q
Pr({l1, l2,…, lK})q. (22)
为了说明分布分析过程,根据图3所示的8位Benes网络计算Pr(L= 6)。在这种情况下,常量W= 4和K= 2仅取决于网络输入数量。根据公式(21),可能的{l1,…,lK}组合数为{2,4}、{3,3}和{4,2}。将这些信息以及第一外级的概率和条件概率代入公式(20)和(22),可在公式(23)中计算出Pr(L= 6)。
Pr(L= 6)= ∑
∀q ∈Q
Pr(l1, l2)q= Pr({2, 4})+ Pr({3, 3})+ Pr({4, 2}) = Pr(OS2= 2|OS1= 4) ∗ Pr(l1= 4) + Pr(OS2= 3|OS1= 3) ∗ Pr(l1= 3) + Pr(OS2= 4|OS1= 2) ∗ Pr(l1= 2).
(23)

5. 安全分析

攻击受保护的设备时,攻击者试图实现三个目标:过度生产、克隆或未经授权的操作。在本节中,我们将讨论实现这些目标的潜在攻击及相应对策。

5.1. 潜在攻击与攻击级别

为实现上述攻击目标,攻击者试图获取正确的密钥或输入/输出置换。以下攻击可由攻击者实施,其中一些攻击可直接为攻击者提供此类信息,而另一些攻击则用于加强其他攻击。

暴力破解攻击:这是最直接的方法,涉及攻击者尝试所有密钥或输入/输出置换。此类攻击的成功与否在很大程度上取决于破解概率(无论是Pcom还是Pkey)以及验证系统行为正确所需的时间。我们在第6节中提供了在最坏情况假设下的验证时间的定量结果,即最坏情况是攻击者可以在一个时钟周期内验证每个密钥或输入/输出置换。根据第6节所示的结果,攻击者通过暴力破解方式难以攻破我们的混淆方法。

表面走线探测攻击:对于每个系统而言,置换模块输入与相应输出之间的波形完全相同,即使密钥可能不同。拥有正常工作系统的攻击者可以使用多通道逻辑分析仪探测置换模块的所有输入/输出。通过简单匹配所探测信号的波形,攻击者就能找出可编程和非可编程组件之间的实际连接。

内存泄露攻击:存储在外部非易失性存储器(通常为闪存)中的数据可通过多种商业工具提取。外部存储器指位于电路板上的片外存储器,且所有端口均暴露在外。当密钥存储在该存储器中时,攻击者可通过实施此类攻击获取密钥,并利用该密钥操作其他受保护设备。为对外部存储器实施此攻击,攻击者可遵循以下步骤:(i)识别调试端口;(ii)提取并分析固件;(iii)查找密钥信息。为识别调试端口,需要使用简单的焊接台、万用表或逻辑分析仪。通过分析逻辑分析仪报告的数据,可以确定各端口的功能。若能找到被攻击闪存芯片的详细数据手册,则此步骤可跳过。根据第一步中识别出的端口,攻击者可在存储器与台式计算机之间建立串行/并行通信通道。该通道使攻击者能够向闪存发送指令。最后一步中,为查找密钥信息,攻击者需从闪存中提取数据。根据闪存的接口类型(串行或并行),可向闪存发送适当的读取命令以获取内容。可利用逻辑分析仪监控闪存的响应,通过分析该响应即可恢复密钥。

CPLD重新安装攻击:攻击者可以将置换模块(通常为复杂可编程逻辑器件)从印刷电路板上卸下,并将其重新安装到其他平台或使用合适的载板适配器安装回同一块印刷电路板上。该攻击不应损坏封装,可通过以下步骤实现:首先,通过热风加热移除球栅阵列芯片;接着,使用吸锡带清除焊料残留;然后,攻击者可以选择以下两种方式之一重新安装球栅阵列芯片:(i)安装到另一块定制PCB上,或(ii)使用合适的载板适配器安装回同一块PCB上(例如IronwoodElectronics[Ironwood2016]的商用产品)。重新安装拆卸下来的复杂可编程逻辑器件后,即可进行硬件探测。此类攻击本身不会直接向攻击者泄露密钥信息,但结合该攻击可使硬件探测攻击更加强大。

中间层探测攻击:攻击者可以通过非破坏性逆向工程方法(如基于X射线的技术[Asadizan‐jani2015;Ahi等人2015])发现完整的PCB布局。在布局信息的引导下,攻击者可以铣孔以探测每个CPLD端口。这些铣孔使攻击者能够访问CPLD端口,而不会损坏板上的其他走线。

集成电路逆向工程攻击:攻击者可以对板上的任何芯片进行完整的逆向工程,并完全获取存储在这些芯片中的秘密信息。此类机密信息包括用于解锁置换网络的密钥、可编程组件的固件、置换网络结构等。逆向工程攻击的具体方式将取决于置换芯片的实现形式 (专用集成电路、现场可编程门阵列、复杂可编程逻辑器件等)以及攻击者希望提取的内容(密钥、比特流等)。如果密钥或固件存储在外部非易失性存储器中,则可采用上述内存泄露攻击。如果密钥或固件存储在片上,则需要进行耗时的逆向工程,该过程可能需要多个芯片(样本)以及数百万美元设备(湿法或干法刻蚀设备、扫描电子显微镜(SEM) 或聚焦离子束(FIB)、探针台等)。

一般的逆向工程流程如下:(i)使用一个或多个芯片逆向工程物理布局和连接。此步骤需要去封装以暴露芯片。由于芯片是多层结构,应通过扫描电子显微镜(SEM)对每一层进行逐层剥离和成像,并随后进行图像拼接。由于该过程容易出错,可能需要多个芯片才能正确提取网表。(ii)在提取的布局/网表中确定所需信息的位置。获得网表后,下一步取决于存储数据的非易失性存储器类型(例如闪存和电子熔丝)。如果使用电子熔丝,则密钥/固件可能直接从上一步获取的图像中识别出来,从而完成攻击。对于闪存,则利用逆向工程得到的网表来识别承载所需数据的总线或网络。(iii)使用FIB探针台进行探测以提取密钥信息。人工操作员在新的(未剥离的)样品上定位前一步骤中发现的内部总线/网络,然后通过FIB在目标位置进行铣削并沉积金属,以建立物理接触,再通过探针台读取密钥信息。需要注意的是,为了成功读取数据,可能需要通过FIB绕过或规避芯片内的各种防篡改机制。上述所有步骤执行起来均非易事,且需要大量投入。

在IBM[Abraham等人 1991],的一篇知名文章中,作者建议可根据攻击者的预期能力和攻击强度将其分为三类:—一类(聪明的外部人员):他们通常很聪明,但可能对系统了解不足。他们只能使用中等复杂程度的设备。他们通常试图利用系统中已存在的弱点,而不是尝试制造新的漏洞。—二类(有知识的内部人员):他们具有丰富的专业技术教育背景和经验,对系统的某些部分有不同程度的理解,且可能接触到系统的大部分内容。他们通常可以使用高度精密的分析工具和仪器。—三类(获得资金支持的组织):他们能够组建由具备相关且互补技能的专家组成的团队,并拥有充足的资金支持。他们有能力对系统进行深入分析,设计复杂的攻击,并使用最先进的分析工具。他们可能会将二类攻击者作为攻击团队的一部分。

示意图8
示意图9

一类攻击者可以实施暴力破解攻击和表面探测攻击。由于这类攻击者对系统的了解有限,因此暴力破解攻击是最直接的方法。配备示波器后,此类攻击者即可完成表面探测攻击。利用一些低成本设备(如加热系统和BGA载板适配器),这些攻击者还可实现CPLD重新安装攻击。如果密钥存储在板上,则一类攻击者还可以实施内存泄露攻击。与一类攻击者相比,二类攻击者能够使用更精密的仪器进行中间层探测攻击。实施此类攻击所需的工具应具备对多层PCB进行非破坏性逆向工程和钻孔的能力。三类攻击者由于可获得最先进的分析工具和大量资源,因此能够实施集成电路逆向工程攻击。

5.2. 安全等级和攻击覆盖范围

考虑到各类攻击者及其能力,将防护措施分为三个安全需求等级。

低级安全需求:满足此安全要求级别的设备直接将相同的密钥存储在非易失性存储器中。为实现低级安全需求,我们建议对可编程组件和置换模块均采用BGA封装,并在印刷电路板中至少使用一个中间层进行连接布线。图8(a)展示了BGA封装的一个示例。由于当前印刷电路板的复杂性,多层结构的要求易于满足。对于BGA封装的要求,表II中的统计结果显示,在引脚数大于或等于64的可编程组件中,有很大部分的混淆候选对象采用了 BGA/VTLA(VTLA是微芯科技使用的一种与BGA封装非常相似的封装标准)封装(原因将在第6节中解释)。采用BGA封装不会引入额外的面积和功耗开销。对于同一型号的芯片, BGA封装与其他封装的成本也相同。在进行PCB布线时,我们识别出可编程组件与置换模块之间的所有连接,并将其布线于中间层。该布线要求在本文后续部分称为中间层布线。图8(b)展示了一种隐藏连接的示例。此步骤旨在降低攻击者通过探测工作设备来识别芯片间连接的可能性。同时还应应用低成本的防篡改技术[Karri等人,2010;Skorobogatov 2006]。

除了封装和布线要求之外,隐藏每个密钥位与开关之间的关系可以进一步增加破解难度。为了实现这一点,在配置置换网络之前,应使用安全哈希函数对密钥进行预处理。

中等安全级别要求:系统重启对于大多数工业系统和消费类电子产品来说是不可避免的。由于在这种情况下每次重启后重新应用密钥通常是不切实际的,因此这些系统需要将密钥存储在非易失性存储器中,并在重启前自动重新加载。这种行为为攻击者提供了通过某些技术(例如CPLD重新安装攻击)破解混淆的机会。

为了满足中等安全级别要求,需要采用BGA封装和中间层布线。此外,我们建议使用一种板级物理不可克隆函数(PUF),该函数结合外部密钥(输入)在置换模块内计算生成内部密钥。为实现这一点,应修改置换模块的固件以集成用于板级PUF的测量模块[Zhangetal.2015;Weietal.2015]。该板级PUF利用印制电路板制造过程中的工艺差异,这些工艺差异包括走线宽度/厚度等的变化。这些差异会导致相同走线在不同印刷电路板上的阻抗/电容发生变化。置换模块可以从这些走线中生成特征签名。例如,可将走线构造成环形振荡器电路,并将其频率作为特征签名进行测量。板级PUF应对任何影响其阻抗的变化保持敏感:走线、焊料和芯片的任何结构变化都应被PUF检测到。走线的变化可能指对走线的探测行为,使用示波器等设备对走线进行探测应导致PUF输出发生显著变化。焊料的变化表示有人从印刷电路板上移除或添加焊料。移除芯片时,攻击者需去除该芯片焊盘上的焊料;若任何板级PUF与这些焊盘相连,则PUF的输出应随之改变。芯片的变化意味着芯片被更换,这种更换包括攻击者安装探测系统(即插座)以对芯片进行探测的情况。

设计者在开发板级物理不可克隆函数时应考虑一些挑战。这些挑战包括鲁棒性和分辨率。鲁棒性是指PUF输出在各种环境条件(例如温度和电压)下的稳定性。如果未发生结构变化,置换模块应接收到稳定的PUF响应。然而,环境变化可能会引入错误,因此可能需要某种纠错码来消除这些错误。另一个挑战是分辨率。板级物理不可克隆函数应对P UF走线的最小变化都足够敏感。请注意,如何实现板级物理不可克隆功能的具体讨论超出了本文的范围,被视为正在进行的工作。

实现中等安全级别要求的通用流程如图9所示。首先,用于读取PUF输出的专用固件被下载到置换模块中。然后,置换模块将加密的PUF读数发送回设计者。设计者根据接收到的PUF输出修改置换固件,并将该固件发送至装配环节,以重新加载到置换模块中。当印刷电路板/系统处于现场时,此修改后的置换固件仅在接收到正确的PUF读数时才能正常工作。该机制可防范CPLD重新安装攻击,因为在攻击者平台上的PUF读数与原始板不同。由于PUF读数不同,密钥无法生成正确的输入/输出置换。

示意图10

或者,可以利用多种其他方法来实现基于置换的混淆。详细描述和定义如下所示。—统一固件:相同的固件直接加载到任意置换模块中,并且它们共享相同的密钥。—基于密钥:密钥信息(例如可编程组件的输出顺序)被嵌入到固件中。每个置换模块和可编程组件接收不同的固件,且密钥也是唯一的。—芯片签名:在置换模块的标识符中使用了芯片级PUF(例如静态随机存取存储器物理不可克隆函数或环形振荡器物理不可克隆函数)。所有置换模块加载相同的固件,但输出不同的PUF读数。这些加密的PUF读数将被发送给设计者。设计者可以计算出密钥并将其发送回系统。—板级签名:板级签名(板级物理不可克隆函数读数)存储在置换模块中。需要使用比较器将上述存储的物理不可克隆函数签名与实际板级物理不可克隆函数输出进行比较。如果实际读数与存储值匹配,则系统可以被激活。

与所提出的板级物理不可克隆函数+置换解相比,这些替代方法存在若干缺点:—统一固件和基于密钥的方法即使面对低成本攻击(如CPLD重新安装攻击和内存泄露攻击)也容易受到攻击。—芯片签名方法可以消除内存泄露攻击,但容易受到CPLD重新安装攻击。作为合法用户的攻击者可以重新安装置换模块,并将正确密钥加载到其中。—板级签名方法容易受到重放攻击,因为PUF读数存储在芯片中。通过攻破内存,攻击者可以恢复存储的PUF读数,并在系统获取板级物理不可克隆函数时无论何时都可重放相同的值。这样一来,即使复杂可编程逻辑器件被从原始位置移除,攻击者仍能正确配置置换模块,从而实现CPLD重新安装攻击。—此外,该方法需要一个比较器来将上述存储的物理不可克隆函数签名与实际板级物理不可克隆函数输出进行比较。这很容易被故障注入攻击绕过,从而导致在没有正确物理不可克隆函数签名的情况下仍可使电路板正常工作。

板级物理不可克隆函数提供了系统完整性检查(即保证复杂可编程逻辑器件安装在原始印刷电路板上)以及为不同印刷电路板提供唯一密钥的优势。因此,利用物理不可克隆功能增强了基于置换的混淆,同时基于置换的优点仍起着主要作用。与上述替代方法相比,实现所提出的板级物理不可克隆函数对于消除各种低成本攻击至关重要。

高级安全要求:在这种情况下,密钥不存储在系统的非易失性存储器中,重启后需要重新输入到系统中。满足此安全要求的设备应具备抵御所有已知攻击的能力。关键应用,如军事设施和存储敏感数据的商用设备,需要此级别的保护。此外,这些设备的密钥应得到妥善保护。可利用操作员生物特征(例如指纹、虹膜等)来生成密钥[Beng等人2008]。生物特征难以被复制或窃取[Wayman等人2005]。结合所提出的保护

将基于生物特征的密钥生成技术与框架结合,密钥与操作员绑定。

由于密钥未存储在非易失性存储器中,因此在CPLD中利用D触发器链构成移位寄存器。CPLD上的一个专用端口被设计为串行密钥输入。移位寄存器的每一位配置一个Benes网络开关。当CPLD断电时,D触发器丢失其值,密钥也随之被销毁。每次系统重启时,用户都需要重新向 CPLD输入密钥。我们还需要考虑电路板断电后存在的数据残留现象[Drimer 2009](触发器可能存在偏置),尤其是在低温环境中。为了实现更高安全级别,可以开发定制化CPLD,以在断电后彻底销毁密钥。

对于所有级别的安全要求,我们假设可编程组件的固件可以通过互联网以加密版本下载。解密密钥存储在微控制器单元中用于解密固件(例如RSA私钥)。若攻击者不知道解密密钥,则无法对固件进行逆向工程。此外,存储在可编程组件片上闪存中的固件应得到适当保护。目前,已有多种商业工具[科德2016;Wilkinson2015]为微控制器单元/现场可编程门阵列提供此类保护。例如,恩智浦的CodeWarrior[科德2016]可以设置安全位,一旦发生未授权读取固件的情况,整个闪存将被擦除。

考虑到前述不同安全要求级别下的各种攻击者能力,我们在图10中全面分析了防护覆盖范围。满足低级安全需求的设备能够部分消除一类攻击者所实施的攻击(暴力破解攻击和硬件探测攻击)。由于混淆连接隐藏在中间层中,因此硬件探测攻击无法实施。然而,由于相同的密钥存储在板上非易失性存储器中,一类攻击者可以提取该密钥,并将其用于激活其他印刷电路板(存储器泄露攻击)。这些攻击者还可以使用载板适配器将置换模块重新安装到自己的平台或原始印刷电路板上(CPLD重新安装攻击),以实施硬件探测攻击。

如果设备符合中等安全级别要求,则可以消除内存泄露攻击和CPLD重新安装攻击。在此安全要求级别的设备中,采用了带有板级唯一标识符(板级物理不可克隆函数[张等人,2015;Wei等人2015])的混淆方案。该组合可确保以下几点:—置换模块仅在直接连接到其原始印刷电路板时,才能使用预存密钥解锁系统。—不同印刷电路板的密钥各不相同。“原始印刷电路板”要求表明,如果将复杂可编程逻辑器件安装在另一块定制PCB上,它将接收到不同的PUF响应。另一个要求“直接连接”意味着,如果使用适配器/插座将复杂可编程逻辑器件与原始印刷电路板连接,板级物理不可克隆函数的响应将会改变。原因是适配器/插座为板级物理不可克隆功能引入了额外的阻抗。不幸的是,系统重启后自动加载密钥再次使得中间层探测攻击成为可能。此类攻击不会重新分配置换模块,而是通过X射线等非破坏性技术提取印刷电路板布局[Asadizanjani 2015]。掌握这些信息后,二类攻击者可以创建孔洞以探测置换模块的引脚。该攻击可在运行时完成,无需对印刷电路板进行逐层剥离。即使由于中间层极其复杂而无法实现中间层探测攻击,三类攻击者仍可通过逆向工程芯片获取密钥。

为了最终防止所有已知攻击,系统在断电时应销毁密钥。高级安全要求通过将密钥存储在易失性存储器(嵌入式D触发器

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值