首页 > 新能源汽车

安全更新基于 FPGA 的嵌入式系统

来源:新能源汽车网
时间:2023-03-07 17:09:27
热度:

安全更新基于 FPGA 的嵌入式系统“系统更新时请勿关闭电源。” 我们以前都见过这个警告。它通常发生在我们的电子设备之一更新其闪存以安装代码更新时。如果此更新被中断,闪存将无法正确

“系统更新时请勿关闭电源。” 我们以前都见过这个警告。它通常发生在我们的电子设备之一更新其闪存以安装代码更新时。如果此更新被中断,闪存将无法正确更新。代码将被破坏并且设备无法操作或“变砖”。熟悉的警告通知的根本原因是,绝大多数使用闪存的半导体设备都需要在编程或擦除操作期间始终通电。显然,避免创建“变砖”设备很重要。但是,如果仅发出警告还不够怎么办?一些嵌入式设备甚至没有用户显示器,因此无法生成警告。您可以在设计中做些什么来创建可靠、安全和有保障的远程系统更新?

远程更新在嵌入式系统中的重要性 远程 
更新对于连接的嵌入式系统来说是一个越来越重要的特性。能够通过 Internet 远程修复错误或添加功能,可以节省大量的服务调用费用,而当部署了数千个嵌入式系统时,服务调用就会出现问题。针对嵌入式系统的安全漏洞越来越频繁,这也凸显了对远程安全代码更新的需求,以修复潜在的安全漏洞。显然更新需要安全,否则攻击算法可以使用不安全的安全更新作为破坏系统的简单方法。让我们看一个典型的系统,以便更好地理解安全、可靠和可靠的远程更新设施的要求。

示例系统——控制平面桥 
一个需要远程更新的常见示例系统是通信或网络机箱内的控制平面桥。该子系统聚合了许多低速外设——例如模拟传感器、电源管理模块、风扇、故障记录存储器和使用 I2C、SPI 和 GPIO 接口的状态输出。然后可以使用更高速度的总线,也许是 PCIe——许多通信和网络机箱中非常常见的子系统接口——直接与低速外设通信。底盘控制子系统可以实现智能聚合功能,在指定的触发点被激活时“推送”通信——例如温度或电压水平。下面的图 1 显示了使用 FPGA 和片上微控制器(通常称为 SoC FPGA)实现的此类系统。


图 1. 通过 PCIe 进行远程更新的机箱控制平面桥

FPGA 和闪存 
在上面的示例系统中,远程更新是通过 PCIe 总线进行的,但在编程过程中没有受到可能的断电保护。让我们看看常见的 FPGA 实现类型,以更好地了解保护闪存远程更新过程免受断电期间严重故障影响的要求。

几乎每个基于 FPGA 的系统都需要某种形式的非易失性存储器来存储配置存储器。通常配置存储器驻留在片外或片上。基于 SRAM 的 FPGA 需要外部闪存用于上电配置。基于闪存的 FPGA 要么存储嵌入在 FPGA 结构中的配置内存(结构嵌入式闪存 FPGA),要么使用基于 SRAM 的结构,但将闪存块放在片上(闪存在侧面 FPGA 上)。

对于基于 SRAM 的 FPGA,通常使用 NOR SPI 闪存,因为它消耗的引脚少,有多个供应商提供相同的引脚分配,并且密度高达 1 Gb。当前的 NOR SPI 闪存设备具有 32 位地址选项,允许在不更改命令和控制协议的情况下增长到 4GB 设备。当此 SPI 闪存处于编程或擦除模式(电荷泵处于活动状态)并且电源消失时会发生什么情况?电荷在哪里消散?是否有电路可以检测这些闪存中的电源故障并将电荷安全地分流到地面?通常发生的情况是被写入的页面将遇到数据损坏。


图 2. 三种 FPGA 配置选项图:基于 SRAM 的外部配置闪存、侧面闪存和嵌入式闪存

对于侧面闪存 FPGA,宽片上数据总线用于在加电时加载基于 SRAM 的配置存储器。通常配置比使用外部闪存配置设备的基于 SRAM 的 FPGA 更快。然而,需要询问有关编程或擦除周期期间功率损耗的类似问题。费用去哪儿了?闪存是否损坏?只有被写入的页面损坏了吗?还是整个闪存都处于危险之中?FPGA 能否检测到损坏的片上存储器,或者损坏的数据是否会在上电过程中加载到配置存储器中?

不仅闪存损坏是个问题,如何保护远程数据也至关重要。当终用户可以访问嵌入式产品时,它就有可能被篡改。为防止不必要的攻击,必须同时采用软件和硬件安全措施。仅加密远程配置数据文件是不够的。尽管此软件加密安全性有所帮助,但要解密数据的硬件 (FPGA) 也必须内置安全保护。当用户可以访问嵌入式设备时,可以轻松提取加密数据文件的密钥。这是通过使用廉价的电磁探头和实施差分功率分析 (DPA) 来完成的。有许多使用此技术提取的 FPGA 安全密钥示例。如果 FPGA 没有内置 DPA 对策,那么任何远程更新都可能成为安全漏洞。当用户可以访问嵌入式产品时,没有 DPA 对策就等同于没有安全性。

