中文 英语

fpga比处理器更安全吗?

无论使用何种硬件平台,实现安全性仍然具有挑战性。

受欢迎程度

安全问题通常集中在处理器上执行的软件上。但并非所有的电子功能都在软件中运行。fpga提供了另一种工作方式,而且它们比在软件中执行的功能更安全。

fpga提供更多的硬件控制,并且对攻击者更加不透明。在这种情况下嵌入式fpga,设计师完全控制整个系统。这意味着更少地依赖别人设计的硬件。这也意味着最终的设计不太可能被公开记录,这意味着在许多攻击之前必须进行艰难的逆向工程任务。

“如果你担心安全性,那么FPGA块在任何情况下都很难被破解,”Geoff Tate说Flex Logix

大量的电子功能是通过编写在上面执行的软件来完成的处理器.安全影响和保护这些系统的需要已经有了很好的文档。但fpga也是一种在硬件而不是软件中呈现功能的流行方式。虽然这有时是作为一个前奏的专用硅电路在一个ASIC, FPGA加速器在数据中心.需求可能迅速变化的新兴行业的设计也可能使用fpga。

图1:左边是软件中执行的函数。在右边,相同的功能在基于fpga的加速器中执行。资料来源:Bryon Moyer/Semiconductor Engineering

图1:左边是软件中执行的函数。在右边,相同的功能在基于fpga的加速器中执行。资料来源:Bryon Moyer/Semiconductor Engineering

基于fpga系统的安全性与基于处理器系统的安全性同等重要。但是fpga有一些基本的区别,有助于安全任务。主要的区别在于信息的可用性和硬件工程师的控制能力。

你不知道的东西很难破解
处理器要么由硬件公司制造,要么由IP公司设计,以包含在SoC中。在后一种情况下,将处理器集成到芯片中的硬件团队对处理器块的可见性有限。重点是互连,而不是处理器中逻辑的细节。配置和连接之后,软件工程师就可以使用处理器来创建代码。

为了创建代码,必须很好地记录处理器的硬件架构。指令集、流水线、I/ o、内存结构、内部计时——为了创建性能最好的软件,所有这些都必须知道。但是所有这些信息的可用性也使处理器处于危险之中,因为它不仅对善意的编码器可用,而且对寻找弱点和入侵方法的攻击者可用。

fpga不那么透明。现成的版本有一个良好记录的高级架构,但是低级细节留给设计软件。虽然处理器必须适应希望使用汇编语言工作并管理每个时钟周期的程序员,但FPGA设计很久以前就失去了手动控制不同逻辑块如何配置的能力。设计的规模是如此之大,实际上,位置和路线工具可以比手动调整更好地完成完整的设计。

因此,fpga不会记录手动设计所必需的底层细节。甚至用于配置fpga的比特流也没有记录。也许可以对其中一些细节进行逆向工程,但这需要大量的工作——远远超过理解处理器所需的工作。泰特说:“要想弄清楚比特流的哪个比特去了哪里,祝你好运。”在嵌入式SoC (eFPGA)中的FPGA结构中甚至存在更大的模糊性。“当你谈论嵌入式FPGA时,就更难了。”

此外,处理器往往控制整个系统,同时也托管需要运行的各种软件程序。所以即使FPGA可以控制一个系统,但这并不典型。处理器通常负责,FPGA加速特定的委托任务。对处理器的攻击可能会导致攻击者控制系统,但这对于FPGA攻击来说是不太可能出现的结果。“即使你控制了FPGA,你也无法控制整个系统,”Tate说。

在管理通信时,处理器也占据中心位置,因此通信通道成为试图访问处理器的一种手段。fpga倾向于在较低的架构级别上运行,因此通过通信通道攻击它们可能不太成功。

文档可能不是基于处理器的系统的唯一漏洞。使用处理器可以更容易地探测正在发生的事情,甚至影响行为。FPGA解决方案经理Ray Salemi说:“FPGA比基于处理器的系统提供更好的安全性,因为基于处理器的系统容易受到试错攻击,攻击对手使用内存缓冲区溢出等技术来改变处理器的行为。Mentor是西门子旗下的企业.“另一方面,fpga在启动时从ROM中加载配置位,数据无法通过数据路径来修改底层逻辑。”

