主要参考资料:
【乐鑫全球开发者大会】DevCon24 #10 |乐鑫安全制造全流程
乐鑫官方文档Flash加密: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/security/flash-encryption.html
【ESP32S3】使用 Flash 下载工具完成 Flash 加密功能: https://blog.csdn.net/Marchtwentytwo/article/details/138313656
对称加密和非对称加密,一文讲解明白!: https://blog.csdn.net/askf01/article/details/133280265
目录
- 简介
- 设备身份安全
- 设备身份的生成与保护
- 生产安全
- Flash加密
简介
制造安全可以分为两个方面:设备身份安全 和 生产安全。
设备身份安全
设备身份的生成与保护
生成独一无二的设备身份有三个步骤:
(1)由随机数生成器(RNG)生成的设备密钥,结合设备公钥 和设备信息,一起组成了证书签名请求(CSR)。
(2)由证书授权的云端或本地 签名,产生设备证书。
(3)设备密钥 和 设备证书 一起组成了独一无二的设备身份。
生产安全
设备安全主要分为三部分:
(1)Flash加密——避免设备代码被读取
(2)安全启动——只有被信任的固件被启动
(3)Device Hardening——帮助Flash加密和安全启动 关闭debug接口
Flash加密
对于Flash加密,乐鑫采用了AES (Advanced Encryption Standard)加密,这是一种对称加密方法,也就是加密和解密的密码是一致的。
对称加密的优势在于速度快,加解密过程简单,适合用于传输大量数据。然而,对称加密也存在一些安全性的缺点。首先,密钥的安全性是关键,如果密钥泄露,加密的数据将会遭到破解。其次,对称加密无法提供身份验证和数据完整性保护,即无法判断消息的发送方是否可信以及数据是否被篡改。
ESP32提供以下 Flash 加密模式:
- 开发模式
建议仅在开发过程中使用。因为在这种模式下,仍然可以将新的明文固件烧录到设备,并且引导加载程序将使用存储在硬件中的密钥对该固件进行透明加密。此操作间接允许从 flash 中读出固件明文。
- 发布模式
推荐用于制造和生产。因为在这种模式下,如果不知道加密密钥,则不可能将明文固件烧录到设备。