设备身份基础:从物理标识到密码学信任
设备身份认证,说白了就是回答三个问题:你是谁?你怎么证明?我怎么验证? 在OTA场景里,这三个问题直接决定了你能不能安全地把固件发出去、设备能不能放心地收下来。
我刚开始做OTA的时候,觉得设备身份不就是个MAC地址嘛,后来被现实狠狠教育了一顿。嗯,今天咱们就把这块地基打扎实。
2.1 设备唯一标识:UID / MAC / IMEI
先聊聊最基础的——设备唯一标识。这是设备在物理世界里的“身份证号”。
| 标识类型 | 典型长度 | 存储位置 | OTA场景中的问题 |
|---|---|---|---|
| UID(芯片唯一ID) | 64~128 bit | 芯片OTP / eFuse | 不可更改,适合做根标识 |
| MAC(网络接口地址) | 48 bit | 网卡寄存器 / EEPROM | 可伪造,容易被嗅探 |
| IMEI(移动设备标识) | 15 位数字 | 基带芯片 / 贴片 | 可篡改(刷机),监管敏感 |
我个人习惯的做法是:把UID作为设备的“根标识”,烧录在一次性可编程区域(OTP或eFuse),产线写完就锁死。MAC和IMEI可以作为业务标识,但必须跟UID绑定签名。
2.2 设备证书体系:X.509 在嵌入式中的落地
光有唯一ID不够,你得有办法证明“这个ID确实是这个设备的”。这就是证书体系登场的地方。
X.509证书,说白了就是一张数字身份证。它包含:
- 主体信息:设备ID、厂商、型号等
- 公钥:设备自己的公钥
- 签发者信息:谁给你签的证
- 签名:CA用私钥对上述内容签名
- 有效期:证书什么时候过期
在OTA场景里,我建议采用两级证书链:
- 根CA证书:离线保存,只在产线签名时使用
- 设备证书:每个设备独一份,由根CA签发
我曾经踩过一个坑:某次量产时,产线脚本把根CA私钥直接拷贝到了烧录工位上。虽然只暴露了半小时,但整个批次都得重新换证书。从那以后,我坚持根CA私钥必须物理隔离,用HSM或者离线签名机。
2.3 设备密钥对生成与管理
证书的核心是密钥对。密钥对怎么生成、存在哪、怎么更新,是设备身份安全的重中之重。
2.3.1 密钥对生成方式
| 生成方式 | 安全性 | 性能开销 | 适用场景 |
|---|---|---|---|
| 产线预生成 | 低(私钥可能泄露) | 低 | 低安全要求、大批量 |
| 设备端生成 | 高(私钥不出芯片) | 中(需硬件加速) | 高安全要求、有安全元件 |
| 安全芯片内部生成 | 最高(私钥不可读) | 低(硬件加速) | 车规、金融级设备 |
我个人强烈推荐设备端生成 + 安全芯片存储。为什么?私钥从产生到消亡,永远不离开安全芯片的边界。产线只需要把公钥提出来,让CA签个证书就行。
2.3.2 密钥存储与管理
密钥存储有几个铁律:
- 私钥必须加密存储,即使是在安全芯片内部
- 密钥分区:OTA签名密钥、通信加密密钥、设备身份密钥要分开
- 密钥版本管理:支持密钥轮换,但不能影响正在进行的OTA流程
2.3.3 密钥轮换策略
密钥不能一成不变。OTA场景下,密钥轮换要考虑:
- 轮换触发条件:定期(如90天)、安全事件(如证书泄露)、设备重新入网
- 轮换流程:新密钥对生成 → 新证书签发 → 旧证书吊销 → 切换使用
- 回退机制:如果新密钥有问题,能快速切回旧密钥
2.4 知识体系总览
下面这张图把设备身份的基础框架串起来了。你可以看到,从物理标识到证书体系,再到密钥管理,每一层都环环相扣。
你看,这三层是递进关系:物理标识解决“你是谁”,证书体系解决“谁证明你”,密钥管理解决“你怎么证明”。少了任何一层,OTA的身份认证都是纸糊的。
嗯,这一章的内容就到这。记住一句话:设备身份不是静态的标签,而是一套动态的信任体系。后面我们会在这个基础上,搭建完整的OTA认证流程。