TARA 方法论框架:六大步骤全景图
做 TARA 分析这么多年,我最大的感受是:方法论框架就是你的作战地图。没有这张图,你很容易在威胁分析的细节里迷失方向。
ISO 21434 把 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 给出了四种处置方式:
- 规避(Avoid):彻底消除该风险,比如移除某个功能
- 降低(Reduce):通过安全措施降低风险等级
- 转移(Transfer):把风险转给第三方,比如买保险
- 接受(Accept):风险在可接受范围内,不做处理
我的经验:很多团队倾向于「所有风险都要降低到可接受」。但现实是,项目资源有限。我建议把风险矩阵和项目里程碑对齐:高风险必须在 SOP 前关闭,中风险可以在 OTA 升级中修复,低风险可以记录在风险登记册中持续跟踪。
嗯,这六个步骤看起来是线性的,但实际做起来是迭代的。你会发现,在攻击路径分析时发现的新威胁,会让你回头重新评估影响等级。这就是 TARA 的「收敛」过程——每轮迭代,你对系统的安全边界就多一分把握。