如果你能控制,就更安全
处理器,无论是预先设计的还是可配置的IP,都为硬件设计者提供有限的控制。现成的处理器不提供控制。它就是它。的处理器IPSoC提供了更大的控制级别,但它仍然处于较高的级别,在这里您可以指定可以放置多少不同块的实例,或者可以创建哪些I/ o和多少I/ o。“对于SoC,实际硬件的内部是一个黑盒子,”微软联合创始人兼首席技术官杰森·奥伯格(Jason Oberg)说龟岛的逻辑.“你可以配置软件层面的功能,但你真的不知道软件如何与硬件交互。”

这些块和I/ o的详细设计不在芯片设计者的控制范围之内。当然,这是有意为之的——这是知识产权提供的生产力提高的基础。但任何安全漏洞都无法由该IP的购买者纠正。奥伯格说:“你对系统的控制和分析越多,你对系统的理解、安全知识和整体保障就会越高。”

使用现成的FPGA,硬件设计人员可以完全控制在FPGA结构中实现的逻辑。“FPGA安全性被认为更好的一个重要原因是,与别人的设计不同,您可以定制自己的设计,”ibm的信任和安全产品经理John Hallman说OneSpin解决方案.“最后一件定制作品是你的了。”

核查也更加透明。Oberg说:“在FPGA中,你可以构建自己的自定义ASIC,你有更多的白盒分析。“这让你可以看到很多不同的极端情况,并帮助你设计一个更健壮的系统,而不是相信供应商已经正确地完成了这一点。”

但是在FPGA中还有相当多的其他逻辑是设计者无法控制的。至少,有硬件基础设施支持FPGA的配置。许多fpga也有加固的处理器和其他块。Oberg指出:“在现代基于soc的FPGA中,您仍然严重依赖FPGA的ASIC部分来安全地启动该部件。使用这种FPGA的硬件设计人员几乎无法控制这些硬逻辑块。

嵌入式FPGA (eFPGA)提供了更多的控制。所有将FPGA块连接到系统其余部分的逻辑都在设计人员的控制之下。Oberg说:“在eFPGA的情况下,你正在构建自己的ASIC,你可以完全控制整个过程-你的实际比特流如何加载以及它被存储在哪里。”任何连接到FPGA的模块都是由设计团队选择或设计的。任何关于安全漏洞的担忧都可以以一种不可能使用现成FPGA的方式解决。

当然,这是一把双刃剑。“嵌入式FPGA为您提供了可重新编程逻辑的区域,但它并没有为您提供保护该逻辑的模板,”Hallman警告说。“这取决于你作为集成商来定制你的安全。你必须制定你的安全计划和验证计划,以确保你部署的东西满足你的安全需求。”因此,只有当设计人员知道如何实现所有必要的安全细节时,才能获得好处。

构建包含处理器、片上存储器和eFPGA的SoC也有安全方面的好处。这意味着更多的信号保留在芯片上,使它们更难被窥探。“让软件和硬件在同一台设备上协同工作是有潜在好处的,”华为高级营销经理乔•马莱特(Joe Mallett)表示Synopsys对此.“外部内存交互有限,通道更安全,软硬件耦合紧密。”

与软件一样,FPGA代码也可以更新,以提高功能并修复安全漏洞。“人们在FPGA上进行无线‘固件’更新,在那里你可以修改底层硬件功能,”Hallman说。但是更新FPGA比更新软件更加严格。传统上,fpga的更新被视为一个更稳健的过程。”

修改FPGA代码时,既要提供新的所需功能,又要适应旧的边界,实现正确的时间,并坚持现有的I/ o,这比修改软件要困难得多。但它仍然有价值。他说:“在一个特定的地区,肯定存在无法关闭时间的风险。”“这些挑战仍然存在,但你至少有一个重新配置的机会,而不是在ASIC中。这是更好的一步。”

也就是说,安全软件栈将依赖于内置在硬件中的安全功能。如果硬件更新了,可能会破坏软件堆栈。“安全硬件可以更新以满足当前的需求,但与此同时,它可能会使旧的软件堆栈停止工作,”Mallett指出。“这可能是一个好处,因为同时在硬件和软件上强制更新。”

图2:较大芯片内的eFPGA。支持eFPGA的基础设施由设计人员控制。来源:Flex Logix

图2:较大芯片内的eFPGA。支持eFPGA的基础设施由设计人员控制。来源:Flex Logix

