设备身份与凭证:唯一标识、密钥与证书
设备要接入物联网,第一件事就是证明「我是谁」。这听起来简单,但实际落地时坑不少。我见过太多项目,设备身份没设计好,上线后才发现没法做安全校验,只能推倒重来。
今天咱们把三个核心概念掰开揉碎讲清楚:设备唯一标识、设备密钥、设备证书。它们各自解决什么问题?有什么区别?怎么搭配使用?
设备唯一标识:出生证明
每个设备出厂时,都得有个「身份证号」。这个号就是设备唯一标识。常见的格式有 UUID 和 IMEI。
- UUID(通用唯一标识符):128 位随机数,比如
550e8400-e29b-41d4-a716-446655440000。全球唯一,不依赖任何中心节点生成。 - IMEI(国际移动设备识别码):15 位数字,GSM 模块专用。比如
356938035643809。由设备厂商申请,全球唯一。
核心要点:唯一标识只负责「区分设备」,不负责「验证设备」。就像你的身份证号,别人知道你的号,不代表他就是你本人。
我在一个智能门锁项目里遇到过这样的问题:厂商直接用 MAC 地址当设备标识。结果用户换了个路由器,MAC 地址冲突,后台直接认错设备。后来我们全部切成了 UUID,烧录在安全芯片里,出厂后不可更改。
我的建议:优先用 UUID。IMEI 只适用于蜂窝网络设备,而且存在被篡改的风险。UUID 可以自己生成,不依赖硬件,灵活性高。
设备密钥:数字签名与加密
有了身份证号,还得有「签名笔迹」。设备密钥就是干这个的。密钥分两种:对称密钥和非对称密钥。
| 类型 | 密钥数量 | 典型算法 | 性能 | 适用场景 |
|---|---|---|---|---|
| 对称密钥 | 1 个(共享) | AES-128/256 | 快(硬件加速) | 数据加密、消息认证 |
| 非对称密钥 | 2 个(公钥+私钥) | RSA-2048、ECC P-256 | 慢(10-100 倍) | 身份认证、密钥协商 |
对称密钥就像你和朋友约定好的暗号。你俩都知道,别人不知道。加密快,但分发困难——怎么把密钥安全地交给设备?
非对称密钥则像一把锁和一把钥匙。公钥是锁,谁都可以拿;私钥是钥匙,只有设备自己藏着。你用公钥加密的数据,只有私钥能解开。反过来,你用私钥签名的数据,别人用公钥就能验证是你签的。
避坑指南:我曾经在一个传感器项目里,直接把对称密钥硬编码在固件里。结果固件被反编译,密钥泄露,整个批次设备都得召回。后来我们改用非对称密钥,私钥放在安全元件里,公钥随便看,安全等级直接拉满。
设备证书:权威认证
密钥解决了「能不能加密」的问题,但没解决「这个公钥到底是谁的」。设备证书就是来解决这个问题的。
X.509 证书是一个数字文件,里面包含:
- 设备的公钥
- 设备的唯一标识(通常是 UUID 或设备序列号)
- 颁发者(CA,证书颁发机构)的信息
- 有效期
- CA 的数字签名
说白了,证书就是 CA 给设备公钥做的一个「公证」。你拿到一个证书,用 CA 的公钥验证签名,就知道这个公钥确实是属于这台设备的。
一句话总结:唯一标识是「你是谁」,密钥是「你能做什么」,证书是「别人相信你」。三者缺一不可。
三者的关系与区别
咱们用一个表格把差异说清楚:
| 维度 | 唯一标识 | 密钥 | 证书 |
|---|---|---|---|
| 作用 | 区分设备 | 加密/签名 | 绑定身份与公钥 |
| 是否保密 | 公开 | 私钥保密,公钥公开 | 公开 |
| 能否伪造 | 能(需冲突) | 不能(私钥不泄露) | 不能(CA 签名保护) |
| 生命周期 | 永久 | 可定期更换 | 有有效期 |
| 依赖基础设施 | 无 | 无 | 需要 CA 系统 |
你想想看,如果只有唯一标识,攻击者可以伪造设备 ID 冒充合法设备。如果只有密钥,你没法确认这个公钥是不是设备本人的。只有三者配合,才能构建完整的设备身份体系。
知识体系总览
下面这张图把三者的关系和典型流程画出来了:
实际项目中的选择建议
我做了这么多年物联网安全,总结了几条经验:
- 低功耗传感器:用对称密钥 + UUID。性能开销小,但要做好密钥分发管理。
- 网关/边缘设备:用非对称密钥 + X.509 证书。计算能力强,安全等级高。
- 移动设备:IMEI + 非对称密钥。IMEI 是运营商标准,配合证书做双向认证。
- 安全要求极高的场景(金融、医疗):三者全上,私钥放安全元件(SE)或 TEE 环境。
一个小技巧:证书有效期别设太长。我习惯设 1-2 年,配合自动续签机制。这样即使某个证书泄露,影响范围也有限。
嗯,设备身份与凭证这块,核心就是记住:标识是基础,密钥是能力,证书是信任。下一层咱们会聊怎么把这些凭证安全地烧录到设备里,那又是另一门学问了。