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