4、安全烧录协议:SPI/I2C烧录协议的安全增强、加密通道建立
烧录协议这块,说实话,很多工程师容易忽略。大家总觉得,只要把密钥写进去就行了,管它用什么协议呢。但我在项目中吃过亏——有一次,产线上烧录的密钥被隔壁工位的示波器抓了个正着。嗯,从那以后,我对烧录协议的安全性再也不敢马虎了。
SPI和I2C是嵌入式世界最常用的两种烧录接口。它们本身是裸协议,没有任何安全机制。说白了,就像在大街上喊密码,谁都能听见。所以,我们必须给它们加上「安全外衣」。
4.1 SPI烧录协议的安全增强
SPI速度快,全双工,适合大批量烧录。但它的弱点也很明显:四根线(SCK、MOSI、MISO、CS)全部暴露在外,攻击者只要夹个逻辑分析仪,就能把数据流看得一清二楚。
我个人习惯的做法是,在SPI协议层之上叠加一个轻量级加密隧道。具体来说,分三步走:
- 握手阶段:烧录器发送随机挑战码(Challenge),目标芯片用预置的根密钥计算响应(Response)。
- 会话密钥协商:双方基于挑战-响应结果,派生出一组临时会话密钥。
- 加密传输:后续所有烧录数据,都用会话密钥加密后再通过SPI传输。
核心要点:SPI本身不提供任何加密原语,所有安全逻辑必须由主机端和芯片端的固件共同实现。我建议把加密引擎放在芯片的BootROM里,这样在用户程序运行之前,安全通道就已经建立好了。
这里有一个我踩过的坑:SPI的时钟频率很高,加密计算如果太慢,会拖累烧录速度。我曾经用软件实现AES-128,结果烧录一个512KB的固件花了将近两分钟。后来改用硬件加密引擎,速度提升了10倍不止。所以,如果你对产线效率有要求,务必选用带硬件加密加速器的芯片。
4.2 I2C烧录协议的安全增强
I2C只有两根线(SCL、SDA),比SPI更简单,但速度也慢得多。很多安全芯片、传感器、电池管理芯片都用I2C烧录。它的安全问题跟SPI类似——明文传输,一抓就灵。
但I2C有个特殊之处:它是半双工的,而且有地址和ACK机制。这给攻击者提供了额外的信息。比如,通过观察ACK信号,攻击者能推断出芯片是否接收到了正确的数据。所以,I2C的安全增强不仅要加密数据,还要隐藏通信模式。
我建议的做法是:
- 地址混淆:每次烧录会话使用不同的虚拟地址,防止攻击者通过固定地址定位目标芯片。
- 数据包填充:在真实数据之间插入随机长度的填充字节,让攻击者无法区分哪些是有效数据。
- 时序随机化:在SCL时钟中插入随机的等待周期,破坏基于时序分析的侧信道攻击。
小技巧:I2C的速率本来就低,加密开销相对不明显。我个人习惯用XTS-AES模式来加密I2C烧录数据,因为它能保证即使数据包被重排或截断,解密也不会出错。这在产线环境里特别实用——你永远不知道下一包数据会不会因为干扰而丢几个字节。
4.3 加密通道的建立流程
不管是SPI还是I2C,加密通道的建立流程大同小异。我把它总结成一张流程图,方便你理解整个握手过程。
你看,整个流程的核心就是「先认证,后加密」。芯片在收到任何烧录数据之前,必须先证明自己知道根密钥。否则,烧录器直接拒绝通信。这能有效防止攻击者用伪造芯片来套取密钥。
4.4 实际项目中的避坑指南
讲完了理论,我分享几个实战中容易踩的坑。
坑一:会话密钥重用
我曾经见过一个方案,每次烧录都用同一个会话密钥。结果攻击者只要抓一次完整的烧录过程,就能解密后续所有烧录。正确的做法是:每次烧录会话都生成全新的随机挑战码,确保会话密钥一次一密。
坑二:忽略时序攻击
加密计算的时间如果跟密钥或数据相关,攻击者可以通过测量响应时间来推断密钥。我建议在加密实现中加入固定延迟或随机延迟,让时序信息变得不可用。
坑三:产线测试模式
很多芯片在出厂时带有测试模式,可以通过JTAG或SWD直接读取内部密钥。如果你忘了在烧录完成后禁用测试接口,那前面做的所有加密工作都白费了。我个人的习惯是,在烧录流程的最后一步,永久熔断测试接口的使能位。
4.5 协议选择建议
最后,我根据实际项目经验,整理了一个简单的对比表,帮你快速决策:
| 场景 | 推荐协议 | 安全增强重点 | 注意事项 |
|---|---|---|---|
| 大批量、高速烧录 | SPI | 硬件加密引擎、会话密钥协商 | 注意加密计算速度不要拖累烧录速率 |
| 小批量、低功耗设备 | I2C | 地址混淆、数据填充、时序随机化 | 加密开销小,但要注意侧信道防护 |
| 安全等级极高(如金融支付) | SPI + 独立安全芯片 | 物理不可克隆函数(PUF)、真随机数发生器 | 成本较高,但安全性最强 |
嗯,关于安全烧录协议,我就讲这么多。记住一句话:协议本身不背锅,安全要靠上层来补。SPI和I2C只是管道,真正的安全在于你怎么用它们。
总结:安全烧录不是选一个「安全协议」就完事了,而是在现有协议基础上,通过加密、认证、混淆等手段,构建一个临时的安全通道。这个通道只在烧录期间存在,烧录完成即销毁。你想想看,攻击者就算抓到了数据流,看到的也是一堆乱码,根本无从下手。
可可精品资料库