三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

158、Zephyr RTOS安全基础:加密算法库(mbedTLS)

158、Zephyr RTOS安全基础:加密算法库(mbedTLS)

Zephyr RTOS安全基础:加密算法库(mbedTLS)

上周调试一个工业网关的OTA升级模块,设备上报固件哈希时总是校验失败。我盯着串口日志看了半小时,发现mbedTLS的SHA256计算结果和PC端对不上——后来才意识到,Zephyr的mbedTLS默认配置把某些算法裁剪掉了。这种坑,踩一次就记住了。

为什么Zephyr选mbedTLS而不是OpenSSL

嵌入式场景下,OpenSSL那套动辄几MB的库体积是灾难。mbedTLS(现在叫Mbed TLS,但老工程师还是习惯叫mbedTLS)专为资源受限设备设计,代码量可以裁剪到几十KB。Zephyr把它作为默认加密后端,不是因为它功能最全,而是因为它能按需“拆零件”——你只需要AES-128-CBC,就别把RSA和ECDSA的代码编译进来。

Zephyr的mbedTLS集成在modules/crypto/mbedtls目录下,通过Kconfig控制编译粒度。别直接改mbedTLS源码,那是自找麻烦。所有配置都在prj.conf里搞定。

最小化配置:从零跑通一个SHA256

先看一个最简配置,验证mbedTLS是否正常加载:

// prj.conf 里必须打开这几项CONFIG_MBEDTLS
← 返回列表