嵌入式系统很容易成为黑客、安全漏洞和恶意攻击的牺牲品,除非在系统设计中纳入有效的安全性。今天,安全性是一个更大的问题,因为新的专有技术和有价值的知识产权被用作竞争壁垒。到目前为止,实现传统安全性的技术一直很麻烦,过时且成本高昂。然而,目前的趋势正在鼓励设计人员在FPGA中嵌入最高级别的安全性,以实现更高效、成本更低的设计。
符合美国国家标准与技术研究院 (NIST) 联邦信息处理标准 (FIPS) 197 的 FPGA 支持使用 256 位高级加密标准 (AES) 和非易失性密钥的配置位流加密。AES是当今最先进的加密算法。用户定义的AES密钥可以编程到存储在FPGA器件中的256位非易失性密钥中。
选择正确的加密算法和选择适当的密钥存储是两个重要的设计注意事项。AES 支持 128、192 和 256 位的密钥大小,并取代了具有 56 位密钥和 64 位数据块大小的数据加密标准 (DES)。较大的密钥大小(如 AES)等同于提高安全性,并且比三重 DES (3DES) 更快地加密数据。实际上,3DES 使用三个密钥对文档进行三次加密。
加密将电子数据转换为通常称为密文的难以理解的形式;解密密文会将数据转换回其原始形式或明文。AES 算法是一种对称块密码,用于加密/加密和解密/解密 128 位块中的电子数据。在此算法中,对称密钥用于加密和解密,块密码以块的形式处理数据。对称密钥块密码加密算法用于许多行业,因为它们提供高安全保护和效率,易于实施和快速的数据处理速度。
密钥存储的选择是第二重要的设计考虑因素。密钥存储在易失性或非易失性存储器中,具体取决于芯片供应商。一旦易失性存储的电源关闭,除非将外部电池作为备用电源连接到芯片,否则密钥将丢失。另一方面,非易失性密钥存储为设计人员提供了更大的灵活性。
例如,FPGA中的嵌入式非易失性键可以在板载或板外编程。安全密钥存储在 FPGA 内部的聚乙烯保险丝中。聚乙烯保险丝是非易失性和一次性可编程的,这意味着这种存储方法更可靠,因为不需要外部备用电池。
可靠性差是电池对易失性存储构成的最大问题。电池寿命受温度和湿度水平的影响。当电池没电时,钥匙丢失。因此,无法再配置设备,并且必须将设备退回供应商进行维修和密钥重新加载。此外,电池备份成本更高,因为它更难制造,需要更多的组件,电路板空间和工程工作。
电池通常无法承受高温回流焊工艺,之后必须焊接到电路板上,这会产生额外的制造步骤。易失性密钥存储还要求密钥在焊接到电路板上后将其编程到器件中。
由于非易失性存储器是一次性可编程的,因此密钥是防篡改的。这在易失性存储中是不可能的,因为电池可以被移除,FPGA可以用常规的加密配置文件进行配置。
将安全性设计到系统中
图 1 显示了如何使用四元二设计软件在阿尔特拉奥斯特拉蒂克斯 III FPGA 中实现安全性。第一步是将安全密钥编程到 FPGA 中。设计软件需要256位用户定义的密钥(密钥1和密钥2)来生成密钥编程文件。然后,包含来自键 1 和键 2 的信息的文件通过 JTAG 接口加载到 FPGA 中。
图 1
接下来,FPGA 中内置的 AES 加密引擎将生成用于在第三步后面的解密配置数据的真实密钥。通过加密密钥 1 和密钥 2 创建的真实密钥随后由专有函数处理,然后存储在 256 位非易失性密钥存储中。
在步骤二中,配置文件被加密并存储在外部存储器中。设计软件需要两个 256 位密钥(密钥 1 和密钥 2)来加密配置文件。夸图斯 II AES 加密引擎通过使用密钥 2 加密密钥 1 来生成真实密钥。真正的密钥用于加密配置文件,然后将其加载到外部存储器中,例如配置或闪存设备。
第三,配置了 FPGA。在系统上电时,外部存储器器件将加密的配置文件发送到FPGA。FPGA中的256位非易失性密钥由专有函数的反函数处理,以生成真正的密钥。然后,AES 解密引擎使用真实密钥来解密配置文件并自行配置。
安全入侵
作为设计过程的一部分,系统设计人员必须识别和理解不同类型的安全漏洞,包括复制、逆向工程和篡改,如表1所示。
复制涉及在不了解其工作原理的情况下制作设计的相同副本。复制可以通过从存储器器件中读出设计或在上电时从存储器器件发送到FPGA时捕获配置文件来完成。然后,被盗的设计可用于配置其他FPGA。这种方法构成了知识产权盗窃的主要形式,并可能导致重大的收入损失。
逆向工程需要分析配置文件,以在寄存器传输级别或原理图形式重新创建原始设计。然后可以修改重新创建的设计以获得竞争优势。这是一种比复制更复杂的知识产权盗窃形式,通常需要大量的技术专业知识。它也耗费了大量时间和资源,有时比从头开始创建设计需要更多的工作。
篡改涉及修改存储在设备中的设计或将其替换为其他设计。被篡改的设备可能包含可能导致系统故障或窃取敏感数据的有害设计代码。
大多数非易失性 FPGA 都 具有 允许 回 读 配置 数据 以 进行 调 试 的 功能, 如此 图 2 中 所 显示。设计人员通常可以为设备设置安全位。如果未设置安全位,则允许回读,并且获取配置数据非常简单。但是,当设置安全位时,将禁用回读。设置安全位时进行回读攻击的一种方法是检测安全位在FPGA中的位置并停用它们以启用回读。
图 2
设置入侵屏障
一些FPGA使得攻击者几乎不可能从高度安全的嵌入式设计中窃取IP。特别是,检测和停用安全位可能很困难,从而为设计人员提供了更好的复制防御。以下讨论解释了设计人员如何设置这些安全防御。
存储安全密钥的聚乙烯保险丝隐藏在数百个其他多边保险丝中的金属层下。通过简单的目视检查几乎不可能确定特定的保险丝‘Äôs功能。用于其他功能的多晶熔丝的编程状态可能因器件而异。
这种随机性使得识别哪些保险丝存储安全密钥变得更加困难。此外,即使识别了存储安全密钥的聚乙烯保险丝,也不会透露用于解密的真实密钥,因为它在存储之前由专有功能处理。在不知道真实密钥的情况下,无法解密设计。
因此,这些FPGA可以安全地抵御回读攻击,因为它们不支持配置文件回读。这可以防止在 FPGA 中解密配置文件后尝试回读配置文件。此外,无法通过将安全密钥编程到另一个FPGA并使用加密的配置文件对其进行配置来复制这些设计。需要两个256位密钥才能将安全密钥编程到FPGA中。由于 AES 用于生成真实密钥,因此几乎不可能从安全密钥生成密钥 1 和密钥 2。
即使没有加密,从配置文件对设计进行逆向工程也是困难且耗时的。FPGA配置文件包含数百万位,配置文件格式是专有和机密的。要对设计进行逆向工程,需要对用于显示从配置文件到器件资源的映射的FPGA或设计软件进行逆向工程。
对这些 FPGA 进行逆向工程比对 ASIC 进行逆向工程更困难。标准工具不容易用于对这些FPGA进行逆向工程,这些FPGA是在65 nm高级工艺技术节点上制造的。事实上,仅对一个 FPGA 逻辑块进行逆向工程就可能需要大量的时间和资源。配置比特流加密使逆向工程更具挑战性。查找安全密钥以解密配置文件与复制它一样复杂;因此,从头开始创建竞争性设计可能比尝试对这样的安全FPGA设计进行逆向工程更容易,更快捷。
非易失性按键是一次性可编程的,以防止篡改。使用密钥对FPGA进行编程后,只能使用使用相同密钥加密的配置文件对其进行配置。尝试使用未加密的配置文件或使用错误密钥加密的配置文件配置 FPGA 会导致配置失败。配置故障表示可能发生篡改,无论是在外部存储器和 FPGA 之间的传输期间,还是在远程通信系统升级期间,在设计’Äôs 外部存储器中。
设计选项比较
除了上述 FPGA 安全系统外,设计人员可用的其他设计选项还包括基于 SRAM 的 FPGA(仅限于 3DES 加密)、基于闪存的 FPGA 和基于防接通的 FPGA。表 2 描述了每种情况下的攻击成本。
非易失性 FPGA 在电源关闭时保留其配置。揭示器件配置的一种方法是探测或检测每个非易失性电池‘Äôs可编程状态。对基于闪存的FPGA的两种侧信道攻击是电子发射检测和晶体管阈值电压变化。
通过电子发射检测进行的攻击首先涉及移除器件’Äôs封装以暴露芯片。接下来,将设备放置在真空室中并通电。然后,攻击者使用透射电子显微镜来检测和显示发射。至于第二种技术,晶体管‘Äôs阈值电压会随着时间而变化,因为电子在浮动栅极中积聚。这导致晶体管的阈值电压逐渐上升。
除了这两种侧信道攻击之外,另一个流行的版本,即电源攻击,涉及测量FPGA’Äôs功耗以确定设备正在执行的功能。至于对基于闪存的FPGA的回读攻击,所需的工作量因供应商而异,并取决于安全位在器件中的保护程度。此外,探测每个基于闪存的FPGA‘Äôs浮动门需要花费大量的时间和精力,因为门在编程后不会发生物理变化。由氧化物隔离的状态由所选门和基板之间的浮动栅极上是否存在或有多少电子决定(见图3)。
图 3
此外,对闪存FPGA配置文件进行逆向工程并不容易,因为必须首先获得配置文件。这是一项难以完成的任务,因为攻击者必须在进行逆向工程之前执行复制。设计人员还必须知道,篡改基于闪存的FPGA很容易,因为该器件是可重新编程的。因此,如果存在篡改问题,则必须使用防篡改机制。
编程状态探测也用于攻击基于反浪费的FPGA。技术包括聚焦离子束(FIB)技术和扫描电子显微镜(SEM)。FIB用于显微镜成像和设备的横截面,而SEM涉及使用光栅式扫描的显微镜成像,以检测从表面发射的二次电子。分析基于防灌注的FPGA’Äôs编程状态非常耗时,因为有数百万个防熔接链路和很小比例的编程。
改进的风险管理策略
设计人员必须估算总安全成本并进行权衡,以确定适合所设计设备的安全级别。为了实现高级别的安全性,设计人员必须分析潜在威胁,考虑给定一组特定漏洞的攻击概率,并建立有效且适当的防御措施。FPGA提供多种可靠的安全方案,使设计人员能够实施成本较低的风险管理策略。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !