前言
2023年Zephyr开发者大会(ZDS)于6月27日至30日在捷克布拉格隆重举行。与以往两次不同,本次ZDS由Zephyr项目规划和管理,并作为首届嵌入式开源峰会(EOSS)的一部分进行。在这个令人期待已久的盛会中,全球Zephyr开发者们共同探讨了Zephyr实时操作系统(RTOS)的最新技术与发展趋势。作为一款开源、灵活和可扩展的嵌入式实时操作系统,Zephyr项目在2014年由英特尔发起,2016年作为Linux基金会项目正式面向公众启动,得到了全球范围内的广泛关注和采用。
ZDS 2023共70余个技术报告,涵盖了使用指导与展示、新功能与技术、架构修改与操作系统、多核异构与虚拟化、模拟器、测试、工业流程与代码管理、安全性、应用案例、工具与调试等丰富多样的内容。湖大嵌入式实验室的小伙伴们将对本次大会的所有技术报告进行逐一收集、整理与分享,尽最大努力为Zephyr开发者提供ZDS 2023技术报告的开发经验、实践成果以及解决方案的参考。
作者简介

Townsend是Linaro的首席技术主管。专注于Arm,RTOS和物联网安全,具有15年的全职开源开发经验。此外,Townsend还是Zephyr社区中Aarch32,TF-M和zscilib的维护者。
此次Townsend带来的议程主要包括以下几个方面:
安全启动
设备配置
无存储密钥派生
保护传输中的数据
保护静态数据(示例:机密AI)
安全启动

如图所示,作为信任的来源,这是安全系统中最关键的组件。在Zephyr的情况下,它通常是MCUboot,虽然事实并非总是如此。安全,意味着严格的要求。我们应该只运行有效的签名映像,通俗的说,在理想情况下,有版本的映像。这些映像通常包括回滚保护,每次重置必须验证映像内容和签名,支持映像加密从而以更安全的固件交付。安全引导需要保护引导加载程序闪存区域不被覆盖,因此必须在MCU上禁用Soc设备恢复和调试接口。
MCUBoot:mcumgr

Mcumgr是MCUBoot的命令行管理工具,采用Serial,BLE,UDP三种传输方式。可扩展指令集:设置日期时间,更新文件系统,获取线程/设备状态,重置设备以及shell访问。需要注意的是,可选命令是一把双刃剑,需要根据对应的部署场景进行评估。
MCUBoot:imgtool

Imgtool是MCUBoot中的特殊指令操作的合集,以下是一些常见的指令操作:
生成格式正确的密钥:
$ imgtool keygen -k sign_p256.pem -t ecdsa-p256
$ imgtool getpriv -k sign_p256.pem
$ imgtool getpub -k sign_p256.pem
在实际应用中,用户应始终生成并安全存储自己的私有签名密钥,并通过BOOT_SIGNATURE_KEY_FILE.将构建系统指向它。
设备配置

实际应用开发中,并没有放之四海而皆准的设备配置。我们常常会遇到一些问题:我可以使用公共云提供商吗?它仅限于欧洲吗?数据又是存储到哪里?是否所有东西都需要存在与公司的防火墙之后?这又需要那种类型和多少个密钥/证书,他们多久会更改一次?需要什么级别的访问控制?谁可以随时随地的提供设备?
设备发放有两种常见的场景:工厂发放设备,此设备在工厂,硬件制造过程中或包装时发放。后期绑定设备由客户在现场发放,一般会使用中介工具。此外,延迟绑定可能是运输产品中更常见的场景。
最佳实践:无存储密钥派生
存储密钥最安全的方法是永远不要存储它。以如下的图例来说。w/HUK派生设备绑定键,密钥在启动时重新生成,通过跨FW更新而持续。最后将加密/授权等绑定到MCU。

这种方法要求硬件唯一密钥收到特殊的保护,具体实现为使用S/NS固件,始终在S中的“info”标签前添加一个值。同样的方法也可以用来派生设备绑定的UUID。
保护传输中的数据

最合适的工具:TLS
如果系统支持使用TLS的话,建议将其作为数据传输中保护的最佳工具。相比于其他工具而言,TLS是基于连接的数据的最佳防线,具有普遍采用,可靠且基于现代技术的加密标准。

TLS基本示例
基本TLS身份验证会验证服务器身份。给予我们对证书颁发机构的信任,证书交换是我们对与我们交谈的人有一定程度的信心。
最佳实践:交互TLS

服务器如何知道它正在与受信任的客户端设备通信?TLS可选的包括客户端身份验证,其中服务器也要求客户端设备提供其身份证明。相互TLS时TLS标准的一部分,但商业云提供商的支持级别各不同相同,一些提供商(例如Azure loT Hub)比其他提供商有更好的X.509客户端证书认证支持。
保护静态数据
当TLS不可用时,我们该怎么办?以外部flash中的秘密,中介代理app(BLE)等为例。如今,保护静态数据的问题还没有得到解决。现今普遍采用的是一种名为COSE的标准。COSE是唯一开放的,适合嵌入式的静态数据标准。它构建在cor之上,而cor本质上是二进制JSON。COSE允许使用现代密码对静态数据进行签名和加密。COSE中没有“配置文件”,所以我们需要知道我们在做什么。
机密人工智能
什么是机密人工智能?通俗而言,它是一种基于现代Cortex-M硬件(v8-M,TrustZone等)的端到端安全最佳实践的尝试,使用开源软件和开放标准,以AI/ML工作负载作为测试用例。AL/ML组件并没有什么神奇之处,当你有一个清晰,具体的问题需要解决时,工程输出往往会得到改善。

机密人工智能设计框架