图片35
安全处理器提供了安全启动选项,其设计用于确保信任根的固件图像的完整性。EFR32MG21A和EFR32BG22Gecko系列2处理器分别通过多层启动过程构建了这种信任根,它们是基于硬件安全组件和虚拟安全部件(VSE)。
EFR32MG21A中,专用处理器内核为安全密钥存储提供了加密功能和硬件安全部件。有了这个专用功能,处理器就会启动一个从ROM(ROM)中存储的代码来验证一级启动程序(FSB)代码。在完成验证之后,FSB代码将运行,然后对第二级启动程序(SSB)进行验证。启动顺序将继续执行验证过的SSB,然后再对应用程序代码进行验证,而这个SSB通常包含系统级代码和较高级应用程序代码。最终,验证后的应用程序代码运行,系统会根据应用程序的需求继续执行操作。
因为这个过程是从ROM代码开始的,并且只运行经过验证的FSB、SSB和应用程序代码,所以这个方法会生成一个经过验证的信任链来执行代码。因为这个信任链中的第一环所依赖的ROM代码是不能修改的,所以信任链中的每个后续环节都将继续这个可信环境。同时,这种方法也使开发者能够安全地更新应用程序代码,甚至包括第一和第二级启动程序代码。受信任的环境可以很好地维持,只要每一个包都提供了经过验证的签名。
利用信任root提供这种安全启动的处理器,通常支持多种模式和选项。举例来说,Silicon Laboratories的Gecko系列2处理器提供了更加强大的基于证书的安全启动。
可以使用普通公钥基础结构(PKI)事务处理的证书,它包含公共密钥和引用一个或多个相关证书,最后指向证书颁发机构(CA)所授予的根证书。这个链中的每一个证书都用来验证它下面的证书,这样就形成了基于可信CA的信任链。传送层安全(TLS)认证阶段,浏览器依赖于此信任链来确认网络服务器的身份。嵌入系统可以用同样的方法使用证书来确认引导程序或者应用程序代码源的身份。此处,按前面的方法执行了多级启动过程,但是需要对每个级别进行附加的验证。
其他处理器如NXP的LPC55S69JBD100等,支持许多不同的固件图像选项。这些处理程序除支持经过签名的固件镜像之外,还支持由可信计算组织推出的设备标识符组合引擎(DICE)行业标准的引导图像。还有一个选项让开发人员可以将图像存储在一个支持PRINCE加密的处理器flash专用区中,其中PRINCE加密是一种低延时的分组加密,它能在更小的硅片面积内达到类似于其他加密的安全强度。LPC55S69JBD100中可以实现PRINCE加密,该技术可以对存储器专用PRINCE闪存中的加密代码或数据进行实时解密。因为解密所用的密钥只能被PRINCE加密引擎访问,所以解密过程仍然是安全的。事实上,这些密钥是由LPC55S69JBD100的物理不可克隆功能(PUF)产生的密钥加密密钥(KEK)提供保护。
这样,开发者就可以存储更多固件镜像,这样就可以为物联网设备提供固件无线(FOTA)更新方法,从而避免了“封闭”设备的风险。假如处理程序只能使用一个位置来存储固件图像,那么有缺陷的固件映像就会使处理器处于不确定或锁定状态,从而锁定或阻塞设备。在LPC55S69JBD100中将固件镜像存储在PRINCE的Flash区内,开发者可以使用回退策略,也就是说,如果新版本引导进入不能工作,那么就恢复以前正常工作的固件版本。
因为所有这些新固件映像都必须通过基本引导期间所需的签名验证检查,因此开发者可以充分利用安全FOTA来添加新功能或修正错误,而不会影响系统及其信任链。
系统安全和应用级安全要求执行环境,仅允许运行授权软件。虽然编码签名验证对于实现这种环境来说至关重要,但是安全系统也需要利用一组更为全面的功能,来建立起确保执行可信软件所必需的信任链。这类可信环境的基础是信任根,这是由安全处理程序支持的安全引导机制提供的。有了这样的处理器,开发者就可以实现安全的物联网设备,以使它能够抵抗那些试图破坏软件执行或者完全劫持系统的攻击。