目前的位置: 首页 学术信息 正文

ZDS 2023技术报告分享第69篇:Zephyr中的资源调配


前言

2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。


ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。



今天分享第69篇技术报告,由胡宇昊整理,题目为:

Zephyr中的资源调配



作者简介


Jared Wolff

工程师,Circuit Dojo LLC

Jared是一位出色的制作者和开发者,他热衷于使用新技术,并通过对开源项目的贡献与他人分享自己的知识。他是nRF9160 Feather的创建者,nRF9160 Feather是nRF9160系统级封装 (SiP) 的开源开发板。Jared还是Zephyr实时操作系统的贡献者和倡导者,并通过YouTube上名为 "Zephyr 101"的直播课程分享他的知识和经验。



文章简介

在部署产品之前,设备配置是需要完成的最重要的最后步骤之一。幸运的是,Zephyr可以通过证书、预共享密钥等方式轻松完成设备设置。本篇工作主要将具体讨论如何在不同的客户项目中配置基于Nordic nRF9160的设备。还将讨论一些概念,如Zephyr的shell和设置API。还将讨论如何编写和运行与设备连接的实用程序。



配置设备

此处的主要想法是让设备易于设置和部署,主要包括如何确保安全、使其易于维护、并且尽可能在这个过程中节省时间等。因此我们将重点专注于:生成和配置设备证书、设备的具体配置、开源工具如何让工作更轻松、密码和重要的安全影响、不涉及 JITP。



证书CERTIFICATES

主要方法有:

1.如果使用AWS IoT,可以在AWS控制台上生成证书(如下图)。


2.使用openssl或 esa-rsa CLI(如下图) 以传统方式生成证书。

3.Pyrinas CLI可以直接签署和加载证书:

用Rcgen生成证书

用于写入UART/USB的Serialport生成器

优点:

  • 能够保存每个设备的所有证书

  • 可以生成服务器和 CA 证书,简化使用

  • 便于通过控制台 shell 加载证书

唯一标识符:不可变且随机,对所有设备而言都是唯一的。

  • 对于nRF9160,IMEI 是唯一标识符

  • 对于其他设备:MAC 地址(以太网、Wifi BLE)

  • OTP FICR 中的 nRF 设备 ID

nRF Cloud提供了一种简单方法来生成证书,可生成证书的简易应用程序接口(API nRF91 设备上轻松配置),每个nRF9160 Feather都有一组写入的 nRF云证书,通过CMNG AT命令写入。

重要注意事项:

  • 确保设备和服务器能够使用所生成的证书类型(RSA EC)。

  • 保持设备的私钥安全并隔离(如果可能的话)。

  • 理想情况下,使用开源且经过审计的工具。



证书存储

存储证书有三种方法:

  • 安全证书存储区,如nRF91或nRF53上的存储区。

  • 系统中打开或关闭芯片。

  • 安全元件(Zephyr 支持有限)。

对于 nRF9160

  • 使用 CMNG AT 命令修改安全密钥存储

  • 使用自定义 AT shell 实现

  • (见 pyrinas/lib/shell/at_shell.c)

对于其他设备(没有安全密钥存储的设备),可以使用设置子系统

  • Pyrinas CLI 的 der 标志写入设置子系统缺点:以明文存储,易于访问,安全性差



证书装载

子例程:得到加载的安全标记,确保写入正确:

放入设备:

从设备中加载并确保有效:

添加凭证:

  • 在具有安全密钥存储功能的设备上,只需安全标签即可

  • 自动处理加密/签名请求

  • 在设置 TLS/DTLS 连接时使用



使用注意事项

  1. 安全标签以列表形式提供

  2. 提供给 (D)TLS 配置

  3. 然后连接和握手由底层传输/(D)TLS实现处理



设备配置

有很多方法可以解决这个问题

我们的流程:

  1. 编码(JSON/CBOR

  2. 使用设置子系统存储

  3. 调用

  4. 解码并应用

实例:

从设置子系统读出时

  • 我们设置了合理的默认值

  • 解码配置

  • 如果配置中缺少值,默认值会覆盖这些值

  • 即使结构发生变化,也能保持不变



总结

  1. 关于证书CERTIFICATES生成的大量资源,我希望你能发现这些是有用的

  2. 提供大量的开源工具,希望能给你启发

  3. 一旦加载,许多困难的事情就被抽象掉了,你只需处理证书CERTIFICATES以及保证其安全

  4. 设备配置可以类似处理(像处理证书CERTIFICATES一样)


上一条:ZDS 2023技术报告分享第70篇:Zephyr资源调度的现状与未来 下一条:ZDS 2023技术报告分享第68篇:使用Zephyr进行物联网设备管理

关闭

嵌入式与网络计算湖南省重点实验室
版权所有 © 2023 湖南大学