4. 设备身份与信任评估
设备身份与信任评估,说白了就是回答三个问题:你是谁?你凭什么说你是你?你现在可信吗?
在零信任架构里,我们默认不信任任何设备。哪怕它已经连上了内网,哪怕它昨天还是可信的。每一次访问请求,都要重新评估。我参与过不少边缘项目,最深的感触是——设备身份搞不定,后面所有的策略都是空中楼阁。
4.1 设备指纹:给设备办张“身份证”
设备指纹,就是收集设备的软硬件特征,生成一个唯一标识。就像人的指纹一样,很难伪造。
我个人习惯把设备指纹分成两类:
- 主动指纹:主动向设备发送探测包,收集响应信息。比如操作系统类型、内核版本、开放端口。
- 被动指纹:监听设备的网络流量,分析其行为特征。比如TCP/IP协议栈的细微差异、HTTP头部的顺序。
在实际项目中,我更推荐被动指纹。为什么?因为主动探测容易被发现,而且有些边缘设备对探测包很敏感,搞不好会宕机。我曾经在一个工控项目里,主动扫描了一台PLC,结果它直接重启了……嗯,从那以后我再也不敢在生产环境乱扫了。
设备指纹的核心要素:
- 硬件特征:MAC地址、CPU序列号、TPM芯片ID
- 软件特征:操作系统版本、内核参数、已安装的补丁列表
- 网络特征:IP地址、DHCP选项、TCP窗口大小
- 行为特征:启动时间、网络流量模式、进程列表
你想想看,如果一台设备声称自己是合法的摄像头,但它的MAC地址是伪造的,操作系统版本也不对,那它大概率有问题。设备指纹就是用来发现这种“李鬼”的。
4.2 证书管理:让设备学会“自证清白”
设备指纹是“你是谁”,证书就是“你凭什么说你是你”。
在零信任架构里,我们通常使用X.509证书来做设备身份认证。每台设备出厂时,都预置一个由CA签发的设备证书。访问资源时,设备必须出示证书,证明自己的身份。
这里有个关键点:证书的私钥必须安全存储。如果私钥泄露了,那证书就是一张废纸。
我建议的做法是:
- 硬件安全模块(HSM)或TPM:把私钥存储在硬件安全芯片里,软件无法直接读取。这是最安全的做法。
- 证书轮换:证书不能永久有效。我一般设置有效期90天,到期自动轮换。这样即使某个证书泄露了,影响范围也有限。
- 证书撤销:一旦发现设备异常,立即吊销其证书。通过OCSP或CRL实时同步到所有策略执行点。
注意:证书管理最容易被忽视的是“证书生命周期”。很多项目只关注签发,不关注轮换和撤销。结果设备被黑了,证书还在有效期内,攻击者拿着证书畅通无阻。我曾经见过一个案例,一台被入侵的摄像头,用它的合法证书在内网横行了三个月才被发现。
证书管理的流程,我画了一张图,你可以看看:
4.3 基于行为的信任评分模型
设备指纹和证书解决了“身份”问题,但没解决“信任”问题。一台设备即使有合法的证书,也可能已经被入侵了。怎么办?看行为。
基于行为的信任评分模型,就是持续监控设备的行为,根据行为动态调整信任分数。分数高了,权限就大;分数低了,权限就收窄甚至直接阻断。
我常用的评分维度包括:
| 维度 | 指标 | 权重 | 说明 |
|---|---|---|---|
| 身份验证 | 证书有效性、指纹匹配度 | 30% | 基础身份验证,一票否决 |
| 行为基线 | 流量模式、访问时间、访问频率 | 25% | 偏离基线越多,分数越低 |
| 安全状态 | 补丁版本、杀毒软件状态、端口开放情况 | 20% | 安全基线检查 |
| 历史记录 | 历史违规次数、异常事件 | 15% | 累犯加重扣分 |
| 上下文 | 地理位置、网络环境、时间 | 10% | 异常上下文触发降权 |
评分模型不是一成不变的。我习惯用加权移动平均来计算实时分数。比如:
# 简化的信任评分计算示例
def calculate_trust_score(device):
score = 0
# 身份验证(一票否决)
if not device.certificate_valid:
return 0
# 行为基线偏离度
behavior_score = 100 - abs(device.current_behavior - device.baseline) * 10
# 安全状态
security_score = 100 if device.patch_updated else 50
# 历史记录
history_score = max(0, 100 - device.violation_count * 20)
# 上下文
context_score = 100 if device.location == device.expected_location else 30
# 加权计算
score = (behavior_score * 0.25 +
security_score * 0.20 +
history_score * 0.15 +
context_score * 0.10)
# 身份验证权重30%已体现在一票否决中
# 实际分数范围0-100
return min(100, max(0, score))
经验之谈:评分模型最怕“冷启动”。新设备刚接入时,没有历史行为数据,基线是空的。我的做法是:新设备先给一个“观察期”分数(比如60分),只允许访问最低权限的资源。等收集到足够的行为数据后,再动态调整。
信任评分模型的核心逻辑,我画了张流程图:
4.4 三者如何协同工作
设备指纹、证书管理、信任评分,这三者不是孤立的。它们是一个完整的闭环:
- 设备指纹做第一道关卡:设备接入时,先验证指纹。指纹不匹配,直接拒绝。
- 证书管理做第二道关卡:指纹匹配后,验证证书。证书无效或已吊销,拒绝。
- 信任评分做持续监控:身份验证通过后,进入持续监控阶段。行为异常,动态调整分数。
我举个例子你就明白了。一台边缘网关接入系统:
- 网关上报设备指纹,系统比对发现MAC地址和TPM序列号都匹配。第一关通过。
- 网关出示X.509证书,系统验证CA签名,确认证书在有效期内。第二关通过。
- 网关开始正常工作。但半小时后,系统发现它开始向一个未知IP发起大量连接,偏离了基线行为。信任分数从85分降到45分。
- 策略引擎立即响应:阻断网关的所有非必要流量,只保留管理通道。同时触发告警,通知安全团队介入。
核心原则:身份是基础,信任是动态的。设备指纹和证书解决“你是谁”,信任评分解决“你现在是否可信”。两者缺一不可。
嗯,这一节的内容就这些。设备身份与信任评估,说白了就是“先验证,再信任,持续监控”。你想想看,如果每个设备接入时都走一遍这个流程,是不是比传统的“一次认证,永久信任”要安全得多?