视频号 | strongerHuang

微信公众号 | strongerHuang

物联网时代,因为要联网就牵涉到一个重要的问题,那就是安全,你会发现近两三年各MCU厂商都在推自己的安全芯片。

本文就带你认识STM32Trust,以及在STM32上支持的一种SMI技术。

1STM32Trust介绍

STM32Trust官方网址:

www.st.com/stm32trust

STM32Trust是基于STM32,在带有STSAFE安全组件的微处理器,提供了一种强大的多级策略来增强产品设计时的安全性。

STM32Trust是一套STM32解决方案(可以理解为是STM32的一套工具),提供完整的代码保护和执行保护工具套件。

STM32Trust提供了12种安全功能,如下图:

12种功能大概可以分为 代码保护 和 执行保护 两大类:

1.代码保护

STM32Trust.CodeProtection一套解决方案,以确保烧写STM32时,客户代码的机密性和完整性

某些STM32 单片机型号已嵌入硬件安全保护功能,还额外实现了篡改检测、防火墙代码隔离机制和Arm TrustZone®技术,来保护最敏感的代码。

代码保护方案支持的STM32列表:

几个概念:

①SBSFU:Secure Boot and Secure Firmware Update,安全启动和安全固件更新。

②CRYPTOLIB:cryptographic firmware library,加密固件库。

③SFI:Secure Firmware Installation,安全固件安装解决方案。

2.执行保护

设备成为商业产品就易成为受攻击的目标,需要对信息安全攻击具有免疫力。因而需要采取信息安全防护措施,以确保固件IP受到保护,机密凭证和数据受应用程序保护,而不会被破坏。

执行保护方案支持的STM32列表:

2STM32Trust代码保护

从上面可以看得出来,官方针对STM32做了多种代码保护方案,这里挑选几个进行讲述。

代码保护包含:

  • X-CUBE-SBSFU解决方案

  • X-CUBE-CRYPTOLIB解决方案

  • SFI安全固件安装解决方案

  • STM32CubeProgrammer

  • STM32HSM

  • FASTROM编程服务

1.X-CUBE-SBSFU解决方案

SBSFU:Secure Boot and Secure Firmware Update,安全启动和安全固件更新。

网址:

https://www.st.com/en/embedded-software/x-cube-sbsfu.html

X-CUBE-SBSFU安全启动和安全固件更新解决方案允许使用新固件版本更新STM32微控制器内置程序,增加新功能并纠正潜在问题。更新过程以安全的方式执行,以防止未经授权的更新和对机密设备上数据的访问。

SBSFU主要体现安全启动和安全固件更新:

安全启动是不可变的代码,通常在系统重置后执行,该代码检查STM32静态保护,激活STM32运行时保护,然后在每次执行之前验证用户应用程序代码的真实性和完整性,以确保无效或恶意代码无法运行。

安全固件更新应用程序通过具有Ymodem协议的UART接口接收固件映像,检查其真实性,并在安装代码之前检查代码的完整性。

SBSFU主要特征:

①安全启动以在执行之前检查固件映像。

②具有防回滚和部分映像更新功能的安全固件更新,用于无线或本地固件映像更新。

③通过PKCS#11 API提供加密服务的安全密钥管理服务。

④独立的STM32系统解决方案示例,展示了STM32保护的最佳用法,可保护资产免遭未经授权的外部或内部访问。

⑤结合STM32和STSAFE-A100系统解决方案示例,展示了用于安全身份验证服务和安全数据存储的硬件安全元素保护。

2.X-CUBE-CRYPTOLIB解决方案

CRYPTOLIB:cryptographic firmware library,加密固件库

网址:

https://www.st.com/en/embedded-software/x-cube-cryptolib.html

STM32加密库软件包(X-CUBE-CRYPTOLIB)基于STM32Cube体系结构软件包,并包括一组基于固件实现的加密算法,可以在所有STM32微控制器中使用。

3.SFI安全固件安装解决方案

SFI:Secure Firmware Installation,安全固件安装解决方案

SFI安全固件安装解决方案可用于STM32L4和STM32H7单片机,并且很快将扩展到其他STM32平台, 为设备的首次编程提供保护。

