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