然而,在处理器的控制下重新配置eFPGA则代表了另一个漏洞。Salemi说:“嵌入式eFPGA显示,安全性取决于最薄弱的环节。”“如果eFPGA可以由SoC中的嵌入式处理器重新配置,那么获得嵌入式CPU控制权的对手就可以重新配置嵌入式FPGA来安装后门。例如,可以重新配置eFPGA,以实现之前被破坏的通信接口版本,从而使整个芯片容易受到攻击。”

这类担忧在汽车、机器人和航空电子设备等安全和安保重叠的市场上升到了狂热的程度。除了典型的安全措施外,还需要监控芯片上的数据流量模式,以识别不规则的异常行为。对于热热点或不寻常的热活动也是如此,这可能与正常的老化和使用情况有关,也可能与正常的使用情况无关。

“我们已经加强了安全功能,以防范差功率攻击之类的攻击,”赛灵思芯片营销总监曼努埃尔·乌姆(Manuel Uhm)说。“我们还在模具内安装了多个温度传感器,因为你可以得到热点,客户需要知道这些热点的位置,以适应热冷却解决方案。我们也会测试年龄。所有这些都对设备在现场的使用寿命以及我们携带它们的时间至关重要。因此,我们仍有客户在购买(2006年推出的)Virtex-5芯片。在汽车行业,你可能需要20到25年的时间来研究这个问题。”

可见篡改
对硬件和软件来说,篡改总是一个问题。标准FPGA已经提交并验证了其硬件。不管它本身是否安全,攻击者都无法篡改基本硬件。但是织物的内容仍然可以通过打乱比特流和改变所加载的图像来篡改。

这在几年前就被证明是可能的由柏林工业大学的一组研究人员使用非接触式探针提出。

“除了产生电信号外,这些晶体管还会发射少量的红外线,它们还会根据晶体管通道的有源或无源调制红外信号,”该公司防伪产品技术总监斯科特·贝斯特说Rambus.“所以使用非常精确的红外激光器,你可以将激光从晶体管上反射回来,它会告诉你晶体管是否打开或关闭,那里是否有电压。你可以同步你的感应,当一个晶体管开关,或当一个信号在总线线过渡。为了做到这一点,需要一些材料准备,因为在任何高分辨率的情况下,通常会将芯片背面的厚度从250微米降低到25微米。所以现在红外很容易通过硅的背面逃逸,你就可以获得非常高的红外发射传感分辨率。”

对于eFPGA,数组是以软形式实例化的,所以流氓设计师可以在提交到硅之前尝试篡改设计。但是织物的阵列性质使得它很难在没有明显变化的情况下进行视觉检查。在一个相对杂乱的门的设计中调整一些东西要容易得多,在那里变化将很难被发现。“当你有一个像嵌入式FPGA或内存这样的阵列结构时,在不破坏统一阵列结构的情况下,很难在其中放置特洛伊电路,”Tate指出。

此外,efpga的一些关键用户需要其他方法来检测可能的篡改。例如,可以模拟典型工作负载下芯片的预期功率配置,然后在构建时与实际芯片进行比较。如果它们差异太大,就表明出了什么问题。在这里,它不是为了防止篡改,而是为了让任何篡改的尝试更加明显。

eFPGA比特流细节通常不会在数据表和应用说明中发布。在保密协议下,eFPGA通常只提供给严肃的客户,而提供eFPGA的公司可能会拒绝与动机可疑的人合作。这并不是对比特流内容的铁定保护,但它确实提供了另一层保护。

虽然标准fpga带有存储其内容的内存,但eFPGA通常使用引导ROM进行存储。当然,标准FPGA也可以做到这一点,但比特流块将以FPGA制造商确定的格式存储。使用嵌入式FPGA,设计人员可以自由地控制比特流在内存中的位置,它通常比引导代码本身要小得多。一个有决心的设计工程师甚至可以打乱比特流,使其分散在内存的不同部分,而不是在一个块中。

防止比特流篡改的另一种方法是在存储中加密比特流,只有当它加载到设备中时才解密。在现成的FPGA中,任何此类加密都将处于销售FPGA的公司的控制之下。对于eFPGA,具体的加密技术和保护密钥的方法仍然在设计者的控制之下。

“客户不需要告诉我们他们如何将eFPGA配置代码映射到闪存中,”Tate说。“他们可以加密部分或全部闪存,并在SoC中解密。他们可以分条或使用其他算法来“散列”地址,以非线性的方式存储。或者两者都可以。”

