O3.18.4Threat model first设计
脱离威胁模型谈论安全与可用性的平衡没有意义
别名: 威胁建模 · threat modeling · attacker model
概念解释
「要在安全与可用性之间取得平衡」这句话,脱离威胁模型就是空谈:不知道防谁、防什么攻击、攻击者的能力与动机,就无法判断一分摩擦买到了什么。威胁模型(threat model)——对防谁、防什么、损失是什么的显式陈述——是取舍的坐标系;没有它,「更安全」与「更可用」的争论没有裁判。
机制
平衡问题的结构是:摩擦即时、确定、落在用户身上;安全收益延迟、概率、难以观察。判断「这分摩擦值不值」需要三个数:它降低了哪个攻击的成功率、那个攻击发生的概率、成功的损失——三项全部来自威胁模型。同一个机制在不同模型下结论相反:自动锁屏对「办公室同事窥屏」模型是必要摩擦,对「远程网络攻击」模型毫无作用;关掉它在前者是拆防线,在后者是可用性优化。多数安全争论空转的原因正是双方用着各自隐含的威胁模型而不自知。模型显式化之后,大部分「平衡」问题收敛成「这个模型下值不值」的可计算问题:模型变,答案就变;模型不变,答案不该漂移。
边界
威胁模型不是一次成型:攻击面随产品演化,模型要跟着重审——昨天不防的 AI 语音克隆,今天是合规的攻击路径。模型本身可能错:低估攻击者能力、遗漏内部人员,而「模型错了」通常只能在事故后回看确认,所以关键决策要留存模型假设记录以便复盘。消费产品的攻击者分散且不可枚举,写不出干净模型时用「攻击性价比」近似:攻击者挑最便宜的路径,摩擦该加在最便宜的路径上。
怎么落地
- 每个安全决策文档固定四行:防谁、防什么、损失多大、为什么这点摩擦配得上;第四行写不出的决策暂停。
- 把「威胁模型更新」列进产品评审固定议题:新功能上线前问「它改变了哪条攻击路径的成本」。
- 事故复盘对照决策文档的模型假设:哪条错了、当时为什么信它,输出直接修订威胁模型模板。
- 验证:抽 Quarterly 安全决策,检查四行是否齐全且攻击路径仍与当前产品形态一致——模型过期是比模型缺失更常见的状态。