安全问题通常集中在处理器上执行的软件上。但并不是所有的电子功能都在软件中运行。FPGA提供了另一种工作方式,它们可以比在软件中执行的功能更安全。
FPGA提供了对硬件的更多控制,并且对攻击者来说更不透明。在嵌入式FPGA的情况下,设计者完全控制整个系统。这意味着减少对别人设计的硬件的依赖。这也意味着最终的设计不太可能被公开记录,这意味着许多攻击之前必须有一个困难的反向工程任务。
Flex Logix首席执行官杰夫·泰特(Geoff Tate)说:“如果你担心安全问题,FPGA模块在任何情况下都会让人很难破解。”
大量的电子功能是通过编写在处理器上执行的软件来实现的。安全影响和保护这类系统的需要已经有了很好的记录。但是FPGA也是在硬件而不是软件中呈现功能的一种流行方式。虽然这有时是ASIC中专用硅电路的前奏,但FPGA加速器在数据中心很受欢迎。在要求可能快速变化的羽翼未丰的行业中,设计也可以使用FPGA。
图1:在左侧,功能在软件中执行。在右侧,同样的功能在基于FPGA的加速器中执行。消息来源:布莱恩·莫耶(Bryon Moyer)/半导体工程。
基于FPGA的系统中的安全性与基于处理器的系统中的安全性一样重要。但是现场可编程门阵列有一些基本的不同之处,这有助于安全任务。主要的区别既与信息的可用性有关,也与硬件工程师拥有的控制权有关。
更难破解你不知道的东西处理器要么是由硬件公司制造的,要么是由IP公司为包含在SoC中而设计的。在后一种情况下,将处理器集成到芯片中的硬件团队对处理器块的可见性有限。重点放在互连上,而不是处理器中逻辑的细节上。一旦配置并连接,软件工程师就可以使用处理器来创建代码。
为了创建代码,必须很好地记录处理器的硬件体系结构。指令集、流水线、I/O、存储器体系结构、内部时序-所有这些都必须是已知的,才能创建性能最佳的软件。但所有这些信息的可用性也将处理器置于风险之中,因为这些信息不仅可供善意的编码人员使用,而且还可供寻找弱点和入侵方式的攻击者使用。
FPGA不那么透明。现成的版本有一个文档齐全的高级体系结构,但较低级别的细节留给了设计软件。虽然处理器必须适应想要用汇编语言工作并管理每个时钟周期的程序员,但FPGA设计很久以前就失去了手动控制如何配置不同逻辑块的能力。设计的规模是如此巨大,实际上,放置和布线工具在完成一个完整的设计时可以做得比手工调整要好得多。
因此,FPGA不记录手动设计所需的低级细节。即使是用于配置FPGA的位流也没有文档记录。也许可以对其中的一些细节进行反向工程,但这需要大量的工作-远远超过理解处理器所需的工作量。“祝你好运,努力找出(比特流)的哪些位去了哪里,”泰特观察到。在嵌入SoC(EFPGA)的FPGA结构中,还有更大的隐蔽性。“当你谈到嵌入式FPGA时,那就更难了。”
此外,处理器往往控制整个系统,同时还托管需要运行的各种软件程序。因此,即使FPGA有可能控制一个系统,但这并不典型。处理器通常负责,而FPGA加速特定的委托任务。对处理器的攻击有可能使攻击者控制系统,但对于FPGA攻击来说,这是不太可能的结果。“即使你确实控制了FPGA,你也不能控制系统,”泰特说。
处理器在管理通信时也占据中心位置,因此通信通道成为尝试访问处理器的一种手段。FPGA往往在较低的体系结构级别运行,因此通过通信通道攻击它们可能不太成功。
文档可能不是基于处理器的系统的唯一漏洞。使用处理器可以更容易地四处探查以发现正在发生的事情,甚至可以更容易地影响行为。“FPGA提供了比基于处理器的系统更好的安全性,因为基于处理器的系统容易受到试错攻击,在这种攻击中,对手使用内存缓冲区溢出等技术来改变处理器的行为,”西门子旗下Mentor的FPGA解决方案经理Ray Salemi说。另一方面,FPGA在启动时从ROM加载其配置位,通过数据路径传输的数据无法修改底层逻辑。
如果您使用的是控制处理器(无论是预先设计的还是可配置的IP),则更易于保护,从而为硬件设计人员提供有限的控制。现成的处理器不提供任何控制。事情就是这样。SoC中的处理器IP提供了更高级别的控制,但它仍然处于较高级别,您可以指定可以放置多少个不同块的实例,或者可以创建哪些I/O和多少个I/O。Tortuga Logic的联合创始人兼首席技术官Jason Oberg说:“有了SoC,实际硬件的内部就是一个黑匣子。”“你可以在软件层面配置东西做什么,但你真的不知道软件和硬件是如何交互的。”
这些模块和I/O的详细设计不在芯片设计者的控制范围之内。当然,这是有意为之的--这是IP提供的生产力提升的基础。但是任何安全漏洞都不能被该IP的购买者纠正。Oberg说:“你控制和分析的系统越多,你对系统的了解就越多,你对安全的了解就越多,你的总体保证就会越高。”
使用现成的FPGA,硬件设计人员可以完全控制FPGA结构中实现的逻辑。OneSpin解决方案公司负责信任和安全的产品经理约翰·霍尔曼说:“FPGA安全性被认为更好的一个重要原因是,您手中的设计是定制的,而不是别人的。”“最后一件定制的东西是你的了。”
核查也更加透明。“在FPGA中,您可以构建自己的定制ASIC,因此可以进行更多的白盒分析,”Oberg说。“这使您可以查看许多不同的案例,并帮助您设计更健壮的系统,而不是相信供应商已经正确地完成了这项工作。”
但是在FPGA中有相当数量的其他逻辑是设计者无法控制的。至少,有支持FPGA配置的硬件基础设施。许多FPGA还具有强化的处理器和其他模块。奥伯格指出:“在基于SoC的现代FPGA中,您仍然严重依赖FPGA的ASIC部分来安全地提供该部分。”使用这种FPGA的硬件设计者几乎无法控制这些硬逻辑块。
嵌入式FPGA(EFPGA)提供更多的控制。所有连接FPGA模块和系统其余部分的逻辑都在设计者的控制之下。奥伯格说:“在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表明,安全性只与最薄弱的环节一样强。”如果eFPGA可以通过SoC中的嵌入式处理器重新配置,那么控制嵌入式CPU的对手就可以重新配置嵌入式FPGA来安装后门。例如,人们可以重新配置eFPGA,以实现以前被攻破的通信接口版本,从而使整个芯片容易受到攻击。“。
这类担忧在汽车、机器人和航空电子等安全和安保重叠的市场上达到了狂热的程度。除了典型的安全措施外,还需要监控芯片上的数据流量模式,以识别违规行为的异常行为。热热点或异常热活动也是如此,它们可能与正常老化和使用情况有关,也可能与正常老化和使用情况无关。
Xilinx硅片营销总监曼努埃尔·乌姆(Manuel Uhm)表示:“我们增强了安全功能,以防范差动电源攻击等。”我们在芯片内也有多个温度传感器,因为你可以获得热点,客户需要知道这些热点在哪里,以适应热冷却解决方案。我们也测试衰老情况。所有这些对于设备在战场上能持续多久,以及我们携带它们的时间来说都是至关重要的。因此,我们仍有客户在购买Virtex-5芯片(2006年推出)。而在汽车行业,你可能需要在这方面做20到25年的保修。“。
可见篡改总是硬件和软件都需要关注的问题。标准FPGA对其硬件进行了承诺和验证。不管它是否本质上是安全的,攻击者都不能篡改该基本硬件。但是,织物的内容仍然可以通过扰乱比特流和更改加载的图像来篡改。
几年前,柏林理工大学的一组研究人员使用非接触式探头提交的一篇论文证明了这是可能的。
Rambus防伪产品技术总监Scott Best表示:“这些晶体管除了产生电信号外,还会发出少量的红外线,它们还会调制红外线信号,这取决于晶体管通道是否活跃。”“因此,用一台非常精确的红外激光器,你可以把激光从晶体管上反弹回来,它会告诉你晶体管是开还是关,那里是否有电压。”您可以将感测同步到晶体管何时切换,或信号何时在总线上转换。要做到这一点需要一些材料准备,因为使用任何高分辨率通常都会将芯片的背面从250微米厚减薄到25微米厚。所以现在红外线可以很容易地通过硅的背面逃逸,而且你可以获得非常高的分辨率来感知红外线发射。“。
有了eFPGA,阵列是以软形式实例化的,所以流氓设计师可能会在设计提交到硅之前尝试篡改设计。但是,织物的阵列性质使得在没有肉眼观察到明显变化的情况下改变变得困难得多。在一个相对杂乱无章的闸门设计中调整一些东西要容易得多,那里的变化将更难被发现。“当你有像嵌入式FPGA或存储器这样的阵列结构时,很难在不干扰统一阵列结构的情况下放入特洛伊木马电路,”Tate指出。
此外,eFPGA的一些关键用户需要其他方法来检测可能的篡改。例如,可以模拟典型工作负载下芯片的预期功率分布,然后将其与构建时的实际芯片进行比较。如果它们的差异太大,就表明有什么地方不对劲。这里,与其说是为了防止篡改,不如说是为了使任何篡改的尝试变得更加明显。
EFPGA比特流的详细信息通常不会在数据手册和应用笔记中发布。它们通常只向保密协议下的严肃客户提供,提供eFPGA的公司可能会拒绝与动机可疑的人合作。这并不是对比特流内容的铁板钉钉的保护,但它确实提供了另一层保护。
虽然标准FPGA自带一个保存其内容的存储器,但eFPGA通常使用引导ROM进行存储。当然,标准的FPGA也可以做到这一点,但位流块将以FPGA制造商确定的格式存储。有了嵌入式FPGA,设计人员可以自由地控制位流在内存中的位置,而且它通常会比引导代码本身小得多。决心坚定的设计工程师甚至可以对比特流进行加扰,使其分散在存储器的不同部分,而不是分散在一个块中。
防止位流篡改的另一种方法是加密存储中的位流,仅当其加载到设备中时才解密。在现成的FPGA中,任何这样的加密都将由销售FPGA的公司控制。使用eFPGA,特定的加密技术和保护密钥的手段仍由设计者控制。
“客户不需要告诉我们他们是如何将eFPGA配置代码映射到他们的闪存中的,”泰特说。他们可以加密部分或全部闪存,并在SoC中解密。它们可以对地址进行条带化或使用其他算法来“散列”地址,以便以非线性方式存储。或者他们可以两者兼而有之。“。
关闭了基于处理器和基于FPGA的系统的后门,仍然有一种臭名昭著的进入系统的方式-JTAG(或其他调试)端口。此端口提供对内部逻辑的巨大区域的访问。虽然内部扫描链的组织对于反向工程来说可能是单调乏味的,但这并不是不可能的。
因此,在安全性特别重要的情况下,设计通常在设计和制造完成后禁用JTAG端口。这有时是通过不可逆转地熔断保险丝来实现的。如果使用此选项,将来将无法使用JTAG端口来帮助诊断任何问题。
另一种选择是通过比特流禁用JTAG端口。最终映像可以包含禁用JTAG端口的指令。如果设备在将来返回时需要进行故障分析,则创建位流的公司可以加载专用位流,该专用位流使JTAG端口仅供内部使用。
对JTAG进行密码保护也是可能的,尽管这带来了管理密钥的挑战。是否对所有设备使用一个密钥?那么入侵一台设备就会解锁其他所有设备。但现在,为每台设备使用不同的密钥会给这项不太可能经常使用的功能带来配置挑战。因此,这可能是一个更难实现的选择。
所有这些考虑因素也会受到构建FPGA的技术的影响。到目前为止,目前使用的大多数FPGA都使用SRAM内容,这些内容必须在上电时重新加载。这就是比特流管理最重要的地方。比方说,它对于重新加载启用JTAG端口的比特流也更加灵活。
基于闪存的设备中的非易失性配置消除了每次加电时加载位流的需要。设备是在制造过程中配置的,因此一旦部署设备,攻击者就很难更改其内容。也就是说,Oberg指出,如果有必要,基于SRAM的设备可以使用冗余,以应对单一事件的干扰和内容的更改-假设任何篡改只发生在冗余集中的一个事件上。
多租户处理器和FPGA数据中心提供了不同的安全挑战-多租户。对于处理器,其想法是多个客户端可以使用一个服务器。这取决于服务器基础设施,以确保来自一个客户端的信息不会泄漏到另一个客户端。这既可以通过内存分离实现,也可以通过处理器本身分时实现。
此外,还对提供对数据中心内FPGA加速器的多租户访问感兴趣。“分区对于保持一定程度的隔离已经变得非常重要,”Hallman说。这不是共享处理器,而是空间共享FPGA结构,一部分包含一个客户端使用的逻辑,另一部分服务于另一个客户端。
当然,这比共享一个处理器复杂得多。将如何管理不同的映像?它们是否可以独立于其他客户端的逻辑部分进行加载或重新配置,即使在它运行时也是如此?硬件将如何在两个客户端之间隔开?Hallman指出:“我有过一些具体的谈话,客户希望允许访问FPGA设计的部分,但他们希望锁定其他部分,特别是在数据中心应用程序中。”
启用该分区的硬件元件将是部分重编程电路。这定义了FPGA结构可以在不接触FPGA其他部分的情况下重新编程的粒度。但除此之外,跨域信号没有任何物理障碍。Hallman说,分区的实施必须通过验证来完成,通过证明独立的域不会。
.