X-CUBE-SAFEA1软件包
规格
- 产品名称: STSAFE-A110 安全元件
- 版本:X-CUBE-SAFEA1 v1.2.1
- 集成于:STM32CubeMX软件包
- 主要特点:
- 与远程主机建立安全通道,包括
传输层安全 (TLS) 握手 - 签名验证服务(安全启动和固件
升级) - 使用安全计数器进行使用监控
- 与主机应用处理器配对和安全通道
- 本地或远程主机信封的包装和展开
- 片上密钥对生成
- 与远程主机建立安全通道,包括
产品使用说明
1. 一般信息
STSAFE-A110 安全元件旨在提供
本地或远程身份验证和数据管理服务
主机。它适用于物联网设备、
智能家居系统、工业应用等。
2. 入门
要开始使用 STSAFE-A110 安全元件:
- 请参阅官方 STSAFE-A110 上提供的数据表
web 详细信息的页面。 - 从以下网址下载 STSAFE-A1xx 中间件软件包
STSAFE-A110 网页或 STM32CubeMX。 - 确保与支持的 IDE(例如 STM32Cube IDE 或
STM32 的系统工作台。
3. 中间件说明
3.1 概述
STSAFE-A1xx 中间件促进了之间的交互
安全元件设备和 MCU,支持各种用例。
它集成在 ST 软件包中以增强安全性
特征。
3.2 架构
中间件由不同的软件组件组成,
包括:
- STSAFE-A1xx API(核心接口)
- 核心加密
- MbedTLS 加密服务接口 SHA/AES
- 硬件服务接口 X-CUBECRYPTOLIB
常见问题 (FAQ)
问:在哪里可以找到 STSAFE-A110 数据表?
答:数据表可在 STSAFE-A110 上找到 web 页面
有关设备的附加信息。
问:支持哪些集成开发环境
对于 STSAFE-A1xx 中间件?
答:支持的IDE包括STM32Cube IDE和System Workbench
适用于 X-CUBE-SAFEA32 v4 封装中的 STM32 (SW1STM1.2.1)。
UM2646
用户手册
X-CUBE-SAFEA1 软件包入门
介绍
本用户手册介绍了如何开始使用 X-CUBE-SAFEA1 软件包。 X-CUBE-SAFEA1 软件包是一个软件组件,提供多个演示代码,这些演示代码使用主机微控制器的 STSAFE-A110 器件功能。这些演示代码利用基于 STM1Cube 软件技术构建的 STSAFE-A32xx 中间件来简化不同 STM32 微控制器之间的可移植性。此外,它与 MCU 无关,可移植到其他 MCU。这些演示代码说明了以下功能: · 身份验证 · 配对 · 密钥建立 · 本地信封包装 · 密钥对生成
UM2646 – 第 4 版 – 2024 年 XNUMX 月 如需了解更多信息,请联系您当地的意法半导体销售办事处。
www.st.com
1
注意: 注意:
UM2646
一般信息
一般信息
X-CUBE-SAFEA1 软件包是将 STSAFE-A110 安全元件服务集成到主机 MCU 操作系统 (OS) 及其应用程序中的参考。它包含 STSAFE-A110 驱动程序和演示代码,可在基于 Arm® Cortex®-M 处理器的 STM32 32 位微控制器上执行。 Arm 是 Arm Limited(或其子公司)在美国和/或其他地方的注册商标。 X-CUBE-SAFEA1软件包是用ANSI C开发的。尽管如此,独立于平台的架构允许轻松移植到各种不同的平台。下表列出了与更好地理解本文档相关的首字母缩略词的定义。
STSAFE-A1xx 软件包作为中间件集成在 X-CUBE-SAFEA1 v1.2.1 中,并作为 STM32CubeMX 软件包的 BSP 集成。
UM2646 – 修订版 4
第 2/23 页
UM2646
STSAFE-A110 安全元件
2
STSAFE-A110 安全元件
STSAFE-A110 是一种高度安全的解决方案,充当安全元件,为本地或远程主机提供身份验证和数据管理服务。它包含完整的交钥匙解决方案以及在最新一代安全微控制器上运行的安全操作系统。
STSAFE-A110 可集成到 IoT(物联网)设备、智能家居、智能城市和工业应用、消费电子设备、消耗品和配件中。其主要特点是:
·
身份验证(外围设备、IoT 和 USB Type-C® 设备)
·
与远程主机建立安全通道,包括传输层安全 (TLS) 握手
·
签名验证服务(安全启动和固件升级)
·
使用安全计数器进行使用监控
·
与主机应用处理器配对和安全通道
·
本地或远程主机信封的包装和展开
·
片上密钥对生成
请参阅 STSAFE-A110 上提供的 STSAFE-A110 数据表 web 有关该设备的更多信息的页面。
UM2646 – 修订版 4
第 3/23 页
UM2646
STSAFE-A1xx 中间件说明
3
STSAFE-A1xx 中间件说明
本节详细介绍 STSAFE-A1xx 中间件软件包内容及使用方法。
3.1
一般描述
STSAFE-A1xx 中间件是一组软件组件,旨在:
·
将 STSAFE-A110 安全元件设备与 MCU 连接
·
实施最通用的 STSAFE-A110 用例
STSAFE-A1xx 中间件作为中间件组件完全集成在 ST 软件包中,以添加安全元件功能(例如ampX-CUBE-SBSFU 或 X-CUBE-SAFEA1)。
它可以通过“工具和软件”选项卡从 STSAFE-A110 互联网页面下载,也可以从 STM32CubeMX 下载。
该软件根据 ST 软件许可协议 (SLA0088) 作为源代码提供(有关更多详细信息,请参阅许可信息)。
支持以下集成开发环境:
·
适用于 Arm® 的 IAR 嵌入式工作台® (EWARM)
·
Keil® 微控制器开发套件 (MDK-ARM)
·
STM32CubeIDE(STM32CubeIDE)
·
System Workbench for STM32 (SW4STM32) 仅在 X-CUBE-SAFEA1 v1.2.1 软件包中受支持
有关支持的 IDE 版本的信息,请参阅包根文件夹中提供的发行说明。
3.2
建筑学
本节介绍 STSAFE-A1xx 中间件软件包的软件组件。
下图展示了一个 view STSAFE-A1xx 中间件架构和相关接口的介绍。
图 1. STSAFE-A1xx 架构
STSAFE-A1xx API(核心接口)
核
加密
MbedTM TLS
加密服务接口 SHA/AES
服务
隔离区
适合MCU安全特性保护
(MPU、防火墙、TrustZone® 等)
硬件服务接口
X-CubeCryptolib
UM2646 – 修订版 4
第 4/23 页
笔记:
UM2646
STSAFE-A1xx 中间件说明
该中间件具有三种不同的接口:
·
STSAFE-A1xx API:它是主要的应用程序编程接口 (API),提供对所有
STSAFE-A110 服务导出到上层(应用程序、库和堆栈)。这个接口是
也称为核心接口,因为所有导出的 API 都在 CORE 模块中实现。
需要集成STSAFE-A1xx中间件的上层必须访问STSAFE-A110
通过这个接口的功能。
·
硬件服务接口:该接口由STSAFE-A1xx中间件使用以达到最高
硬件平台独立性。它包括一组通用函数来连接特定的MCU、IO总线
和定时功能。这种结构提高了库代码的可重用性并保证了易于移植到
其他设备。
这些通用函数被定义为弱函数,必须在应用程序级别实现ampstsafea_service_interface_template.c 模板中提供的文件可轻松集成
以及上层的定制。
·
加密服务接口:该接口由 STSAFE-A1xx 中间件用来访问
平台或库加密功能,例如 SHA(安全哈希算法)和 AES(高级
某些演示中间件所需的加密标准)。
这些密码函数被定义为弱函数,必须在应用程序级别实现
跟随前任amp文件提供了两种不同的模板:
stsafea_crypto_mbedtls_interface_template.c(如果使用 Arm® MbedTM TLS 加密库); stsafea_crypto_stlib_interface_template.c(如果使用ST密码库);
·
只需自定义模板源即可使用替代加密库 files.
模板 file提供这些功能是为了在上层中轻松集成和定制。
Arm 和 Mbed 是 Arm Limited(或其子公司)在美国和/或其他地方的注册商标或商标。
UM2646 – 修订版 4
第 5/23 页
UM2646
STSAFE-A1xx 中间件说明
下图显示了集成在标准 STM1Cube 应用程序中的 STSAFE-A32xx 中间件,该中间件在安装在 STM1 Nucleo 板上的 X-NUCLEO-SAFEA32 扩展板上运行。
图 2. STSAFE-A1xx 应用框图
STM1Cube 应用程序中的 STSAFE-A32xx 中间件
STM1CubeMX 的 X-CUBE-SAFEA32 框图
为了提供最佳的硬件和平台独立性,STSAFE-A1xx中间件不直接连接到STM32Cube HAL,而是通过接口 file在应用程序级别实现(stsafea_service_interface_template.c、stsafea_interface_conf.h)。
UM2646 – 修订版 4
第 6/23 页
UM2646
STSAFE-A1xx 中间件说明
3.3
核心模块
CORE模块是中间件的核心。它实现上层(应用程序、库、堆栈等)调用的命令,以便正确使用 STSAFE-A1xx 功能。
下图展示了一个 view CORE 模块架构。
图 3. CORE 模块架构
外部上层(应用程序、库、堆栈等)
核
CRYPTO 内部模块
服务内部模块
CORE 模块是一个多接口软件组件,连接到:
·
上层:通过如下两表导出的API对外连接;
·
加密层:与CRYPTO模块的内部连接;
·
硬件服务层:内部连接到SERVICE模块;
STSAFE-A1xx 中间件软件包在根文件夹中提供了 CORE 模块的完整 API 文档(请参阅 STSAFE-A1xx_Middleware.chm file).
请参阅 STSAFE-A110 数据表,了解命令集的简要说明,下表列出了与其相关的命令 API。
API类别 初始化配置
通用命令
数据分区命令
表 1. CORE 模块导出的 API
函数 StSafeA_Init 创建、初始化和分配 STSAFE-A1xx 设备句柄。 StSafeA_GetVersion 返回 STSAFE-A1xx 中间件版本。 StSafeA_Echo 接收命令中传递的数据。 StSafeA_Reset 将易失性属性重置为其初始值。 StSafeA_GenerateRandom 生成多个随机字节。 StSafeA_Hibernate 将 STSAFE-Axxx 设备置于休眠状态。 StSafeA_DataPartitionQuery
UM2646 – 修订版 4
第 7/23 页
UM2646
STSAFE-A1xx 中间件说明
原料药类别
功能 查询命令检索数据分区配置。
StSafeA_Decrement 递减计数器区域中的单向计数器。
数据分区命令
StSafeA_Read 从数据分区区域读取数据。
StSafeA_Update 通过区域分区更新数据。
StSafeA_GenerateSignature 通过消息摘要返回 ECDSA 签名。
私钥和公钥命令
StSafeA_GenerateKeyPair 在私钥槽中生成密钥对。
StSafeA_VerifyMessageSignature 验证消息身份验证。
StSafeA_EstablishKey 使用非对称加密在两个主机之间建立共享密钥。
StSafeA_ProductDataQuery 用于检索产品数据的查询命令。
StSafeA_I2cParameterQuery 用于检索 I²C 地址和低功耗模式配置的查询命令。
StSafeA_LifeCycleStateQuery 用于检索生命周期状态的查询命令(生成、运行、终止、生成并锁定或运行并锁定)。
行政命令
StSafeA_HostKeySlotQuery 用于检索主机密钥信息(存在和主机 C-MAC 计数器)的查询命令。
StSafeA_PutAttribute 根据属性将属性放入 STSAFE-Axxx 设备中,例如密钥、密码、I²C 参数 TAG.
StSafeA_DeletePassword 从其插槽中删除密码。
StSafeA_VerifyPassword 验证密码并记住验证结果以供将来的命令授权。
StSafeA_RawCommand 执行原始命令并接收相关响应。
StSafeA_LocalEnvelopeKeySlotQuery 用于检索可用密钥槽的本地信封密钥信息(槽号、存在和密钥长度)的查询命令。
本地信封命令
StSafeA_GenerateLocalEnvelopeKey 在本地信封密钥槽中生成密钥。
StSafeA_WrapLocalEnvelope 使用本地信封密钥和 [AES 密钥包装] 算法包装完全由主机管理的数据(通常是密钥)。
StSafeA_UnwrapLocalEnvelope 使用本地信封密钥打开本地信封。
UM2646 – 修订版 4
第 8/23 页
UM2646
STSAFE-A1xx 中间件说明
原料药类别
命令授权配置命令
表 2. 导出的 STSAFE-A110 CORE 模块 API
函数 StSafeA_CommandAuthorizationConfigurationQuery 查询命令以检索具有可配置访问条件的命令的访问条件。
3.4
服务模块
SERVICE模块是中间件的低层。它在MCU和硬件平台方面实现了完整的硬件抽象。
下图展示了一个 view SERVICE 模块架构。
图 4. 服务模块架构
CORE内部模块
服务
外部下层(BSP、HAL、LL 等)
SERVICE 模块是一个双接口软件组件,连接到:
·
外部下层:如BSP、HAL或LL。弱功能必须在外部更高层实现
层并基于 stsafea_service_interface_template.c 模板 file;
·
核心层:通过表中描述的导出API内部连接CORE模块
以下;
STSAFE-A1xx 中间件软件包在根文件夹中提供了 SERVICE 模块的完整 API 文档(请参阅 STSAFE-A1xx_Middleware.chm file).
表 3. SERVICE 模块导出的 API
API类别 初始化配置
底层操作函数
功能
StSafeA_BSP_Init 初始化操作 STSAFE-Axxx 设备所需的通信总线和 IO 引脚。
StSafeA_Transmit 准备要发送的命令,并调用要执行的低级总线 API。计算并连接 CRC(如果支持)。
StSafeA_Receive 通过使用低级总线功能来检索来自 STSAFE-Axxx 的数据。检查 CRC(如果支持)。
UM2646 – 修订版 4
第 9/23 页
UM2646
STSAFE-A1xx 中间件说明
3.5
加密模块
CRYPTO 模块代表中间件的加密部分。它必须依赖平台的加密资源。
CRYPTO 模块完全独立于其他中间件模块,因此可以轻松封装在适合通过内存保护单元 (MPU)、防火墙或 TrustZone® 等 MCU 安全功能进行保护的隔离安全区域内。
下图展示了一个 view CRYPTO 模块架构。
图 5. CRYPTO 模块架构
CORE内部模块
加密
外部加密层
(MbedTM TLS、X-CUBE-CRYPTOLIB)
CRYPTO 模块是一个双接口软件组件,连接到:
·
外部加密库:当前支持 Mbed TLS 和 X-CUBE-CRYPTOLIB。虚弱的
功能必须在外部更高层实现,并且基于:
stsafea_crypto_mbedtls_interface_template.c 模板 file 用于 Mbed TLS 加密库;
stsafea_crypto_stlib_interface_template.c 模板 file 用于ST密码库;
通过调整加密接口可以轻松支持其他加密库
模板 file.
·
核心层:通过表中描述的导出API内部连接到CORE模块
以下;
STSAFE-A1xx 中间件软件包在根文件夹中提供了 CRYPTO 模块的完整 API 文档(请参阅 STSAFE-A1xx_Middleware.chm file).
表 4. CRYPTO 模块导出的 API
原料药类别
功能
StSafeA_ComputeCMAC 计算 CMAC 值。用于准备好的命令。
StSafeA_ComputeRMAC 计算 RMAC 值。用于收到的响应。
StSafeA_DataEncryption 加密 API 在 STSAFE-Axxx 数据缓冲区上执行数据加密 (AES CBC)。
StSafeA_DataDecryption 在 STSAFE-Axxx 数据缓冲区上执行数据解密 (AES CBC)。
StSafeA_MAC_SHA_PrePostProcess 在传输之前或从 STSAFE_Axxx 设备接收数据之后对 MAC 和/或 SHA 进行预处理或后处理。
UM2646 – 修订版 4
第 10/23 页
3.6
笔记:
UM2646
STSAFE-A1xx 中间件说明
模板
本节详细描述 STSAFE-A1xx 中间件软件包中可用的模板。
下表列出的所有模板均在中间件软件包根级别的 Interface 文件夹内提供。
模板 files 作为 ex 提供amp文件被复制和定制到上层,以便轻松
集成并配置 STSAFE-A1xx 中间件:
·
界面模板 files 提供前amp__weak 函数的 le 实现,以空或
中间件内的部分空函数。它们必须在用户空间或在
上层根据密码库和用户的硬件选择。
·
配置模板 file提供了一种简单的方法来配置 STSAFE-A1xx 中间件和功能
可以在用户应用程序中使用,例如优化或特定硬件。
模板类别
界面模板
配置模板
表 5. 模板
模板 file
stsafea_service_interface_template.c 示例amp该文件模板显示如何支持 STSAFE-A 中间件所需的硬件服务以及用户空间中选择的特定硬件、低级库或 BSP 提供的硬件服务。 stsafea_crypto_mbedtls_interface_template.c Examp文件模板显示如何支持 STSAFE-A 中间件所需的以及 Mbed TLS 加密库提供的加密服务(密钥管理、SHA、AES 等)。 stsafea_crypto_stlib_interface_template.c Examp文件模板显示如何支持 STSAFE-A 中间件所需的加密服务以及 STM32Cube (XCUBE-CRYPTOLIB) 的 STM32 加密库软件扩展提供的加密服务(密钥管理、SHA、AES 等)。 stsafea_conf_template.h 示例amp文件模板显示如何配置 STSAFE-A 中间件(特别是出于优化目的)。 stsafea_interface_conf_template.h Examp文件模板显示如何配置和自定义界面 file上面列出的。
上述模板仅存在于 X-CUBE-SAFEA1 包的 BSP 文件夹中。
UM2646 – 修订版 4
第 11/23 页
UM2646
STSAFE-A1xx 中间件说明
3.7
资料夹结构
下图展示了 STSAFE-A1xx 中间件软件包 v1.2.1 的文件夹结构。
图 6。 项目 file 结构
项目 file 结构 STSAFE-A1xx 中间件
UM2646 – 修订版 4
项目 file STM1CubeMX 的 X-CUBE-SAFEA32 结构
第 12/23 页
3.8
3.8.1
3.8.2
UM2646
STSAFE-A1xx 中间件说明
如何:集成和配置
本节介绍如何在用户应用程序中集成和配置 STSAFE-A1xx 中间件。
集成步骤
请按照以下步骤将 STSAFE-A1xx 中间件集成到所需的应用程序中:
·
步骤 1:复制(并可选择重命名)stsafea_service_interface_template.c file 以及其中任何一个
stsafea_crypto_mbedtls_interface_template.c 或 stsafea_crypto_stlib_interface_template.c 给用户
根据已添加到应用程序的加密库的空间(无论
用户选择/使用的密码库,他们甚至可以创建/实现自己的密码
界面 file 通过调整合适的模板从头开始)。
·
步骤 2:复制(并可选择重命名)stsafea_conf_template.h 和 stsafea_interface_conf_template.h
files 到用户空间。
·
第 3 步:确保在主空间或任何其他用户空间源中添加正确的包含内容 file 需要
连接 STSAFE-A1xx 中间件:
#include“stsafea_core.h”#include“stsafea_interface_conf.h”
·
第4步:自定义 file以上三步根据用户喜好使用。
配置步骤
为了在用户应用程序中正确配置 STSAFE-A1xx 中间件,ST 提供了两种不同的
配置模板 file根据用户的选择在用户空间中进行复制和定制:
·
stsafea_interface_conf_template.h:这个前amp文件模板用于并显示如何配置
用户空间中的加密和服务中间件接口通过以下#define
声明:
USE_PRE_LOADED_HOST_KEYS
MCU_PLATFORM_INCLUDE
MCU_PLATFORM_BUS_INCLUDE
MCU_PLATFORM_CRC_INCLUDE
·
stsafea_conf_template.h:这个前amp文件模板用于并显示如何配置 STSAFE-A
中间件通过以下#define语句:
STSAFEA_USE_OPTIMIZATION_SHARED_RAM
STSAFEA_USE_OPTIMIZATION_NO_HOST_MAC_ENCRYPT
STSAFEA_USE_FULL_ASSERT
USE_SIGNATURE_SESSION(仅适用于 STSAFE-A100)
请按照以下步骤将 STSAFE-A1xx 中间件集成到所需的应用程序中:
·
步骤 1:复制(并可选择重命名)stsafea_interface_conf_template.h 和 stsafea_conf_template.h
files 到用户空间。
·
第二步:确认或修改上述两个头的#define语句 file根据
用户平台和加密选择。
UM2646 – 修订版 4
第 13/23 页
4
4.1
笔记:
4.2
笔记:
UM2646
演示软件
演示软件
本节介绍基于 STSAFE-A1xx 中间件的演示软件。
验证
该演示演示了命令流程,其中 STSAFE-A110 安装在对远程主机(物联网设备案例)进行身份验证的设备上,本地主机用作远程服务器的直通通道。 STSAFE-A110 安装在对本地主机进行身份验证的外设上的场景,例如amp对于游戏、移动配件或消耗品来说,文件是完全相同的。
命令流程 出于演示目的,此处本地主机和远程主机是同一设备。 1. 提取、解析并验证存储在设备数据分区zone 110中的STSAFE-A0的公共证书
为了获取公钥:使用 STSAFE-A1xx 中间件通过 STSAFE-A110 的区域 0 读取证书。使用加密库的解析器解析证书。读取CA证书(通过代码获取)。使用加密库的解析器解析 CA 证书。通过密码库使用CA证书验证证书有效性。从 STSAFE-A110 X.509 证书获取公钥。 2. 生成并验证挑战编号的签名:生成挑战编号(随机数)。哈希挑战。使用 STSAFE-A110 的私钥槽 0 通过哈希值获取签名
STSAFE-A1xx 中间件。使用密码库解析生成的签名。通过密码库使用 STSAFE-A110 的公钥验证生成的签名。当此值有效时,主机知道外设或物联网是真实的。
配对
此代码前amp该文件在 STSAFE-A110 设备与其所连接的 MCU 之间建立配对。配对允许对设备和 MCU 之间的交换进行身份验证(即签名和验证)。 STSAFE-A110 设备只能与与其配对的 MCU 结合使用。配对包括主机 MCU 向 STSAFE-A110 发送主机 MAC 密钥和主机密码密钥。两个密钥都存储到 STSAFE-A110 的受保护 NVM 中,并且应存储到 STM32 器件的闪存中。默认情况下,在这个例子中amp在文件中,主机 MCU 向 STSAFE-A110 发送众所周知的密钥(请参阅下面的命令流),强烈建议将其用于演示目的。该代码还允许生成随机密钥。此外,代码 examp当相应的插槽尚未填充到 STSAFE-A110 中时,该文件会生成本地信封密钥。当本地信封插槽被填充时,STSAFE-A110 器件允许主机 MCU 包装/解开本地信封,以在主机 MCU 一侧安全地存储密钥。配对代码 examp在执行以下所有代码之前,必须成功执行 leamp莱斯。
命令流程
1. 使用 STSAFE-A110xx 中间件在 STSAFE-A1 中生成本地信封密钥。默认情况下,该命令处于激活状态。请注意,取消对 pairing.c 中以下定义语句的注释 file 停用本地信封密钥生成: /* #define _FORCE_DEFAULT_FLASH_ */
仅当 STSAFE-A110 的本地信封键槽尚未填充时才会发生此操作。
UM2646 – 修订版 4
第 14/23 页
UM2646
演示软件
2. 定义两个128 位数字用作主机MAC 密钥和主机加密密钥。默认情况下,使用已知的金钥匙。它们具有以下值: 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF / * 主机 MAC 密钥 */ 0x11,0x11,0x22,0, 22,0x33,0x33,0x44,0x44,0x55,0x55,0x66,0x66,0x77,0x77,0x88,0x88xXNUMX / * 主机密钥 */
要激活随机密钥生成,请将以下定义语句添加到pairing.c file:#define USE_HOST_KEYS_SET_BY_PAIRING_APP 1
3. 将主机 MAC 密钥和主机密码密钥存储到 STSAFE-A110 中各自的插槽中。 4. 将主机MAC密钥和主机密码密钥存储到STM32的闪存中。
4.3
密钥建立(建立秘密)
该演示说明了 STSAFE-A110 设备安装在与远程服务器通信的设备(例如物联网设备)上的情况,并且需要建立安全通道与其交换数据。
在此例中amp在文件中,STM32 设备既充当远程服务器(远程主机)又充当连接到 STSAFE-A110 设备的本地主机。
此用例的目标是展示如何使用椭圆曲线 Diffie-Hellman 方案以及 STSAFE-A110 中的静态 (ECDH) 或临时 (ECDHE) 密钥在本地主机和远程服务器之间建立共享密钥。
共享秘密应进一步派生为一个或多个工作密钥(此处未说明)。然后,这些工作密钥可用于 TLS 等通信协议,例如amp用于保护本地主机和远程服务器之间交换的数据的机密性、完整性和真实性的文件。
命令流程
图 7. 密钥建立命令流程说明了该命令流程。
·
远程主机的私钥和公钥被硬编码在代码 ex 中amp勒。
·
本地主机向 STSAFE-A110 发送 StSafeA_GenerateKeyPair 命令,生成密钥对
其临时插槽(插槽 0xFF)上的密钥对。
·
STSAFE-A110 将公钥(对应于插槽 0xFF)发送回 STM32(代表
远程主机)。
·
STM32 计算远程主机的秘密(使用 STSAFE 设备的公钥和远程主机的密钥)
主机的私钥)。
·
STM32将远程主机的公钥发送给STSAFE-A110,并要求STSAFE-A110
使用 StSafeA_EstablishKey API 计算本地主机的秘密。
·
STSAFE-A110 将本地主机的机密发送回 STM32。
·
STM32 比较两个秘密,并打印结果。如果秘密相同,则秘密
建立成功。
UM2646 – 修订版 4
第 15/23 页
图 7. 密钥建立命令流程
UM2646
演示软件
远程主机
STM32
本地主机
国家安全局
计算远程主机的秘密(使用远程主机的私钥和本地主机的(STSAFE 插槽 0xFF)公钥)
远程主机的秘密
生成密钥对
在插槽 0xFF 上生成密钥对
STSAFE 的公钥生成于
生成 STSAFE 的公钥
插槽 0xFF
远程主机的公钥
STM32 将远程主机机密与
本地主机秘密并打印结果
建立密钥(远程主机的公钥)
发送本地主机的秘密
计算本地主机的秘密(使用本地主机的私钥(STSAFE 插槽 0xFF)和远程主机的公钥)
本地主机的秘密
4.4
笔记:
4.5
包裹/打开本地信封
该演示说明了 STSAFE-A110 包装/解开本地信封以便将机密安全地存储到任何非易失性存储器 (NVM) 的情况。加密/解密密钥可以以这种方式安全地存储到附加存储器或STSAFEA110 的用户数据存储器中。包装机制用于保护秘密或纯文本。包装的输出是使用 AES 密钥包装算法加密的信封,其中包含要保护的密钥或纯文本。
命令流程
这里的本地和远程主机是同一台设备。 1. 生成同化到局部信封的随机数据。 2. 使用 STSAFE-A110 的中间件包裹本地信封。 3. 保存好包裹好的信封。 4. 使用 STSAFE-A110 的中间件打开包裹的信封。 5. 将展开的信封与初始本地信封进行比较。他们应该是平等的。
密钥对生成
该演示说明了 STSAFE-A110 设备安装在本地主机上的命令流程。远程主机要求本地主机在槽 1 上生成密钥对(私钥和公钥),然后使用生成的私钥对质询(随机数)进行签名。
然后,远程主机能够使用生成的公钥验证签名。
此演示与身份验证演示类似,但有两点不同:
·
身份验证演示中的密钥对已生成(在插槽 0 上),而在此示例中amp乐,
我们在插槽 1 上生成密钥对。STSAFE-A110 设备还可以在插槽 0xFF 上生成密钥对,
但仅用于关键建立目的。
·
身份验证演示中的公钥是从区域 0 中的证书中提取的。
examp文件中,公钥与 STSAFE-A110 对
StSafeA_GenerateKeyPair 命令。
UM2646 – 修订版 4
第 16/23 页
UM2646
演示软件
笔记:
命令流程
出于演示目的,此处本地和远程主机是同一设备。 1. 主机向 STSAFE-A110 发送 StSafeA_GenerateKeyPair 命令,STSAFE-AXNUMX 发回
主机 MCU 的公钥。 2. 主机使用 StSafeA_GenerateRandom API 生成质询(48 字节随机数)。这
STSAFE-A110 发回生成的随机数。 3. 主机使用密码库计算生成的数字的哈希值。 4. 主机要求 STSAFE-A110 使用以下命令生成计算出的哈希值的签名
StSafeA_GenerateSignature API。 STSAFE-A110 发回生成的签名。
5. 主机使用STSAFE-A110 在步骤1 中发送的公钥验证生成的签名。 6. 打印签名验证结果。
UM2646 – 修订版 4
第 17/23 页
UM2646
修订历史
表 6. 文档修订历史
日期
修订
更改
09 年 2019 月 XNUMX 日
1
初始版本。
13 年 2020 月 XNUMX 日
2
删除了许可证信息部分。
更新了简介中演示代码所示的功能列表。删除了首字母缩略词表列表并在末尾插入了术语表。
图 1 中的小文本更改和更新的颜色。STSAFE-A1xx 架构。
更新了图 2。STSAFE-A1xx 应用框图。
更新了表 1。CORE 模块导出的 API。
07 年 2022 月 XNUMX 日
3
从表 4.CRYPTO 模块导出的 API 中删除了 StSafeA_InitHASH 和 StSafeA_ComputeHASH。
更新了第 3.8.2 节:配置步骤。
更新了第 4.2 节:配对。
更新了第 4.3 节:密钥建立(建立秘密)。
添加了第 4.5 节:密钥对生成。
小文本更改。
新增STSAFE-A1xx软件包作为中间件集成在X-CUBE-SAFEA1 v1.2.1中
它被集成为 STM32CubeMX 软件包的 BSP。以及上面的模板
07 年 2024 月 XNUMX 日
4
仅存在于 X-CUBE-SAFEA1 包的 BSP 文件夹中。
更新了第 3.1 节:一般说明、第 3.2 节:体系结构和第 3.7 节:文件夹结构。
UM2646 – 修订版 4
第 18/23 页
词汇表
AES 高级加密标准 ANSI 美国国家标准协会 API 应用程序编程接口 BSP 板级支持包 CA 认证机构 CC 通用标准 C-MAC 命令消息验证码 ECC 椭圆曲线加密 ECDH 椭圆曲线 DiffieHellman ECDHE 椭圆曲线 DiffieHellman – 临时 EWARM IAR Embedded Workbench® Arm® HAL 硬件抽象层 I/O 输入/输出 IAR Systems® 嵌入式系统开发软件工具和服务的世界领导者。 IDE集成开发环境。一种软件应用程序,为计算机程序员提供全面的软件开发工具。 IoT 物联网 I²C 内部集成电路 (IIC) LL 低级驱动程序 MAC 消息认证代码 MCU 微控制器单元 MDK-ARM 适用于 Arm® MPU 的 Keil® 微控制器开发套件 内存保护单元 NVM 非易失性存储器
OS 操作系统 SE 安全元件 SHA 安全哈希算法 SLA 软件许可协议 ST 意法半导体 TLS 传输层安全性 USB 通用串行总线
UM2646
词汇表
UM2646 – 修订版 4
第 19/23 页
UM2646
内容
内容
1 一般信息。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 .2 2 STSAFE-A110 安全元件。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 3 3 STSAFE-A1xx 中间件说明。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 4
3.1 概述。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 4 3.2 架构。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 4 3.3 核心模块。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 7 3.4 服务模块。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 9 3.5 加密模块。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 10 3.6 模板。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 11 3.7 文件夹结构。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 12 3.8 如何:集成和配置。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 13
3.8.1 集成步骤。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 13 3.8.2 配置步骤。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 13
4 演示软件。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 .14 4.1 认证。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 14 4.2 配对。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 14 4.3 密钥建立(建立秘密)。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 15 4.4 包裹/展开本地信封。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 16 4.5 密钥对生成。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 16
修订记录 。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18 表格列表。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21 数字列表。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
UM2646 – 修订版 4
第 20/23 页
UM2646
表格列表
表格列表
表 1. 表 2. 表 3. 表 4. 表 5. 表 6.
CORE模块导出API。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 7 导出 STSAFE-A110 CORE 模块 API。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 9 SERVICE模块导出API。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 9 CRYPTO 模块导出 API。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 10 个模板。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 11 文档修订历史记录。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 18
UM2646 – 修订版 4
第 21/23 页
UM2646
图片列表
图片列表
图 1. 图 2. 图 3. 图 4. 图 5. 图 6. 图 7.
STSAFE-A1xx 架构。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 4 STSAFE-A1xx 应用框图。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 6个核心模块架构。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 7 SERVICE模块架构。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 9 加密模块架构。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 10个项目 file 结构 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 12 按键建立命令流程。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 16
UM2646 – 修订版 4
第 22/23 页
UM2646
重要通知 仔细阅读 STMicroelectronics NV 及其子公司(“ST”)保留随时对 ST 产品和/或本文档进行更改、更正、增强、修改和改进的权利,恕不另行通知。 购买者下单前应了解ST产品的最新相关信息。 ST 产品根据订单确认时的 ST 销售条款和条件进行销售。 购买者对 ST 产品的选择、选择和使用负全部责任,ST 对应用帮助或购买者产品的设计不承担任何责任。 ST 在此未授予任何知识产权的任何明示或暗示许可。 转售具有与本文所述信息不同的条款的 ST 产品将使 ST 对该产品授予的任何保证无效。 ST 和 ST 标志是 ST 的商标。 有关 ST 商标的更多信息,请参阅 www.st.com/trademarks。 所有其他产品或服务名称均为其各自所有者的财产。 本文档中的信息将取代并替换之前在本文档的任何先前版本中提供的信息。
© 2024 STMicroelectronics 版权所有
UM2646 – 修订版 4
第 23/23 页
文件/资源
![]() |
意法半导体 X-CUBE-SAFEA1 软件包 [pdf] 用户指南 STSAFE-A100、STSAFE-A110、X-CUBE-SAFEA1 软件包、X-CUBE-SAFEA1、软件包、软件包 |




