4. IoT设备身份管理
设备身份管理,说白了就是回答三个问题:你是谁?我怎么信你?你什么时候失效?
在零信任架构里,网络边界已经不存在了。设备不再是“插上网线就可信”的。每一台设备,每一次访问,都必须证明自己的身份。我做过不少IoT项目,踩过最大的坑就是——以为设备ID就是身份。其实差远了。
4.1 设备身份的三个核心要素
设备身份不是一串编号那么简单。它由三块构成:
- 设备ID:唯一标识,类似人的身份证号。可以是MAC地址、IMEI、芯片序列号,或者你自己定义的UUID。
- 设备证书:数字凭证,类似人的护照。由CA签发,包含公钥和身份信息。用于双向TLS握手。
- TEE(可信执行环境):硬件级安全容器,类似保险箱。私钥存在里面,操作系统拿不到,物理攻击也读不走。
关键认知:设备ID只是名字,证书是凭证,TEE是保险柜。三者缺一不可。只有ID没有证书,等于裸奔;有证书没有TEE,私钥迟早被偷。
我见过一个智能门锁项目,厂商只用了MAC地址做设备ID。结果攻击者伪造MAC地址,直接远程开锁。嗯,后来他们全量换了证书+TEE方案。
4.2 设备注册与生命周期管理
设备从出厂到报废,身份一直在变。你不能只注册一次就再也不管了。
4.2.1 注册流程
我个人习惯把注册分成三个阶段:
- 预置阶段(工厂):烧录设备ID、预置证书、初始化TEE。这一步必须在安全环境下做。
- 激活阶段(用户侧):设备首次联网,向平台发起注册请求。平台验证证书有效性,绑定设备与用户账号。
- 认证阶段(运行时):每次通信前,设备与平台双向验证证书。TEE负责签名和密钥协商。
避坑指南:我曾经在预置阶段偷懒,用了统一的预共享密钥。结果一个设备被破解,所有设备都暴露了。后来改成每台设备独立证书,虽然管理成本高了,但安全等级完全不一样。
4.2.2 生命周期状态机
设备身份不是一成不变的。它经历多个状态:
| 状态 | 说明 | 触发条件 |
|---|---|---|
| 未注册 | 设备已出厂,但未激活 | 出厂默认状态 |
| 已注册 | 设备完成激活,可正常通信 | 用户首次绑定 |
| 已挂起 | 设备暂时禁用,身份保留 | 用户报修、欠费 |
| 已吊销 | 设备永久失效,身份作废 | 设备丢失、被破解 |
| 已退役 | 设备报废,身份归档 | 生命周期结束 |
你想想看,如果设备被偷了,你只是挂起而不是吊销,攻击者还能用旧证书重放攻击。所以吊销必须立即生效,而且证书吊销列表(CRL)要实时同步到所有验证节点。
4.2.3 证书轮换
证书有有效期。我建议IoT设备证书有效期不超过1年。为什么?
- 设备计算能力弱,长有效期证书一旦泄露,损失窗口太大。
- 短有效期强制设备定期与平台通信,平台可以趁机检查设备健康状态。
- 轮换过程要支持离线续期——设备断网期间证书过期了怎么办?可以用旧证书签一个续期请求,平台验证通过后下发新证书。
注意:证书轮换必须在TEE内完成。私钥生成、签名、存储,全程不能出TEE。我曾经见过一个方案,私钥在内存里裸奔了3毫秒,就被侧信道攻击抓走了。
4.3 设备身份与用户身份的关联
设备身份和用户身份是两回事。设备是“物”,用户是“人”。但零信任要求:谁在用哪台设备访问什么资源,三者必须绑定。
4.3.1 关联模型
我常用的模型是这样的:
- 一对一:一台设备绑定一个用户。比如智能手表,用户就是佩戴者。
- 多对一:多台设备绑定一个用户。比如智能家居,一个用户控制所有传感器。
- 多对多:多台设备被多个用户共享。比如工业机器人,多个工程师轮流操作。
关联关系不是静态的。用户离职了,设备要解绑;设备转给别人了,要重新绑定。这些操作都要有审计日志。
4.3.2 联合认证流程
实际场景中,用户先登录App,App再通过设备代理发起请求。流程大概是:
- 用户输入密码/生物特征,App获取用户Token。
- App用用户Token + 设备证书,向平台发起联合认证。
- 平台验证用户Token有效性,同时验证设备证书是否在有效期内、是否被吊销。
- 两者都通过,平台下发会话票据。后续通信只认票据,不再重复认证。
经验之谈:我曾经在联合认证里忘了做设备指纹校验。结果攻击者用一个合法用户的Token,从任意设备都能访问。后来加了设备指纹——每次请求都校验设备证书指纹和TEE报告的硬件指纹,才算堵住漏洞。
4.4 知识体系总览
下面这张图把设备身份管理的核心逻辑串起来了。你可以看到,从设备出厂到退役,身份一直在流转。
4.5 落地建议
说了这么多,落地时我建议你从这三步开始:
- 先搞定TEE:没有硬件安全基础,上面全是空中楼阁。选型时看是否支持安全启动、安全存储、远程认证。
- 证书体系要轻量:IoT设备资源有限,别用X.509全套。可以用CBOR格式的CWT(CBOR Web Token),或者精简的X.509 profile。
- 吊销机制必须在线:离线设备怎么办?用短有效期证书+自动续期,过期自动失效,省去吊销的麻烦。
最后一句提醒:设备身份管理不是一次性工作。设备数量一上来,证书轮换、吊销同步、关联关系维护,全是运维噩梦。我建议从一开始就设计自动化流程,别等人肉运维。否则,你会在凌晨三点被告警电话叫醒——嗯,我经历过。