4、身份认证基线:设备唯一标识、PKI体系、预共享密钥、生物特征认证
身份认证这事儿,说白了就是回答一个问题:「你是谁?」
在物联网里,这个问题比互联网场景难得多。互联网上你丢了密码可以重置,物联网设备如果被仿冒,那可不是改个密码就能解决的——整个传感器网络的数据都可能被污染。我做过一个智慧水务的项目,就因为一批水表用的默认证书没换,攻击者直接伪造了水位数据,差点导致泵站误动作。
所以,身份认证基线是物联网安全的第一道门。这门要是没装好,后面所有的加密、授权都是白搭。
4.1 设备唯一标识:每台设备都得有「身份证」
设备唯一标识,就是给每台设备一个全世界独一无二的ID。听起来简单,但坑很多。
核心原则:唯一标识必须在生产阶段烧录,且不可篡改。软件层面生成的UUID,说实话,不太靠谱。
我见过不少厂商直接用MAC地址当设备ID。嗯,这里要注意——MAC地址是可以伪造的,而且同一型号的设备MAC地址往往连续,很容易被猜到。我个人习惯的做法是:
- 硬件绑定:使用安全芯片(如ATECC608A)内置的全球唯一序列号
- 组合标识:厂商代码 + 产品型号 + 生产批次 + 芯片序列号,做一次哈希
- 不可预测性:标识中必须包含随机因子,防止被枚举
| 标识方案 | 安全性 | 成本 | 适用场景 |
|---|---|---|---|
| MAC地址 | 低 | 无 | 仅限内部测试 |
| 软件UUID | 中 | 低 | 非关键设备 |
| 安全芯片序列号 | 高 | 中 | 工业/医疗设备 |
| 组合哈希标识 | 高 | 低 | 大多数IoT场景 |
避坑指南:我曾经遇到一个客户,把设备唯一标识直接写在固件配置文件里。结果OTA升级时,所有设备的标识都变成了同一个值。嗯,那场面……整个平台上的设备全部冲突下线。
4.2 PKI体系:让证书说话
PKI(公钥基础设施)是物联网身份认证的黄金标准。你想想看,如果每台设备都有一张数字证书,就像每个人都有身份证一样,那仿冒的成本就高多了。
PKI的核心流程其实不复杂:
- CA(证书颁发机构):信任的根,负责签发证书
- 设备证书:包含设备公钥和身份信息,由CA签名
- 证书链验证:从设备证书逐级验证到根CA
- 双向认证:设备和服务器互相验证对方证书
我在项目中常用的做法是搭建私有CA,而不是用公共CA。原因很简单——物联网设备数量太大,公共CA的证书费用扛不住。而且,私有CA可以自定义证书字段,比如把设备的地理位置、固件版本都编码进去。
小技巧:证书有效期别设太长。我一般建议设备证书有效期不超过2年,根CA证书5年。到期前通过OTA更新证书,这样即使某张证书泄露,影响范围也有限。
下面这张图展示了典型的物联网PKI认证流程:
4.3 预共享密钥:轻量级的选择
PKI虽好,但有些场景真的用不起。比如一个智能灯泡,成本就十几块钱,你让它支持完整的PKI证书管理?不现实。
这时候,预共享密钥(PSK)就派上用场了。PSK说白了就是设备和服务器之间约定一个秘密字符串,连接时用这个字符串做身份验证。
PSK的典型应用场景:
- 资源受限设备:RAM < 64KB,Flash < 512KB
- 低功耗场景:电池供电,每次连接只发几个字节
- 局域网通信:设备只在家庭或工厂内部网络工作
我曾经踩过一个坑:有个项目用了PSK,但所有设备用的都是同一个密钥。结果一台设备被破解,整个网络都沦陷了。记住:PSK必须每台设备独立,而且生产时就要注入,不能通过OTA下发。
PSK的生成和管理我建议这样做:
// PSK生成示例(伪代码)
function generateDevicePSK(deviceId, masterKey) {
// 使用HMAC-SHA256,确保每个设备密钥不同
return HMAC_SHA256(masterKey, deviceId + deviceSecret)
}
// 设备端使用PSK进行TLS-PSK握手
// 注意:不要自己实现PSK协议,用mbedTLS或OpenSSL的现成接口
4.4 生物特征认证:当设备需要识别「人」
前面讲的都是设备之间的认证。但物联网最终是要为人服务的,对吧?
生物特征认证,就是让设备能识别操作者是不是合法用户。指纹、人脸、声纹、虹膜……这些在手机上已经很常见了,但在物联网设备上,情况要复杂得多。
我参与过一个智能门锁的项目,客户要求支持指纹开锁。看起来简单,但实际落地时发现几个关键问题:
- 传感器安全:指纹传感器和主控之间的通信必须加密,否则中间人可以截获指纹数据
- 本地处理:生物特征模板必须存储在设备本地安全区域,不能上传云端
- 活体检测:必须能区分真手指和硅胶假手指
- 失败处理:连续5次认证失败,应该锁定并报警
| 生物特征 | 安全性 | 成本 | 适用设备 |
|---|---|---|---|
| 指纹 | 中 | 低 | 门锁、考勤机 |
| 人脸 | 中高 | 中 | 门禁、摄像头 |
| 声纹 | 中 | 低 | 智能音箱 |
| 虹膜 | 高 | 高 | 高安全门禁 |
个人建议:生物特征认证最好作为多因素认证的一部分。比如「指纹 + 手机蓝牙靠近」或者「人脸 + 输入PIN码」。单一生物特征,说实话,误识率和拒真率很难同时做到完美。
4.5 基线检查清单
最后,我整理了一份身份认证基线的检查清单。你在做项目合规评审时,可以逐条对照:
- 设备标识:每台设备是否有硬件绑定的唯一标识?标识是否可篡改?
- 证书管理:是否使用PKI?证书有效期是否合理?是否有证书吊销机制?
- PSK安全:PSK是否每台设备独立?是否在生产阶段注入?存储是否加密?
- 生物特征:模板是否本地存储?传感器通信是否加密?是否有活体检测?
- 失败处理:认证失败是否有次数限制?是否有告警机制?
- 密钥更新:是否支持密钥/证书的远程更新?更新过程是否安全?
一句话总结:身份认证不是选一个方案就完事了。你得根据设备的算力、成本、网络环境,把设备标识、PKI、PSK、生物特征组合起来用。我见过最安全的方案是「安全芯片 + PKI证书 + 指纹」三重认证,当然,成本也感人。