M-CRPS服务器安全驱动与升级:X-Cube-SBSFU 使用技巧(之一)——初步了解

1. 引言

       安全启动与安全更新是嵌入式设备安全的基本安全要求之一:安全启动提供信任根,保证每次设备启动运行的应用程序的完整性与合法性;安全更新则在固件升级环节避免系统软件被恶意修改或替换。

       为了方便客户在其嵌入式设备的设计中更加容易地集成安全启动和安全更新功能,STM32 提供了相关安全实现,支持众多STM32 MCU 系列。其中X-CUBE-SBSFU 是针对Cortex V6/V7M 内核的STM32 MCU 产品的参考方案,软件包下载地址:https://www.st.com/x-cube-sbsfu。

      在X-CUBE-SBSFU 使用技巧的第一篇,我们对软件包及其软件架构等进行介绍,让读者对这个软件包有一个初步认识。

2. 安全启动、安全更新基本概念与原则

2.1. 安全启动
      嵌入式系统安全启动的目标是保证每次上电启动所运行的应用程序都是真实可信的软件。

为了达到这个目的,安全启动需要满足几个基本要求:
     • 系统中存在这样一段不变的启动代码,每次上电总是从这段代码开始运行,这段启动代码不会被修改,其运行也无法被绕过
     • 这段启动代码将检查系统配置,确认必要的安全配置状态,并且校验后续运行的应用程序代码的完整性、合法性,通常这个校验通过密码学算法来完成
     • 安全启动代码只有在系统配置检查和应用校验通过后才会跳转执行后续的应用程序安全启动的过程示意见图1

2.2. 安全更新
       安全更新关注的是系统软件升级的过程,基本目标是保证每次升级的新版本固件来源可靠,没有经过篡改。由于升级过程通常会经由某个通信通道获取新版本镜像,这个环节对固件内容的机密性保护也需要考虑,如果通信通道不提供加密保护,那么可以考虑事先对升级镜像内容进行加密处理,避免固件信息以明文形式出现。安全更新还要检查版本信息,避免蓄意的版本降级,导致系统回退到旧的可能存在已知漏洞的版本。

3. 初步了解X-CUBE-SBSFU

3.1. 软件架构
      X-CUBE-SBSFU参考实现由三个大的部分组成:底层硬件驱动,中间件层,上层应用,如图2所示

如图3中提到的,SBSFU基于某个STM32系列和参考板的实现通常包含3个工程:

• xxx_SECoreBin:
- 安全引擎工程,包含所有的敏感数据操作,例如加解密、签名校验、固件头关键信息的读取和修改等,涉及密码学的使用,因而会用到中间件层中的几个相关模块,例如cryptolib, SecureEngine等等。
- 该工程会独立编译成为一个SE_Core.bin文件,并包含于SBSFU工程
• xxx_SBSFU:
- 安全启动Bootloader工程,执行安全启动的流程
- 通过调用SECoreBin工程的服务完成关键操作
- 同时包含基于串口通信的loader,用于本地固件升级,支持从该工程直接加载应用程序或者进行版本升级
• xxx_UserApp:
- 应用程序示例,通常包含一些security 相关的测试,来演示从应用程序发起的攻击,会如何被这一整套参考实现所采用的安全机制阻止。
- 如果是双镜像的配置,还会包含从应用程序下载新版本固件进行升级的例子。
- 由于新版本下载后的烧录地址等信息需要从SecureBoot获得,支持升级的UserApp工程需要调用SBSFU提供的服务API,因而会依赖于SBSFU工程输出的se_interface_appli.o,以便获得服务API的Symbol和地址

Linker_Common目录包含几个工程同时会引用的linker文件,用来定义安全启动和升级过程中需要知道的存储空间布局,包括内部Flash和SRAM的部分,如果某个参考实现支持外部Flash,那么linker common文件中还会包含外部Flash存储空间的相关定义。

3.2. 安全启动流程

     X-CUBE-SBSFU参考实现中的安全启动流程在SBSFU工程的sfu_boot.c中实现,启动流程主要包含图5所示的几个步骤

4. 小结

       X-CUBE-SBSFU是基于STM32 MCU的安全启动和安全更新的参考实现,支持众多STM32系列。X-CUBE-SBSFU参考实现包含完整的参考代码以及配套工具,并以源码形式提供给用户,具备非常大的灵活性。用户既可以直接使用该软件包与应用程序进行集成,为其系统快速添加安全启动和安全更新功能;也可以仅以此作为参考,重新编写自己的安全启动和安全更新实现。

      本文对X-CUBE-SBSFU参考实现软件包做了大致介绍,包括目录结构、软件架构、安全启动流程、Crypto方案选择、密钥及签名工具、硬件安全特性在安全启动实现中的使用以及各代码模块的存储空间布局等。

      在使用技巧的第二篇,我们将继续介绍如何在用户的应用程序中集成X-CUBE-SBSFU。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值