0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用STM32Trust生成器生成的SFI和SMI加密固件

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-02-04 15:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

昨天文章《最近STM32CubeMX、IDE、Programmer都更新了些什么内容》讲述了ST最近在这些工具上的动作。 今天讲述的内容是STM32生态中,STM32Trust下面的一部分内容。 (本文参考应用笔记文档:AN5054) 一、回顾STM32Trust什么是STM32Trust? STM32Trust是一套STM32解决方案,提供完整的代码保护和执行保护工具套件,如下图:

今天讲述的就是代码保护中,使用STM32TrustedPackageCreator生成SFI和SMI加密固件。 STM32Trust官方网址:

www.st.com/stm32trust

二、基础介绍

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

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

OEM:Original Equipment Manufacturer,原始设备制造商(或原厂);

SFI格式是由ST公司创建的固件加密格式,它使用带有128位密钥的AES-GCM算法将固件(Elf、Hex、Bin或Srec格式)转换为SFI格式的加密和认证固件。

SMI格式是ST公司创建的一种格式,旨在保护合作伙伴的软件(软件模块和库)。

三、安装STM32Trust生成器

STM32TrustedPackageCreator安全包生成器工具属于STM32CubeProgrammer编程工具中的一部分(附加的工具)。

所以,在安装STM32CubeProgrammer工具时,集成有STM32TrustedPackageCreator这个工具,只是默认不安装,需要手动勾选。

打开STM32TrustedPackageCreator工具,在主界面你就会看到一些我们之前说的SFI、SMI、HSM内容。

四、SFI固件生成过程

主要过程如下框图,由原厂固件、随机数、密钥,经过STM32TrustedPackageCreator工具加密成SFI格式固件。

生成过程生产主要过程见下图:

在执行AES-GCM加密一个区域之前,我们计算初始化向量(IV)为:

IV = nonce + Area Index

该工具将固件映像划分为几个加密的部分,这些部分对应于不同的内存区域。

这些附加到相应描述符(由工具生成的未加密的描述性头部)的加密部分称为区域。

这些领域分不同的类型:

F:固件区域(输入固件中的常规段) M:模块区域(用于SFI-SMI组合图像生成,对应于来自SMI模块的输入) C:配置区域(用于选择字节配置) P:表示“暂停”区域 R:回复区域

区域“P”和“R”并不代表真正的固件区域,而是在SFI映像被分割成几个部分时创建的,这是在SFI映像的全局大小超过用户在创建SFI映像期间预定义的允许RAM大小时的情况。

下面RAM大小和CT地址输入用于SFI:

P和R区域与常规SFI区域:

此生成过程的最终输出是单个文件,该文件是经过加密和验证的SMI格式固件。SFI格式布局如下:

当SFI图像在生成过程中被分割时,“P”和“R”区域出现在SFI图像布局中,如图下图所示:

五、SMI固件生成过程

SMI同样是一种加密固件,只是这里面加密的是针对模块和库。

SMI加密过程和SFI有点类似,如下图:

生成过程生产主要过程见下图:

AES-GCM加密使用以下输入:

•128位AES加密密钥

•输入nonce作为初始化向量(IV)

•作为附加身份验证数据的安全版本(AAD)

在创建SMI映像文件之前,对SMI映像有效性进行PCROP检查:

•PCROP部分必须在Flash字(256位)上对齐,否则将显示警告

•该区域的大小必须至少为2个Flash单词(512位),否则将显示警告

•该部分必须在Flash单词边界(256位单词)上结束,否则将显示警告

•如果紧随PCROP部分之后的部分的起始地址与PCROP部分的最后一个Flash单词重叠(在执行PCROP对齐约束之后),则生成失败并出现错误消息。

如果一切正常,在指定的路径下创建两个输出:

•SMI图像

•Lib数据

