明天会下雨吗?答案是肯定的。哦,真的吗?你怎么这么确定?回答模糊不清,请再试一次。好的,我再试试。你怎么知道要下雨了?你对此似乎相当自信。嗯……现在最好不告诉你。好吧,这没什么帮助。显然,这无法给我所需的答案。
你可能听说过一种名为Jev的AI新方法,我的朋友马丁在这里的视频频道上做了一个非常棒的解释视频。如果你不熟悉这个概念,可以去了解一下。这是一项迷人的新技术,旨在做一件与我们已熟悉的大型语言模型(LLM)截然不同的事情。最大的区别在于,LLM生成文字——大量的文字;而Jev做出决策,而且是快速的决策。这对于自动化来说可能意义重大。
但我有一个问题,这是一个非常典型的网络安全人员才会有的问题。是的,这与信任有关。嗯,除了网络安全专家之外,还有谁会提出并花费大量时间开发我们要称之为“零信任”的概念呢?我的圈子经常被认为有信任问题,但那是另一个视频的故事。换句话说,我们怎么知道我们正在交谈的那个特定Jev实例不仅仅是一个带有概率的复杂算命球呢?
它本质上是一个黑盒,我们无法窥视其中。我们无法确定它是如何得出答案的。因此,如果答案是错误的,我们就不知道;如果是错的,我们又怎么知道呢?让我们探讨一下这个问题。首先从LLM开始。所以LLMs给我们提供了可以检查的东西。我们有输入进去,比如一个提示词;然后有文字出来。对于LLM来说,你会得到一个措辞得当的回答。
现在这个回答可能是错误的,甚至完全是伪造的,也可能是自信地错误,我们称之为“幻觉”。但至少那里有一些东西你可以检查。所以你可以问:“你为什么得出这个结论?”你可以质疑它,甚至可以让另一个LLM进入并检查结果、审视模型。所以你可以查看所有这些类型的事情:你可以看LLM使用的工具,可以看用于训练模型的数据。
因此所有这些都是你可用的,包括围绕该决策的证据链。所以它并不完美,远非如此,但至少有一些东西可以观察。现在让我们来看看Jev。我们有输入进去,然后得到一个决策出来:“是”,置信度97%。好吧,这对软件来说非常有用,因为它不必去解释所有出来的东西。它得到一个结构化的决策并给出置信概率。
这是让Jev真正有趣的事情之一,就是关于信心的业务。这个概率告诉我一些有关模型自信心的信息,但它并不一定告诉我为何做出该决策的理由。这是两件非常不同的事情。信心不一定是证据,当然也不是证明。这里有一个简单的例子:假设我们从安全警报开始。所以某事进来告诉我们正遭受攻击,而Jev告诉我们要采取的行动是隔离该特定主机作为响应。
它给了我们97%的置信度。好吧,这令人印象深刻。节省了我们大量时间,告诉我们问题是什么以及我们需要做什么。但是假设我是负责该决策的安全人员。我想知道:你为什么告诉我这个?你是从哪里得出那个结论的?是因为进程匹配了某些已知的恶意软件吗?还是因为IP地址已知是恶意的?
是我们观察到了一些不寻常的行为,还是这台机器特别敏感,因此我们要为此建立更多的保护?或者是模型识别出某种授权问题但不理解它呢?还是有人操纵了进入模型的信息,甚至是模型本身?因为从安全的角度来看,输入和模型都是攻击面的一部分。
让我们想象一下,我们有一个攻击者已经弄清楚了Jev将要查看的信息,并对进入模型的信息进行了操纵。也许他们修改了日志,操纵了一些元数据,或者毒化了用于训练模型的数据源。又或者他们利用了喂给模型的流程中的某些弱点。在某个地方,基于被污染的信息,模型可能会做出完全一致的决策。
那么我们会怎样呢?你知道那句老话,“垃圾进”,在这种情况下就是“自信的垃圾出”。这里最可怕的部分是,模型仍然会说97%的置信度。这并不意味着该决策值得信赖。它只意味着模型对给定它所看到的内容,认为答案应该是这样的感到自信。但它可能自信地错了,或者模型仅仅因为完全无辜的原因而犯错,就像LLM产生幻觉一样。
但在这些情况下你怎么知道呢?这让我想到了网络安全中的一个重要概念,即可观测性(observability)。当传统系统中的某事出错时。我想要能够重建发生了什么。我想知道什么进来了,我知道什么改变了,我想看到系统中触发了哪些规则。
我要知道做出决策时咨询了哪些数据,实际做出了什么决定是谁或是什么引起的,以及最终为什么。所以我最终需要的是审计追踪(audit trail)。我需要一些我可以调查和验证的东西,以确保操作符合我们的意图。这就是我们进行调查的方式,这就是我们发现攻击的方式,这也是建立问责制的方法。
如果我要采取可能关闭系统的规避行动,我需要确定我得到的建议是正确的,而不仅仅是自信的。那么Jev中的可见性在哪里呢?它将为我们提供结构化输出和答案,甚至给我们概率来告诉我们它有多自信。Jev专门设计用于嵌入到结构化工作流中,这很好。
很容易将这个插件接入工作流程。事实上,Jev背后的公司TypeSafe说了一些我非常喜欢的话。他们说与其问一个大问题,不如将其分解为许多较小的问题更好。这样,你最终会得到一组更好的内置可观测性设计。这就是我的意思的一个例子:让我们再次采用警报进入的场景。
也许我们要问的第一件事不仅仅是“我们该做什么”,而是说:“这项特定活动是否被授权?”如果未被授权,那么也许我们会问:是什么样的……
你有什么证据来支持这一点?我们是否有相应的风险评估与之配套,然后将这些因素综合起来,或许我们才能做出决策。这是一种更优秀的工程实践,因为现在你可以观察到构成最终决策的各个独立环节,而不是将整个系统视为一个无法窥探的黑盒。因此,我们希望通过逐步细化来实现改进,每一步都是对前一步的迭代优化。
但作为一名安全人员,我天生如此:先验证后信任,而非先信任后验证。这里存在一个问题:如果 Jev 告诉我“隔离这台机器”的概率是97%,我们得到了一个数值,但我究竟在验证什么?我无法直接验证 Jev 是如何产生该输出的。我知道结果来自 Jev,但我不知道其内部推导过程从何而来。
我可以验证输出是否符合预期的类型,记录概率值,日志输入信息,审计周围的工作流程等。但我真的能独立验证产生该决策的智能逻辑吗?这很难做到,因为我缺乏确凿的证明。我拥有的只是一个预测结果。
猜猜看,攻击者喜欢那些我们无法看见的东西。想想传统的控制措施:如果攻击者突破了防线,我会获得证据——日志、事件变更、异常现象以及入侵指标等。我可以事后查看这些数据,判断究竟发生了什么。
但想象一下一个被攻陷的 AI 决策系统:它开始做出细微不同的决定。并非完全失效,只是对某些恶意行为批准的概率比过去高了1%,或者针对特定类型的目标。也许它开始变得稍微不准确一些。起初它是准确的、好用的,然后突然就不准了。
由于之前建立了信心,我甚至不会质疑这种情况下的结果。这潜在地更难检测,因为每一个单独的答案看起来都完全合理。我们对系统的信念随着这种信心而自我强化:因为我们反复看到它运作良好,信任度随时间增加,我们在分析结果时会变得不再那么具有批判性。
那答案是什么?我不是说不要使用 Jev,恰恰相反。我认为这种能力对我们非常有用,但我建议将 AI 本身视为不受信任的组件,并在其周围部署安全控制措施。我们需要输入验证机制;我需要知道输入了什么内容;确保我有独立的信号源,不依赖单一来源。
我还需要审计日志,寻找模型行为的漂移和异常现象,并在高风险决策的升级流程中引入人工介入进行独立验证。我们要保持人在回路中,关键在于不要让 Jev 成为唯一知道发生了什么的地方。
随着 AI 从仅仅生成文本转向采取实际行动,这个问题变得尤为重要。如果 LLM(大型语言模型)写了一段糟糕的文字,那是一回事;但如果 AI 决定阻止某个账户、支付发票、关闭服务器或批准某笔交易,这就涉及完全不同的安全问题。
问题不再仅仅是“AI 能否做出正确的决策”,而是“我是否能在它犯错时知道”?更重要的是,“我能判断是否是有人故意导致它做出错误决策吗?”可观测性是 Jev 面临的一大关切。
这并不是说它的准确率一定低于 LLM,或者概率性决策本身有什么问题——它们并非 inherently bad(本质上不好)。实际上,我认为这种结构化方法相当有说服力。真正的担忧在于:我们允许 AI 为我们做决策越多,观察、审计和验证这些决策的重要性就越大。
因为信心不等于证明,概率也不等同于解释。仅仅因为一个决定乍看之下合法合规,并不意味着它值得信赖。不要只问“AI 决定了什么”,要问“我怎么知道它做出了这个决定?”先验证,后信任。这样我们就不会只剩下那些如同魔法般的 AI 决策了。