2、身份认证基础理论:什么是身份认证、认证三要素(主体、凭证、客体)、认证与授权的区别

好,咱们正式开始聊身份认证。说实话,我见过不少刚入行的工程师,一上来就撸代码搞加密、搞证书,结果连最基本的「认证」和「授权」都分不清。有一次我在客户现场排查一个边缘网关的权限漏洞,折腾了两天,最后发现是开发把登录校验和权限校验写在了同一个函数里——嗯,这就是基础没打牢。

这一节,咱们就把地基夯实。搞懂了这些,后面讲证书、讲TLS握手、讲双向认证,你才能知道每一步到底在解决什么问题。

2.1 什么是身份认证

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

你想想看,你每天打开手机,刷脸解锁——那就是在向手机证明「我是机主」。你登录公司VPN,输入用户名和动态口令——那就是在向公司网络证明「我是合法员工」。

在物联网场景里,身份认证的对象不一定是人。它可能是一个温度传感器、一个PLC控制器、或者一个边缘网关。设备之间互相不认识,第一次见面就得先亮明身份。我做过一个智慧工厂的项目,现场有上千个传感器,每个传感器上线第一件事就是向边缘网关发起认证请求。如果这一步出了问题,后面的数据采集、指令下发全都会乱套。

核心定义: 身份认证是确认某个主体(Subject)是否就是它所声称的那个实体的过程。它解决的是「信任建立」的问题。

2.2 认证三要素:主体、凭证、客体

搞清楚了认证是干什么的,咱们再拆开看看认证这件事由哪几部分组成。我习惯用一个公式来记:

认证 = 主体 + 凭证 → 客体验证

三个要素,一个都不能少。咱们一个一个说。

2.2.1 主体(Subject)

主体就是那个想要证明「我是我」的家伙。它可以是一个人、一个设备、一个服务进程、甚至是一段代码。

  • 人:比如运维工程师、现场操作员
  • 设备:比如边缘网关、摄像头、智能电表
  • 服务:比如云端的设备管理后台、本地的数据采集服务

在边缘网关的场景里,主体通常是「设备」或「服务」。我记得有一次调试一个网关,它向云端发起认证时,主体标识用的是MAC地址。结果网关换了网口,MAC变了,云端直接不认——这就是主体标识设计没考虑周全。

2.2.2 凭证(Credential)

凭证是主体用来证明自己身份的东西。你可以把它理解成「证据」。光说「我是张三」没用,你得拿出身份证。

常见的凭证类型有:

凭证类型 举例 典型场景
你知道的 密码、PIN码 Web登录、设备本地控制台
你拥有的 智能卡、硬件密钥、手机令牌 VPN接入、U盾
你是什么 指纹、人脸、虹膜 手机解锁、门禁系统
设备特征 数字证书、预共享密钥(PSK) TLS双向认证、Zigbee入网

在边缘网关里,最常用的凭证是数字证书和预共享密钥。密码?说实话,在无人值守的现场设备上用密码,风险太大了。我曾经遇到过客户把网关的SSH密码写在设备外壳上——嗯,那基本等于没锁门。

2.2.3 客体(Object)

客体就是认证请求的接收方,也就是负责验证凭证的那一方。在物联网架构里,客体通常是:

  • 认证服务器:比如RADIUS服务器、证书颁发机构(CA)
  • 边缘网关本身:当设备向网关发起认证时,网关就是客体
  • 云平台:当网关向云端发起认证时,云端就是客体

客体手里有一把「尺子」,用来量主体的凭证合不合格。这把尺子可能是密码哈希、CA根证书、或者预共享密钥列表。

一个小技巧: 在设计认证流程时,我习惯先画清楚「谁是主体、谁是客体、用什么凭证」。这三样定下来,认证协议选型就完成了一半。

2.3 认证与授权的区别

这个问题,我面试的时候几乎必问。结果十个人里有六七个答不清楚。咱们用一句话说透:

认证解决「你是谁」,授权解决「你能干什么」。

举个例子:你拿着工牌进公司大门,保安核对照片——这是认证。进了大门,你只能进办公区,进不了机房——这是授权。

再回到边缘网关的场景:

  • 一个温度传感器向网关发起连接,网关验证它的数字证书是否由受信任的CA签发——这是认证。
  • 认证通过后,网关检查这个传感器是否有权限修改网关的配置参数——这是授权。通常,传感器只能上报数据,不能改配置。

我见过一个真实的案例:某厂商的智能电表,认证流程做得挺扎实,但授权逻辑写得很随意。电表认证通过后,居然能通过同一个MQTT主题下发指令给其他电表。结果被安全研究员利用,远程控制了整个小区的电表——这就是认证做得好、授权没跟上的典型翻车。

避坑指南: 千万不要把认证和授权混在一个模块里处理。我曾经接手过一个项目,认证通过后直接把用户角色信息塞进JWT,然后所有接口都只校验JWT有没有过期,压根没做二次授权校验。结果一个普通运维账号,因为JWT里被篡改了角色字段,直接拿到了管理员权限。记住:认证通过不代表授权通过,这两步必须分开、必须独立校验。

为了让你更直观地理解,我画了一张图,把认证和授权的流程放在一起对比:

认证 vs 授权 流程对比 主体(设备/用户) 提交凭证(证书/密码/令牌) 客体验证凭证有效性 认证通过 → 建立信任 已认证的主体 发起资源访问请求 检查权限策略(ACL/RBAC) 授权通过 → 允许操作 关键区别:认证在访问之前,授权在认证之后;认证只做一次,授权每次操作都要检查

2.4 为什么在边缘网关场景里,这两者尤其重要?

边缘网关处在网络边界上,一边连着成百上千的现场设备,一边连着云端。它既是认证的客体(验证设备身份),又是认证的主体(向云端证明自己)。

我总结了一个三层认证模型,你可以参考:

  1. 设备 → 网关认证:设备用证书或PSK向网关证明身份。这一步如果漏了,任何设备都能随意接入网关,后果不堪设想。
  2. 网关 → 云端认证:网关用设备证书或注册凭证向云平台证明身份。这一步保证只有合法的网关才能接入云。
  3. 用户 → 网关认证:运维人员通过Web界面或CLI登录网关。这一步通常用用户名+密码或双因素认证。

每一层认证通过后,紧接着就是授权。设备能读哪些数据、能写哪些寄存器、用户能执行哪些命令——这些都得靠授权策略来管。

我的建议: 在设计边缘网关的身份认证方案时,先把三要素列出来。比如「设备(主体)使用X.509证书(凭证)向网关(客体)发起认证」。三要素清晰了,协议选型(TLS、PSK、OAuth2.0)自然就水到渠成。

好了,这一节的内容就这些。认证三要素和认证授权的区别,是后面所有章节的基石。你把这个搞透了,后面讲证书链验证、讲双向握手、讲会话管理,你都会觉得顺理成章。