教AI系统网络安全:让自主智能体学会安全浏览网络

本文探讨如何为自主AI代理装备网络安全知识,使其能够对互联网安全做出明智决策。通过结合LangChain、OpenAI和Cisco Umbrella API,展示了如何为AI代理提供实时威胁情报,评估域名安全性。

机器人会梦到安全网络吗?教AI系统网络安全

本文探讨如何为自主AI代理装备网络安全知识,使其能够对互联网安全做出明智决策,例如识别可信链接和网站。它演示了一个使用LangChain和OpenAI的概念验证,结合Cisco Umbrella API,为AI代理提供实时威胁情报以评估域名状态。

通过学习评估域名的安全性,AI代理可以培养更好的网络卫生习惯,做出更智能的决策,而不仅仅是受到安全网关的限制,这对于下一代自主AI系统至关重要。

实施步骤

先决条件

要实现此示例,您需要Cisco Umbrella的API密钥和一个付费的OpenAI账户:

  • 从有可用余额的OpenAI账户获取新的API密钥
  • 按照这些步骤获取Cisco Umbrella API密钥和密钥
  • 确保为密钥范围勾选"Investigate"框
  • 将密钥保存为名为OPENAI_API_KEYUMBRELLA_KEYUMBRELLA_SECRET的shell环境变量

代码实现

完整的示例代码可以在Talos的GitHub存储库中找到。

首先,我们需要向AI代理描述工具:

1
# 将新描述的工具包含在可用工具列表中

接下来,我们创建要使用的大型语言模型(LLM)实例:

1
# 此示例使用OpenAI的GPT-3.5-Turbo,但也支持其他LLM模型

然后,让我们使用以问题、思考、行动、观察格式结构化的自然语言向LLM提供指令:

1
# 创建我们将与之交互的代理和执行器实例

作为查询Umbrella API的一部分,我们必须获取一个会话令牌以随请求传递给Umbrella API。这是使用我们的API密钥和密钥从身份验证调用中获得的。

接下来,让我们定义我们向AI系统描述的工具:

1
2
3
4
def check_domains(input_text):
    # 接受输入文本作为参数
    # 检查是否存在任何域名
    # 如果找到,检查每个域名的状态

上述代码中的关键功能是getDomainDisposition,它将域名传递给Umbrella API以检索域名的状态和分类信息。

测试结果

我们现在可以将输入文本传递给agent_executor来发现代理的意见:

测试1:安全域名

1
2
输入:www.cisco.com
响应:www.cisco.com可以安全浏览

测试2:恶意域名

1
2
输入:known-malicious-domain.com
响应:不要连接

测试3:多个域名

1
2
输入:包含www.umbrella.com和test.example.com的文本
响应:www.umbrella.com可以安全连接。test.example.com状态未知,不确定是否可以安全连接

测试4:无域名问题

1
2
输入:不包含任何域名的普通问题
响应:无意见

讨论

这虽然是非常概念验证的代码,但它确实展示了我们如何将提供实时权威事实(如Umbrella的域名安全状态)的API集成到AI代理的决策过程中。

我们可以使用其他方法达到相同的结果。我们可以将AI代理放在Web安全网关后面,或要求代理使用Umbrella DNS,这将强制执行不连接到恶意站点的限制。然而,这样做会剥夺AI代理学习理解潜在冲突信息和做出良好决策的能力。

当前基于LLM的生成式AI系统只是即将到来的自主代理AI进展的开始。在构建下一代AI系统的过程中,我们需要确保它们不仅做出良好的决策,还要理解网络卫生并能够访问实时威胁情报来支持其决策制定。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计