安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)

文章目录

  • 目的
  • 资料索引
  • 硬件电路
  • 软件框架介绍
    • 数据存储
    • 框架移植
    • 框架使用
  • 使用示例
    • 示例地址与硬件连接
    • 通讯测试
    • 功能测试
  • 总结

目的

OPTIGA TRUST M 是英飞凌推出的安全芯片,芯片通提供了很多 slot ,用于存放各类安全证书、密钥、用户数据等,内置很多加解密算法,另外还内置一些计数器等。芯片通过I2C和主机通讯,这个通讯也是可以加密进行的,防止被监听。这篇文章将对该芯片相关的使用做个介绍。

资料索引

OPTIGA™ 嵌入式安全解决方案

我这里使用的是:OPTIGA TRUST M SLS32AIA
在这里插入图片描述

这个芯片虽然是I2C通讯的,但是通讯本身比较复杂,涉及到英飞凌自己的传输层以及加密通讯等,所以开发都是基于英飞凌提供的库( OPTIGA™ Trust M Software Framework )之上进行的:
https://github.com/Infineon/optiga-trust-m

上面项目 release-v5.0.0 以前是带文档的,之后的版本中移除了文档,现在文档可以在下面仓库找到:
https://github.com/Infineon/optiga-trust-m-overview

本文介绍示例编写时用的 release-v4.2.0 版本,新版本和旧版本可能在文件命名或分布上有所区别,但是基本的思路都是一样的。

硬件电路

硬件电路搭建可以参考《OPTIGA™ Trust M Datasheet》文档,唯一需要注意的是引出RST引脚给单片机控制,如果不手动来复位的话可能芯片无法正确工作:
在这里插入图片描述

可以用下面板子进行测试:
https://github.com/NaisuXu/OPTIGA_Trust_M_Module
在这里插入图片描述

软件框架介绍

英飞凌 OPTIGA™ Trust M Software Framework 使用上主要参考 《OPTIGA™ Trust M Solution reference manual》 文档。

数据存储

OPTIGA TRUST M 最主要的提供了两类功能,一个是存储密钥、证书、用户自定义数据、芯片特定数据、计数值等的槽位(Slot)。可用槽位视图如下:
在这里插入图片描述

每个槽位,有一个最大44字节的元数据(Metadata)来描述其作用、属性、操作权限等。比如你可以向密钥槽中存放密钥,然后通过元数据设定属性为密钥、设定其不能读写、设定其可以用作芯片内部加解密算法执行使用。

槽位相关的内容主要在参考手册的《OPTIGA™ Trust M data structures》章节。

框架移植

下图是框架的内容布局:
在这里插入图片描述
移植工作主要需要处理的是 PAL 层 ,框架中提供了模板和示例,根据需求移植就行。需要注意的是这个框架在主机端需要用到软件加解密功能,默认框架中已经包含了 mbedtlspal_os_memory.c 这个文件提供内存申请释放等接口, 4.2.0 版本中该文件可以从上一级目录下各平台PAL示例中拷贝一份修改用。
在这里插入图片描述

PAL层需要处理的东西不多,下面介绍些基本的需要处理的地方,其他没有介绍到的部分可以根据自己的需求来处理:

  • pal_gpio.c
    根据前面讲的需要控制RST引脚,这里就是对相关引脚的操作函数接口;
  • pal_i2c.c
    这里是i2c读写相关接口,如果是同步方式处理i2c,那么只需要实现write和read函数功能即可,如果是异步方式操作,write和read只是实现了一般,结束后还需调用该文件中定义的几个callback函数;
  • pal_os_event.c
    这是该库最核心的一个功能。这个库中有非常多的异步操作,通过这里来实现。库运行时需要执行异步操作时会调用这里的 pal_os_event_register_callback_oneshot 函数,你需要保存传入的回调函数、参数、时间信息,然后在过了前面的时间之后调用这里的 pal_os_event_trigger_registered_callback 函数。
  • pal_os_timer.c
    需要提供系统微秒毫秒时间及毫秒延时接口,微秒无法提供了话至少每次返回一个自增的值;

框架使用

