TARA 方法论框架:六大步骤全景图

做 TARA 分析这么多年,我最大的感受是:方法论框架就是你的作战地图。没有这张图,你很容易在威胁分析的细节里迷失方向。

ISO 21434 把 TARA 拆成了六个核心步骤。我习惯把它们分成两组:前三个是「看清问题」,后三个是「做出决策」。你想想看,如果连资产和威胁都没搞清楚,后面的风险判定就是空中楼阁。

核心观点:TARA 不是一次性的「交作业」,而是一个迭代收敛的过程。每轮分析都会让你对系统的安全边界理解得更深。

TARA 六大步骤流程 ① 资产识别 ② 威胁场景分析 ③ 影响评级 ④ 攻击路径分析 ⑤ 风险判定 ⑥ 风险处置决策 分析阶段:看清问题 分析阶段:看清问题 分析阶段:看清问题 决策阶段:做出决策 决策阶段:做出决策 决策阶段:做出决策 迭代收敛 💡 实际项目中,步骤③和④经常并行迭代:发现新的攻击路径后,可能需要重新评估影响等级。

① 资产识别:搞清楚你要保护什么

资产识别是 TARA 的起点。说白了,你得先知道「什么东西丢了会心疼」。

我一般把资产分成两类:

  • 功能资产:比如制动功能、转向功能、ADAS 感知功能。这些是车辆的核心能力。
  • 数据资产:比如用户隐私数据、车辆 VIN、安全密钥、诊断日志。

我的习惯:在项目启动会上,拉着系统工程师、功能安全工程师和产品经理一起过一遍系统架构图。每个人对「资产」的理解都不一样,早点对齐能省很多返工。

② 威胁场景分析:想象攻击者会怎么搞破坏

这一步需要你站在攻击者的角度思考。嗯,说白了就是「角色扮演」。

常用的方法是 STRIDE 模型:

威胁类型 含义 汽车场景举例
Spoofing(欺骗) 冒充合法实体 伪造 CAN 报文让刹车误动作
Tampering(篡改) 非法修改数据或代码 刷写非官方固件提升动力
Repudiation(抵赖) 否认做过某操作 事故后否认发送过加速指令
Information Disclosure(信息泄露) 敏感数据被窃取 通过 OBD 接口读取用户行程数据
Denial of Service(拒绝服务) 系统资源被耗尽 向车载网关发送大量无效报文导致网络瘫痪
Elevation of Privilege(权限提升) 获得非授权权限 从娱乐系统提权到域控制器

我在项目中遇到过最典型的案例:一个 OTA 升级模块,攻击者通过伪造升级包实现了远程代码执行。当时我们只考虑了「升级包被篡改」的场景,却忽略了「攻击者可以伪造整个升级流程」——这就是 STRIDE 中 Spoofing 和 Tampering 的组合攻击。

③ 影响评级:出了事有多严重?

影响评级关注的是 后果的严重程度。ISO 21434 给出了四个维度:

  • S(Safety):对人员安全的伤害程度
  • F(Financial):经济损失
  • P(Privacy):隐私泄露影响
  • O(Operational):车辆操作受影响程度

每个维度分 0-3 级,取最高值作为最终影响等级。举个例子:

实际案例:一个远程解锁功能被攻破。S=3(车辆被盗可能引发碰撞),F=2(车辆价值损失),P=1(位置信息泄露),O=2(车辆无法正常使用)。最终影响等级取 max(3,2,1,2) = 3(严重)。

④ 攻击路径分析:攻击者到底怎么进来?

这一步是很多团队容易「想当然」的地方。你想想看,如果只凭脑补攻击路径,很容易漏掉关键入口。

我建议用 攻击树(Attack Tree) 来系统化分析:

攻击目标:远程控制车辆制动
├── 1. 通过 T-Box 远程入侵
│   ├── 1.1 利用 T-Box 固件漏洞
│   ├── 1.2 破解 T-Box 与云端的通信加密
│   └── 1.3 通过蜂窝网络中间人攻击
├── 2. 通过 OBD 接口物理入侵
│   ├── 2.1 物理访问 OBD 端口
│   └── 2.2 通过诊断协议刷写恶意固件
└── 3. 通过蓝牙短距离攻击
    ├── 3.1 破解蓝牙配对密钥
    └── 3.2 利用蓝牙协议栈漏洞

避坑指南:我曾经在一个项目中只分析了「远程攻击路径」,结果测试团队通过物理接触 OBD 接口成功入侵了车辆。从那以后,我要求每个攻击路径分析必须同时覆盖远程和物理两种入口。

⑤ 风险判定:把威胁排个优先级

风险判定就是把 攻击可行性 和 影响等级 结合起来,算出一个风险值。

攻击可行性通常考虑:

  • 攻击所需时间
  • 攻击者所需专业知识
  • 攻击所需设备成本
  • 攻击被发现的可能性

风险矩阵长这样:

影响等级 \ 攻击可行性 低 (1) 中 (2) 高 (3)
严重 (3) 中风险 高风险 极高风险
中等 (2) 低风险 中风险 高风险
轻微 (1) 可忽略 低风险 中风险

⑥ 风险处置决策:到底要不要修?

最后一步,也是最考验工程判断力的一步。ISO 21434 给出了四种处置方式:

  1. 规避(Avoid):彻底消除该风险,比如移除某个功能
  2. 降低(Reduce):通过安全措施降低风险等级
  3. 转移(Transfer):把风险转给第三方,比如买保险
  4. 接受(Accept):风险在可接受范围内,不做处理

我的经验:很多团队倾向于「所有风险都要降低到可接受」。但现实是,项目资源有限。我建议把风险矩阵和项目里程碑对齐:高风险必须在 SOP 前关闭,中风险可以在 OTA 升级中修复,低风险可以记录在风险登记册中持续跟踪。

嗯,这六个步骤看起来是线性的,但实际做起来是迭代的。你会发现,在攻击路径分析时发现的新威胁,会让你回头重新评估影响等级。这就是 TARA 的「收敛」过程——每轮迭代,你对系统的安全边界就多一分把握。