2. 车载OTA安全威胁建模
车载OTA的安全治理不能停留在“加个签名”的层面。要真正把风险管住,必须先把攻击者可能走的路径拆开来看。STRIDE 是一套成熟的威胁分类框架,它把威胁分为六类:Spoofing(仿冒)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。本节把密钥窃取、签名伪造、回滚攻击、中间人攻击这四类典型威胁,映射到 STRIDE 分类上,再用攻击树把“攻击者要达到什么目标、需要哪些前置条件、走哪条路径”结构化地表达出来。
四类威胁的STRIDE映射
先看映射关系,这决定了后续防护措施落在哪个安全属性上。
| 威胁 | STRIDE分类 | 被破坏的安全属性 | 典型入口 |
|---|---|---|---|
| 密钥窃取 | Information Disclosure + Elevation of Privilege | 机密性、授权边界 | HSM/SE调试口、密钥明文落盘、日志泄露 |
| 签名伪造 | Spoofing + Tampering | 完整性、真实性 | 弱算法、密钥泄露后重签、签名校验绕过 |
| 回滚攻击 | Tampering + Repudiation | 完整性、版本可信 | 旧版本重放、版本号可写、防回滚计数器缺失 |
| 中间人攻击 | Spoofing + Tampering + Information Disclosure | 真实性、完整性、机密性 | 伪基站、DNS劫持、TLS降级、证书校验缺失 |
可以看到,四类威胁并非彼此孤立。密钥窃取往往是签名伪造的前置条件;中间人攻击如果配合回滚,就能把车端“降级”到一个已知存在漏洞的旧固件。因此威胁建模不能逐个孤立分析,而要看到它们之间的因果链。
攻击树:从攻击者目标反推路径
攻击树以“攻击者最终目标”为根节点,向下分解为子目标,叶子节点是可执行的具体动作。节点之间用 AND/OR 连接:OR 表示任选一条路径即可,AND 表示必须同时满足。下面这张图把四类威胁整合成一棵攻击树,根目标是“让车辆运行未授权或降级固件”。
从图中可以读出几条关键因果链。第一,G1(密钥窃取)是 G2(签名伪造)的 AND 前置条件之一——攻击者拿到密钥后,才能对恶意固件重新签名,使其通过车端校验。第二,G4(中间人攻击)用虚线连到 G2/G3,表示它既可以独立替换固件包,也可以配合回滚攻击把车端降级。第三,G3 的两个叶子节点中,“篡改防回滚计数器”一旦成立,攻击者就能让车端误以为旧版本是“新版本”,这是回滚攻击最隐蔽的路径。
攻击树到防护措施的映射
攻击树的价值在于:每个叶子节点都对应一个可落地的防护点。把叶子节点逐条转成控制措施,就得到下面的对照关系。
| 叶子节点(攻击动作) | 对应防护措施 | 验证方式 |
|---|---|---|
| 调试口/JTAG读取密钥 | 量产阶段熔断调试口,密钥仅存于HSM/SE内部 | 尝试连接调试口应失败;密钥不可导出 |
| 日志/内存转储提取明文密钥 | 禁止密钥进入日志;内存中密钥加密存储 | 抓取日志与内存镜像,搜索密钥特征串 |
| 利用G1密钥重签恶意固件 | 签名密钥分级,固件签名密钥与诊断密钥隔离 | 用诊断密钥签固件应被拒绝 |
| 绕过签名校验 | 使用Ed25519/ECDSA-P256,校验逻辑不可跳过 | 篡改固件1字节后校验必须失败 |
| 重放旧版固件 | 版本号单调递增,写入受签名保护 | 刷入低版本应被拒绝并记录事件 |
| 篡改防回滚计数器 | 计数器存于OTP/eFuse或HSM单调计数器 | 尝试写计数器应失败或触发告警 |
| 伪基站/DNS劫持 | OTA通道强制TLS 1.2+,证书固定(pinning) | 使用自签证书代理应连接失败 |
| TLS降级/证书校验缺失 | 禁用弱套件,校验服务端证书链与主机名 | 降级到TLS 1.0应被拒绝 |
| 替换固件包 | 端到端签名校验,下载后先验签再安装 | 替换包内容后安装应失败 |
建模时的实操要点
做 STRIDE 分析和攻击树构建时,有几个容易踩的坑。第一,不要只画“攻击者→车辆”的单层图,要把前置条件(AND 节点)显式画出来,否则会漏掉“密钥窃取+签名伪造”这类组合攻击。第二,攻击树的叶子必须是可执行动作,不能写成“攻击者很厉害”这种无法验证的表述。第三,每个叶子都要能对应到一条可测试的验证用例,否则防护措施就是纸面文章。
把四类威胁放进同一棵攻击树后,可以看到它们共享若干关键节点:密钥、签名校验逻辑、版本控制、传输通道。治理的重点就是把这四个节点做扎实——密钥不出安全边界、签名算法与校验逻辑不可绕过、版本单调且防篡改、传输通道强制加密与证书固定。这四条守住了,攻击树上的大部分路径就会被切断。