移植完成后框架基本使用本身挺简单,框架中也带了非常多的例程:
在这里插入图片描述

主要操作就是初始化一些句柄,然后向安全芯片打开应用,之后就是处理自己的业务功能,处理完成之后关闭应用,销毁句柄。

需要注意的是这个库使用时很多操作都是需要和芯片通讯,然后芯片处理完成之后再次通讯去取结果的,看例程的话可以看到很多 WAIT_AND_CHECK_STATUS(return_status, optiga_lib_status); 这种操作,这里有可能是非常耗时的,这在有操作系统的情况下挺好开发,没有操作系统的情况下就要使用合适的方式来处理了。在本文下面的示例中我使用了 protothreads(pt-1.4) 来实现不阻塞的异步功能。

使用示例

示例地址与硬件连接

https://github.com/NaisuXu/OPTIGA_Trust_M_Examples

在这里插入图片描述

在这里插入图片描述

通讯测试

《STM32_Check_I2C_STATE_Register_Without_Host_Library》这个示例用于测试I2C和芯片间通讯是否可用。 OPTIGA TRUST M 的地址固定位 0x30 (即可以通过 0x600x61 分别进行读和写)。访问安全芯片 0x82 命令,如果通讯正常可以获取到 0x08 0x80 0x00 0x00 内容。

在这里插入图片描述

需要注意的是这个安全芯片会自动进入休眠,初次访问可能会失败,连续访问下之后的访问应该会成功。

功能测试

《STM32_NonOS_With_Host_Library》这个示例移植了英飞凌代码框架,另外还移植了 protothreads(pt-1.4) 来实现无操作系统下的异步功能(协程)。

示例中演示了 生产随机数、读取芯片UID、使用计数器 几个功能,可以通过主函数中的宏定义来切换:
在这里插入图片描述

example_crypt _random
在这里插入图片描述

example_read_coprocessor_id
在这里插入图片描述

example_util_update_count
该示例设置了计数器的阈值位10,到达阈值后再计数就报错。
在这里插入图片描述

总结

OPTIGA TRUST M 本身的通讯访问上还是比较复杂的,不过官方提供了库,用起来倒也不复杂。这类安全芯片在对安全要求高或是成本不敏感的场合使用还是挺不错的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903343.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10. NSTableView Table 数据表格

表格是非常重要和复杂的一个控件,本节会用大量篇幅来把表格这东西力求讲清楚。 基本设置 表格结构 表格是 OS X 组件中为数不多采用了MVC设计模式来实现的控件,即tableView–dataSource–Delegate,这种分层架构给处理数据带来了极大的便利…

控制流与循环:掌握程序的基本控制(2/10)

目录 控制流与循环:掌握程序的基本控制(2/10) 介绍 条件语句 基本用法 示例:判断用户输入的数字 条件语句中的逻辑运算符 示例:判断年龄阶段 循环结构 for 循环 示例 1:遍历列表 示例 2&#xf…

Python酷库之旅-第三方库Pandas(173)

目录 一、用法精讲 796、pandas.Float32Dtype类 796-1、语法 796-2、参数 796-3、功能 796-4、返回值 796-5、说明 796-6、用法 796-6-1、数据准备 796-6-2、代码示例 796-6-3、结果输出 797、pandas.Float64Dtype类 797-1、语法 797-2、参数 797-3、功能 797-…

linux查看系统架构的命令

两种方式,以下以中标麒麟为示例: 1.cat /proc/verison Linux version 3.10.0-862.ns7_4.016.mips64el mips64el即为架构 2.uname -a 输出所有内容 Linux infosec 3.10.0-862.ns7_4.016.mips64el #1 SMP PREEMPT Mon Sep 17 16:06:31 CST 2018 mips64el…

