供应链安全是时下人们讨论的热门话题。由于芯片供应商(如Silicon Labs)所提供的IoT元器件最易受信息提取和信息处理的影响,因此他们对此更加关注。了解芯片供应商供应链中存在的风险以及这些风险如何影响其最终产品关系到原始设备制造商(OEM)的利益。因此,尽管产品开发的双方都受到安全威胁,但OEM生命周期阶段特有的风险也是一个问题。
本文包括两部分,我们主要探讨芯片供应商和OEM之间的相互关系,以及他们为何必须携手合作以完成各个制造阶段的漏洞保护。第一部分指出了IC制造生命周期每个阶段中存在的威胁,并说明了如何解决这些威胁。第二部分着重说明了OEM所特有的安全风险,并指出了最终产品制造商和芯片供应商如何承担各自的责任。这些内容将围绕以下问题进行阐释,即OEM和芯片供应商对各自生产阶段的风险各负其责,以此来阻止大多数安全攻击。
无论是由于晶圆代工厂的刻意行为还是恶意人士的入侵,IC生命周期的每个阶段都存在多种威胁,而这些威胁可能使最终产品面临风险。
制造生命周期包含以下阶段,如图1所示。
图1-上述概要展示了IC生命周期开发的六个关键阶段
图片来源:Silicon Labs
IC开发始于制造阶段,在此阶段器件在晶圆代工厂开始实质性的制造。此时,IC的ROM已编程,但所有其他存储器(OTP、闪存和RAM)均未编程。下一步是探针测试,IC在从硅晶圆上切下之前先进行功能测试。在该阶段,并未安装永久配置,且制造过程中插入的任何数据都会被删除,因为测试过程会涉及到数据删除。
在封装组装阶段,将单个晶粒放入封装中。该阶段完全是属于机械操作,不进行编程或测试。一旦进入封装,IC就会进行封装测试,芯片供应商通常称其为“最终测试”,因为这是芯片供应商进行的最后测试。
该测试有多个目的——查找组装过程中的缺陷、检查器件是否存在参数问题(例如功耗过大或存在偏差)。此外,该测试会对带有芯片供应商数据的器件进行初始化。然后将这些器件出售给OEM,OEM负责电路板组装,并将这些器件安装到系统中。接下来,在电路板测试中,IC完成最终测试、配置和编程。
通过对IC生命周期各个阶段的基本了解,我们现在可以深入了解各个阶段中存在的威胁。在讨论这些阶段时,我们将使用Silicon Labs的制造生命周期作为IC开发模型。其他芯片供应商也基本相似,因此本篇综述对于大多数供应商都应适用。
针对此阶段的攻击几乎不可能发生,因为针对该阶段进行攻击需要高昂的花费,并且需要生成至少一个新的掩模组、对器件的深入分析以及高度的专业知识。此外,针对该阶段的任何攻击都不能轻易攻击到特定的最终产品,因为晶圆代工厂生产多个晶圆,每个晶圆上都有数千个器件,攻击者无从知晓哪些器件最终会用于哪一个最终产品。此外,在此开发阶段对设计进行任何修改都会影响该器件的每个副本,从而更容易检测到这些修改。但是,此阶段的漏洞确实会带来安全风险,对此将在以下小节进行说明。
对晶圆代工厂而言,可能的攻击途径之一是访问机密信息,而这将使最终产品面临风险。例如,如果IC在ROM(或被硬编码到寄存器等其他硬件中)中具有对称密钥或专用密钥,晶圆代工厂则可以轻松提取密钥信息。同样重要的是,可以从设计中轻松提取的任何数据也可以通过逆向工程技术从器件副本中获得,这一点要牢记。例如,一些实验室对ROM数据进行反处理和提取,所花费用还不到1万美元,这可能比从晶圆代工厂获取设计图的费用更低廉。为避免此问题,精心设计的产品绝不应包含机密信息。
更现实的威胁可能是晶圆代工厂去修改器件、植入漏洞并加以利用。这种修改可能包括修改ROM内容或逻辑以改变器件运行或引入其它功能。尽管此类修改不容易进行,且花费高昂,但攻击者完全有能力进行这些基本操作,而这些会使晶圆代工厂处于风险之中。
针对这种攻击的好对策是进行抽样测试,以随机验证成品器件的功能。例如,Silicon Labs每年都随机抽取一些样本进行测试以验证ROM内容、验证逻辑以及测试其他功能。如果晶圆代工厂进行了更改,测试将失败。虽然可能会引入此测试无法捕捉到的逻辑更改,但此类更改的效果会大打折扣,甚至会丝毫不起作用。在可信站点(例如公司总部)进行样本测试,可以极大地降低晶圆代工厂对硬件进行更改并成功破坏这种检测测试的风险。
在篡改检测方面,将来会得到改进,例如基于机器学习的图像分析,这会进一步防止对晶粒进行未经授权的修改,但当下还不能使用这些方法。
在这种类型的攻击中,晶圆代工厂可以过量生产器件,并将其合法出售。例如,攻击者避开旨在拦截此类做法的测试,利用修改过的ROM过量生产部件,并将其合法出售给OEM。这种方法可以让攻击者直接面向OEM,因为这些器件不再流经供应商的供应链。
防止过量生产的最佳方法是在封装测试时提供加密凭证。这样OEM就可以检查这些凭证,以确保接收到了供应商的正品器件。尽管晶圆代工厂可以生产出物理上完全相同的器件,但无法生成有效的器件凭证,而且OEM会检测到假冒产品。
解决这一问题需要有标准的解锁器件安全地保存密钥。Silicon Labs的Vault-High EFR产品就具有这种功能。OEM使用安全级别较低的器件(例如Vault-Mid器件而非Vault-High器件),尽管保护级别较低,但也可以达到相似的效果,方法是使用像Silicon Labs的定制化元件制造服务(CPMS)这样的定制编程服务。在这种情况下,对器件内容的访问在发货之前就被锁定,因此密钥可以秘密存储在非易失性存储器(NVM)中。
器件分析是晶圆代工厂加工中最现实的威胁。在不安全的解锁状态下制造器件,为访问逻辑和系统提供了可乘之机,而这种访问在成品器件中则无法进行。虽然访问空白的开放部件不会直接造成安全威胁,但攻击者可以利用这个机会分析器件并在配置和锁定的部件上寻找可利用的漏洞。
这种威胁不仅存在于制造过程中,更有可能出现在组装阶段,下面将对此进行更详细的讨论。
利用探针测试阶段的漏洞,其费用要低于在晶圆代工厂进行修改的费用,这是因为在探针测试阶段,仅需破坏测试程序或测试仪即可。然而,与针对制造阶段的攻击一样,针对探针测试的攻击具有系统性,不能简单地指向某个具体的最终产品或OEM。
攻击者可能会在探针测试期间尝试将恶意代码注入器件。但是,在此阶段注入的所有内容要么在封装测试时被擦除,要么在供应商无法对正确的内容编程时造成封装测试失败。此外,一旦在封装测试中启用安全启动,就会阻止安装一切未经授权的代码。对于实施良好的产品和制造生命周期而言,这不会造成实际的威胁。
理论上,在探针测试中控制测试仪的攻击者可以执行器件分析,该分析类似于对晶圆代工厂过量生产所造成的后果的分析。但是,攻击者更有可能在组装阶段尝试获得此访问权限。
在封装组装阶段,供应商将器件置入最终产品之中,因此封装组装阶段是攻击者最有可能窃取空白、开放的器件以伺机进行复制和分析。
图2 - 芯片制造商必须确保降低与开放样品相关的风险。图片来源:Silicon Labs
窃取空白器件的目的是获取开放样本,并以对攻击者有利的方式对其进行配置,然后将这些器件披着合法的外衣交付给目标OEM。这种策略面向具体的OEM或产品,并避开了供应商的最终测试,否则修改会被覆盖掉或检测到。
制造阶段不涉及输入量,而组装现场与此不同,组装现场接收并生产已知数量的IC,因此通过比较这些数字应该很容易检测到比较明显的窃取行为。
与制造阶段一样,可以通过在封装测试中对加密凭证进行编程,以防止被窃取的开放器件被误认为是正品。例如,出于此目的将所有EFR Vault-High产品都配备了加密凭证,并且提供了CPMS以便在没有Vault-High功能集的器件上配置凭证。
攻击者在安全引擎(SE)被编程和锁定之前窃取器件,并利用该访问权限获取邮箱工作机制和SE硬件功能,这可能是此阶段器件分析最明显的示例。从理论上讲,这种访问可以让攻击者找出一个弱点,并将其转化为针对锁定SE的漏洞加以利用。
器件分析只需从组装现场获取少量器件。尽管限制访问开放样本是理想的防御措施,但也应该考虑到攻击者在某个时候获得对开放样本的访问权限时的应对策略。IC的设计不应造成难以应付的风险或者是破坏系统的安全性。
Silicon Labs采取了一些措施来降低与开放样品相关的风险,包括审核组装承包商的流程和程序、跟踪用于内部开发的开放器件、以及在无需开放样品时将其予以销毁。此外,产品的设计旨在保证安全,即使是针对使用开放样本及能够完全访问设计的攻击者。最后,内部和第三方渗透测试均由掌握开放样本、全面设计知识和高度专业知识的个人执行。
如今,通过更改或附加元器件修改封装所带来的风险非常小。这种攻击途径并不具备较高风险,原因如下。首先,组装距离终端系统足够远,因此很难锁定特定的终端设备(如门锁)。此外,由于空间限制,很难在IC上隐藏其它元器件。最后,抽样测试可以通过对一些单元进行X射线检测以识别出人们预料之外的元器件,从而检测出大规模攻击。
有许多方法可以让封装测试阶段的漏洞难以被利用,比如限制对测试站点的访问权限和维护日志记录控制等。首先,应遵守网络和PC的正常安全操作。例如,测试系统不应直接连接到互联网,也不应使用可通信的登录信息。供应商应定期检查这些流程和系统,以确保其未被更改、利用。这些简单的操作会让攻击者难以访问测试系统。
图3 - 在封装测试站点,拥有不受其他供应商影响的可信机器至关重要。图片来源:Silicon Labs
Silicon Labs采用多种技术以提高测试站点的安全性。例如,Silicon Labs启用了不与其他供应商共享的安全强化测试仪。此外,Silicon Labs为测试站点提供受信任的机器,该机器不受测试站点的影响,且可监控测试仪并为其提供支持。该机器位于服务器机房中,没有本地接口,并且包含能够抵御物理攻击的硬件。
该阶段最明显的攻击方法是注入恶意代码来控制器件的运行。芯片供应商在该阶段提供的代码,例如SE固件,不会被电路板测试覆盖;但是,如果代码被更改,交付的器件可能已受损。
这种风险可以通过在ROM中使用带有公共密匙的安全启动来避免,从而确保只有正确签名的代码才能运行。如果攻击者试图修改程序代码,代码将无法正确签名,并且器件会停止运行。因为用于签名的密钥存储在硬件安全模块(HSM)中受到严格管控,并且在生产环境中不可用,因此攻击者生成正确的签名并篡改代码映像几乎是不可能发生的。
出于测试需要,固件编程后需启用安全启动。尽管这一流程很复杂,但攻击者却可能会在该流程中破坏封装测试,从而对恶意代码映像进行编程并禁用安全启动。
为了彻底消除这种风险,IC应能使OEM在不受编程代码影响的情况下验证器件状态。例如,Silicon Labs器件配有硬件寄存器,用于指示SE子系统是否被锁定,且支持OEM应用程序或测试程序验证器件配置是否正确。通过适当验证,OEM可以检测到任何封装测试更改或恶意代码,并丢弃这些被更改的器件。
如果在封装测试期间对机密信息进行了编程,攻击者可能会破坏测试系统以寻找访问权限。对于标准的嵌入式产品来说,唯一的机密信息是与凭证相关联的密钥。对于在电路板上生成密钥的器件而言,密钥将无法提取;但是,如果测试系统注入了密钥,那么攻击者就能获得所需的访问权限,以在编程时查看密钥信息。
带有机密信息和OEM专用信息的定制器件特别容易受到此类攻击的威胁。但是,如果芯片供应商遵循本系列文章中的建议,就可确保达到或超过大多数电路板测试设施的安全级别。始终建议OEM与芯片供应商合作,以确定器件编程的最佳解决方案。
安全性是系统层面的问题,供应商和OEM在开发互联产品时要相互信赖、共同努力。随着在物联网(IoT)构建方面取得的进展,对于OEM来说,芯片供应商如何成功地解决制造生命周期中的安全问题至关重要。在决定与哪家供应商合作时,OEM应考虑供应商所提供的信息是否透彻全面,还需考虑IC的成本和性能。
现在您可以与供应商相互探讨制造安全问题,确保您的最终产品安全可靠。
作者:Joshua Norem,Silicon Labs的高级系统工程师。
原文发表于EDN美国版,参考链接:A primer on security of key stages in IC manufacturing lifecycle