关闭后门
无论是基于处理器的系统还是基于fpga的系统,都有一种臭名昭著的潜入系统的方式——JTAG(或其他调试)端口。该端口提供了对内部逻辑的巨大区域的访问。虽然内部扫描链的组织对逆向工程来说可能很乏味,但也不是不可能。

由于这个原因,在安全性特别重要的情况下,设计通常在设计和制造完成后禁用JTAG端口。这有时是通过不可逆地吹断保险丝来实现的。如果使用此选项,将来将无法使用JTAG端口来帮助诊断任何问题。

另一种方法是通过位流禁用JTAG端口。最后一个映像可以包含禁用JTAG端口的指令。如果将来设备返回时需要进行故障分析,创建比特流的公司可以加载一个私有比特流,使JTAG端口仅供内部使用。

也可以对JTAG进行密码保护,尽管这带来了管理密钥的挑战。所有设备都使用一个密钥吗?入侵一台设备就能解锁其他所有设备。但是,现在为每个设备使用不同的密钥,对于一个不太可能经常使用的功能来说,是一个供应挑战。所以这可能是一个更难实现的选项。

所有这些考虑因素也受到FPGA构建技术的影响。到目前为止,目前使用的大多数fpga都使用SRAM内容,必须在开机时重新加载。这就是比特流管理最重要的地方。它也更灵活,例如,重新加载启用JTAG端口的位流。

基于flash的设备中的非易失性配置消除了每次上电时加载比特流的需要。设备是在制造过程中配置的,因此一旦部署,攻击者就很难更改设备的内容。也就是说,Oberg指出静态存储器基于设备的设备可以使用冗余,如果有必要,对于单事件中断和内容更改的弹性-假设任何篡改只发生在冗余集中的一个。

多租户处理器和fpga
数据中心提供了一个不同的安全挑战——多租户。对于处理器,其思想是可以有多个客户机使用服务器。由服务器基础设施来确保来自一个客户机的信息不会泄露到另一个客户机。这是通过内存分离和处理器本身分时来实现的。

在数据中心中提供对FPGA加速器的多租户访问也很有兴趣。“分区对于保持某种程度的隔离已经变得非常重要,”Hallman说。这不是共享处理器,而是共享FPGA结构的空间,其中一部分包含供一个客户机使用的逻辑,另一部分为另一个客户机服务。

当然,这比共享处理器要复杂得多。如何管理不同的映像?它们是否可以独立于其他客户端的逻辑部分进行加载或重新配置,即使是在运行时?如何在两个客户机之间隔离硬件?Hallman指出:“我有过一些具体的对话,客户希望允许对部分FPGA设计的可访问性,但他们希望锁定其他部分,特别是在数据中心应用程序中。

实现这种分区的硬件元件是部分重编程电路。这定义了FPGA结构可以在不接触FPGA其他部分的情况下重新编程的粒度。但除此之外,信号在不同领域之间的传递没有物理障碍。Hallman说,必须通过验证来实现分区,证明独立的域不会相互影响。

虽然这是一个有趣的场景,但它可能不像针对基于处理器的多租户的隔离技术那样成熟。事实上,它是硬件而不是软件,这使得安全启用这项功能更加困难。目前还不常见。Tate说:“大多数客户不会在运行过程中重新编程。

结论
在处理器和FPGA上实现软件功能之间的选择涉及到一个经典的权衡。软件更灵活,更容易更改。fpga比硬逻辑更灵活,但仍然不如软件灵活。安全性是这个决定的另一个考虑因素。如果需要最终的安全性,fpga和嵌入式fpga可以使系统比软件更安全。

但这并不是万能的。Mallett表示:“FPGA实现与传统的软件/微处理器具有许多相同的挑战,例如加密闪光、安全引导和防止系统内攻击。”虽然可能有机会提高安全性,但仍有大量工作要做。

-Ed Sperling对本文也有贡献。

相关的
芯片安全经济学的根本性变化
越来越多价值更高的数据、越来越薄的芯片以及不断变化的客户基础,正迫使半导体安全领域发生姗姗姗迟的变化。
硬件安全更好,但攻击面正在增长
专家座谈:成本、权衡和安全如何影响网络攻击。
安全前沿
专家座谈:如何让设备更安全,特别是当AI/ML加入时。
ML为fpga打开了新的大门
可编程性将机器学习应用程序的部分负担从硬件工程师转移到软件开发人员。
现场配置处理器
在开发过程中,事情可以推迟多晚?对于动态可扩展处理器,可能是在它运行时。



留下回复


(注:此名称将公开显示)

Baidu