4、设备身份认证基础:认证三要素与设备认证差异
认证这事儿,说白了就是回答三个问题:你是谁?你带了什么?你是什么? 这三个问题对应着认证的三要素。我在IoT安全这行摸爬滚打十几年,见过太多因为搞混这三要素而出的事故。今天咱们就掰开揉碎聊聊这个基础,顺便说说设备认证和用户认证到底差在哪。
4.1 认证三要素:你知道的、你拥有的、你本身的
认证三要素是安全领域的铁三角。任何一个认证方案,本质上都是在用这三个维度中的一种或多种来验证身份。
| 要素 | 类型 | 典型例子 | IoT场景常见形式 |
|---|---|---|---|
| 你知道的 | 知识因子 | 密码、PIN码、口令 | 设备注册密钥、预共享密钥(PSK) |
| 你拥有的 | 持有因子 | 智能卡、U盾、手机令牌 | 硬件安全模块(HSM)、TPM芯片、安全元件(eSE) |
| 你本身的 | 固有因子 | 指纹、人脸、虹膜 | 设备指纹、芯片唯一ID、物理不可克隆函数(PUF) |
4.1.1 你知道的(知识因子)
这是最传统的方式。你输入一个密码,系统验证你知道这个秘密。成本低,实现简单。但问题也明显——秘密可以被猜、被偷、被钓鱼。
在IoT设备里,知识因子通常表现为预共享密钥(PSK)。比如Wi-Fi的WPA2-PSK,设备出厂时烧录一个密钥,连接时凭这个密钥证明身份。
4.1.2 你拥有的(持有因子)
这个比密码靠谱多了。你手里有个物理设备,别人拿不到。在IoT世界里,持有因子就是设备里的安全芯片。
我个人习惯把持有因子分为两类:
- 独立硬件:比如智能卡、U盾,需要插拔使用
- 嵌入式安全元件:比如手机里的eSE、电脑的TPM、IoT设备的ATECC608A安全芯片
嵌入式安全元件是IoT设备的首选。它把私钥焊死在芯片里,物理上无法读出。我在做智能电表项目时,就强制要求每块电表必须集成安全芯片,密钥在芯片内生成,永远不离开硬件。
4.1.3 你本身的(固有因子)
生物特征用在人身上很自然。但设备也有"本身"的属性——设备指纹。
设备指纹包括:
- 芯片唯一ID(比如STM32的96位UID)
- MAC地址、IMEI号
- 物理不可克隆函数(PUF)产生的唯一响应
PUF是个有意思的技术。它利用芯片制造过程中的微观差异,每个芯片的"指纹"都是独一无二的。就像人的指纹,理论上无法复制。
4.2 设备认证与用户认证的差异
很多人觉得设备认证就是用户认证的简化版。大错特错。这两者从根上就不一样。
| 对比维度 | 用户认证 | 设备认证 |
|---|---|---|
| 认证主体 | 自然人 | 硬件设备 |
| 交互方式 | 人机交互(输入、点击、扫描) | 机机交互(自动、无感、后台) |
| 凭据存储 | 用户记忆或随身携带 | 存储在设备安全区 |
| 生命周期 | 用户注册→使用→注销 | 设备生产→激活→运行→退役 |
| 安全要求 | 防钓鱼、防暴力破解 | 防物理拆解、防克隆、防侧信道攻击 |
| 典型协议 | OAuth2.0、SAML、LDAP | mTLS、EAP-TLS、PSK、Sigfox |
4.2.1 核心差异一:谁在认证?
用户认证,背后是活生生的人。人可以输入密码、刷脸、按指纹。设备认证呢?设备没有"意识",它只能自动执行预置的认证流程。
这就带来一个关键问题:设备认证必须是自动化的、无感的。你不能让一个传感器每次联网时都让人去输入密码。它必须自己完成认证。
4.2.2 核心差异二:凭据怎么保护?
用户的密码存在大脑里,或者存在密码管理器里。设备的凭据呢?存在Flash里、存在安全芯片里、或者存在云端。
嗯,这里要注意:设备的凭据更容易被物理提取。攻击者可以拆开设备,用JTAG读Flash,用探针测总线,甚至用电子显微镜看芯片表面。所以设备凭据的保护要求比用户凭据高得多。
4.2.3 核心差异三:生命周期管理
用户的生命周期相对简单:注册、使用、注销。设备呢?
- 生产阶段:在工厂烧录初始凭据
- 激活阶段:首次联网时完成身份绑定
- 运行阶段:定期更新凭据、轮换密钥
- 退役阶段:安全擦除凭据、撤销证书
我在一个车联网项目里,设备生命周期管理没做好,导致一批已报废的OBD盒子还能连接云端。后来我们不得不紧急上线证书撤销列表(CRL),才堵住这个漏洞。
4.3 常见认证协议概述
协议是认证的"语言"。设备和服务端得说同一种语言才能完成认证。下面是我认为IoT领域最常用的几种协议。
4.3.1 mTLS(双向TLS)
这是TLS的加强版。普通TLS只验证服务器证书,mTLS要求客户端也出示证书。设备和服务端互相验证身份。
// mTLS握手简化流程
1. 客户端发起连接
2. 服务端发送自己的证书
3. 客户端验证服务端证书
4. 客户端发送自己的设备证书
5. 服务端验证设备证书
6. 双方协商会话密钥
7. 加密通信开始
mTLS是IoT设备认证的黄金标准。我在智能家居平台里就用它,每个设备出厂时烧录唯一证书,云端只认证书不认别的。
4.3.2 EAP-TLS(可扩展认证协议-传输层安全)
EAP是个框架,EAP-TLS是其中一种方法。它常用于Wi-Fi企业网络(WPA2-Enterprise)。设备连接Wi-Fi时,通过EAP-TLS出示证书完成认证。
优点:不需要预共享密钥,证书管理灵活。
缺点:需要搭建PKI基础设施,小团队玩不转。
4.3.3 PSK(预共享密钥)
最简单粗暴的方式。设备和服务器共享一个密钥,通过对称加密算法验证身份。
// PSK认证示例(简化)
设备 -> 服务器: {设备ID, 随机数, HMAC(密钥, 随机数)}
服务器 -> 设备: {随机数, HMAC(密钥, 随机数+1)}
PSK适合资源受限的设备,比如Zigbee、BLE设备。但密钥管理是噩梦——每个设备密钥不同,还得安全分发。
4.3.4 OAuth 2.0 设备授权流程
这是OAuth 2.0专门为无输入设备的场景设计的。比如智能电视、打印机,它们没法让用户输入用户名密码。流程是这样的:
- 设备向授权服务器请求设备码和用户码
- 设备显示用户码(比如"ABC-123")
- 用户在手机或电脑上访问授权页面,输入用户码
- 用户完成身份验证后,设备轮询授权服务器获取令牌
这个协议我在智能音箱项目里用过。用户用手机扫码完成授权,音箱本身不需要任何输入能力。
4.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你可以看到认证三要素、设备与用户认证的差异、以及常见协议之间的关系。
这张图把本章的核心脉络理清了。从三要素出发,到用户认证和设备认证的分野,再到具体协议的选择。你想想看,任何一个IoT认证方案,都能在这张图上找到自己的位置。
1. 设备有没有安全芯片?(决定能不能用证书)
2. 设备有没有人机交互界面?(决定能不能用OAuth)
3. 设备生命周期多长?(决定密钥轮换策略)
这三个问题想清楚,协议选择就八九不离十了。