SMI格式布局如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 生成器
    +关注

    关注

    7

    文章

    322

    浏览量

    22505
  • SMIC
    +关注

    关注

    0

    文章

    21

    浏览量

    20955
  • STM32Trust
    +关注

    关注

    0

    文章

    6

    浏览量

    2390
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何通过地址生成器实现神经网络特征图的padding?

    ,从而使卷积输出特征图结果满足我们的需求,这种补零的操作称之为padding,如下图所示。 关于padding的实现,一般有两种操作,第一种是使用稀疏地址生成器,寻找padding数据地址的规律,当
    发表于 10-22 08:15

    非对称密钥生成和转换规格详解

    生成 以字符串参数生成RSA密钥,具体的“字符串参数”由“RSA密钥类型”和“素数个数”使用符号“|”拼接而成,用于在创建非对称密钥生成器时,指定密钥规格。 说明:生成RSA非对称密
    发表于 09-01 07:50

    PanDao:实际约束条件下成像系统的初始结构的生成

    的平均RMS光斑尺寸约为55 μm,色差校正效果中等。基于同等规格与约束,我们采用自主研发的FTR初始透镜生成器,在数分钟内即创建出多个更加优质的设计方案。图1展示了由FTR程序生成的五类不同透镜系统
    发表于 05-07 08:57

    使用s32ds软件时,无法生成是怎么回事?

    使用s32ds软件时,无法生成,并显示以下错误消息。 请帮忙。 生成器:错误:错误:LinStackCfg.npf 行:5 “bus_clock” - 语法错误
    发表于 04-04 08:04

    “Quantum Origin”成首个获NIST验证的软件量子随机数生成器

    -Quantinuum的“Quantum Origin”成为首个通过NIST验证的软件量子随机数生成器 Quantum Origin获得NIST SP 800-90B对其验证熵源的批准 增强了联邦
    的头像 发表于 04-03 15:22 658次阅读

    EB Tresos状态显示无法运行生成器是什么原因导致的?

    我正在尝试集成 MCAL 包,但在生成过程中收到如下验证错误:“无法为模块”Dio_TS_T40D2M20I0R0“运行生成器
    发表于 04-02 08:06

    如何将Keyring用于CAAM分区加密的密钥?

    我正在按照此方法加密我的 emmc 分区 - 1. 生成密钥: keyname=dm_trust KEY=“$(keyctl add trusted $KEYNAME \'new 32\' @s
    发表于 03-20 06:40

    STM32CubeIDE为什么无法生成工程和代码?

    各位大佬好,我是一名新手小白,当我在使用STM32CubeIDE时,出现了1图弹窗,显示我缺少必要固件包,而导致我无法生成工程和代码,但我已经正常登录,且在创建工程时STM32Cube
    发表于 03-12 06:00

    DLP寄存器该如何配置,如何生成自己的固件、用DLP的烧录工具软件进行固件合成烧写?

    DLP寄存器该如何配置,如何生成自己的固件、用DLP的烧录工具软件进行固件合成烧写?
    发表于 02-28 07:09

    STM32CubeMX用于STM32配置和初始化C代码生成

    电子发烧友网站提供《STM32CubeMX用于STM32配置和初始化C代码生成.pdf》资料免费下载
    发表于 02-26 17:32 678次下载

    Python中的迭代器与生成器

    Python迭代器与生成器 列表生成式 列表生成式也叫做列表推导式,它本身还是列表,只不过它是根据我们定义的规则来生成一个真实的列表。     list2 = [x for x in
    的头像 发表于 02-20 10:43 677次阅读

    开源随机数生成器库OpenRNG助力实现移植到Arm平台时的最佳性能

    OpenRNG 实现了多种生成器和分布方式。生成器算法可生成“看似随机”并具有某些统计特性的序列,我们将在下文进行讨论。分布方式会将序列映射到常见的概率分布概念,如高斯分布或二项分布
    的头像 发表于 02-08 09:24 1801次阅读
    开源随机数<b class='flag-5'>生成器</b>库OpenRNG助力实现移植到Arm平台时的最佳性能

    超详细!FMU生成器用户手册来啦~

    FMU生成器是TSMaster中用于将模型打包生成FMU文件的一个工具,目前支持FMI3.0和FMI2.0版本,FMU类型仅支持Co-Simulation(CS),即联合仿真FMU。本文将介绍FMU
    的头像 发表于 01-17 20:02 1632次阅读
    超详细!FMU<b class='flag-5'>生成器</b>用户手册来啦~

    EE-322:面向SHARC处理器的专家代码生成器

    电子发烧友网站提供《EE-322:面向SHARC处理器的专家代码生成器.pdf》资料免费下载
    发表于 01-07 14:04 0次下载
    EE-322:面向SHARC处理器的专家代码<b class='flag-5'>生成器</b>

    对称加密技术有哪些常见的安全漏洞?

    对称加密技术在实际应用中可能面临的安全漏洞主要包括: 实现不当: 错误的加解密实现、弱随机数生成器或其他逻辑错误都可能导致安全漏洞。 漏洞利用: 利用已知的弱点或攻击手段,如理论上可行的分组攻击或侧
    的头像 发表于 12-16 13:59 1105次阅读