2、身份认证基础理论:什么是身份认证、认证三要素(主体、凭证、客体)、认证与授权的区别
好,咱们正式开始聊身份认证。说实话,我见过不少刚入行的工程师,一上来就撸代码搞加密、搞证书,结果连最基本的「认证」和「授权」都分不清。有一次我在客户现场排查一个边缘网关的权限漏洞,折腾了两天,最后发现是开发把登录校验和权限校验写在了同一个函数里——嗯,这就是基础没打牢。
这一节,咱们就把地基夯实。搞懂了这些,后面讲证书、讲TLS握手、讲双向认证,你才能知道每一步到底在解决什么问题。
2.1 什么是身份认证
身份认证,说白了就是回答一个问题:「你是谁?」
你想想看,你每天打开手机,刷脸解锁——那就是在向手机证明「我是机主」。你登录公司VPN,输入用户名和动态口令——那就是在向公司网络证明「我是合法员工」。
在物联网场景里,身份认证的对象不一定是人。它可能是一个温度传感器、一个PLC控制器、或者一个边缘网关。设备之间互相不认识,第一次见面就得先亮明身份。我做过一个智慧工厂的项目,现场有上千个传感器,每个传感器上线第一件事就是向边缘网关发起认证请求。如果这一步出了问题,后面的数据采集、指令下发全都会乱套。
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主题下发指令给其他电表。结果被安全研究员利用,远程控制了整个小区的电表——这就是认证做得好、授权没跟上的典型翻车。
为了让你更直观地理解,我画了一张图,把认证和授权的流程放在一起对比:
2.4 为什么在边缘网关场景里,这两者尤其重要?
边缘网关处在网络边界上,一边连着成百上千的现场设备,一边连着云端。它既是认证的客体(验证设备身份),又是认证的主体(向云端证明自己)。
我总结了一个三层认证模型,你可以参考:
- 设备 → 网关认证:设备用证书或PSK向网关证明身份。这一步如果漏了,任何设备都能随意接入网关,后果不堪设想。
- 网关 → 云端认证:网关用设备证书或注册凭证向云平台证明身份。这一步保证只有合法的网关才能接入云。
- 用户 → 网关认证:运维人员通过Web界面或CLI登录网关。这一步通常用用户名+密码或双因素认证。
每一层认证通过后,紧接着就是授权。设备能读哪些数据、能写哪些寄存器、用户能执行哪些命令——这些都得靠授权策略来管。
好了,这一节的内容就这些。认证三要素和认证授权的区别,是后面所有章节的基石。你把这个搞透了,后面讲证书链验证、讲双向握手、讲会话管理,你都会觉得顺理成章。