第J8周:Inception v1算法实战与解析

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 📌 本周任务: 1了解并学习图2中的卷积层运算量的计算过程(🏐储备知识->卷积层运算…

内网穿透之网络层ICMP隧道

免责申明 本文仅是用于学习检测自己搭建的靶场环境有关ICMP隧道原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规…

提升网站流量和自然排名的SEO基本知识与策略分析

内容概要 在当今数字化时代,SEO(搜索引擎优化)成为加强网站可见度和提升流量的重要工具。SEO的基础知识包括理解搜索引擎的工作原理,以及如何通过优化网站内容和结构来提高自然排名。白帽SEO和黑帽SEO代表了两种截然不同的策略&a…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27目录1. Large Language Model-based Augmentation for Imbalanced Node Classification on Text-Attributed Graphs摘要研究背…

耳背式助听器与定制式助听器,究竟该如何选?

在面对听力损失问题时,选择一款合适的助听器至关重要。目前,耳背式助听器和定制式助听器是比较常见的两种类型,很多人在二者之间犹豫不决。那么,到底应该怎么选呢? 一、耳背式助听器的特点 耳背式助听器形状类似香蕉&a…

论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection

Pre-trained Online Contrastive Learning for Insurance Fraud Detection| Proceedings of the AAAI Conference on Artificial Intelligence 目录 摘要 Introduction Methodology Problem Formulation Pre-trained Model for Enhanced Robustness Detecting Network a…

【STM32】程序建立模板

文章目录 STM32的开发方式建立基于库函数的工程建立工程的具体步骤具体程序举例工程架构 本篇介绍如何建立一个STM32工程 STM32工程结构比较复杂,需要用到的文件很多,并且程序代码也都是建立在工程结构的基础之上,所以学习如何新建一个STM32工…

Oracle视频基础1.1.4练习

1.1.4 dbb,ddabcPMON,SMON,LGWR,CKPT,DBWna5,b4,c2,d3,e1ad,a,c,b,eOracle instance,Oracle databaseSGA,background processcontrol file,data file,online redo file 以下是一篇关于 Oracle 基础习题 1.1.4 的博客: Oracle 基础习题解析:1.1.4 本篇文…

UE5 喷射背包

首选创建一个输入操作 然后在输入映射中添加,shift是向上飞,ctrl是向下飞 进入人物蓝图中编写逻辑,变量HaveJatpack默认true,Thrust为0 最后

linux进程的状态

​​​​​​​linux进程的概念 上篇我们学习了进程的概念,这篇我们将学习进程的状态 目录 前言 一、子进程和父进程 1、pid和ppid 2、通过系统调用创建进程-fork初识 二、进程的状态 1.Linux内核源代码 2.进程状态查看 3、Z(zombie)-僵尸进程 ​编辑 僵尸…

Linux下docker中elasticsearch与kibana的安装

他的脸红不是因为亚热带季风气候,而是因为那天太阳不忠,出卖一九九四年夏末心动。–《太平山顶》 在本篇博客中,我将详细介绍如何在 Linux 系统中安装并配置 Elasticsearch 和 Kibana,这两者是 ELK 堆栈的重要组成部分&#xff0c…

密钥管理方法DUKPT的OpenSSL代码实现Demo

目录 1 DUKPT简介 2 基本概念 2.1 BDK 2.2 KSN 2.3 IPEK 2.4 FK 2.5 TK 3 工作流程 3.1 密钥注入过程 3.2 交易过程 3.3 BDK派生IPEK过程 3.4 IPEK计算FK过程 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 5 在线工具 6 标准下载 1 DUKPT简介 DUKPT&a…

DEVOPS: 集群伸缩原理

概述 阿里云 K8S 集群的一个重要特性,是集群的节点可以动态的增加或减少有了这个特性,集群才能在计算资源不足的情况下扩容新的节点,同时也可以在资源利用 率降低的时候,释放节点以节省费用理解实现原理,在遇到问题的…

Linux系统解压分卷压缩文件的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【CUDA代码实践03】m维网格n维线程块对二维矩阵的索引

文章目录 一、数据存储方式二、二维网格二维线程块三、二维网格一维线程块四、一维网格一维线程块 为了方便下次找到文章,也方便联系我给大家提供帮助,欢迎大家点赞👍、收藏📂和关注🔔!一起讨论技术问题&am…

低功耗4G模组:FTP应用示例

一、FTP 概述 FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。 FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。 其中FTP服务器用来存储文件,用户可以使用FTP客户…