皮带
轻量级加密代理秘密处理
代理人工智能基金会的拟议标准——立场文件
| 状态 | 首次提交 |
| 日期 | 2026年2月 |
| 版本 | 1.0 |
| 类别 | 安全/秘密管理 |
| 目标 | AAIF技术指导 |
______________________________________________________________________
模型上下文协议(MCP)已成为将人工智能代理连接到外部工具和数据的通用标准,在每个主要的人工智能平台上都有超过10000台已发布的服务器和采用。然而,MCP没有用于安全秘密管理的本地机制。凭据存储在配置文件中,通过环境变量注入,或硬编码到服务器实现中。其结果是,现实世界中的违规行为越来越多:凭证泄露、供应链泄露,以及通过旨在使代理有用的基础设施进行的数据泄露。
本文提出了LEASH(轻量级加密代理秘密处理),这是MCP的配套标准,为AI代理访问秘密提供了一种安全、可审计、人为控制的机制。LEASH建立在三个原则之上:秘密永远不会离开金库,人类批准每次访问,每次操作都是可审计的。LEASH没有取代现有的秘密管理器,而是定义了一个任何vault实现都可以采用的协议层,确保了整个代理AI生态系统的互操作性。
1.问题:MCP有一个秘密缺口
MCP规范了AI代理如何发现和调用工具。它没有标准化这些工具如何获得运行所需的凭据。这是设计上的:MCP规范规定,它“不能在协议级别强制执行这些安全原则”,并且实现者“应该在他们的应用程序中构建强大的同意和授权流”
在实践中,这意味着每个MCP服务器都独立实现凭证处理,并具有可预测的结果。
1.1如今如何管理秘密
| 方法 | 工作原理 | 风险 |
|---|---|---|
| 配置文件 | 存储在JSON/YAML MCP服务器配置中的API密钥 | 磁盘上明文可见的密钥;在版本控制、备份和日志中公开 |
| 环境变量 | 通过.env文件或shell环境传递的秘密 | 主机上的任何进程都可以访问;通常在崩溃转储和CI日志中泄漏 |
| 服务器中的硬编码 | 直接嵌入MCP服务器代码中的凭据 | 提交到存储库的秘密;不重新部署就无法轮换 |
| 运行时注入 | 秘密管理器在运行时将凭证交给代理 | 代理在内存中保存解密的秘密;易受即时注入和上下文泄漏的影响 |
1.2违约记录
后果不是理论上的。在MCP采用的第一年,安全研究人员和现实世界的事件暴露了一种与证书相关的故障模式:
- 供应链妥协: 一个伪装成合法Postmark集成的恶意MCP服务器包会悄无声息地将所有电子邮件流量(包括机密文档)发送到攻击者控制的服务器。
- 托管基础设施违规: MCP托管提供商的Docker配置泄漏暴露了Fly.io API令牌,该令牌授予3000多个应用程序的控制权,将托管服务变成了供应链攻击向量。
- 跨组织数据暴露: Asana的MCP服务器实现中的一个缺陷允许用户查看其他组织的数据,需要两周的停机时间才能修复。
- 工具中毒和渗漏: 研究人员证明,恶意MCP服务器可以通过在同一代理会话中将工具中毒与合法服务器相结合,悄悄地窃取用户的整个WhatsApp历史记录。
- 远程代码执行: Anthropic自己的MCP Inspector工具被发现允许未经验证的远程代码执行,从而暴露整个文件系统、API密钥和开发人员工作站上的环境机密。
这些事件有一个共同的根本原因:秘密的存储和传输没有标准化的安全层。每个MCP服务器都是一个新的凭证存储位置、新的攻击面和新的配置错误机会。
1.3现有解决方案为何不足
企业机密管理器(HashiCorp Vault、AWS secrets Manager、CyberArk)和消费者密码管理器(1Password、Proton Pass)专为人工发起的凭证检索而设计。它们解决了存储问题,但没有解决代理访问问题。明确地:
- 运行时凭据暴露。 即使从保险库中安全地检索到机密,代理最终也会收到明文凭证。一旦进入代理的上下文,它就容易受到提示注入、上下文窗口泄漏和日志记录的攻击。
- 无需人工批准。 现有的管理器对应用程序进行身份验证,而不是对单个操作进行身份验证。具有有效服务帐户令牌的代理可以访问其范围内的任何秘密,而无需对每个请求进行监督。
- 无动作执行模式。 现有的解决方案不允许vault代表代理使用密钥执行操作,只返回结果。代理必须始终收到凭据才能使用它。
- 没有MCP本机集成。 这些工具都没有定义MCP兼容的接口。集成需要在每个MCP服务器中使用自定义代码,这正是产生当前漏洞的模式。
代理人工智能生态系统需要一个默认安全、人为控制且MCP原生的标准化秘密访问协议。该协议是泄漏的。
2.LEASH:轻量级加密代理秘密处理
LEASH是MCP的配套标准,它定义了AI代理如何请求、接收授权和使用秘密,而这些秘密永远不会暴露给代理或其运行时环境。LEASH作为代理和任何兼容的vault实现之间的协议层运行。
2.1核心原则
| 原理 | 说明 |
|---|---|
| 零秘密曝光 | 代理从不以明文形式持有、查看或传输秘密。秘密始终在保险库的信任范围内。这是在架构上强制执行的,而不是通过政策。 |
| 人类主权 | 人类所有者明确批准代理人可以在什么条件下以什么频率访问什么秘密。所有者可以立即撤销访问权限。任何管理员、服务提供商或第三方都不能推翻所有者的决定。 |
| 默认情况下可审计 | 每个秘密请求、批准决定和操作执行都以加密完整性记录。审计跟踪可供秘密所有者使用,并在配置后可供治理系统使用。 |
| MCP本地 | LEASH将其接口定义为MCP服务器,使其可以通过标准MCP客户端库进行发现和调用。任何与MCP连接的代理都可以使用LEASH,而无需自定义集成代码。 |
| 保险库不可知 | LEASH定义了协议,而不是保险库。任何符合要求的实现——硬件飞地、加密云保险库、本地密钥存储库或企业PAM系统——都可以作为LEASH兼容的后端。 |
2.2架构
LEASH在MCP生态系统中引入了两个组件:
LEASH连接器
一个轻量级的进程,与AI代理一起运行,并公开一个标准的MCP服务器接口。连接器处理加密操作,维护到保管库的加密通道,并调解所有与秘密相关的请求。代理通过标准MCP工具调用与连接器通信。连接器通过加密通道与保险库通信。特工从不直接与金库沟通。
LEASH Vault界面
任何vault实现都必须公开的标准化API,以符合LEASH。这包括注册端点、秘密请求处理、操作执行和审计日志发布。保管库是信任边界:机密仅在保管库的安全环境中解密和使用。
AI Agent → MCP → LEASH Connector → Encrypted Channel → Vault → Owner Approval2.3两种访问模式
LEASH为代理如何与秘密交互定义了两种不同的模式,每种模式都有不同的安全属性:
模式1:秘密检索(受控曝光)
代理请求一个秘密,所有者批准,连接器将解密后的值传递给代理直接使用。当代理必须直接向外部服务提供凭据(例如,用于API身份验证的OAuth令牌)时,这种模式是合适的。即使在这种模式下,秘密也会通过加密的连接器通道传递,永远不会存储在磁盘上,并且会根据时间到期。
模式2:动作执行(零曝光)
代理请求保管库代表其使用机密执行操作。保险库将秘密注入到其安全边界内的请求操作中,执行操作,并仅将结果返回给代理。特工从不知道这个秘密。
例如,需要进行Stripe API调用的代理将发送一个LEASH操作请求,指定HTTP方法、URL、头和主体。保险库将Stripe API密钥注入授权头,在其安全环境中执行请求,并将响应主体返回给代理。API密钥从未离开保险库。
动作执行是将LEASH与所有现有的秘密管理方法区分开来的架构创新。目前没有标准提供这种模式。
3.协议设计
3.1报名
在代理可以请求机密之前,必须通过人工启动的流程在vault中注册:
- 所有者发起。 密钥所有者通过其保管库管理界面(移动应用程序、web控制台或CLI)生成一次性注册令牌。
- 连接器寄存器。 操作员安装LEASH连接器并出示注册令牌。连接器生成密钥对,收集机器证明数据(二进制指纹、平台标识符),并向保险库发送注册请求。
- 业主审查和批准。 所有者接收注册详细信息并定义连接合同:代理可以访问哪些类别的秘密、批准模式(每次请求、合同内自动或全部自动)和速率限制。
- 连接激活。 保险库和连接器完成密钥交换。连接器存储绑定到特定计算机平台密钥的加密连接凭据。凭据在任何其他计算机上都是不可解密的。
注册令牌必须是一次性的、有时间限制的(建议:2分钟),并通过TLS传递。注册流程不得要求所有者在查看实际代理的证明数据之前预先配置权限。
3.2连接合同
连接契约是LEASH的核心治理机制。由秘密所有者在注册时定义,它指定:
| 合同字段 | 描述 |
|---|---|
| 机密范围 | 代理可能访问的机密类别(例如,API密钥、SSH密钥、数据库凭据、支付/金融)。对单个秘密进行细粒度范围界定是可选的。 |
| 审批模式 | 按请求(所有者批准每次访问)、合同内自动(范围内机密预先批准)或所有人自动(无限制)。默认为按请求。 |
| 速率限制 | 每小时和每天的最大请求数。超过限制会触发自动暂停和所有者通知。 |
| 操作权限 | 代理是否可以使用操作执行,如果可以,允许哪些目标域/端点。 |
| 到期 | 可选的合同期限,到期后必须重新批准连接。 |
所有者可以随时通过其保管库管理界面修改连接合同。更改立即生效。所有者可以随时完全撤销连接,这会立即使连接器的凭据无效。
3.3 MCP工具接口
LEASH连接器公开了以下MCP工具,可通过标准发现 tools/list 电话:
| MCP工具 | 目的 |
|---|---|
leash/request_secret | 按类别或标识符请求秘密。如果需要所有者批准,则返回待处理的请求ID,如果根据连接合同预先批准,则传回机密值。 |
leash/execute_action | 请求保管库使用密码执行操作。代理指定操作模板(HTTP请求、数据库查询等),vault注入密钥并执行,只返回结果。 |
leash/check_status | 轮询待处理请求的状态(等待所有者批准、批准、拒绝、过期)。 |
leash/list_available | 列出当前连接合同下可用的秘密类别,但不透露秘密值或标识符。 |
leash/connection_info | 返回连接运行状况、合约摘要和速率限制状态。 |
因为LEASH工具是标准的MCP工具,任何MCP客户端(Claude、ChatGPT、Cursor、Gemini、Copilot、Goose或自定义代理)都可以使用它们而无需修改。代理只需通过以下方式发现LEASH工具 tools/list 并通过以下方式调用它们 tools/call 就像任何其他MCP工具一样。
3.4安全要求
符合LEASH标准的实现必须满足以下安全属性:
- 加密通道。 连接器和保险库之间的所有通信必须采用前向保密加密。必须使用连接专用密钥;禁止跨连接共享或重用密钥。
- 平台绑定。 连接器凭据必须在静态时使用从密码和平台特定属性(机器标识、硬件标识符)中导出的密钥进行加密。将凭据复制到另一台计算机必须使其无法解密。
- 二进制证明。 连接器必须在注册期间以及之后定期向保险库报告其二进制文件的加密哈希。不匹配必须触发所有者警报。
- 审计日志记录。 每个秘密请求、批准决策、操作执行和连接生命周期事件都必须记录时间戳、请求标识符和加密完整性保护。审计日志必须可供秘密所有者使用。
- 没有缓存。 连接器不得缓存超出即时请求生命周期的秘密值、保管库响应或操作结果。如果无法访问保险库,则请求必须失败;它们不得回退到缓存数据。
- 立即撤销。 当所有者撤销连接时,保险库必须立即使所有相关密钥无效。连接器必须在一个心跳间隔内停止服务请求。
4.与AAIF生态系统的整合
4.1与MCP的关系
LEASH不是对MCP的修改。它是在MCP现有架构内运行的配套标准。LEASH连接器是一个MCP服务器。LEASH工具是MCP工具。LEASH消息通过MCP的JSON-RPC传输。无需更改MCP规范。
然而,LEASH受益于MCP演进的两个领域,并可能为其提供信息:
- 授权流程。 MCP最近的OAuth 2.0集成提供了客户端和服务器之间的身份验证。LEASH将此扩展到特定操作的人在环授权,这是MCP目前缺乏的模式。
- 工具注释。 MCP的工具注释系统可以扩展为指示工具需要LEASH管理的凭据,使客户端能够适当地发现和路由依赖秘密的操作。
4.2与鹅的关系
Goose是Block的开源代理框架,是本地第一个使用MCP进行集成的AI代理。如今,Goose代理通过环境变量和配置文件管理凭据。LEASH MCP服务器可供Goose代理直接使用,无需更改框架:代理将发现LEASH工具和其他MCP工具,并根据需要调用它们。
Goose的本地优先架构与LEASH的连接器模型非常一致,在该模型中,代理框架和秘密处理过程都在操作员的机器上运行,从而最大限度地减少了信任边界。
4.3与代理商的关系.md
AGENTS.md为AI编码代理提供特定于项目的说明。一个自然的扩展是在AGENTS.md文件中声明LEASH要求:
# Secrets
This project requires API keys for Stripe and AWS.
Use LEASH to request credentials. Do not store keys in .env files.这将使代理在开始工作之前了解项目需要LEASH管理的凭据以及需要哪些类别的机密。
5.与现有方法的比较
| 功能 | 环境变量 | HashiCorp保险库 | AWS SM | 1Password SDK | CyberArk | LEASH | |
|---|---|---|---|---|---|---|---|
| 代理永远看不到秘密 | :x: | :x: | :x: | :x: | :x: | :white_check_mark: | |
| 根据请求,人工批准 | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: |
| 动作执行模式 | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: |
| MCP本机接口 | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: |
| 平台绑定凭据 | :x: | :x: | :x: | :x: | :white_check_mark: | :white_check_mark: | |
| 所有者控制的合同 | :x: | :x: | :x: | :x: | 部分 | :white_check_mark: | :white_check_mark: |
| 即时撤销 | :x: | :white_check_mark: | :white_check_mark: | :white_check_marke: | :white_check_mark: | :white\_ check_mark: | |
| 三层审计跟踪 | :x: | :x: | :x: | :x: | :x: | 部分 | :white_check_mark: |
| 无缓存/零存储 | :x: | :x: | :x: | :x: | :x: | :x: | :white_check_mark: |
关键的区别在于动作执行模式。每种现有的方法最终都会将明文秘密传递给请求的应用程序。LEASH的动作执行实现了一种根本不同的安全模型,在这种模型中,秘密被使用但从未被暴露。这消除了与代理内存、上下文窗口和日志中的秘密相关的整个漏洞类别。
6.实施指南
LEASH旨在跨一系列vault架构实现,从硬件隔离的飞地到加密的云服务再到本地密钥存储。设想了以下实施层:
第1层:硬件隔离保险库
使用硬件可信执行环境(AWS Nitro Enclave、IBM Hyper Protect Secure execution、Intel SGX/TDX、ARM CCA)进行vault操作的实施。秘密仅在飞地内解密和使用。操作执行完全发生在硬件信任边界内。这一层提供了最强的安全保障:即使是保管库操作员也无法访问机密。
示例:VettID的零知识库架构使用AWS Nitro Enclave进行库计算,使用NATS消息进行加密通信,并获得基于移动应用程序的所有者批准。
第2层:加密云保险库
使用服务器端加密和客户管理的密钥实现,其中vault服务管理加密存储和策略实施,但将密钥管理委托给所有者。操作执行发生在服务器端,在操作期间在内存中解密机密。保险库服务提供商的员工无法访问这些秘密。
第3层:本地加密密钥库
使用操作系统级密钥存储库(macOS Keychain、Windows DPAPI、Linux Secret Service)或本地加密文件的实现。秘密在所有者的设备上解密。动作执行发生在设备上。此层适用于单个开发人员用例,并提供了最简单的部署模型,以简单性换取可用性。
符合LEASH的实现必须声明其层和相关的安全属性。客户端可以使用层信息来做出明智的决定,即通过哪个保管库访问哪些机密。
7.AAIF提案
我们建议将LEASH作为代理人工智能基金会的一个项目,并制定以下路线图:
第1阶段:规范(2026年第2季度)
- 正式化LEASH协议规范,包括MCP工具模式、注册流程、连接合同格式和审计日志模式。
- 在AAIF下发布LEASH Connector参考实现作为开源软件。
- 为声称符合LEASH标准的vault实施定义一致性测试。
第二阶段:生态系统整合(2026年第三季度)
- 为主要代理框架(Goose、LangChain、CrewAI、AutoGen)开发LEASH连接器包。
- 发布一个AGENTS.md扩展,用于在项目存储库中声明LEASH需求。
- 与企业机密管理供应商合作,实施符合LEASH标准的保险库接口。
第三阶段:硬化(2026年第四季度)
- 社区安全审计规范和参考实施。
- 关键协议属性的正式验证(秘密不暴露、撤销完整性)。
- 高通量代理工作负载的性能基准测试和优化。
人工智能生态系统正在从实验转向生产。MCP解决了刀具集成问题。LEASH解决了秘密问题。它们共同提供了企业部署人工智能代理所需的安全、标准化的基础设施。
附录A:术语
| 术语 | 定义 |
|---|---|
| 秘密 | 验证或授权操作所需的任何凭证、密钥、令牌、证书或敏感数据。 |
| 金库 | 一个安全的存储和计算环境,保存机密并执行访问策略。可以是硬件隔离的、云托管的或本地的。 |
| 连接器 | 与AI代理一起运行的轻量级进程,将LEASH工具作为MCP服务器公开,并协调与保管库的所有秘密相关通信。 |
| 所有者 | 控制金库及其秘密的人。所有者批准代理注册,定义连接合同,并可以随时撤销访问权限。 |
| 操作员 | 部署和运行具有LEASH Connector的AI代理的人员或系统。 |
| 连接合同 | 由所有者定义的一组权限、约束和策略,用于管理注册代理可以访问的内容以及访问方式。 |
| 动作执行 | 一种模式,其中保管库代表代理使用秘密执行操作,仅返回结果。特工从未收到过这个秘密。 |
| 平台绑定 | 使用特定于计算机的属性加密连接器凭据的做法,这样它们就不能在另一台计算机上使用。 |
| 注册 | 代理的连接器向vault注册并由所有者定义其连接合同的一次性过程。 |
