设备身份基础:从物理标识到密码学信任

设备身份认证,说白了就是回答三个问题:你是谁?你怎么证明?我怎么验证? 在OTA场景里,这三个问题直接决定了你能不能安全地把固件发出去、设备能不能放心地收下来。

我刚开始做OTA的时候,觉得设备身份不就是个MAC地址嘛,后来被现实狠狠教育了一顿。嗯,今天咱们就把这块地基打扎实。

2.1 设备唯一标识:UID / MAC / IMEI

先聊聊最基础的——设备唯一标识。这是设备在物理世界里的“身份证号”。

标识类型 典型长度 存储位置 OTA场景中的问题
UID(芯片唯一ID) 64~128 bit 芯片OTP / eFuse 不可更改,适合做根标识
MAC(网络接口地址) 48 bit 网卡寄存器 / EEPROM 可伪造,容易被嗅探
IMEI(移动设备标识) 15 位数字 基带芯片 / 贴片 可篡改(刷机),监管敏感
注意: 千万不要把MAC或IMEI直接当作OTA认证的唯一凭证。我在一个车联网项目里见过,攻击者抓包后直接伪造了MAC地址,结果整批设备都能冒充合法节点。物理标识只能作为辅助因子,不能单独用于身份认证。

我个人习惯的做法是:把UID作为设备的“根标识”,烧录在一次性可编程区域(OTP或eFuse),产线写完就锁死。MAC和IMEI可以作为业务标识,但必须跟UID绑定签名。

2.2 设备证书体系:X.509 在嵌入式中的落地

光有唯一ID不够,你得有办法证明“这个ID确实是这个设备的”。这就是证书体系登场的地方。

X.509证书,说白了就是一张数字身份证。它包含:

  • 主体信息:设备ID、厂商、型号等
  • 公钥:设备自己的公钥
  • 签发者信息:谁给你签的证
  • 签名:CA用私钥对上述内容签名
  • 有效期:证书什么时候过期

在OTA场景里,我建议采用两级证书链:

  1. 根CA证书:离线保存,只在产线签名时使用
  2. 设备证书:每个设备独一份,由根CA签发
关键点: 设备端只需要存储自己的设备证书和根CA证书(用于验证服务端)。私钥绝对不能出安全存储区。

我曾经踩过一个坑:某次量产时,产线脚本把根CA私钥直接拷贝到了烧录工位上。虽然只暴露了半小时,但整个批次都得重新换证书。从那以后,我坚持根CA私钥必须物理隔离,用HSM或者离线签名机。

2.3 设备密钥对生成与管理

证书的核心是密钥对。密钥对怎么生成、存在哪、怎么更新,是设备身份安全的重中之重。

2.3.1 密钥对生成方式

生成方式 安全性 性能开销 适用场景
产线预生成 低(私钥可能泄露) 低 低安全要求、大批量
设备端生成 高(私钥不出芯片) 中(需硬件加速) 高安全要求、有安全元件
安全芯片内部生成 最高(私钥不可读) 低(硬件加速) 车规、金融级设备

我个人强烈推荐设备端生成 + 安全芯片存储。为什么?私钥从产生到消亡,永远不离开安全芯片的边界。产线只需要把公钥提出来,让CA签个证书就行。

2.3.2 密钥存储与管理

密钥存储有几个铁律:

  • 私钥必须加密存储,即使是在安全芯片内部
  • 密钥分区:OTA签名密钥、通信加密密钥、设备身份密钥要分开
  • 密钥版本管理:支持密钥轮换,但不能影响正在进行的OTA流程
经验之谈: 我习惯在设备出厂时预置一个“初始密钥对”,用于首次注册。注册成功后,设备会生成“运行密钥对”,并通过安全通道替换掉初始密钥。这样即使产线环节有泄露,影响范围也有限。

2.3.3 密钥轮换策略

密钥不能一成不变。OTA场景下,密钥轮换要考虑:

  1. 轮换触发条件:定期(如90天)、安全事件(如证书泄露)、设备重新入网
  2. 轮换流程:新密钥对生成 → 新证书签发 → 旧证书吊销 → 切换使用
  3. 回退机制:如果新密钥有问题,能快速切回旧密钥
避坑指南: 我曾经在轮换逻辑里忘了处理“正在下载固件”的状态。结果设备在OTA中途换了密钥,服务端验证失败,整批设备变砖。后来我加了一个轮换窗口期——只有在空闲状态才能触发密钥轮换。

2.4 知识体系总览

下面这张图把设备身份的基础框架串起来了。你可以看到,从物理标识到证书体系,再到密钥管理,每一层都环环相扣。

设备身份基础框架图 设备身份基础框架 第一层:物理标识 UID(芯片唯一ID) MAC / IMEI(网络/移动标识) 第二层:X.509证书体系 根CA证书(离线、物理隔离) 设备证书(每设备独一份,由根CA签发) 证书链验证:设备 → 中间CA → 根CA 第三层:密钥对生成与管理 生成方式:设备端生成 / 安全芯片内部生成 存储:私钥加密存储,分区管理 轮换:定期轮换 + 安全事件触发 + 回退机制 私钥永不离开 安全芯片

你看,这三层是递进关系:物理标识解决“你是谁”,证书体系解决“谁证明你”,密钥管理解决“你怎么证明”。少了任何一层,OTA的身份认证都是纸糊的。

嗯,这一章的内容就到这。记住一句话:设备身份不是静态的标签,而是一套动态的信任体系。后面我们会在这个基础上,搭建完整的OTA认证流程。