该解决方案提供一套完整的工具集,包含用于加密OEM二进制文件的软件(Trusted Package Creator),用于安全烧写STM32的软件(CUBE Programmer),以及用于将OEM机密凭证安全地交付给芯片烧录厂家的STM32HSM。

4.STM32CubeProgrammer

这是一个大家熟知的对STM32编程的免费工具,包含STM32TrustedPackage Creator工具,通过该工具可以为支持SFI功能的STM32生成SFI和SMI加密映像。

SFI映像的格式是由ST定义的固件加密格式,它使用AES算法将Elf、Hex、Bin或Srec格式的固件转换为SFI格式的加密和认证固件。

SFI映像由一个头部区域和多个其他区域组成,这些区域通常为连续固件区域,最后一个区域为配置区域,其中包含SFI完成时需要设置的选项字节值。

5.STM32HSM

STM32HSM-V1硬件安全模块(HSM)用于确保STM32产品的编程安全,并避免在合同制造商的住所制造假冒产品。

SFI功能允许将客户固件安全地加载到嵌入了安全引导程序的STM32产品中。

定义固件加密密钥并对其固件进行加密后,原始设备制造商(OEM)将加密密钥存储到一个或多个STM32HSM-V1 HSM,并使用STM32CubeProgrammer和STM32 Trusted Package Creator设置授权的SFI操作数(计数器值)软件工具。合同制造商必须利用STM32HSM-V1 HSM将加密的固件加载到STM32设备:每个HSM仅允许OEM定义数量的编程操作,然后不可撤销地将其停用。

STM32HSM-V1主要特征:

①正版固件标识(固件标识符)

②识别具有安全固件安装(SFI)功能的STM32产品

③管理与支持的STM32产品关联的ST公钥

④使用客户定义的固件加密密钥生成许可证

⑤安全计数器,可生成预定义数量的许可证

⑥直接支持STM32CubeProgrammer软件(STM32CubeProg),包括STM32 Trusted Package Creator工具。

6.FASTROM编程服务

FASTROM:Factory Advanced Service Technique Read Only Memory。

什么意思?MCU出厂时就把程序给你写进去。

MCU是预编程了客户代码和选项字节的Flash工艺MCU器件,FASTROM MCU可提高大批量(10,000+)编程效率,相比ROM,具有交期更短、并允许对器件重新编程的优势。

3STM32Trust执行保护

STM32Trust.ExecutionProtection是一组STM32功能,用于确保所有者代码运行期的适当隔离、正确执行和易用性,以保证所收集数据的机密性和真实性。STM32提供不同的架构和隔离方案用于实现执行保护。

执行保护包含:

  • 调试

  • 安全启动

  • MPU

  • 双核架构

  • TrustZone

  • 防火墙

执行保护的内容不难理解,下面引用官方的内容。

1.调试

通过调试端口可从外部访问所有设备资源。调试端口用于应用程序开发,是攻击者对设备进行攻击时可能会最先利用的薄弱环节。为确保用户代码的机密性和真实性,应锁定STM32调试功能。

2.安全启动

如X-CUBE-SBSFU软件包中所示,安全启动在每次复位时执行,检查STM32平台配置的完整性,并验证每个嵌入式固件的签名,以确保其真实性。

3.MPU

存储器保护单元机制可保护进程,防止不同进程间的相互访问,并允许这些进程独立运行。MPU所带来的软件隔离效果可确保各个进程彼此之间的代码和数据安全性。STM32提供受多种操作系统支持的MPU解决方案。

4.双核架构

双核架构允许两个应用程序在同一MCU设备中同时运行,两者通过内核ID隔离。

5.TrustZone

TrustZone是一套完整的硬件机制,用来定义和隔离两个主要的应用程序区:一个是所谓的可信区(用于保护关键应用程序及其相关资源),另一个是不可信区,运行主应用程序。

6.防火墙

防火墙是一种硬件保护外设,它控制着总线访问,并过滤对代码区(闪存)、非易失性数据区域(SRAM)以及易失性数据区域(闪存)这三个特殊区域的访问。它允许用户轻松地将关键代码的执行与主应用程序分开。