对于闪存嵌入式 FPGA,配置存储器存储在芯片上并紧密集成在 FPGA 结构中。例如,在 Microsemi SmartFusion2 和 IGLOO2 闪存 FPGA 上,编程可以通过 USB、PCIe 或 JTAG 等外部通信端口进行,整个编程过程由片上专用编程接口管理。此外,SmartFusion2 和 IGLOO2 FPGA 上还提供一种称为在应用程序编程 (IAP) 的编程工具,即使在编程过程中出现断电时,它也能提供所需的可靠、安全和可靠的编程工具。现在让我们看看如何使用 IAP 设施来帮助实现当今嵌入式系统所需的强大的远程更新功能。

在基于 FPGA 的嵌入式系统中实现可靠、安全和安全的远程更新 闪存 
嵌入式 FPGA 可以提供更轻松地支持安全和强大的远程更新所需的关键功能。例如,SmartFusion2 具有实现关键桥接功能所需的所有主流 FPGA 功能以及所需的安全和 IAP 功能。如下图 3 所示,低速接口可以使用 I2C 和 GPIO 进行连接。高速主机接口 PCIe 作为专用端口实现,不需要 FPGA 结构。


图 3. 应用程序编程 (IAP) 中的 SmartFusion2 支持底盘控制平面桥中安全、可靠的远程更新

片上处理器可以使用高速内存子系统 (HSMS) 访问用于代码存储的大型内部闪存、用于数据缓冲的大型内部 SRAM 以及专用 DDR 控制器,以便在需要时访问额外的外部存储器。专用系统控制器提供编程期间使用的安全功能和远程更新期间使用的 IAP 功能。下面的图 4 显示了 SmartFusion2 FPGA 上可用的关键功能的更详细视图。

单击以获取更大的图像 

图 4. Microsemi SmartFusion2 SoC FPGA 具有主流特性以及强大的安全性和远程更新功能

使用在应用程序编程实现安全、可靠和可靠的更新 
SmartFusion2 和 IGLOO2 提供的在应用程序编程 (IAP) 工具提供了一种安全可靠地远程更新配置比特流的方法。IAP 从 FPGA 内的专用系统控制器执行,因此它不需要使用任何 FPGA 架构或其他用户可配置逻辑。IAP 功能是两步过程,使用外部 SPI 闪存设备。在步中,外部 SPI 闪存设备使用任何可用接口(PCIe、USB、JTAG 甚至以太网)使用所需的比特流进行编程。用于对 SmartFusion2 设备进行编程的所有比特流都经过加密,以确保它们不受篡改,因此该比特流也将采用加密形式。

在下一步中,系统控制器通过系统服务调用执行 IAP 服务。用户提供一个指向系统控制器的指针,其中包含外部 SPI 闪存中比特流位置的起始地址。IAP 系统服务调用也为用户提供了三个选项:Authenticate、Program 或 Verify。身份验证通常在对 FPGA 配置存储器进行编程之前执行,以验证 SPI 闪存中的比特流是否针对正在编程的设备正确构建。在验证过程中,设备运行正常。

包含新比特流的外部 SPI 闪存也可以包含一个额外的图像,一个可以用作恢复目的的已知良好版本。用户可以随时指向恢复映像并使用它将 FPGA 配置为已知的良好状态。恢复映像可以从天起“按原样”保存,也可以根据需要更新以修复关键错误。

在 IAP 功能期间,程序恢复选项可用。如果在编程期间发生电源故障,则启用编程恢复时,系统控制器将禁用用于以受控方式对 FPGA 进行编程的内部电荷泵。在下一个后续上电周期中,在启用 FPGA 架构之前,系统控制器将检测到器件编程操作已被中断,并将从位于外部 SPI 闪存中的比特流启动编程周期。用户可以选择从已知的良好映像或刚刚推送到 SPI 闪存的远程更新映像进行更新。当外部比特流加载到 SmartFusion2 FPGA 时,它会使用内置的 DPA 对抗逻辑。这确保没有电磁探测器可以破译加密密钥,从而产生可信的、

程序恢复与安全加密的比特流和比特流验证相结合,即使在 FPGA 配置存储器编程期间断电,也能提供当今连接的嵌入式系统所需的可靠、安全和可靠的远程编程更新工具。

Ted Marena 是 Microsemi 的 FPGA/SOC 营销总监。他在 FPGA 领域拥有超过 20 年的经验。此前,Marena 曾在业务开发、产品和战略营销方面担任过职务。2014 年 2 月,他在 Lattice Semiconductor 工作时被授予年度创新者奖。Marena 为垂直市场定义、创建和执行独特的营销平台解决方案,包括消费、无线小型基站、工业、相机、显示器和汽车应用。