通过安全引导提供信任根 此类安全处理器提供安全引导选项,旨在确保信任根所依托的固件映像的完整性。例如,Silicon Laboratories 的 EFR32MG21A 和 EFR32BG22 Gecko 系列 2 处理器分别通过基于硬件安全元件和虚拟安全元件 (VSE) 的多级引导过程来构建此信任根(图 2)。
图 2:Silicon Laboratories 的 Gecko 系列 2 EFR32MG21A 处理器在多级引导过程的第一级使用集成的硬件安全元件(如本图所示),而 EFR32BG22 则使用虚拟安全元件来启动多级引导过程。(图片来源:Silicon Laboratories) 在 EFR32MG21A 中,专用处理器内核提供加密功能以及用于安全密钥存储的硬件安全元件。在此专用功能的支持下,处理器使用只读存储器 (ROM) 中存储的代码发起引导过程,以验证第一级引导程序 (FSB) 代码。完成验证后,FSB 代码即会运行,接着又会验证第二级引导程序 (SSB) 的代码签名。引导序列继续执行经验证的 SSB,后者进而会验证应用程序代码的签名,而该代码通常包括系统级代码和更高级别的应用程序代码。最后,经验证的应用程序代码运行,系统根据应用程序的要求继续执行操作。 由于此过程从 ROM 代码开始,而且仅运行经验证的 FSB、SSB 和应用程序代码,因此该方法将产生经验证的信任链来执行代码。由于此信任链中的第一环依赖于无法修改的 ROM 代码,因此信任链中后续的每一环都会延续此可信环境。与此同时,这种方法还允许开发人员安全地更新应用程序代码,甚至是第一级和第二级引导程序代码。只要每个代码包都提供经验证的签名,可信环境就能保持完好。 使用信任根提供这种安全引导的处理器,通常支持多种模式和选项。例如,Silicon Laboratories 的 Gecko 系列 2 处理器提供了更强大的基于证书的安全引导功能。 证书可用于常规公钥基础结构 (PKI) 事务处理,包含公钥以及对一个或多个相关证书的引用,这些证书最终指向证书颁发机构 (CA) 授予的根证书。此链中的每个证书均用于验证其下面的证书,从而形成基于值得信赖的 CA 的信任链。在传输层安全性 (TLS) 的认证阶段,浏览器依靠此信任链来确认 Web 服务器的身份。嵌入式系统可采用相同的方法使用证书来确认引导程序或应用程序代码源的身份。在这里,按照前述方式执行多级引导过程,但需要额外验证与每一级相关的证书(图 3)。
图 3:Silicon Laboratories 的 Gecko 系列 2 处理器通过在引导过程每一级的签名验证期间验证所用公钥的证书,来增强系统安全性。(图片来源:Silicon Laboratories) NXP 的 LPC55S69JBD100 等其他处理器支持多种不同的固件映像选项。除了签名的固件映像外,这些处理器还支持使用可信计算组织推出的设备标识符组合引擎 (DICE) 行业标准的引导映像。第三个选项允许开发人员将映像存储在支持 PRINCE 加密的处理器闪存特殊区域内,其中 PRINCE 加密是一种低延迟的分组加密,能够在小得多的硅面积内达到与其他加密相当的安全强度。在 LPC55S69JBD100 中可实现 PRINCE 加密,这种技术能对处理器专用的 PRINCE 闪存区中存储的加密代码或数据执行实时解密。由于解密使用的密钥仅供 PRINCE 加密引擎访问,因此该解密过程仍然是安全的。实际上,这些密钥由 LPC55S69JBD100 的物理不可克隆功能 (PUF) 生成的密钥加密密钥 (KEK) 提供保护。(有关 PUF 和 KEK 用法的更多信息,请参见第 2 部分。) 这种方法使开发人员能够存储更多固件映像,而这是在避免“封闭”设备的风险情况下,为物联网设备提供固件无线 (FOTA) 更新方法所需的功能。如果处理器只能使用一个位置来存储固件映像,则有缺陷的固件映像会将处理器置于不确定或锁定的状态,从而锁定或阻塞设备。通过将固件映像存储在 LPC55S69JBD100 中启用了 PRINCE 的闪存区内,开发人员可使用回退策略,即如果新版本引导进入无法工作状态,则还原固件的上一个正常工作版本。 由于所有这些新固件映像都必须通过基础引导过程中所需的签名验证检查,所以开发人员可充分利用安全 FOTA,在不影响系统或其信任链的情况下添加新功能或修复错误。
|