第13章 用于保护半导体供应链的混淆与加密
乌贾瓦尔·金和马克·M·特赫拉尼尼普尔
13.1 密码学原语
随着互联网的出现,安全已成为我们日常生活中不可或缺的一部分。现代密码学几乎应用于通信系统的各个领域,包括国防部门、移动设备、银行业、医疗以及其他众多应用中,以提供安全防护,抵御对手的非法访问。然而,在保护半导体供应链免受各种攻击(包括知识产权盗版、知识产权过度使用和集成电路过度生产)方面,其应用却相对较少。接下来,我们将首先介绍各种密码学原语,然后利用这些原语来保护半导体供应链。
图13.1 现代通信系统中使用的密码学原语的分类法
加密 & 解密
| 对称密码 | 非对称密码 |
| — | — |
| 流密码 | 离散对数 |
| 分组密码 | RSA |
| | 椭圆曲线 |
认证
| MAC | 数字签名 |
图13.2展示了对称密钥密码系统,其中两个可信方(爱丽丝和鲍勃)希望彼此私下通信。爱丽丝使用密钥(K)对明文(p)进行加密,并传输密文(c=K(p)),从而形成一个安全通信信道。鲍勃接收到密文c,然后执行解密以重构明文p,其中 p= K(c)。对手奥斯卡观察到密文,但由于他不拥有密钥K,因此无法重构原始明文。注意,这些密码系统的加密和解密过程均使用相同的唯一密钥(K)。这些系统的安全性在于爱丽丝和鲍勃共享的密钥保持秘密。这也意味着鲍勃和爱丽丝必须事先约定密钥,或秘密地将密钥从一方传递给另一方。
图13.2 对称密钥密码系统
13.1.1 对称密码
加密
加密过程可以表示为:
c = f_K(p) = K(p)
其中,p是明文;c是密文;而 f_K(.) 或简称为 K(.) 是加密函数。
解密
解密过程可以表示为:
p = f⁻¹_K(c)
其中,f⁻¹_K(.) 是解密函数。
对于对称密钥密码系统,加密密钥必须是解密的密钥。因此,我们可以简单地写成:
p = K(c)
13.1.1.1 流密码
流密码是对称密钥密码系统中最早使用的一类密码。流密码以按位方式对明文进行加密,密文的解密也以类似方式进行。由于流密码体积小、速度快,因此主要应用于轻量级应用。加密和解密通过模2加法(异或等价)实现。
加密
ci = pi + ki mod 2 = pi ⊕ ki (13.1)
解密
pi = ci + ki mod 2 = ci ⊕ ki (13.2)
其中,pi是明文p的第ith位,ki是密钥K的第ith位,ci是密文c的第ith位,pi, ki, ci ∈ {0, 1}
吉尔伯特·S·弗纳姆提出了一种完全保密密码,该密码被授予美国专利1310719号1919[8]。这种密码最广为人知的名称是一次一密(OTP),但也被称为弗纳姆密码,以纪念其发明者。
图13.3 使用一次一密的对称密钥密码系统
图13.3展示了一个使用一次性密码本的对称密钥密码系统。加密和解密通过使用公式13.3和13.4实现。尽管它提供了完美保密性,但在对称密钥密码系统中应用一次性密码本存在两个严重限制。第一,密钥长度必须等于待加密的数据(明文)长度。对于长消息而言,维护如此长度的密钥在实际中是不可能的。例如,要加密一个大小为4GB的电影或电脑游戏,就需要一个4GB的密钥。第二,密钥只能使用一次,否则密码会泄露信息。考虑到爱丽丝需要事先将密钥安全地发送给鲍勃,这两个限制变得更加严重。如果爱丽丝已经能够安全地将一个与数据等长的密钥发送给鲍勃(例如当面交付),那为什么不直接用同样的方式发送数据本身呢?由于这些原因,一次性密码本在实际应用中很少有用。一次性密码本通常仅用于明文长度非常小(几位)的应用场景。在本章中,我们将在第13.4节使用一次性密码本,以提供针对知识产权过度使用和集成电路过度生产的保护,因为它相比基于分组的对称密码具有非常低的面积开销。
多年来,各种其他流密码被用于实际应用中。例如,GSM手机广泛使用A5/1流密码进行语音加密。然而,由于流密码的较短密钥长度,已报道存在多种针对它们的攻击。利用当前的计算资源,通过暴力破解来攻破流密码在计算上是可行的。由于超出本章范围,我们不再进一步讨论流密码。感兴趣的读者可参考任何现代密码学书籍(如[9, 10])了解更多信息。
13.1.1.2 分组密码
分组密码是现代密码系统中广泛使用的对称密码。这些密码以n位的分组对明文进行加密,与逐位加密的流密码不同。例如,如果分组大小为128位(n=128),则需要将明文划分为128位的分组,然后分别进行加密。密文的解密也以类似加密的方式进行。数据加密标准(DES)[11]和高级加密标准(AES)[12]是已在现代系统中广泛使用的两种流行分组密码。
数据加密标准(DES)对一个64位(8字节)的明文分组进行加密。DES的密钥长度为56位。加密过程共执行16轮,每轮使用费斯妥网络实现混淆与扩散。著名数学家克劳德·香农提出,混淆与扩散是实现强加密过程的关键要素。在混淆阶段,密钥与密文之间的关系被模糊化;而在扩散阶段,明文的影响被扩散到整个密文之中[10]。DES曾广泛应用于各种密码系统,直到1999年,由于其密钥长度较短,容易受到暴力破解攻击。美国国家标准与技术研究院(NIST)随后推荐使用三重数据加密标准(3DES),其密钥长度为112位。然而,由于其实现上的挑战和相对较短的密钥长度,NIST于1997年公开征集一种新的分组密码,高级加密标准。
2001年,美国国家标准与技术研究院(NIST)选定了琼·达曼和文森特·莱门提出的Rijndael作为新的高级加密标准(AES)[12]。AES加密的分组大小为128位(16字节)。根据所需的安全级别,可在加密和解密过程中选择三种密钥长度(128位、192位和256位)。对于128位、192位和256位的密钥,分别有10轮、12轮和14轮内部运算。内部运算轮数也取决于密钥大小,使其安全性比DES更易于扩展。每一轮包括字节替换层、行移位层、列混淆层和密钥加法层,但最后一轮除外。AES的详细描述见于[10, 12]。
13.1.2 非对称密码
对称密码(OTP、DES、AES等)即使本身是安全的,也无法在通信信道上提供安全保护。与对称密码相关的主要挑战是密钥管理和端点认证。在密钥管理方面,必须建立一个安全通道以在爱丽丝和鲍勃之间传输密钥。此外,如果爱丽丝需要与鲍勃和汤姆都进行安全通信,她就必须为鲍勃和汤姆分别存储不同的密钥。因此,当多个不同方之间需要通信时,仅基于对称密码学的通信在扩展性上表现较差。在端点认证方面,爱丽丝和鲍勃必须相互验证对方的身份。而当他们使用对称密码时,鲍勃无法确认爱丽丝的身份。例如,对手奥斯卡可以向鲍勃重放一个旧的密文。由于这些缺陷,迪菲和赫尔曼提出了一种基于离散对数[1]的算法,即广为人知的迪菲‐赫尔曼密钥交换,为公钥密码学或非对称密码学奠定了基础。与此同时,里维斯特、沙米尔和阿德勒曼提出了一种基于整数分解(广为人知的RSA)[2]的算法,以实现类似目标。
图13.4 非对称密钥密码系统
图13.4展示了一个非对称密钥密码系统,其中爱丽丝使用鲍勃的公钥(Kpub)对明文(p)进行加密,并通过不安全信道传输密文(c)。鲍勃接收到密文c后,使用自己的私钥(Kpri)进行解密,以恢复明文p。一个对手奥斯卡可以观察到该密文,但由于他不拥有鲍勃的私钥Kpri,因此无法重构原始明文。
加密
c = f_Kpub(p) = Kpub(p)
其中,f_Kpub(.) 或简称为 Kpub(.) 是加密函数。
解密
p = f_Kpri(c) = Kpri(c)
其中,f_Kpri(.) 或简称为 Kpri(.) 是解密函数。
RSA算法由于其简洁性,多年来广受欢迎,几乎成为了公钥密码学的代名词。然而需要指出的是,RSA以及公钥密码学总体而言并非旨在取代对称密码(例如AES),而是为端点认证提供支持(参见第13.1.4节)。RSA需要两个密钥 Kpub={n, e} 和 Kpri=d。
加密
c = Kpub(p) = p^e mod n (13.3)
解密
p = Kpri(c) = c^d mod n (13.4)
其中 e, d ∈ Zn 和 Zn 是取值为{0, 1, …, n−1}的整数环。感兴趣的读者可以在[2, 10]中找到关于RSA及其相关数学背景的更多描述。
13.1.3 消息认证码
消息认证码(MACs)广泛用于消息完整性验证和消息认证。MACs通常被称为密钥哈希函数,可提供密码学校验和[5]。MACs基于秘密对称密钥生成,其中签名方(爱丽丝)和验证方(鲍勃)必须在通信前共享一个密钥(k)。MACs通常通过使用安全哈希函数生成,称为基于密钥哈希的消息认证码(HMAC)。
MAC = HMAC(p, k) = H[(k+ ⊕ opad)||H[(k+ ⊕ ipad)||p]]
其中,p是消息或明文;H(.)是安全哈希函数(例如,SHA‐256)[13];k+是扩展对称密钥,k;opad是外填充;而ipad是内填充。
可以在[10, 14]中找到HMAC的详细描述。MACs也可以由分组密码生成。其中一种流行的方法是使用AES在密码块链接(CBC‐MAC)和带密码块链接的计数器(CCM)中[15]。
13.1.4 数字签名
数字签名是一种广泛用于认证终端用户的密码学技术。它可确保源自唯一用户的息的真实性,该用户是消息的唯一所有者。根据生成数字签名所采用的方案,数字签名可分为不同类型,例如RSA数字签名、Elgamal数字签名和椭圆曲线数字签名。为简便起见,下文仅描述由RSA算法生成的数字签名。
假设爱丽丝想要与鲍勃通信。爱丽丝生成两个密钥(KApri=d 和 KA_pub={n,e}),并在她的网站上公布她的公钥。现在,她使用自己的私钥对消息(明文 p)进行加密,生成签名(sig),然后将 {p,sig(p)} 发送给鲍勃。
sig = KApri(p) = p^d mod n
爱丽丝是唯一可以声称拥有sig的人,因为KApri只有她知道。鲍勃可以通过执行以下操作来检索消息:
KApub(sig) = (p^d mod n)^e mod n = p^(de) mod n = p mod n
对KApub(sig)和p进行简单的相等性检查即可提供消息来源的必要证明。
由于消息较大,首先计算一个固定小尺寸的消息摘要(例如p的哈希值),然后生成该消息摘要的签名以实现端点认证。
13.2 系统级芯片设计与制造流程中的漏洞
到目前为止,我们已经讨论了用于保护通信信道的各种密码学原语。在本节中,我们将重点讨论:
- 半导体供应链的设计和制造阶段;以及
- 这些阶段所涉及的各个实体之间缺乏前向信任。
13.2.1 设计流程
器件微缩的持续趋势使设计者能够在减小系统整体面积和成本的同时,在SoC上集成越来越多的功能。大型复杂集成电路(IC)的设计已经发展到一个阶段,即完全在内部完成整个设计变得极具挑战性。因此,半导体行业已转向设计复用的概念,而非从零开始设计整个SoC。如今,片上系统设计者为其SoC获取各种功能模块(称为知识产权或IP)的许可证,以优化设计流程并缩短上市时间。这些IP可以是硬核知识产权(GDSII版图级设计)、固核知识产权(网表和带有参数化约束的硬件描述语言设计)以及软核知识产权(可综合的寄存器传输级(RTL)设计)。此外,从RTL到GDSII的流程通常在许多不同的地方(甚至不同国家)进行,主要是为了降低开发成本和缩短上市时间。
13.2.2 制造工艺
制造工艺复杂性的增加导致大多数片上系统设计者不再拥有自己的制造单元(或代工厂)。据报道,为现代系统级芯片建设和维护此类晶圆厂的成本已超过数百亿美元,并且随着技术的进一步缩小而持续上升[16]。鉴于成本不断上升,过去二十年中,半导体行业已基本转向代工厂商业模式(横向商业模式)。在此商业模式下,片上系统设计者将其SoC设计外包给代工厂和封装厂(大多位于海外)进行制造和封装。在制造阶段,代工厂首先制造出无缺陷的晶圆,这些晶圆包含数百个正常工作的系统级芯片,通常称为裸片。
制造完成后,代工厂将经过测试的晶圆发送至组装单元,将晶圆切割成裸片,对裸片进行封装,并在发货到市场前执行最终测试。
13.2.3 前向信任问题
假冒和盗版已被公认为是SoC设计与制造流程中的主要问题[17–19]。更具体地说,参与该设计与制造过程的实体必须将其知识产权(IP)共享给供应链下游的其他方,并信任他们能够正确使用这些IP。在本章中,我们将此类信任称为“前向信任”。例如,前向信任包括知识产权所有者对片上系统设计者的信任,以及知识产权所有者和/或片上系统设计者对代工厂/封装厂的信任。需要注意的是,前向信任不同于文献中讨论供应链时常用的信任概念,后者指的是片上系统设计者对知识产权所有者的信任。为了更清晰地区分两者,在本章中我们将后者称为“后向信任”,因为它涉及的是与供应链方向相反的信任关系。确保后向信任超出了本章的范围。感兴趣的读者可以在[20]中找到有关硬件木马检测与防范的更多信息,我们认为这是确保后向信任的关键。
缺乏前向信任可能会导致以下漏洞,这些漏洞在图13.5中以红色标出。
-
知识产权过度使用 :由于系统级芯片的复杂性不断增加以及对更短上市时间的持续需求,片上系统设计者在其设计中使用第三方知识产权,并为这些3PIP支付许可费。然而,一个不可信的片上系统设计者可能会生产更多的集成电路并向知识产权所有者报告较少的数量。这会导致非法优势并减少授权成本。同时,片上系统设计者可能会非法使用已获得许可但应用于不同设计的知识产权核。简而言之,知识产权所有者无法或很难验证有多少芯片使用了他们的知识产权核,以及这些知识产权核被用在了何处。当不可信的片上系统设计者通过在市场上销售额外的芯片而过度使用知识产权核时,知识产权所有者将失去这些芯片可能带来的任何收入。
-
知识产权盗版 :当供应链中的不可信实体通过合法或非法手段获取知识产权,并从中获得不当利益时,就会发生知识产权盗版[21–24]。这些知识产权具有多种形式,例如硬核知识产权(版图级设计)、固核知识产权(带有参数化约束的网表和硬件描述语言设计)以及软核知识产权(可综合的寄存器传输级(RTL)设计)。针对这些知识产权的攻击类型因其性质不同而各异。一个不可信代工厂可以将其从片上系统设计者处接收用于制造的硬核知识产权(GDSII文件)非法复制并销售。一个不可信的片上系统设计者可以——(i)像不可信代工厂一样,原样转售知识产权;(ii)剥离知识产权的某些功能,然后将其作为新的知识产权出售;以及(iii)向软核和固核知识产权添加一些额外功能,这些功能可能是恶意的(例如后门),也可能是非恶意的。除了给原始知识产权所有者带来经济损失外,每当用户使用这些盗版知识产权之一时,安全也会受到威胁,因为集成电路可能在关键时刻向攻击者泄露秘密信息或导致系统失效。
-
集成电路过度生产 :由于制造工艺复杂以及维持制造单元的极高的成本,片上系统设计者会与代工厂签订合同,由其代为制造系统级芯片。代工厂同意制造特定数量的芯片,而片上系统设计者则承担开发掩模和制造的所有成本。一个不可信的代工厂/组装厂可以生产超出合同规定数量的芯片[24–26]。由于这些芯片的研发成本已经产生,但它们可以通过以SoC设计者的名义销售这些芯片而获得非法的更大利润。此外,一个不可信的代工厂/组装厂还可以通过向SoC设计者报告较低的良率(即无缺陷芯片占总芯片数量的百分比)来实际上零成本地过度制造芯片[27, 28]。与知识产权过度使用类似,由于集成电路的过度生产,知识产权所有者或SoC设计者会损失收入。过度生产的集成电路可能存在可靠性问题,因为它们可能仅经过最少或根本没有测试就进入了市场,无法评估其可靠性和/或功能性。由于这些集成电路使用了SoC设计者的名称,一旦发生故障,将损害公司声誉。
图13.5 参与SoC设计与制造的各个实体之间的缺乏信任
13.3 建立前向信任在SoC设计和制造流程中
图13.6展示了在知识产权所有者、片上系统设计者与代工厂/封装厂之间建立前向信任的解决方案,该方案在[29, 30]中被提出。通过混淆设计可以阻止合同外芯片(知识产权过度使用和集成电路超额生产)的流入。混淆是一种将设计转换为另一种设计的技术,通常使用唯一密钥来混淆原始设计的内部细节,同时保持其原有的功能。当一个不可信实体试图向市场销售芯片时,必须拥有唯一的密钥。另一方面,通过加密设计可以防止知识产权盗版。接下来,我们将讨论关于网表混淆和网表加密的前期工作。
图13.6 参与SoC设计和制造的各个实体之间建立前向信任
13.3.1 网表混淆
Roy等人首次提出通过使用锁(一组异或/同或门)来混淆网表,且只能通过唯一的解锁密钥[26]才能解锁。在本章其余部分,我们将此密钥称为芯片解锁密钥或CUK。在混淆的网表中,异或门和同或门分别表示CUK位置上的0和1。该方法的基本问题在于CUK中的位与异或/同或门之间存在直接关联。对手可以通过逆向工程网表来识别这些密钥门,并轻易获取密钥。此外,在制造测试期间,CUK可能会泄露到芯片的主要输出端[31]。
Rajendran等人提出了不同的逻辑混淆技术,解决了上述问题,其中密钥门的身份被隐藏[31]。Chakraborty等人提出了一种可集成到SoC设计和制造流程中的方法,能够同时实现设计的混淆和认证[23]。在这种方法中,当电路输入端接收到被称为密钥的预定义模式序列时,电路进入正常模式运行。然而,尚不清楚该密钥如何对代工厂或封装厂隐藏,因为防止生产过剩需要做到这一点。此外,该技术未解决知识产权过度使用的问题。
13.3.2 网表加密
IEEE设计自动化标准委员会最近制定了P1735标准[32],以提供知识产权核加密和管理的指导。P1735已被大多数IP和电子设计自动化供应商采用。在该加密方法中,IP使用一个随机的对称会话密钥进行加密。然后,该会话密钥使用不同电子设计自动化供应商的公钥进行加密,并附加到IP上,以便这些供应商之后可以重建原始IP。
图13.7 对加密IP进行修改以添加额外功能
图13.7a展示了一个非常简单的IP(用Verilog编写),它在每个时钟周期执行AND操作。该IP使用新思科技的encryptP1735.pl脚本进行加密,以防止任何非预期的修改。当我们运行encryptP1735.pl脚本时,‘pragma protect分组(在图13.7a中用红色圈出)内的代码将被加密。图13.7b显示了加密后的IP,其中‘pragma protect分组(红色圈出部分)内的代码已不可识别。不幸的是,这种加密方法无法防止向现有IP添加附加功能,因为它不提供任何完整性验证。图13.7c显示了此被修改的加密IP,其中对手向现有的AND操作中添加了一个额外功能(OR操作)。
在本章中,我们将提出一种解决方案,通过在IP头部(参见第13.5节)添加由密码学哈希函数生成的IP摘要,以防止任何未经授权的修改。此外,加密IP并不能提供针对整个IP复制以制造完全克隆的保护。然而,结合混淆与加密可以解决制造完美克隆的威胁,因为对手需要知道正确的CUK。他可以复制网表,但无法使芯片正常运行。
13.3.3 建立前向信任的流程
通过实施四项独立措施,在半导体供应链中建立前向信任,以防止知识产权过度使用、知识产权盗版和集成电路过度生产。第一,必须对原始知识产权核和系统级芯片的网表进行混淆,使其仅在接收到正确的芯片解锁密钥CUKs时才能实现功能性。第二,需要将这些CUKs安全传输至芯片,防止被代工厂/组装厂截获。一旦代工厂/组装厂获得正确的CUK,便可随意激活任意数量的芯片。第三,芯片激活前必须进行测试。一个不可信的代工厂/组装厂可通过向片上系统设计者报告较低的制造良率,从而操纵良率数据,囤积大量无缺陷芯片。最后,知识产权核必须以加密方式提供,使得片上系统设计者无法获知其内部细节。此外,知识产权核应具备防篡改能力,一旦对其进行任何修改,即自动失效。
图13.8 用于实现集成电路/3PIP计量以确保SoC设计和制造中前向信任的FORTIS
图13.8展示了我们提出的在知识产权所有者、SoC设计者和代工厂/封装厂之间建立前向信任的设计流程。该设计流程与现有的集成电路设计流程非常相似,仅需增加两个额外步骤,即以红色标出的锁插入和功能激活。设计过程始于使用一组密钥(异或/同或门)通过现有的安全逻辑混淆技术插入锁。当芯片使用正确的CUK进行激活时,可产生功能正确的输出。异或门或同或门的数量取决于所需达到的安全级别。门级网表经过修改,以支持在芯片激活前进行生产测试(详见第13.3.4节)。
每个第三方IP提供者插入密钥门以锁定其设计,从而保护其知识产权核免受过度使用,并生成测试向量。片上系统设计者接收所有这些锁定的知识产权核,并将其集成到设计中。片上系统设计者也可以为这些锁定的知识产权核生成测试向量,因为在生成测试向量时不需要CUK。片上系统设计者还在其中一个内部知识产权中插入一个锁定机制,以防止集成电路过度生产。片上系统设计者收集来自不同知识产权所有者的全部测试向量,或为所有这些知识产权核生成测试向量,并将其存储在向量库中,供后续的生产测试(例如晶圆和封装测试)使用。由于所有第三方知识产权均已被锁定,仿真对片上系统设计者来说可能具有挑战性。针对这些锁定的知识产权核的仿真支持将在第13.5节中描述。
SoC设计者将与SoC设计相对应的GDSII文件发送至代工厂进行制造和组装。代工厂首先加工晶圆,单个晶圆通常包含数百个芯片裸片。代工厂随后执行晶圆测试以检测裸片中的严重缺陷。如果存在过多有缺陷的裸片,则整片晶圆将被拒收。在完成晶圆测试后,无缺陷的裸片被送往封装环节进行封装。通过封装测试筛选出完好的芯片,并剔除在封装过程中受损的芯片。最后,由执行最终制造测试的实体(代工厂、组装方或SoC设计者)使用有效的CUK对每个芯片进行解锁,然后将其投放市场。
13.3.4 混淆密钥要求:在激活前实现结构化测试
启用生产测试是防止知识产权过度使用和集成电路过度生产的几个关键要求之一。代工厂或组装方可以在芯片制造完成后立即进行测试,并剔除有缺陷的芯片。如果芯片激活在测试之前进行,不可信代工厂或组装方可能通过向片上系统设计者隐瞒实际良率来囤积无缺陷芯片。在本节中,我们将介绍一种可在芯片激活前实现结构测试的架构。
在先前提出的架构中,制造测试中使用的结构测试向量是在考虑预定义的CUK值的情况下生成的。这是由于密钥门存在前向推导。当逻辑门的输入被赋值到能够唯一确定其输出时,就存在前向推导[34]。对于一个双输入异或门,当另一个输入为1或0时,其中一个输入将被传递到输出端。如果我们在CUK[i]处分配一个值,ATPG工具会将该输入视为未知(X),并且由于缺乏前向推导,位于该门之前的所有故障(如图ki所示阴影灰色部分的逻辑锥)都将无法测试。
让我们通过一个示例来说明这一点,考虑图13.9b中所示的故障D。如果该故障被传播到输出端Y1m,则此故障是可测试的。如果¯CUK[i]为1,则门ki的输出变为D,否则变为D。相应的¯Y1m将为D或D,具体取决于CUK[i]。
Y1m = {D if CUK[i] = 0; D¯ if CUK[i] = 1}
为了保持前向推导,需要在测试模式生成期间提供CUK。因此,先前提出的设计需要在结构测试模式生成之前提供CUK(例如,CUK[i] = 0或 CUK[i] = 1),以测试密钥门前的逻辑锥。现在有必要在制造测试开始之前将相同的密钥加载到芯片中,这本质上就是芯片的激活。如果芯片在制造测试之前就被激活,不可信的代工厂/组装厂可以通过索取更多密钥并向SoC设计者报告较低的良率来过度制造芯片。
为了解决这一问题,在CUK[i]与密钥门之间添加一个触发器,从而通过主输入(PI)或伪主输入(PPI)到达密钥门。ATPG工具在通过¯SI输入进行扫描移位时,为I1输入分配一个唯一值(例如1),使密钥门能够将故障D传递到输出Y1m。因此,ATPG工具可以在不知道确切密钥的情况下生成测试向量。在本章中,我们将结构测试或扫描测试的测试向量统称为模式。
图13.9 修改混淆的网表以在芯片激活前实现制造测试
图13.9c显示了目标网表,其中密钥位CUK[i]连接到一个扫描触发器(FFi)。FFi的输出驱动密钥门k1。在测试模式下,当扫描使能(SE)信号被置位时,该触发器成为扫描链的一部分。ATPG工具为这个修改后的网表生成测试模式,该网表有n + 1个输入(A1,A2, …, An, I1),而不是原始网表(图13.9a)的n个输入(A1,A2, …, An)或混淆的网表(图13.9b)的n个输入(A1,A2, …, An)以及CUK[i] = 0/1。
13.3.5 攻击分析与对策
现在让我们考虑对图13.9c所示设计的一种攻击,其中对手希望通过观察测试响应来恢复密钥(CUK)。由于CUK[i]直接连接到扫描触发器,它将被传播到输出端,对手可以通过观察不同测试向量下的不变的响应值来恢复密钥。然而,这种攻击在使用了片上测试响应压缩模块的设计中可能并不可行。片上测试响应压缩在当今的设计中非常普遍[35–37]。几乎每块芯片都使用响应压缩,这显著减少了测试数据,这不是出于偏好,而是出于必要性。
图13.10 8到4压缩器的压缩器逻辑结构示例[38]
假设密钥位为Xs(对手不知道其值,但在实际芯片中它将为1或0)。如果压缩器中Xs异或门的至少两个输入为Xs,则在输出dout上其影响将被抑制。在此示例中,我们可以选择扫描链3、4和5。在第ith个时钟周期,三个密钥位(k−1、k、k+1)将同时出现在dout上,且它们各自的效应无法区分。
dout[0] = din[4] ⊕ din[3] ⊕ din[2] ⊕ din[0] = k ⊕ (k−1) ⊕ … = X ⊕ X ⊕ …
dout[1] = din[5] ⊕ din[3] ⊕ din[2] ⊕ din[1] = (k+1) ⊕ (k−1) ⊕ … = X ⊕ X ⊕ …
dout[2] = din[6] ⊕ din[5] ⊕ din[4] ⊕ din[2] = (k+1) ⊕ k ⊕ … = X ⊕ X ⊕ …
dout[3] = din[7] ⊕ din[5] ⊕ din[4] ⊕ din[3] = … ⊕ (k+1) ⊕ k ⊕ (k−1) = … ⊕ X ⊕ X ⊕ X
由于这些异或门没有前向推导(两个输入均为Xs),密钥传播将失败。因此,通过谨慎选择扫描链,并在同一位置放置密钥门,我们可以规避这种攻击。
有人可能会认为,由于测试响应被压缩,针对失效分析所进行的故障诊断可能会受到影响。然而,现代EDA工具在启用压缩的情况下仍能提供诊断支持(高缺陷覆盖率和精确的故障诊断)[35–37]。测试期间收集的压缩响应可用于诊断,而无需返回到传统的可测性设计(无压缩)方法。因此通过这一附加功能,我们看不出任何理由使片上系统设计师不在其系统级芯片中使用测试值压缩。值得一提的是,该密钥插入流程不会影响在现场使用JTAG[39]进行的测试过程,因为测试向量是在密钥门插入后生成的,且对CUK没有影响。在测试模式生成之后,未对设计进行任何修改。
第13章 用于保护半导体供应链的混淆与加密(续)
13.4 知识产权所有者、片上系统设计者与代工厂之间的安全密钥交换
到目前为止,我们讨论了如何通过在网表中插入锁来防止知识产权过度使用和集成电路过度生产。然而,一个关键问题仍未解决:“知识产权所有者或SoC设计者如何将CUK安全地传输给芯片,而不会被供应链中的任何不可信实体截获?”。
在此模型中,不可信的代工厂或组装方成为对手,试图获取CUK,以便能够激活任意数量的芯片。在本节中,我们将提出一种安全通信协议,用于将CUK从SoC设计者传输到芯片,以防止集成电路过度生产。然后,我们将扩展该通信协议,以实现从第三方IP提供者向芯片传输CUKs,从而防止知识产权过度使用。
为确保CUK从知识产权所有者或片上系统设计者安全地传输到芯片,需要满足以下要求:
-
消息完整性
:知识产权所有者或片上系统设计者必须确保从芯片接收到的请求的完整性。如果检测到请求被攻击者篡改或传输过程中出现错误,则必须停止传输加密的CUK。
-
端点认证
:知识产权所有者或片上系统设计者必须验证请求是由芯片发起的,而不是由不可信代工厂或供应链中的其他实体发起的。由于芯片无法自行通信,代工厂或组装只能从芯片获取信息并将其转发给片上系统设计者。
-
机密性
:只有知识产权所有者、片上系统设计者和芯片才能理解所传输消息的内容。
这些都可以通过结合使用非对称和对称密钥加密来实现。广泛使用的Rivest‐Shamir‐Adleman(RSA)算法[2]作为非对称密钥加密算法,用于提供消息完整性与端点认证。需要注意的是,离散对数或椭圆曲线算法[10]也可替代RSA使用。根据面积预算,可从上述算法中选择其一。一次一密(OTP)[10]用于对称密钥加密以提供机密性。OTP的面积开销较低,因为它仅需要一个简单的异或网络来实现加密和解密。
图13.11 从片上系统设计者到芯片的安全传输CUK的通信协议
13.4.1 防止集成电路过度生产
不可信的代工厂/组装厂生产的芯片数量超出与片上系统设计者签订的合同范围,这种现象通常被称为集成电路过度生产。在此场景中,相关方为片上系统设计者和不可信的代工厂/组装厂。我们的目标是在制造的芯片与片上系统设计者之间实现CUK的安全传输,防止其被不可信的代工厂或组装厂截获。
图13.11展示了我们提出的将CUK从片上系统设计者安全传输到制造的芯片的协议。为实现这一点,我们需要将密钥(片上系统设计者的公钥(KDpub)和设计的私钥(KCpri))嵌入到设计中。因此,所有制造的芯片都具有相同的CUK、KDpub和KCpri。片上系统设计者拥有另外两个密钥,KDpri和KCpub。以下是从片上系统设计者向芯片传输CUK的步骤:
步骤1 :片上真随机数生成器(TRNG)为每块芯片生成唯一的消息(m)。
步骤2 :消息m使用芯片中存储的私钥KCpri进行加密,以生成签名,即sig(m) = KCpri(m)。该签名将用于验证消息完整性并实现端点认证。
步骤3 :消息m与其签名sig(m)进行连接。
步骤4 :TRNG生成一个随机的会话密钥(KS),每次通信的会话密钥都是唯一的。该会话密钥可以存储在非易失性存储器中,以便将来解密以获取CUK。如果整个激活过程在芯片通电时完成,我们甚至可以将KS存储在易失性存储器中。这个唯一的会话密钥有助于我们防止重放攻击。
步骤5
:使用一次一密(OTP)对连接的消息(m)及其签名(sig(m))用密钥KS进行加密。
IK = KS({m, sig(m)}) = KS ⊕ {m, sig(m)}
步骤6 :会话密钥KS使用SoC设计者的公钥KDpub进行加密。
步骤7 :传输密钥通过连接加密的KS和IK构成。TK = {KDpub(KS), IK}。代工厂从芯片接收TK并将其转发给SoC设计者。
步骤8 :收到代工厂的TK后,片上系统设计者将加密的KS和IK分离开。
步骤9
:通过使用KDpri解密KDpub(KS)来获取会话密钥KS。
KS = KDpri(KDpub(KS))
步骤10
:使用一次性密码本解密IK以恢复连接的m及其签名sig(m)。
IK ⊕ KS = KS ⊕ {m, sig(m)} ⊕ KS = {m, sig(m)}
步骤11
:SoC设计者使用芯片的公钥KCpub从签名中检索消息。
KCpub(sig(m)) = KCpub(KCpri(m)) = m
步骤12 :进行比较以匹配m和解密后的签名sig(m)。此步骤验证了m的完整性以及端点的真实性。如果m等于KCpub(sig(m)),则片上系统设计者现在可以确认TK最初来自芯片,而非来自攻击者。
步骤13
:在验证发送方的真实性后,SoC设计者使用会话密钥KS和一次性密码对CUK进行加密,并向代工厂发送另一个传输密钥(TK′)。
TK′ = KS(CUK) = KS ⊕ CUK
步骤14
:代工厂将此TK′应用于芯片。芯片现在使用其存储的会话密钥KS和OTP解密TK′,重建正确的CUK。
KS(TK′) = KS ⊕ CUK ⊕ KS = CUK
这个正确的CUK随后被存储在非易失性存储器(NVM)[40]中,以为密钥门提供输入。NVM的大小取决于CUK的大小。需要确保在现场无法通过JTAG[39]访问CUK的值。
图13.12 FORTIS防止知识产权过度使用的架构与通信流程
13.4.2 防止知识产权过度使用
当片上系统设计者在未告知第三方知识产权所有者的情况下,让代工厂制造额外的芯片(包括集成电路过度生产)时,就会发生知识产权的过度使用,这会导致知识产权所有者的收入损失。相关方包括知识产权所有者、片上系统设计者以及不可信的代工厂/封装厂。知识产权所有者以一种需要唯一CUK才能完全正常运行的方式对其知识产权进行混淆。该CUK必须对片上系统设计者完全未知;否则,对知识产权进行混淆就失去了意义。现在的问题变为如果片上系统设计者不知道第三方IP提供者的CUK,他如何在设计阶段对系统级芯片进行仿真?我们在第13.5节中解决这一仿真问题。
为了控制来自制造单元的芯片数量,我们的目标是实现不同知识产权所有者向制造的芯片安全传输客户唯一密钥,且该传输过程不会被不可信的片上系统设计者、代工厂或组装环节截获。
图13.12展示了防止知识产权过度使用的架构和通信流程。每个集成电路包含一个可信认证平台(TAP),该平台被引入SoC设计中,通过为每个IP模块消除独立的加解密模块来减小每个3PIP的面积,并且该平台受到该SoC中所有第三方知识产权的信任。此外,TAP可以使用我们提出的方法进行加密(见第13.5节),以隐藏其内部细节,使其对SoC设计者不可见,并具备防篡改能力。
TAP与3PIPs之间的连接细节也由EDA工具进行混淆,使得SoC设计者无法添加额外电路来观测CUKs并直接将其提供给3PIPs。请注意,本章假设EDA工具是可信的,且无法被SoC设计者修改以获取不当优势。
每个知识产权核包含一个锁(即密钥门),只有使用正确的芯片解锁密钥CUKi才能解锁该知识产权核i。此CUKi仅由ith知识产权所有者知晓。知识产权核仅从可信认证平台接收用于激活的CUKi。TAP持有其自己的私钥(KApri)以及设计中所有知识产权核的公钥({Kipub})。可信认证平台使用图13.11的步骤1到7生成传输密钥(TK1, TKn),并将其发送给片上系统设计者。片上系统设计者将每个传输密钥(TKi)转发给相应的知识产权所有者。
作为回应,知识产权所有者将加密的芯片解锁钥(TK′i)发送给片上系统设计者。在收到来自知识产权所有者的全部TK′i后,片上系统设计者将其发送至代工厂,以解锁制造的芯片中的每个知识产权核。
图13.13 TAP架构及为SoC中所有3PIP重建客户唯一密钥的通信流程
图13.13展示了可信认证平台生成传输密钥的过程。TAP内置了一个TRNG,该TRNG为所有不同的IP所有者生成一条消息(m)和独立的会话密钥(KS)。首先,生成消息m的签名,然后将其与消息本身连接。这确保了所有IP所有者的消息完整性及端点认证,并且确认请求确实来自可信平台模块。随后,TAP在每一步中生成一个传输密钥。在步骤1中,从TRNG获得用于IP所有者1的会话密钥(KS1)。该会话密钥用于加密{m, sig(m)},并将加密后的输出进行连接使用加密的KS1形成TK1。在步骤2中,从TRNG接收到用于IP所有者2的不同会话密钥(KS2)。然后使用该会话密钥对{m, sig(m)}进行加密,并将加密输出与加密的KS2连接,形成TK2。以类似方式生成所有传输密钥(TKi)。然后代工厂接收所有TKi,将其发送给SoC设计者,并等待加密的CUK在s。收到传输密钥(TK′is)后,代工厂将其应用于可信认证平台,可信认证平台使用其会话密钥KSs对这些TK′is进行解密,从而为所有不同的知识产权核生成芯片解锁密钥CUKis。
13.4.3 面积开销分析
面积开销分析的目的是分析第13.4.1节中描述的通信协议各个模块带来的开销。由于芯片激活仅执行一次,因此激活时间(端点认证以及从知识产权所有者/片上系统设计者向芯片传输密钥)并不是主要关注的问题,而面积开销才是。我们需要通过选择最小尺寸的密码模块来优化面积。以下模块是造成面积开销的主要因素:
(1) RSA模块 :RSA密码原语在设计中用于加密会话密钥并生成签名,这是面积开销的主要部分。然而,如果我们选择较慢的RSA模块,则可以显著减少这一开销。由于加密速度不是我们的主要关注点,因此可以选择更慢但面积效率更高的RSA模块。据报道,最小尺寸的RSA数据路径仅需861个门电路[41]即可实现。
(2) 一次性密码本模块 :一次性密码本的大小取决于CUK的大小。对于128位的CUK,我们需要128个异或门。同一个一次性密码本可以在多轮次中用于加密{m, sig(m)}以及解密TK′,其中RSA签名的典型长度为1024或2048位。
(3) 密钥门电路 :密钥所占面积也取决于CUK。实现一位密钥需要一个异或/同或门和一个扫描触发器。
(4) RSA密钥 :需要额外的存储或逻辑来保存或生成至少1024或2048位(分别对应80位或112位分组密码等效安全性)的KCpri用于芯片或KApri用于可信认证平台。
(5) 真随机数生成器 :单个TRNG用于生成消息m和会话密钥KSs。我们建议根据实现选择使用面积高效的密码学安全伪随机数生成器[42]或[43]。
(6) 非易失性存储器 :非易失性存储器的大小取决于会话密钥KSs。我们需要 |m||sig(m)|位的非易失性存储器来存储KS。
除了密钥门外,防止知识产权过度使用不会对任何第三方知识产权产生面积开销。可信认证平台(TAP)向所有提供CUKs不同的第三方知识产权。片上系统设计者在任何设计中实施可信认证平台的主要动机是防止集成电路过度生产。
13.4.4 安全分析
我们所提出协议的安全性对于防止集成电路的过度生产和第三方知识产权的滥用至关重要。接下来,我们将对所提出的方法进行安全分析。
(1) 穷举密钥搜索 :芯片解锁密钥CUK的长度应足够长,以抵御穷举密钥搜索或暴力攻击。我们需要至少实现80位安全性,因为这是穷举密钥搜索[10]的最低要求。为此,需要80个密钥门(异或/同或门)。然而,为了更高的安全性,密钥长度可增加至256位,这对现代设计的整体面积几乎不会产生影响。
(2) 加密 :在我们的方法中,我们使用RSA来加密会话密钥并生成签名。当密钥长度为1024位时,可实现80位安全性。然而,当密钥长度为3072位时,可实现128位安全性[44]。根据面积预算,可以选择期望的n位安全级别n。我们使用一次性密码本对{m, sig(m)}进行加密。由于会话密钥KSs由真随机数生成器生成,因此可实现完美保密。因此,在我们提出的协议中可以实现整体上等效于RSA的保密性。
(3) 中间人攻击 :由于RSA的密钥对由知识产权所有人生成并驻留在电路中,因此无需进行密钥传输。这防止了攻击者(例如,不可信代工厂)成为中间人。
(4) 重放攻击 :在此攻击场景中,攻击者复制双方之间的消息,并将该消息重放给其中一个或多个方。我们提出的协议本身具有抵抗重放攻击的能力,因为在每次加密过程中都会生成一个新的会话密钥KS,该密钥随后将用于解密加密的CUK。
(5) 逆向工程 :对于使用最新工艺节点(22纳米或更低)制造的现代设计而言,攻击者通过逆向工程来找到CUK极为困难。即使我们假设可以通过逆向工程找到密钥,攻击者也无法将CUK输入到芯片中,因为他们不知道SoC设计者的私钥(KDpri),无法恢复KS。由于作为会话密钥的KS在每块芯片中都是唯一的,因此攻击者通过逆向工程逐个获取每块芯片的KS在经济上是不可行的。我们还假设攻击者无法对TRNG建模,以通过观察某些KS来预测其输出。
(6) 篡改RSA密钥 :在此攻击场景中,一个不可信代工厂重构新的掩模,将其自己的密钥替换原始的密钥KCpri和KDpub。这使得该代工厂在收到知识产权所有者提供的CUK后,能够解锁无限数量的芯片。幸运的是,知识产权所有者可以轻松防止此类攻击。片上系统设计者可仅请求一个锁定的芯片,然后验证其正确性密钥。如果代工厂用自己的KCpri和KDpub进行替换,片上系统设计者将无法解锁芯片,从而能够检测到掩模修改。
(7) 篡改真随机数生成器 :一个不可信代工厂可以修改掩模以绕过真随机数生成器,并为KSs和m写入一个固定值。一旦它知道了CUK,就可以解锁任意数量的芯片。幸运的是,这种攻击也可以被知识产权所有者检测到并加以防范。与之前类似,片上系统设计者可以索取少量锁定的芯片来监控消息m和会话密钥KS。如果这些芯片中的m或KSs相同或存在偏差,则必定表明真随机数生成器已被篡改。由于设计一套新掩模的成本极高,因此不可信代工厂几乎没有经济动机使用两套不同的掩模来制造产品。
13.5 知识产权盗版
到目前为止,我们讨论了如何将芯片解锁密钥从知识产权所有者或SoC设计者安全地传输给不可信的代工厂和封装厂,以防止知识产权过度使用和集成电路过度生产。本节最后将介绍一种SoC设计流程,以防止不可信的SoC设计者和代工厂对知识产权核进行盗版(如克隆)以及未经授权的修改。
让我们首先讨论IEEE P1735标准以防止IP盗版。图13.14展示了在EDA工具内生成加密IP和恢复原始IP的常规做法[33]。知识产权所有者使用随机对称会话密钥(KS)对其IP的一部分(称为IP数据)进行加密,以保护其免受SoC设计者和其他知识产权所有者的侵犯。KS随后使用EDA工具的公钥进行加密,形成EnKS,并附加到加密IP上,以便EDA工具之后能够重建原始的IP数据。在此模型中,EDA工具始终是可信的。
图13.14 使用IEEE标准 1735[33]对知识产权进行加密和解密过程
在综合或仿真过程中,EDA工具首先从加密IP中分离出EnKS。然后,利用其私钥恢复会话密钥KS。一旦KS被恢复,该工具便使用会话密钥从加密IP中恢复IP数据。
该IP加密过程可防止对手获取IP的内部细节。然而,它既无法阻止在现有IP中添加附加功能(已在第13.3.2节中描述),也无法阻止对原始IP进行完全复制的克隆行为。那么,我们如何防止对手在现有IP中添加附加功能或制造完美克隆呢?我们可以通过在加密过程中引入完整性验证来防止对手修改IP。类似地,混淆的网表(详见第13.3.3节)本身就能防止知识产权核的克隆。由于每个IP都通过一组密钥门进行锁定,即使攻击者完全复制了网表,若没有正确的CUK,也无法解锁。如果我们在设计阶段就整合这两种解决方案,就可以彻底消除知识产权盗版问题。
请注意,对包含这些锁定的3PIP的SoC进行仿真需要加以解决,因为这些IP只有在接收到正确的CUK时才能正常工作。必须保护这些CUKs不被SoC设计者获取,否则在IP中添加锁将毫无意义。接下来,我们将提出一种通过安全地向仿真工具提供有效CUK以实现3PIP仿真的解决方案,从而防止不可信的SoC设计者截获。
对IP的完整性验证是必要的,以防止不可信的SoC设计者对IP进行修改,正如我们之前所描述的那样。我们使用密码学哈希函数[13]来生成IP摘要(参见消息摘要[10]),使其能够抵抗修改。对3PIP的任何修改,包括添加或删除额外功能,都会导致IP摘要与原始摘要不同,这种差异可以通过在EDA工具中进行比较轻松检测到。
图13.15 集成到FORTIS中以防止IP盗版的提出流程
图13.15展示了我们提出的流程,用于防止3PIP的克隆和修改。知识产权所有者首先计算IP摘要,即整个锁定的网表的哈希值。然后创建一个IP头部,其中包含CUK,用于sim‐IP和IP主体。然后使用对称加密方法(例如,高级加密标准‐密码块链接(AES‐CBC)[45])通过encryptP1735.pl脚本推荐的方法对IP进行加密(即包含在‘pragma protect分组内的代码)[33]。该对称密钥现在使用不同电子设计自动化供应商的公钥进行加密,以便这些供应商后续可以解密获取IP。
我们提出了一种在SoC综合和仿真过程中进行IP摘要比对的新流程。EDA工具首先需要解密IP头部和IP主体中的加密部分。然后必须使用之前生成IP摘要所用的相同哈希函数,对解密后的IP计算IP摘要。接着需要将从IP头部提取出的IP摘要与新计算得到的IP摘要进行比较。如果两者相等,则确保程序未被修改;否则,必须终止该程序。
图13.16 用于仿真锁定的知识产权的IP头部插入
图13.16展示了我们提出的加密IP的一个示例。我们使用SHA‐512[13]生成IP摘要,并将其与CUK一起附加到IP头部。我们使用Synopsys encryptP1735.pl脚本[33]对IP头部和IP主体进行加密。图13.16a显示了一个锁定的IP。加密分为两部分——(i) IP供应商使用其自身的对称密钥(称为数据密钥)对IP数据(数据块)进行加密。我们采用aes256‐cbc作为对称加密算法来加密数据块。(ii)然后,IP供应商使用非对称加密技术,通过其公钥对数据密钥进行加密,生成密钥块。需要注明加密版本、编码类型、密钥所有者、密钥名称和密钥方法。我们使用RSA作为非对称加密算法生成密钥块,并将其附加到IP头部(见图13.16b)。
13.6 结论
在本章中,我们介绍了来自现代密码学的各种密码学原语,并将其与混淆技术结合使用,为参与SoC设计和制造过程的不同实体提供前向信任。我们通过使用一组密钥门对网表进行混淆。当混淆的网表在芯片激活期间接收到正确的芯片解锁密钥时,才能正常工作。我们还提出了一种在芯片通过解锁密钥激活之前,用于防止知识产权过度使用和集成电路过度生产的制造芯片与SoC设计者/知识产权所有者之间的通信协议。我们所提出的修改对制造测试过程没有任何影响。为解决知识产权过度使用问题,我们在SoC中提出了一个可信认证平台。该TAP受到SoC设计中所有相关方的信任。带有附加IP摘要检查的加密IP可防止SoC设计者进行知识产权盗版。由于知识产权核通过一组异或/同或门锁定,即使攻击者完全复制了网表,在没有正确CUK的情况下也无法解锁,从而防止了IP克隆。最后,我们证明了确保前向信任的设计流程能够抵御所有已知攻击。
35

被折叠的 条评论
为什么被折叠?



