《企业级物联网安全部署实战》
第3章 安全威胁建模
3. 安全威胁建模:STRIDE威胁模型、攻击树分析、物联网场景下的威胁建模实践
在物联网(IoT)系统中,安全威胁建模是识别潜在风险、设计防御措施的核心环节。本节将系统讲解STRIDE威胁模型、攻击树分析,并结合物联网场景进行实战演练,帮助您构建从理论到落地的安全防护体系。
3.1 STRIDE威胁模型
STRIDE是由微软提出的经典威胁分类模型,涵盖六类安全威胁:Spoofing(欺骗)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。
| 威胁类型 | 描述 | 物联网场景示例 |
|---|---|---|
| Spoofing | 冒充合法用户或设备 | 伪造传感器身份发送虚假数据 |
| Tampering | 篡改数据或代码 | 修改固件更新包植入后门 |
| Repudiation | 否认操作行为 | 攻击者否认曾发送恶意指令 |
| Information Disclosure | 敏感信息泄露 | 未加密的MQTT消息被窃听 |
| Denial of Service | 拒绝服务 | 大量虚假连接耗尽网关资源 |
| Elevation of Privilege | 权限提升 | 从普通用户提权至管理员控制台 |
图:STRIDE六类威胁在物联网中的映射关系
3.2 攻击树分析
攻击树(Attack Tree)是一种以树形结构描述攻击路径的方法。根节点代表攻击目标,子节点表示达成目标所需的子步骤,叶节点为具体攻击动作。通过AND/OR逻辑组合,可系统化分析攻击可能性。
攻击树构建步骤
- 定义根目标:如“获取智能门锁控制权”
- 分解子目标:物理破解 / 网络攻击 / 社会工程
- 细化叶节点:如“暴力破解PIN码”、“重放攻击”
- 标注AND/OR:OR表示任意路径成功即达成目标
- 评估风险:为叶节点赋值(难度、成本、检测率)
图:智能门锁攻击树(OR逻辑组合)
3.3 物联网场景下的威胁建模实践
以智能家居温控系统为例,展示完整的威胁建模流程:
实践步骤
- 步骤1:系统分解 - 识别组件:温度传感器、云平台、手机App、智能网关
- 步骤2:数据流图 - 绘制数据流向:传感器→网关→云→App
- 步骤3:应用STRIDE - 对每个数据流节点分析六类威胁
- 步骤4:构建攻击树 - 针对高风险目标(如“篡改温度数据”)细化攻击路径
- 步骤5:风险评级与缓解 - 制定安全控制措施
图:温控系统数据流与STRIDE威胁映射
威胁缓解策略示例
| 威胁类型 | 缓解措施 | 技术实现 |
|---|---|---|
| Spoofing | 设备身份认证 | X.509证书 + TLS双向认证 |
| Tampering | 数据完整性校验 | HMAC签名 / 区块链哈希链 |
| Repudiation | 审计日志 | 不可篡改的分布式账本 |
| Information Disclosure | 加密传输与存储 | AES-256 + TLS 1.3 |
| DoS | 流量整形与限流 | API网关 + 速率限制 |
| Elevation of Privilege | 最小权限原则 | RBAC + 定期权限审计 |
代码示例:威胁建模自动化脚本(Python伪代码)
# 威胁建模自动化分析示例
class ThreatModel:
def __init__(self, system_name):
self.system = system_name
self.threats = []
def add_threat(self, threat_type, component, risk_level):
self.threats.append({
"type": threat_type,
"component": component,
"risk": risk_level
})
def analyze(self):
# 基于STRIDE规则自动匹配缓解措施
mitigation_map = {
"Spoofing": "启用双向TLS认证",
"Tampering": "添加数据签名校验",
"DoS": "部署速率限制中间件"
}
for t in self.threats:
if t["type"] in mitigation_map:
print(f"[{t['component']}] 建议: {mitigation_map[t['type']]}")
# 实例化:智能温控系统
model = ThreatModel("SmartThermostat")
model.add_threat("Spoofing", "温度传感器", "高")
model.add_threat("Tampering", "云API", "中")
model.analyze()
实践建议: 在物联网项目中,建议将威胁建模纳入DevSecOps流程,每次迭代前进行轻量级STRIDE分析,并维护攻击树库以应对新型攻击手法。
专注课程资料整理