章节摘要:推演室的第一条纪律是先立敌手再谈胜负。本章回答三个问题:学术界用哪两个模型刻画敌手——符号世界的 Dolev-Yao 与计算世界的概率多项式时间敌手,各自把敌手"具体化"到什么程度;拿到一个真实系统怎么把威胁落成清单——本章给一张可操作的四象限推演清单;安全目标怎么从"我们很安全"写成"敌手在某某能力下无法让某某命题成立"的可证明命题。读完你能为任何系统立起一份自洽的敌手档案,并给安全目标配上可检验的表述。
读完本章,你应当能够:
本章浓缩成一句话:**安全模型的本质是一份精确的"让步条款"——我们向敌手让渡哪些能力、保留哪些假设,然后在这个沙盘里证明协议仍然守住目标。**让步越多、证明仍成立,结论越可信;模型含糊,等于把谈判桌掀了。
三节是"模型 → 方法 → 语言"的递进:2.1 给出理论上的敌手画像,2.2 把画像落到具体系统的推演方法上,2.3 把推演的结论升格为形式语言。倒过来读不通:没有敌手画像,清单里的"能力"一栏只能拍脑袋;没有命题语言,清单的结论只能是感想而非可验证的判断。
敌手画像(2.1) ──提供能力坐标系──> 推演清单(2.2) ──升格为──> 安全命题(2.3) │ │ │ 理论沙盘的边界 工程落地的动作 可证明/可验证的语言

立敌手这一步有一批高频错误,进入三节之前先摆上桌。每种误设的共同点是:模型没有错到一眼假,但它悄悄替敌手减了负,后续一切"评审通过"都建立在沙盘放水上。
| 常见误设 | 悄悄让步了什么 | 现实里的报账方式 |
|---|---|---|
| "内网是可信的" | 删掉了横向移动能力 | 一台失守的内网机器横扫全网 |
| "第三方永远在线且诚实" | 信任假设没有失效分支 | 第三方被接管,全体用户陪葬 |
| "随机数由系统保证" | 随机性假设藏进实现层 | 弱随机导致密钥可预测 |
| "用户不会被骗" | 把钓鱼排除在模型外 | 找回流程成为首选突破口 |
| "攻击者算力有限" | 偷换"有限"的参照系 | 云算力让离线爆破变成在线成本 |
对照本章三节:2.1 教你把能力写实(误设多数死于能力栏含糊),2.2 教你把入口列全(误设常是入口漏列的另一种说法),2.3 教你把假设写进命题(写进命题的假设才会被复审)。建模时拿这张表自查,比事后争论"当初怎么想的"便宜得多。
前置是第 1 章的四要素拆解法——本章所有动作都是在给"信任假设"一栏做体检。往后看:2.3 节的命题模板在第 3 章用来给名案"验尸"(每个案例都是某个命题被证伪),在第 5 章直接翻译成 BAN 逻辑的推理规则与 ProVerif 的查询语句;2.2 节的清单方法论在 6.3 节部署守则里会退化成一份检查表。敌手画像这一课没有捷径,唯一的练习方式是给身边的系统反复立档。