4固件和软件工具

1.安全启动和安全固件更新(SBSFU)

当应用程序代码被转移到引导存储器或在现场更新时,它们最容易受到攻击。

安全启动和安全固件更新是用于安全固件和升级的一组软件,可确保以安全的方式执行更新过程,以防止未经授权的更新和对机密设备上数据的访问。

ST提供了两种不同的实现作为STM32微控制器上的参考源代码:

1.X-CUBE-SBSFU:实现了SBSFU机制,并展示了如何设置所有STM32内存保护机制,以将安全启动和固件更新功能与主应用程序隔离。

https://www.st.com/en/embedded-software/x-cube-sbsfu.html

2.TFM_SBSFU:在TFM(Trusted Firmware-M)随附的设备上实现相同的机制,并在STM32Cube软件包中提供有。

https://www.st.com/en/embedded-software/stm32cubel5.html

2.TFM

所包含的Trusted Firmware-M软件实现旨在为Cortex-M、ARMv7-M和Armv8-M的平台安全体系结构(PSA)的参考实现。TFM是一个开源软件项目,为STM32微控制器提供:

a.安全固件,在Armv8-M上支持PSA 1级和2级隔离;

b.安全固件向非安全侧公开的接口。

c.具有非安全应用示例的安全fw模型。

d.在安全环境中运行的安全服务:

  • 安全存储服务

  • 证明书

  • 加密服务

  • 审核日志

  • ····

5SMI

SMI:Secure Module Install,安全模块安装。

ST在2019年基于STM32H7推出首款兼容SMI的STM32,那就是。

地址:

https://blog.st.com/stm32h7-secure-module-install-smi/

安全固件安装(SFI)现在是一种相对流行的技术,它使系统制造商能够将其固件的加密版本发送给OEM。

由于仅在MCU内部对代码进行解密,因此开发人员可以降低IP盗用的风险。同样,OEM可以提供重要的保证,而无需投资大型机器或技术,因为它们唯一需要的是STM32CubeProgrammer和HSM智能卡,其中包含安全证书,可以将固件安全地安装到MCU上。

关于SMI

SMI与其他常规模块一样,运行在MCU上的应用程序也调用该模块,但是系统制造商无法访问源代码,从而大大降低了IP盗用的可能性。

SMI和SFI流程:

细心的读者会注意到SMI流程与SFI相同,但是开发人员不加密整个固件,而是加密模块。此外,SFI和SMI进程使用不同的HSM卡。一个智能卡不能存储所有凭据,但是出于明显的安全原因,每个固件和模块都必须使用其卡。

与SFI不同,SMI需要编译器支持唯一扩展,免费的STM32CubeIDE已经兼容,并且它的最新更新刚刚带来了对STM32H7的支持,使其成为专业人士和发烧友的绝佳工具。同样,Keil和iAR也兼容,并且我们正在与其他IDE制造商合作以确保提供尽可能广泛的支持。

最后,针对安全问题,不但MCU厂商在自己芯片上下功夫,很多软件工具也在考虑安全的问题:

好了,本文就写到这里,希望本文能让你对STM32Trust有进一步的认识。

------------ END ------------

关注公众号后台回复『STM32开发工具』『ST工具』『软件工具』相关文章。

回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

点击“阅读原文”查看更多分享

