《企业级物联网安全部署实战》
第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 威胁模型六边形 Spoofing Tampering Repudiation Info Disclosure DoS Elevation IoT

图:STRIDE六类威胁在物联网中的映射关系

3.2 攻击树分析

攻击树(Attack Tree)是一种以树形结构描述攻击路径的方法。根节点代表攻击目标,子节点表示达成目标所需的子步骤,叶节点为具体攻击动作。通过AND/OR逻辑组合,可系统化分析攻击可能性。

攻击树构建步骤

  1. 定义根目标:如“获取智能门锁控制权”
  2. 分解子目标:物理破解 / 网络攻击 / 社会工程
  3. 细化叶节点:如“暴力破解PIN码”、“重放攻击”
  4. 标注AND/OR:OR表示任意路径成功即达成目标
  5. 评估风险:为叶节点赋值(难度、成本、检测率)
攻击树示例:获取智能门锁控制权 获取门锁控制权 物理破解 (OR) 网络攻击 (OR) 撬锁 暴力破解PIN 重放攻击 固件漏洞利用 OR OR OR

图:智能门锁攻击树(OR逻辑组合)

3.3 物联网场景下的威胁建模实践

以智能家居温控系统为例,展示完整的威胁建模流程:

实践步骤

  • 步骤1:系统分解 - 识别组件:温度传感器、云平台、手机App、智能网关
  • 步骤2:数据流图 - 绘制数据流向:传感器→网关→云→App
  • 步骤3:应用STRIDE - 对每个数据流节点分析六类威胁
  • 步骤4:构建攻击树 - 针对高风险目标(如“篡改温度数据”)细化攻击路径
  • 步骤5:风险评级与缓解 - 制定安全控制措施
物联网温控系统威胁建模数据流 温度传感器 智能网关 云平台 手机App Spoofing Tampering DoS STRIDE威胁映射 • 传感器→网关:Spoofing(伪造传感器ID) • 网关→云:Tampering(篡改温度读数) • 云→App:Information Disclosure(泄露用户设置) • 全局:DoS(大量请求压垮网关)

图:温控系统数据流与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分析,并维护攻击树库以应对新型攻击手法。

专注课程资料整理