4、身份认证基线:设备唯一标识、PKI体系、预共享密钥、生物特征认证

身份认证这事儿,说白了就是回答一个问题:「你是谁?」

在物联网里,这个问题比互联网场景难得多。互联网上你丢了密码可以重置,物联网设备如果被仿冒,那可不是改个密码就能解决的——整个传感器网络的数据都可能被污染。我做过一个智慧水务的项目,就因为一批水表用的默认证书没换,攻击者直接伪造了水位数据,差点导致泵站误动作。

所以,身份认证基线是物联网安全的第一道门。这门要是没装好,后面所有的加密、授权都是白搭。

4.1 设备唯一标识:每台设备都得有「身份证」

设备唯一标识,就是给每台设备一个全世界独一无二的ID。听起来简单,但坑很多。

核心原则:唯一标识必须在生产阶段烧录,且不可篡改。软件层面生成的UUID,说实话,不太靠谱。

我见过不少厂商直接用MAC地址当设备ID。嗯,这里要注意——MAC地址是可以伪造的,而且同一型号的设备MAC地址往往连续,很容易被猜到。我个人习惯的做法是:

  • 硬件绑定:使用安全芯片(如ATECC608A)内置的全球唯一序列号
  • 组合标识:厂商代码 + 产品型号 + 生产批次 + 芯片序列号,做一次哈希
  • 不可预测性:标识中必须包含随机因子,防止被枚举
标识方案 安全性 成本 适用场景
MAC地址 低 无 仅限内部测试
软件UUID 中 低 非关键设备
安全芯片序列号 高 中 工业/医疗设备
组合哈希标识 高 低 大多数IoT场景

避坑指南:我曾经遇到一个客户,把设备唯一标识直接写在固件配置文件里。结果OTA升级时,所有设备的标识都变成了同一个值。嗯,那场面……整个平台上的设备全部冲突下线。

4.2 PKI体系:让证书说话

PKI(公钥基础设施)是物联网身份认证的黄金标准。你想想看,如果每台设备都有一张数字证书,就像每个人都有身份证一样,那仿冒的成本就高多了。

PKI的核心流程其实不复杂:

  1. CA(证书颁发机构):信任的根,负责签发证书
  2. 设备证书:包含设备公钥和身份信息,由CA签名
  3. 证书链验证:从设备证书逐级验证到根CA
  4. 双向认证:设备和服务器互相验证对方证书

我在项目中常用的做法是搭建私有CA,而不是用公共CA。原因很简单——物联网设备数量太大,公共CA的证书费用扛不住。而且,私有CA可以自定义证书字段,比如把设备的地理位置、固件版本都编码进去。

小技巧:证书有效期别设太长。我一般建议设备证书有效期不超过2年,根CA证书5年。到期前通过OTA更新证书,这样即使某张证书泄露,影响范围也有限。

下面这张图展示了典型的物联网PKI认证流程:

物联网PKI双向认证流程 设备 服务器 私有CA ① 设备发送CSR(证书签名请求) ② CA签发设备证书并返回 ③ 设备发送证书 + 随机数签名 验证证书链 + 签名 ④ 服务器发送自身证书 验证服务器证书 ⑤ 双向认证成功,建立TLS通道

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 生物特征认证:当设备需要识别「人」

前面讲的都是设备之间的认证。但物联网最终是要为人服务的,对吧?

生物特征认证,就是让设备能识别操作者是不是合法用户。指纹、人脸、声纹、虹膜……这些在手机上已经很常见了,但在物联网设备上,情况要复杂得多。

我参与过一个智能门锁的项目,客户要求支持指纹开锁。看起来简单,但实际落地时发现几个关键问题:

  1. 传感器安全:指纹传感器和主控之间的通信必须加密,否则中间人可以截获指纹数据
  2. 本地处理:生物特征模板必须存储在设备本地安全区域,不能上传云端
  3. 活体检测:必须能区分真手指和硅胶假手指
  4. 失败处理:连续5次认证失败,应该锁定并报警
生物特征 安全性 成本 适用设备
指纹 中 低 门锁、考勤机
人脸 中高 中 门禁、摄像头
声纹 中 低 智能音箱
虹膜 高 高 高安全门禁

个人建议:生物特征认证最好作为多因素认证的一部分。比如「指纹 + 手机蓝牙靠近」或者「人脸 + 输入PIN码」。单一生物特征,说实话,误识率和拒真率很难同时做到完美。

4.5 基线检查清单

最后,我整理了一份身份认证基线的检查清单。你在做项目合规评审时,可以逐条对照:

  • 设备标识:每台设备是否有硬件绑定的唯一标识?标识是否可篡改?
  • 证书管理:是否使用PKI?证书有效期是否合理?是否有证书吊销机制?
  • PSK安全:PSK是否每台设备独立?是否在生产阶段注入?存储是否加密?
  • 生物特征:模板是否本地存储?传感器通信是否加密?是否有活体检测?
  • 失败处理:认证失败是否有次数限制?是否有告警机制?
  • 密钥更新:是否支持密钥/证书的远程更新?更新过程是否安全?

一句话总结:身份认证不是选一个方案就完事了。你得根据设备的算力、成本、网络环境,把设备标识、PKI、PSK、生物特征组合起来用。我见过最安全的方案是「安全芯片 + PKI证书 + 指纹」三重认证,当然,成本也感人。