STM32加密保护工具 | STM32Trust介绍、解决方案相关推荐

  1. STM32集成开发工具 | STM32CubeIDE介绍、下载、安装和使用教程

    关注+星标公众号,不错过精彩内容 视频号 | strongerHuang 微信公众号 | strongerHuang 2019年,ST推出了STM32CubeIDE集成开发环境,一时间引起了不少工程师 ...

  2. STM32调试诊断工具 | STM32CubeMonitor介绍、下载、安装和使用教程

    视频号 | strongerHuang 微信公众号 | strongerHuang 在2020年3月,ST官网上线了一款相对更强大的工具:STM32CubeMonitor. 它的出现是为了替代之前的S ...

  3. STM32调试诊断工具 | STM Studio介绍、下载、安装和使用教程

    视频号 | strongerHuang 微信公众号 | strongerHuang STM Studio这个工具出来很久了,可能很多人都没听说过,今天就来简单分享一下关于STM Studio的内容. ...

  4. 【图解UDS】UDS汽车诊断开发流程及Vector解决方案工具链介绍

                                   [图解UDS]UDS诊断开发流程及Vector解决方案工具链介绍 目录 为了便于学习ISO 14229 UDS诊断协议,提供三个资源链接: ...

  5. .NET 产品版权保护方案 (.NET源码加密保护)

    一.   前言 大家好,我是康世杰,大家可以叫我Jason. 我和大家一样,都是搞技术出身,也未当过讲师,所以口材有限,如果讲得不好之处,还希望大家多多海含,谢谢. 今天是我们第一次见面,能认识你们, ...

  6. tomcat xjar 加密_XJar Spring Boot JAR 安全加密运行工具

    GitHub: https://github.com/core-lib/xjar Spring Boot JAR 安全加密运行工具, 同时支持的原生JAR. 基于对JAR包内资源的加密以及拓展Clas ...

  7. Java代码加密混淆工具有哪些?

    在Java中,代码加密混淆工具可以帮助开发者将源代码进行加密和混淆处理,以增加代码的安全性和保护知识产权.以下是一些流行的Java代码加密混淆工具: 第一款:ProGuard:ProGuard Pro ...

  8. 如何使用MD5加密解密工具?

    MD5加密解密工具是用于计算MD5消息摘要的工具,可以将文本.密码等数据进行加密处理以保护数据安全. 使用MD5加密解密工具通常需要输入待加密的字符串或文件,程序会自动通过预设的算法计算出与此字符串对 ...

  9. 软件加密保护技术简介

    加密技术 软件加密保护技术简介 在这里并不是要系统的讨论软件加密保护技术,只是简单介绍一些和破解相关的软件保护方式,目的是让大家搞清楚哪些是解密的对象.有一点是要首先明确的,并不是所有的受限制软件都可 ...

最新文章

  1. Akka 系列(五):Java 和 Scala 中的 Future
  2. pythonfile操作教程_Python基础教程之文件操作
  3. 皮一皮:傻傻分不清,这究竟是教室还是...
  4. php 正则表达式 ies,正则表达式模式修正符(/ies)
  5. mysql 优化的一些小窍门
  6. 魅族16s封胶事件结果:属极个别封胶漏点 双方协商执行一赔二
  7. android:layout_marginbottom=,Android: Retrieve layout_marginBottom programmatically?
  8. SourceInsight3.5---a valid serial number was not entered问题解决
  9. cocos2dx资料汇总 - 持续更新
  10. python学习笔记(六):if语句之处理数据
  11. windows10开机时出现你的设备遇到问题,需要重启
  12. 这知道这个错误是咋回事啊?
  13. 20165107 网络对抗技术 Exp4 恶意代码分析
  14. 游戏显示无法连接服务器怎么回事,Game Center无法连接服务器怎么办 五种方法任你选择...
  15. 单调栈及单调栈的应用
  16. MATLAB运动目标增强
  17. 吴恩达deeplearning之CNN—卷积神经网络入门
  18. Spans,一个强大的概念
  19. app inventor调用图像识别_项目实战-图像识别项目-通过QT制作图形界面并调用百度AI进行图像识别(一)...
  20. 2021年成都java岗面经汇总,字节+OPPO+研究所+国企,本人最后选择了字节!

热门文章

  1. 从困在系统的外卖骑手,看初露端倪的赛博朋克式“技术控制”
  2. 更改chm文件的字体大小
  3. “集成电路”“国家安全学”正式成为一级学科!
  4. 2023每日发布行业及概念热点切换跟踪图!
  5. hadoop日常应用的一点小分享(新人鄙见)
  6. linux中的clock shew 问题的解决方法
  7. 洛谷日报 2020年3月前索引
  8. ip ban linux,linux – fail2ban:unban ip如何(使用fail2ban-client)
  9. cad动态块制作翻转_CAD创建动态块实例教程:旋转参数和动作的应用 - CAD自学网...
  10. 异常:egret获取引擎列表失败