安全问题通常集中在处理器上执行的软件上。但是,并非所有电子功能都可以在软件中运行。FPGA提供了另一种工作方式,并且比软件中执行的功能更安全。
FPGA提供了更多的硬件控制,并且对于攻击者而言更加不透明。对于嵌入式FPGA,设计人员可以完全控制整个系统。这意味着更少依赖其他人设计的硬件。这也意味着最终设计不可能公开记录,这意味着在进行许多攻击之前必须进行艰巨的逆向工程任务。
Flex Logix首席执行官Geoff Tate表示:“如果您担心安全性,那么在某些情况下,要有人破解,FPGA块将变得更加困难。
通过编写在处理器上执行的软件,可以实现大量的电子功能。已经充分记录了安全隐患和保护此类系统的需求。但是,FPGA还是一种在硬件而非软件中实现功能的流行方法。尽管有时这是ASIC专用硅电路的前奏,但FPGA加速器在数据中心中很流行。需求可能迅速变化的新兴行业中的设计也可以使用FPGA。
图1:左侧是在软件中执行的功能。在右侧,相同的功能在基于FPGA的加速器中执行。资料来源:Bryon Moyer /半导体工程
基于FPGA的系统中的安全性不亚于基于处理器的系统中的安全性。但是,FPGA有一些根本的区别,可以帮助完成安全任务。主要区别与信息可用性和硬件工程师所具有的控制有关。
更难破解您不知道的东西
处理器是由硬件公司制造的,还是由IP公司设计的以包含在SoC中。在后一种情况下,将处理器集成到芯片中的硬件团队对处理器模块的可见性有限。重点在于互连,而不是处理器中逻辑的细节。配置和连接后,该处理器可供软件工程师用于创建代码。
为了创建代码,必须很好地记录处理器的硬件体系结构。指令集,流水线,I / O,存储器架构,内部时序-所有这些都必须已知,以便创建性能最佳的软件。但是,所有这些信息的可用性也使处理器处于危险之中,因为它不仅对善意的编码人员可用,对于寻求弱点和入侵方式的攻击者也可用。
FPGA不那么透明。现成的版本具有详细记录的高级体系结构,但较低级的细节留给了设计软件。尽管处理器必须容纳想要使用汇编语言工作并管理每个时钟周期的程序员,但很久以前,FPGA设计就失去了手动控制不同逻辑模块配置方式的能力。设计的规模是如此之大,以至于实际上,布局布线工具在完成整个设计方面的工作要比手动调整要好得多。
结果,FPGA没有记录手动设计所需的底层细节。甚至用于配置FPGA的位流也没有记载。可以对其中的一些细节进行逆向工程,但这需要大量工作-比了解处理器所需的工作要多得多。泰特观察说:“祝你好运,找出[比特流]中的哪些比特流向何处。” 嵌入在SoC(eFPGA)中的FPGA架构甚至更加晦涩难懂。“当您谈论嵌入式FPGA时,难度更大。”
此外,处理器倾向于控制整个系统,同时还托管需要运行的各种软件程序。因此,即使FPGA可以控制系统,这也不是典型的。通常由处理器负责,FPGA加速特定的委托任务。对处理器的攻击有使攻击者控制系统的风险,但这对于FPGA攻击来说是不太可能的结果。Tate说:“即使您控制了FPGA,也无法控制系统。”
在管理通信时,处理器也占据着中心位置,因此通信通道成为尝试访问处理器的一种方式。FPGA倾向于在较低的体系结构级别上运行,因此通过通信通道进行攻击可能不太成功。
文档可能不是基于处理器的系统的唯一漏洞。使用处理器可以更轻松地探查发现正在发生的事情甚至影响行为的能力。Mentor FPGA解决方案经理Ray Salemi说:“ FPGA比基于处理器的系统提供更好的安全性,因为基于处理器的系统容易遭受反复试验的攻击,在这种情况下,对手使用诸如内存缓冲区溢出之类的技术来改变处理器的行为。西门子业务。“另一方面,FPGA在启动时从ROM加载其配置位,并且数据无法通过数据路径修改底层逻辑。”
如果您处于控制之中, 则更容易确保安全。处理器,无论是预先设计的还是可配置的IP,都只能为硬件设计人员提供有限的控制权。现成的处理器无法控制。就是这样。SoC中的处理器IP提供了更高级别的控制,但仍处于较高级别,您可以在其中指定诸如可以放置多少个不同块的实例或可以创建多少个I / O的东西。Tortuga Logic的联合创始人兼首席技术官Jason Oberg表示:“有了SoC,实际硬件的内部就是一个黑匣子。” “您可以在软件级别配置什么东西,但是您真的不知道软件如何与硬件交互。”
这些模块和I / O的详细设计不受芯片设计人员的控制。当然,这是有意的-这是IP提供的提高生产力的基础。但是,该IP的购买者无法纠正任何安全漏洞。Oberg说:“您控制和分析的系统越多,对系统的了解,对安全性的了解以及整体保证就越高。”
借助现成的FPGA,硬件设计人员可以完全控制在FPGA架构中实现的逻辑。OneSpin Solutions信任与安全产品经理John Hallman表示:“之所以认为FPGA安全性更高,是因为您可以对设计进行定制而不是别人定制。” “最后一件定制作品是您的。”
验证也更加透明。Oberg说:“在构建自己的定制ASIC的FPGA中,您将进行更多的白盒分析。” “这使您可以研究许多不同的极端情况,并帮助您设计出更强大的系统,而不必相信供应商已正确地做到了这一点。”
但是,FPGA中还有很多其他逻辑,设计人员无法控制。至少,有支持FPGA配置的硬件基础架构。许多FPGA还具有强化的处理器和其他模块。Oberg指出:“在现代的基于SoC的FPGA中,您仍然非常依赖FPGA的ASIC部分来安全地构建该部分。” 使用这种FPGA的硬件设计人员几乎无法控制这些硬逻辑模块。
嵌入式FPGA(eFPGA)提供了更多控制。将FPGA模块连接至系统其余部分的所有逻辑均在设计人员的控制之下。Oberg说:“对于eFPGA,您正在构建自己的ASIC,并且可以完全控制整个过程-实际比特流的加载方式和存储位置。” 连接到FPGA的所有模块均由设计团队选择或设计。关于安全漏洞的任何担忧都可以通过现成的FPGA来解决。
当然,这是一把双刃剑。Hallman告诫说:“嵌入式FPGA为您提供了可重编程逻辑的领域,但没有为您提供保护该逻辑的模板。” “由集成商来定制您的安全性取决于您。您必须提出安全计划和验证计划,以确保所部署的内容满足您的安全需求。” 因此,只有在设计者知道如何实现所有必要的安全细节时,收益才会累积。
构建包含处理器,片上存储器和eFPGA的SoC还有一个安全优势。这意味着更多的信号保留在芯片上,使它们更难监听。Synopsys的高级市场经理Joe Mallett说:“使软件和硬件在同一设备上协同工作具有潜在的好处。” “外部存储器交互作用有限,通道更加安全,软件和硬件之间的紧密耦合。”
像软件一样,FPGA代码也可以更新,以改善功能并修复安全漏洞。Hallman说:“人们正在FPGA中进行无线'固件'更新,您可以在其中修改基础硬件功能。” 但是更新FPGA比更新软件更为严格。“传统上,更新FPGA被视为一个更强大的过程。”
改变FPGA代码的方式要能提供新的所需功能,同时又能适应旧的界限,达到正确的时序,并且坚持现有的I / O比改变软件更困难。但是它仍然有价值。Hallman说:“肯定存在无法在特定区域关闭计时的风险。” 这些挑战仍然存在,但是与ASIC相比,您至少有重新配置的机会。好了一步。”
也就是说,安全软件堆栈将依赖于内置在硬件中的安全功能。如果该硬件已更新,则可能会破坏软件堆栈。“可以对安全硬件进行更新以满足当前的需求,但是与此同时,它可能会使旧的软件堆栈停止工作,” Mallett指出。“由于同时对硬件和软件进行了强制更新,因此这可能是一个好处。”
图2:更大芯片中的eFPGA。支持eFPGA的基础架构在设计人员的控制之下。资料来源:Flex Logix
但是,在处理器的控制下重新配置eFPGA会带来另一个漏洞。Salemi说:“嵌入式eFPGA显示安全性仅与最弱的链接一样强。” “如果可以通过SoC中的嵌入式处理器来重新配置eFPGA,则控制了嵌入式CPU的对手可以重新配置嵌入式FPGA以安装后门。例如,人们可以重新配置eFPGA来实现以前受损的通信接口版本,从而开放整个芯片进行攻击。”
这些担忧在安全性和安全性重叠的汽车,机器人技术和航空电子等市场引起了热议。除了典型的安全措施外,还需要监视片上数据流量模式,以识别违规行为的异常行为。对于热点或异常热活动也是如此,这可能与正常老化和使用情况相关或无关。
Xilinx芯片营销总监Manuel Uhm表示:“我们增强了安全性功能,可防止发生差分功率攻击等事件。“在模具中,我们还具有多个温度传感器,因为您可以获得热点,而客户需要知道这些热点在哪里,以适应热冷却解决方案。我们也测试老化。所有这些对于设备在现场能使用多长时间以及我们携带它们多长时间至关重要。因此,我们仍有客户购买Virtex-5芯片(于2006年推出)。而在汽车领域,您可能需要覆盖20到25年。
可见的篡改
篡改始终是硬件和软件关注的问题。标准FPGA已提交并验证了其硬件。无论它是否具有固有的安全性,攻击者都将无法篡改该基本硬件。但是,仍然可以通过弄乱比特流并更改加载的图像来篡改结构的内容。
几年前,柏林理工大学的一组研究人员使用非接触式探测技术提出了一篇论文,表明这是可能的。
“除了产生电信号外,这些晶体管还发射少量的红外光,它们还将调制红外信号,具体取决于晶体管通道是处于活动状态还是处于活动状态”,防伪产品技术总监Scott Best说。Rambus。“因此,使用非常精确的红外激光,您可以将激光从晶体管反射回来,然后回来,它将告诉您该晶体管是打开还是关闭,以及那里是否有电压。您可以将感应与晶体管切换或信号在总线上转换的时间同步。为此需要做一些材料准备工作,因为通常使用任何高分辨率,您都需要将芯片背面的厚度从250微米减薄到25微米。因此,现在红外线很容易从硅片的背面逸出,您将获得真正的高分辨率以检测红外线的发射。”
借助eFPGA,该阵列以软形式实例化,因此流氓设计人员可以在将设计投入硅之前对其进行篡改。但是,由于织物的排列特性,如果在目视检查中看不到这种变化,则很难进行改变。在门相对混乱的设计中调整某些东西要容易得多,在这种情况下,变化很难被发现。“当您拥有嵌入式FPGA或存储器之类的阵列结构时,很难在其中放置特洛伊木马电路而不干扰统一的阵列结构,” Tate说道。
另外,eFPGA的一些关键用户需要其他方法来检测可能的篡改。例如,可以模拟典型工作负载下芯片的预期功率曲线,然后在构建时将其与实际芯片进行比较。如果它们之间的差异太大,则表明存在某些问题。再次强调,防止篡改并不仅仅是使篡改的任何尝试更加明显。
eFPGA比特流的详细信息通常不会在数据表和应用笔记中发布。通常,只有NDA下的重要客户才能使用它们,并且提供eFPGA的公司可能会拒绝与动机不佳的人合作。这不是对比特流内容的严格保护,但确实提供了另一层保护。
虽然标准的FPGA带有一个保存其内容的存储器,但是eFPGA通常使用引导ROM进行存储。当然,标准的FPGA也可以做到这一点,但是位流块将以FPGA制造商确定的格式存储。使用嵌入式FPGA,设计人员可以自由控制位流在内存中的位置,并且通常比引导代码本身小得多。坚定的设计工程师甚至可以对比特流进行加扰,以便将其散布在存储器的不同部分中,而不是散布在一个块中。
防止比特流被篡改的另一种方法是对存储中的比特流进行加密,仅在将其加载到设备中时解密。在现成的FPGA中,任何这种加密都将在销售FPGA的公司的控制下进行。使用eFPGA,特定的加密技术和保护密钥的方法仍在设计者的控制之下。
Tate说:“客户无需告诉我们他们如何将eFPGA配置代码映射到其闪存中。” “他们可以加密部分或全部闪存,并在SoC中解密。他们可以分条或使用其他算法“散列”地址以非线性方式进行存储。或者他们可以两者都做。”
禁用JTAG端口
对于基于处理器和基于FPGA的系统,仍然存在一种臭名昭著的爬入系统的方法-JTAG(或其他调试)端口。通过此端口可以访问内部逻辑的广阔区域。尽管内部扫描链的组织对于逆向工程可能很繁琐,但这并非不可能。
因此,在安全性尤为重要的情况下,设计通常会在设计和制造完成后禁用JTAG端口。有时这是通过不可逆转地熔断保险丝来实现的。如果使用此选项,则将来将无法使用JTAG端口来帮助诊断任何问题。
另一种选择是通过位流禁用JTAG端口。最终映像可以包含有关禁用JTAG端口的说明。如果将来需要退回设备进行故障分析,则创建比特流的公司可以加载专用比特流,该专用比特流仅使JTAG端口仅供内部使用。
也可以用密码保护JTAG,尽管这带来了管理密钥的挑战。将单个密钥用于所有设备吗?然后入侵一台设备将解锁其他所有设备。但是,现在为每台设备使用不同的密钥给配置功能带来了挑战,因为该功能不太可能经常使用。因此,这可能是实施起来比较困难的选择。
所有这些考虑因素还受到构建FPGA的技术的影响。到目前为止,目前使用的大多数FPGA使用SRAM内容,这些内容必须在上电时重新加载。这是位流管理最重要的地方。例如,对于重新加载启用JTAG端口的比特流,它也更加灵活。
基于闪存的设备中的非易失性配置消除了每次上电时加载比特流的需要。设备是在制造过程中配置的,因此一旦设备部署,攻击者就很难更改其内容。话虽如此,Oberg指出,基于SRAM的设备可以在必要时使用冗余,以抵御单事件干扰和内容更改—假设任何篡改仅发生在冗余集之一上。
多租户–处理器和FPGA
数据中心提出了另一种安全挑战–多租户。对于处理器,其想法是多个客户端可以使用一台服务器。由服务器基础结构来确保来自一个客户端的信息不会泄漏到另一客户端。这可以通过分离内存和分时处理器本身来完成。
也有兴趣为数据中心中的FPGA加速器提供多租户访问。Hallman说:“分区对于保持一定程度的隔离非常重要。” 与其分时共享处理器,不如共享一个FPGA结构空间,其中一部分包含一个客户端使用的逻辑,另一部分包含另一客户端的逻辑。
当然,这比共享处理器要复杂得多。如何管理不同的图像?即使在运行时,它们是否可以独立于逻辑的其他客户端部分进行加载或重新配置?如何在两个客户端之间隔离硬件?Hallman说:“我进行了一些特定的对话,客户希望允许访问FPGA设计的某些部分,但他们希望锁定其他部分,尤其是在数据中心应用程序中。”
能够进行这种划分的硬件元件将是部分重编程电路。这定义了可以重新编程FPGA架构而无需接触FPGA其他部分的粒度。但是除此之外,域之间的信号交叉没有物理障碍。Hallman表示,必须通过验证独立域互不影响来通过验证来实施分区。
尽管这是一个有趣的场景,但它可能不如基于处理器的多租户的隔离技术那么完善。而且,由于它是硬件而不是软件,因此使其成为安全启用的难度更大。目前,这并不常见。泰特说:“大多数客户在运营期间不会即时进行编程。”
结论
在处理器和FPGA上的软件中实现功能之间的选择涉及经典的权衡。软件更灵活,更易于更改。FPGA比强化逻辑更灵活,但仍不如软件灵活。安全成为此决定中的另一个考虑因素。如果需要最终的安全性,则FPGA和嵌入式FPGA可以使系统比软件更安全。
但这不是万能药。“与传统的软件/微处理器相比,FPGA实施面临许多相同的挑战,例如加密闪存,安全启动以及免受系统内攻击的保护,” Mallett说。尽管有机会获得更好的安全性,但仍有大量工作要做。