你将学习
- 攻击类型针对的是引导级的嵌入式系统。
- 格子哨兵如何使用RISC-V来解决这个问题。
- 如何监督和调解我2C和SPI内存接口。
- 模块化设计如何保证系统中多个嵌入式处理器的安全。
晶格半导体宣布了两个重要的安全解决方案。Lattice Sentry是一种基于fpga的解决方案,可以轻松地使用单个芯片保护多个处理器和其他逻辑。SupplyGuard服务是它的部件管理系统,提供安全的所有权管理和转移,不需要向合作伙伴和客户公开密钥。它们被设计成提供一个安全的、端到端支持动态信任的供应链。
《Lattice Sentry》实际上是一个围绕着《Lattice Propel》设计工具而构建的设计框架MachX03DFPGA,以及Lattice Sentry软件和FPGA IP。它为从微控制器到处理器以及几乎任何使用带有SPI或I的串行闪存的设备提供了一个安全的管理系统2C接口。这是通过监视设备与其存储之间的通信来实现的(图1).
FPGA上的自定义代码和IP可以被动地监视或位于存储设备及其主机之间。因此,Lattice Sentry可以检测攻击,并根据应用程序和系统配置采取各种手段阻止攻击者。这可能意味着重新设置处理器或重新编程内存。FPGA通常与内存、主机和其他设备有关联。
管理安全性有很多可能的场景,从简单地监视内存流量到在使用引导代码之前检查引导代码。实现后者的一种方法是在主机和其他设备之间设置一个交换机。这将允许FPGA在主机使用内存设备中的程序引导之前检查串行设备的内容。在主机可以使用内存内容之前,将根据FPGA中的安全密钥对内容进行身份验证。如果检测到错误,那么FPGA可以用备份替换代码或执行其他杂务,同时阻止主机引导。
场景和配置的数量非常庞大,并且是特定于应用程序的。该解决方案适用于具有单个微控制器的配置,或需要控制引导顺序的具有多个处理器的系统。
虽然系统是为内存操作而设计的,但这些串行接口也经常用于外围设备。管理和控制设备并不超出可能的范围,因为人们可能会根据不同的状态和设置限制功能。这将需要额外的编程和设计,但在一些需要保护的设备本身没有能力保护的应用程序中,它可能特别有用。
每个实现将是一个定制的工作,因此没有现成的预编程芯片。通过使用Lattice Propel中的拖放配置器,以及用于管理和监控串行内存接口的预定义模块,设计、实现和测试工作得以简化。定制IP可以设计为处理新的配置以及控制主机。
Lattice Sentry架构是围绕一个软的RISC-V核心构建的(图2).串行接口、交换机等的数量和类型取决于应用程序,但单个FPGA可以同时处理多个设备。在RISC-V内核上运行的软件通常不会实时跟踪内存流量。这是FPGA的其他部分可以并行处理的。该软件可以使任务更容易执行,比如在允许主机启动前验证内存内容。
通常情况下,即使使用多个设备,也需要一个芯片,尽管使用多个芯片来处理非常大的系统也是可能的。它们可以相互合作;然而,这是设计师必须考虑和使用的内容。
Lattice的芯片采用了芯片内存储和安全机制,以防止自身受到攻击。因此,该芯片可以保守秘密,用于管理系统的其他部分。
确保供应链安全
Lattice Sentry包括芯片上的密钥、一个唯一的ID和它自己的密钥。因此,它能够接受它在内部存储的额外键,以便与各种功能一起使用,包括前面提到的内存验证。这种支持还可以用于管理设备在供应链中的所有权和控制。这就是Lattice SupplyGuard服务发挥作用的地方(图3).
Lattice SupplyGuard的设计宗旨是从生产开始,贯穿产品的整个生命周期。它可以用来防止假冒产品,也可以用来阻止第三方制造服务生产超过订单数量的零件,这些零件可能会在灰色市场上出售。
该服务利用了Lattice Sentry的能力来管理自己的密钥,这些密钥可以用于根据其编程对服务进行身份验证和利用。供应链和产品设计的复杂性意味着许多人都希望利用Lattice的支持服务来设计基于Lattice sentry的设备,以及如何将它们集成到供应链中。