Havenlon|安全讲人话(一):门锁和门闩不是一回事
门锁证明你能不能进来,门闩决定门最后会不会打开。
很多人第一次听到 Havenlon,会本能地把它塞进某个已经存在的抽屉里:
是不是一个钱包?是不是一种密钥管理?是不是多签(Multisig)?是不是审批流(Approval Workflow)?还是又一套 RBAC 权限系统?
这些猜测都不算错,但都停在了门口。因为 Havenlon 真正在意的,从来不是"你有没有资格发起一个动作",而是另一个被长期忽略的问题:
这个动作在真正进入现实世界之前,最后还能不能被独立地拦下来。
要把这件事讲清楚,我不想一上来就搬出 HSM、信任根、TEE 这些词。我更愿意用一个几乎人人都懂的比喻开场:
门锁和门闩,不是一回事。
这一篇是整个系列的地基。如果你只记住一句话,就记住上面那句。剩下的,我们慢慢拆。
一、门锁解决的是:你能不能进来
我们日常理解的"安全",绝大多数时候其实是一把门锁。
门锁负责回答一连串问题:你是不是本人?你有没有钥匙?你的密码对不对?你的身份合不合法?你有没有权限进这个房间?
把这套逻辑翻译到数字世界,门锁对应的就是一整个我们非常熟悉的技术家族:
登录与密码(Authentication,认证)
Token、Session、Cookie
私钥、证书、双因子(2FA)
RBAC / ABAC 权限模型(Authorization,授权)
审批流、多签、身份网关
在安全工程里,这两件事有专门的名字:认证(AuthN)解决"你是谁",授权(AuthZ)解决"你能做什么"。过去二十年,工业界几乎把所有精力都投在了这两个词上——OAuth、SSO、零信任、IAM,全是围绕着"如何更精确地判断一个人有没有资格"在打转。
这些东西当然重要。没有门锁,系统根本谈不上安全,这一点我不会含糊。
但请注意门锁的一个隐含前提:它解决的是"进入之前"的问题。它证明的是"你有没有资格靠近这扇门",而它并不总能回答另一个问题——
这扇门,现在到底该不该打开。
这两个问题看起来只差一个字,本质却完全不同。前者关于"资格",后者关于"此刻这一个具体动作"。而几乎所有安全事故,都是在后者上翻的车。
二、门闩解决的是:门最后会不会真的打开
门闩和门锁,是两种完全不同的物件。
门闩不关心你有没有钥匙,也不负责识别你是谁。它只守住最后一个瞬间:门在这一刻,能不能真的被打开。
你可以有钥匙,可以站在门口,可以通过全部身份验证,你甚至可以得到屋里所有人的同意——但只要门闩还插着,门就是打不开。
这就是门闩的价值。它不是一把"更复杂的门锁",它是另一种维度的边界:
| 门锁 | 门闩 | |
|---|---|---|
| 关心的问题 | 谁可以进来? | 这件事现在能不能发生? |
| 技术对应 | 认证 / 授权 / 身份 | 执行控制(Execution Control) |
| 作用时机 | 动作发生之前 | 动作即将落地的最后一刻 |
| 失败后果 | 陌生人进门 | 该拦的动作被顺利执行 |
用一句话概括:门锁解决身份问题,门闩解决执行问题。
Havenlon 要守的,正是后面这一列。它把安全的战场,从"入口"往后拉了一大步,一直拉到动作即将穿过边界、变成不可逆现实的那一瞬间。
三、传统安全的问题,不是没门锁,而是缺门闩
过去大量系统的安全设计,重心都压在门锁上。逻辑大概是这样的:
只要身份是真的、权限是真的、审批是真的,那么接下来的动作,也就默认是真的、合理的、安全的。
这在过去勉强成立,因为过去的动作足够慢。
人要自己点按钮,自己复制地址,自己填表单,自己核对参数。发起和执行之间,天然横着一段人肉缓冲区,中间有大量停顿、犹豫和二次确认。那段"慢",其实一直在替我们兜底。
但 AI Agent 和自动化系统,把这段缓冲区抹平了。
现在,一个系统可以毫不停顿地替你连续完成一整串动作:读取信息 → 生成方案 → 调用工具 → 提交请求 → 走完审批 → 修改配置 → 触发交易 → 导出数据 → 调度资源。
软件不再只是"给你建议",它开始"替你行动"。这是一个根本性的转变。
于是风险的重心也移动了。它不再只是"谁进来了",而变成了更棘手的一句:
一个看起来完全合法的动作,会不会一路绿灯地走到最后。
从系统架构的角度说,问题的本质是信任域塌缩(trust domain collapse):发起、判断、审批、执行原本应该是彼此独立的环节,却在追求"顺滑体验"的过程中被塞进了同一个信任域。这个域一旦被污染,四个环节会一起沦陷——门锁再多把,也拦不住从内部打开的那一下。
四、AI 时代,最危险的可能是"合法授权下的错误执行"
一提到安全,很多人第一反应还是"防黑客",脑子里浮现的是一个从外部撞门的坏人。
但未来相当一部分严重事故,未必来自一个"明显非法"的请求。它可能来自一个看起来无比正常的流程:
用户是真的,账号是真的,权限是真的,审批是真的,日志也是真的——唯独最后那个动作是错的。
举几个具体的、正在发生或即将发生的场景:
提示词注入(Prompt Injection):AI Agent 读到一段被恶意构造的网页内容或文档,被诱导发起了一笔本不该发生的转账。发起者是合法的 Agent,凭证一切正常。
会话劫持后的合法操作:攻击者拿到了一个合法 Session,用"真实身份"提交了一次危险的配置变更。系统眼里,这就是本人在操作。
参数替换:审批页面上展示的是转给 A、金额 100,等到真正执行时,参数已经被换成了转给 B、金额 100000。人点的是"同意",执行的是另一件事。
信息不完整下的确认:管理员确实点了确认,但界面只给他看了摘要,隐藏了真正致命的那个字段。
上下文缺失的云端放行:云端策略判断"通过",但它根本看不见本地真实的执行上下文。
这里面有一个计算机安全里的经典难题,叫Confused Deputy(被搞糊涂的代理):一个本身拥有合法权限的实体,被诱导去替攻击者行使了权限。AI Agent 天生就是一个高权限、易被说服的"代理",它让这个几十年前提出的老问题,第一次变成了大规模的现实威胁。
在这些场景里,系统不是没有门锁。恰恰相反,门锁可能全都在正常工作。真正缺的,是在最后动作落地之前,还有没有一道独立于这套软件之外的门闩。
五、为什么"能发起"不等于"能执行"
这是 Havenlon 想反复敲进你脑子里的一句话:
发起权,不等于执行权。
把它展开:
一个人有权限发起请求,不代表这个请求就一定应该被执行。
一个 AI 能生成操作计划,不代表它应该直接去调用真实工具。
一个审批系统显示通过,不代表真实执行的参数没有在中途被替换。
一个云端策略判定允许,不代表最后落地的执行环境一定安全。
一个 Owner 拥有整个系统,也不代表他应该能单点造成灾难性后果。
安全工程里有一个更技术化的注脚,叫TOCTOU(Time-of-Check to Time-of-Use,检查时刻与使用时刻之间的空隙)。意思是:系统"检查"一个动作合不合法的那一刻,和它"真正执行"这个动作的那一刻,中间存在一段时间差。绝大多数攻击,就藏在这条缝里——检查时一切正常,执行时早已面目全非。
传统系统之所以危险,是因为它把"发起"和"执行"放进了同一个软件世界:同一个后台可以发起,同一个系统可以审批,同一个服务可以改参数,同一个环境可以触发执行。
这样做很方便,工程上也很省事。但代价是致命的:一旦这个软件世界被污染,最后的执行就会被一起带走。判断它安全的那套逻辑,和执行它的那只手,是同一伙人。
门闩逻辑要做的事情,就是把最后一步硬生生拆出来,放到一个独立的地方:
软件可以发起。AI 可以建议。云端可以治理。审批可以通过。 但"能不能真的发生",必须经过一道谁都无法在软件里绕过的独立边界。
这在架构上叫权责分离(Separation of Privilege)——把"决定要做"和"真正去做"的权力,拆到两个不共享信任域的地方。区别只是,Havenlon 把这条分离线,画在了整条链路最靠后、也最要命的那一段。
六、Havenlon 不是替代门锁,而是在门锁之后加一道门闩
所以请不要误会:Havenlon 从来没说传统安全没用。
密码有用吗?当然。权限有用吗?当然。审批有用吗?当然。多签有用吗?当然。它们都很重要,只是它们更像门锁——解决的是进入、授权、身份、流程的问题。
Havenlon 关心的,是门锁之后的那一刻:
当所有系统都说"可以"的时候,最后那个动作,是否仍然应该被允许穿过边界。
这就是执行控制(Execution Control)。
它不是"再多加一个确认按钮",不是"再多写一条日志",更不是"在软件里再塞一个安全开关"。原因很简单:如果这个开关本身仍然能被同一个软件世界修改、绕过、重放(Replay)、诱导,那它只是换了个名字的门锁,不是真正的门闩。
真正的门闩,必须带一点"硬"。它不能被所有远程系统随便说服;不能因为云端点了头就自动放行;不能因为某个用户权限很高就主动放弃边界;不能因为流程看起来完整,就默认忽略最后一步。
这也是为什么 Havenlon 强调物理执行边界(Physical Trust Boundary)。不是因为"硬件"这个词听起来更高级、更玄——恰恰相反,硬件的意义特别朴素:
它让最终执行权,不再永远待在那个可以被软件随意改写的世界里。
一个纯软件的开关,攻击者攻破软件就能改写它;一个独立的物理边界,攻击者即便说服了整个云端、拿到了最高权限、跑通了全部流程,也依然无法在这最后一步替你按下确认。这就是"更难被绕过"的全部含义。关于硬件到底扮演什么角色,这个系列后面还有专门的一篇来讲,这里先埋个引子。
七、门闩最重要的能力,不是打开,而是拒绝
很多产品都在拼命强调自己能让用户"更快":更快转账、更快审批、更快调用工具、更快完成自动化、更快把 AI 的想法变成动作。
但在高风险系统里,有一种能力比"快"重要得多:
能停下来。
能在请求看起来完全合法时停下来;能在审批已经通过时停下来;能在 AI 给出无比自信的答案时停下来;能在连 Owner 本人都想继续时停下来;能在所有软件层都亮起绿灯时——依然停下来。
这在工程上对应一个非常关键的设计原则:Fail-Closed(失败即关闭)。它的反面是 Fail-Open——出问题时默认放行,图个"别挡着用户"。绝大多数追求体验的系统,骨子里都是 Fail-Open 的。而门闩的立场恰恰相反:当情况不确定、不完整、不可信时,默认不是放行,而是拒绝。
门闩不是为了制造麻烦,它是为了防止系统在最危险的时候太顺畅。因为真正的灾难,很多时候不是因为"系统执行不了",而是因为——
系统执行得太自然、太完整、太不可逆。
八、Havenlon 守的不是"入口",而是"现实发生之前的最后一步"
所以,理解 Havenlon,不要先把它想成钱包、密钥、审批或权限系统。那些都只是局部的、门锁那一侧的东西。
更准确的理解是:Havenlon 是一道执行边界。
它守的不是你能不能登录,不是你有没有发起资格,不是流程表面上有没有走通,而是——当一个动作即将从"软件世界"跨进"现实世界"时,它到底能不能真正发生。
这个"现实",在不同场景里长着不同的脸:
在 Web3 里,它可能是一笔不可逆的链上资产转移;
在企业系统里,它可能是一次敏感数据的批量导出;
在运维场景里,它可能是一次生产服务器的重启或删库;
在 AI Agent 场景里,它可能是一次工具调用、一次支付、一次授权、一次配置修改。
这些动作有一个共同点:一旦发生,就不是一句"撤销"能轻松收场的。链上交易没有 Ctrl+Z,导出的数据收不回来,删掉的库不会自己长回来。
正因为不可逆,它们才格外需要一道门闩——在跨过那条线之前,最后一次、也是唯一一次真正独立的拦截机会。
九、门锁证明你是谁,门闩守住会发生什么
最后,我们把整篇收回到那句开头的话上。
门锁很重要,但门锁不是全部。
门锁证明的是:你是不是你。门闩守住的是:这件事会不会真的发生。
传统安全长期关注前者,这没有错;但 AI 时代,我们必须开始认真对待后者。因为当 AI、自动化系统、云端治理、审批流程和业务系统越来越紧密地缝在一起,真正的风险会越来越集中地出现在最后一步:
不是没人授权,而是授权之后,错误动作被顺利执行;
不是系统没有判断,而是所有判断都在同一个可被污染的软件世界里完成;
不是没有日志,而是日志记录的,往往是灾难已经发生之后的事实。
Havenlon 想解决的,就是这个问题。
它不是一把更聪明的钥匙,而是一道更难被绕过的门闩。它不承诺让你每一次都跑得更快,它只关心在最关键的那一刻,系统是否还保留着"真正停下来"的能力。
因为在 AI 时代,最危险的未必是门外的陌生人。
也可能是那个已经进了门、拿着正确的钥匙、正准备打开一扇不该打开的门的人。
而 Havenlon 要守的,就是那最后一下。
这是《Havenlon|安全讲人话》系列的第一篇。下一篇我们把"门闩"再往里拆一层,聊聊为什么「发起权,不等于执行权」——以及一个系统里,到底谁才有资格按下最后那个按钮。