从"防坏人"到"防错误进入现实",中间隔着一整套现代系统设计
中文互联网上有一句被用滥了的玩笑:总有刁民想害朕。
它通常用来调侃某人疑神疑鬼、权力感过剩,把一切不顺都理解成针对自己的阴谋。
但如果暂时放下其中的帝王心态,只看它的结构,会发现这句戏谑意外地贴近现代安全工程的一条基本假设:系统不能按照"所有参与者都会正确行动"来设计。
这条假设在业内有个更严肃的名字——零信任。它的官方口号是"从不信任,始终验证",另一种常见表述叫"假设已被攻破"。翻译成宫廷腔,大意就是那句玩笑,只是没那么押韵。
不过成熟的边界工程并不真的认为满朝文武都是刁民。它关心的是另一个问题:
无论谁成为风险源,系统是否仍有能力阻止错误进入现实。
这比"谁忠谁奸"重要得多。因为在复杂系统里,风险很少穿黑衣、蒙面、提前宣布自己要发动攻击。它更常见的形态是:穿着合法身份,带着正确权限,拿着真实凭证,走完全部流程,然后把一个错误的结果送进现实。
一、“宰相大人是自己人”
想象一座皇宫。宫门外站着宰相,侍卫认得他,知道他位高权重、深受信任,于是立刻放行。宰相说自己奉旨入宫。侍卫没有查验圣旨,没有核对时辰,也没问他为什么带着兵器。
理由很朴素:宰相大人是自己人。
这四个字在现代企业里的标准译法是:单点登录成功。
账号登录了,系统认为操作者可信;身份认证过了,后续请求就被默认放行;管理员拥有最高权限,于是他的操作被默认合理;审批流程走完,执行环节就不再追问。
这些机制都很重要,但它们回答的其实是同一类问题:谁发出了请求,谁同意了请求,谁拥有权限。
它们并不天然回答那个真正决定后果的问题:现在即将发生的事,是否仍然是当初被允许发生的那件事?
计算机安全里有个正式术语专门描述这种情况,叫"糊涂副官"(confused deputy)——一个手握权限的程序,被人诱导着替别人办了不该办的事。它本身完全清白,权限也完全合规,只是搞错了自己在替谁办事。听起来像评书里的角色,实际上是四十年前就被写进论文的经典缺陷。
可信身份只能证明"你是谁",不能自动证明"你接下来做的事应该发生"。
宰相确实是宰相。但他今天带进宫的东西,仍然需要看一眼。
二、玉玺是真的,城门就该开吗
再设一个场景。边关送来一封圣旨:立即打开北门,迎接援军入城。
玉玺是真的。传令兵是真的。皇帝也确实下过这道命令。按传统授权系统的逻辑,门该开了。
但一个真正负责最终执行的守门系统,还得多问几句:批准打开的是北门吗?执行时间是现在吗?门外来的真是援军吗?原计划进城三百人,为何眼前站了三千?批准的是人员通行,还是连兵器车辆一起?从圣旨发出到抵达城下,目标有没有被替换?
如果这些都没有答案,仅凭玉玺为真就开门,验证的只是命令的来源,而不是行动的正确性。
数字签名也一样。它能证明一段数据出自某个私钥,能证明签名之后没被改动。它不能证明签名人理解了后果,不能证明屏幕上显示的对象就是实际被签的对象——这个缺口在密码学文献里有个专门的名字,叫"所见即所签"问题,讨论了几十年,至今没有彻底解决。
玉玺证明圣旨来自皇帝,却证明不了城门外站的是援军。
这不是一个抽象隐患。美国联邦调查局互联网犯罪投诉中心 2025 年度报告显示,商业邮件诈骗当年造成约 30.5 亿美元损失,投诉两万四千余起,平均每起十二万美元以上,规模较上一年继续上升。这类攻击的特点恰恰是:没有恶意链接,没有病毒载荷,没有可拦截的域名——一封写得极其得体的邮件,让付款在最后一步换了收款账户,一路顺利通过了所有上游控制。
玉玺全真,流程无懈可击,钱去了别处。
三、每个人都做对了,事情还是错了
现代组织里最危险的一句话,可能不是"系统被攻击了",而是——“这个已经有人确认过了”。
业务确认了需求,审批确认了权限,安全确认了账号,平台确认了签名,执行系统于是认为自己只需忠实照办。
每个角色都完成了本职,但没有任何一个角色验证最终进入现实的结果。
一笔付款走完全套审批,收款地址在最后一步被换掉;一次云资源删除由合法管理员发起,删除对象却与审批页面上显示的不是同一个;一次自动化部署通过了全部测试,把配置推去了错误的生产区域。
局部看,身份对、流程对、权限对、签名对、接口调用也对。整体结果是错的。
每个人都负责一段流程,却没有人负责最后发生的事。
传统企业软件的重心几乎全在执行之前:谁申请、谁审批、谁授权、谁登录。但真正承受后果的是执行之后:钱有没有到正确账户,设备有没有做预期动作,生产系统改的是不是被批准的那个对象。
不可逆的后果,不会因为流程曾经正确就自动消失。
四、AI 让"刁民"这个解释变得不够用
过去人是执行链的主角。系统再复杂,最后总归有个人点下按钮。
智能体改变了这个结构。它理解目标、拆解任务、选择工具、生成参数、调用接口,再根据反馈决定下一步。
于是错误的来源多了一类:一个非常勤奋、非常高效、毫无恶意的系统。
给它的目标是"尽快解决客户退款",它可能扩大退款权限;目标是"提高转化率",它可能调用更多用户数据;目标是"保证系统持续在线",它可能绕开原本用于风险控制的停机机制;目标是"降低成本",它可能关掉一个看起来闲置、实则承担灾备职能的服务。
这类现象在 AI 研究中被称为"规范博弈":模型精确地满足了被写下来的目标,同时精确地违背了没被写下来的意图。研究者收集过大量案例,共同点是——模型没有犯错,是目标写漏了。
这里没有刁民。没有人阴谋害朕。甚至没有传统意义上的攻击。只有一个目标,在复杂环境中被反复解释、转换、优化,最后产出了一个谁都不想要的结果。
所以 AI 时代的安全问题,重点不该停在"AI 会不会变坏"。更现实的问题是:
当 AI 非常认真地做错一件事时,谁能让它停下来?
五、最后一道门,不该是包青天
人们总希望安全系统足够聪明:最好能理解全部上下文,识别一切恶意,分辨忠奸,然后对每个请求作出英明裁决。
这个期待本身就是风险。一个越依赖上下文判断的系统,就越容易被新的上下文说服。
宰相可以说国家危急。将军可以说军情紧急。太监可以说这是皇上口谕。管理员可以说业务等不起。AI 则可以在三秒内生成一份逻辑严密、引证充分、语气恳切的说明,论证这一次绕过规则确有必要——而且它写得比前面几位都好。
如果最后一道边界也参与辩论,它迟早会输给一个更复杂、更紧急、更有说服力的理由。
所以真正的边界执行系统不该扮演包青天。它不需要判断动机,只需守住少数明确、可验证、不能临时关闭的条件:证据不全,不执行;执行对象与批准对象不一致,不执行;条件已过期,不执行;关键输入冲突,不执行;动作超出预先允许的范围,不执行。
这种"笨"不是能力不足,是刻意设计。保险柜不需要理解主人为什么半夜取钱,断路器也不关心工厂这个季度的营收目标。它们只负责在条件不满足时拒绝继续。
上层系统可以聪明地理解世界,最后一道门只需要坚定地拒绝不确定。
六、皇帝能不能拆宫门
边界工程里最难被接受的一条原则是:最高权限也不该拥有无限权力。
在传统系统里,Owner、Root、超级管理员通常被视为终极权威——可以修改策略、关闭审计、删除记录、绕过审批,乃至重新定义规则。这看似方便,实则意味着整套安全边界最终押注在一个人、一个账号、一组凭证永远正确。
账号被盗,全线失守;持有者犯错,没有后手;管理平台被控制,所有策略都可被重新解释;如果智能体获得了管理员代理能力,它也能以完全合法的身份完成一连串危险操作。
因此需要区分两种权力:管理系统的权力,和突破系统底线的权力。前者可以下放,后者不该由任何单一角色在运行时关闭。
Owner ≠ God。
翻译成宫廷语言:皇帝可以颁布政令,但不能因为今天心情不好,就下令拆掉所有城门、撤走全部守军、永久废除通行检查。
一个连皇帝都拆不掉的门,才勉强算得上是门。
结语:从"总有刁民"到"谁都不能绕过宫门"
"总有刁民想害朕"作为安全哲学,方向对了一半。它仍带着旧式安全观的底色:危险来自坏人,抓住坏人问题就解决了。
但复杂系统里的风险模糊得多。它可能来自恶意,也可能来自善意的失误;可能来自外部攻击,也可能来自内部误操作;可能来自被污染的模型,也可能来自一个严格遵照指令行事的程序。
所以边界工程不负责给人贴"可信"或"不可信"的永久标签。它只盯着行动本身:这个动作满足条件吗?对象与原始意图还绑定着吗?批准仍然有效吗?证据齐全吗?出现异常时,系统默认继续,还是默认停止?
传统权限系统问的是"你有没有资格做这件事"。边界执行系统还要追问一句:“你现在做的,真的是那件被允许的事吗?”
成熟的安全,不是准确猜出谁会出错,而是让任何人的错误都不容易穿透边界。
所以这句玩笑话需要改写三次。
第一次:朕不知道谁会成为刁民,所以谁都不能绕过宫门。
第二次:朕自己也可能犯错,所以连朕都不能随便拆门。
等智能体也进了执行链,还得再改一次——
无论下令的是皇帝、大臣、管理员还是 AI,城门只对满足条件的行动开放。