Agent Identity Protocol (AIP)
The Zero-Trust Identity Layer for MCP & Autonomous Agents
实施: 走
______________________________________________________________________
什么是AIP?
AIP(代理身份协议)是一个开源标准 人工智能代理的身份验证、证明、授权和治理这是人工智能的IAM标准。
如今,代理被授予API密钥、机密和系统资源的完全权限,运行 *作为* 用户无需区分人类和非人类行为。随着人类和自主智能体之间的界限越来越模糊,这不仅在安全级别,而且在 法律、社会和经济水平.
AIP正在建设中,并向 互联网工程任务组 为身份提供一个通用的标准 代理互联网(IoA) --这样,任何人,任何地方,都可以构建安全的代理,并充满信心地获得完全的可见性。
上帝模式问题
代理没有身份层
没有通用的方法来区分人工智能代理和人类行为者。当您将Claude、Cursor或任何MCP兼容代理连接到您的系统时,它会收到 上帝模式 --使用与用户相同的凭据完全访问服务器公开的每个工具。
模型安全是不够的。 间接快速注射等攻击——由 GeminiJack漏洞 --已经证明,嵌入在文档、电子邮件或数据中的对抗指令可以劫持代理行为。模型 *相信* 它在执行攻击者的命令时遵循您的意图。
你的代理人离毒PDF只有一步之遥 rm -rf /.
除了安全之外,没有身份的代理也会造成系统性漏洞:
- 无审计追踪 --代理执行的操作与日志中的人类操作无法区分
- 无撤销 --一旦代理拥有凭据,就没有标准的方法来撤销它们
- 无授权粒度 -访问在API密钥级别上是全有或无
- 合规盲点 --代理行为未满足SOC 2、GDPR、HIPAA和SOX要求
*“身份验证是针对用户的。AIP是针对代理的。”*
______________________________________________________________________
AIP如何工作
AIP构建在两个协同工作的层上。 第1层确定代理是谁。 第二层决定它可以做什么。 代理身份验证令牌(AAT)是桥梁。它由第1层发布,由第2层强制执行。
AIP的当前Go实现引入 基于策略的授权 在工具调用层——代理和基础架构之间缺失的安全原语。你自己试试吧。
______________________________________________________________________
建筑设计
LAYER 1 — IDENTITY LAYER 2 — ENFORCEMENT
(Who is this agent?) (What can it do?)
┌─────────────────┐ ┌─────────────────┐
│ Root Registry │ (AIP Authority) │ AI Client │
│ Signs Agent │ │ Cursor / Claude │
│ Certificates │ └────────┬────────┘
└────────┬────────┘ │ tool call + AAT
│ Issues Attestation ▼
▼ ┌─────────────────────────┐
┌─────────────────┐ │ AIP Proxy │
│ Agent Identity │ │ │
│ (Public Key) │ │ 1. Verify AAT signature │◀── AIP Registry
└────────┬────────┘ │ 2. Check token claims │ (revocation)
│ Signs Token Requests │ 3. Evaluate policy │
▼ │ 4. DLP scan │
┌─────────────────┐ │ 5. Audit log │
│ Token Issuer │ └────────┬────────────────┘
│ Validates ID │ AAT │ ✅ ALLOW / 🔴 DENY
│ Issues AAT │ ─────────────────────────────▶ │
└─────────────────┘ ▼
┌─────────────────┐
│ Real Tool │
│ Docker/Postgres │
│ GitHub / etc. │
└─────────────────┘AAT是连接两层的东西。 它带有关于代理的签名声明——谁发布了代理的身份,它代表哪个用户,它声明了什么能力,以及何时发布。第2层中的代理不仅检查静态的YAML allowlist,还验证AAT上的加密签名,根据策略检查这些声明,然后才允许工具调用。
这意味着:
- A. 被劫持的特工 在第2层失败——其AAT声明与尝试的操作不匹配
- A. 撤销代理人 在第2层失败——代理在每次调用时都会检查注册表吊销列表
- A. 合法代理人 通过这两层,其身份都有完整的审计跟踪
当前架构实施
第1层——代理身份(协议)(进行中)
AIP为AI代理建立加密身份。在代理可以采取行动之前,它会从令牌发行者那里获得一个AAT——一个与代理的密钥对和最终用户身份绑定的签名令牌。
安全模型:
- 信任的根源 --AIP注册表保存发行者私钥并签署代理证书
- 代理密钥对 --每个代理生成自己的密钥;私钥永远不会离开代理
- AAT索赔 --令牌对代理ID、用户绑定、功能、到期和颁发者进行编码
- 撤销 --注册表维护一个由代理在运行时检查的吊销列表
第2层——策略执行(运行时)
AIP还充当AI客户端(Cursor、Claude、VS Code)和MCP工具服务器之间的透明代理。每个工具调用在到达真正的工具之前都要经过策略引擎。如今,代理执行YAML定义的策略。随着第1层的成熟,策略决策将由AAT本身内部的声明驱动——从静态配置转向基于加密的授权。
graph LR
subgraph Client["🤖 AI Client"]
A[Cursor / Claude Desktop]
end
subgraph AIP["🛡️ AIP Proxy (Sidecar)"]
B[Policy Engine]
C[DLP Scanner]
D[Audit Log]
end
subgraph Server["🔧 Real Tool"]
E[Docker / Postgres / GitHub]
end
A -->|"tools/call"| B
B -->|"✅ ALLOW"| E
B -->|"🔴 DENY"| A
B --> C
C --> D
E -->|"response"| C
C -->|"filtered"| A
style B fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
style AIP fill:#f0fdf4,stroke:#16a34a,stroke-width:3px纵深防御:攻击受阻
当注入的提示符试图执行危险的操作时,AIP会在工具收到请求之前拦截并阻止它。
sequenceDiagram
participant Agent as 🤖 Agent (Hijacked)
participant AIP as 🛡️ AIP Proxy
participant Policy as 📋 agent.yaml
participant Tool as 🔧 Real Tool
Agent->>AIP: tools/call "delete_database"
AIP->>Policy: Check allowed_tools
Policy-->>AIP: ❌ Not in allowlist
AIP->>AIP: 🔴 Decision: DENY
AIP-->>Agent: Error: -32001 Permission Denied
Note over Tool: ⚠️ Never receives request
Note over AIP: 📝 Logged to audit trail代理在每次通话中应该做什么的目标
- 根据AIP注册表公钥验证AAT签名
- 根据策略检查令牌声明(代理ID、用户绑定、到期)
- 根据工具和参数允许、拒绝或升级为人类
- DLP扫描请求和响应中的敏感数据
- 写入与代理的已验证身份绑定的不可变审计日志条目
______________________________________________________________________
设计目标
- 语言无关 --支持用Python、JavaScript、Go、Java、Rust等编写的代理
- 零信任 --代理之间没有隐式信任或基于网络位置
- 最低开销 --无中心瓶颈的快速令牌验证
- 合规就绪 --生成满足SOC 2、GDPR、HIPAA和SOX的审计跟踪
- 开发者友好 --简单的SDK集成,无需基础设施即可在本地工作
______________________________________________________________________
核心概念
| 术语 | 定义 |
|---|---|
| 代理 | 一个自主决策和执行行动的人工智能系统 |
| 代理人身份证件(AID) | 定义代理加密身份的JSON结构 |
| 代理身份验证令牌(AAT) | 在运行时证明代理身份的签名令牌 |
| 注册表 | 注册代理、权限、功能和联盟的中心目录 |
| 代币发行人 | 生成和签署AAT的服务 |
| 资源服务器 | 代理请求访问的API或系统 |
| 策略引擎 | 根据定义的策略评估每个工具调用的运行时组件 |
______________________________________________________________________
为什么是AIP?
|功能|标准MCP | API密钥| AIP| | --- | --- | --- | --- | | 代理身份 | ⚠️ 无|⚠️ 仅限用户级别|✅ 每个代理的加密身份| | 提示注入 | ⚠️ 易受攻击|⚠️ 易受攻击|✅ 策略阻止未经授权的意图| | 授权粒度 | ⚠️ 全有或全无|⚠️ 范围级别|✅ 按工具、按参数验证| | 审计跟踪 | ⚠️ 无|⚠️ 仅授予时间|✅ 每次操作不可变JSONL| | 循环中的人类 | ⚠️ 不支持|⚠️ 不支持|✅ 本地操作系统审批对话框| | 撤销 | ⚠️ 旋转关键点|⚠️ 旋转关键点|✅ 注册表吊销列表| | 数据渗漏 | ⚠️ 无限制|⚠️ 无限制|✅ DLP扫描+出口过滤| | 遵从 | ⚠️ 手册|⚠️ 部分|✅ SOC 2、GDPR、HIPAA、SOX就绪|
AIP有何不同?
与劳动力人工智能治理(例如SurePath.AI)
AIP和人工智能治理工具在不同层面解决不同的问题:
| 方面 | 劳动力人工智能治理 | AIP |
|---|---|---|
| 聚焦 | 员工AI使用监控 | 代理动作授权 |
| 层 | 网络/应用程序级别 | 工具调用级别 |
| 问题 | “我的组织中谁在使用人工智能?” | “我的人工智能代理能做什么?” |
| 部署 | 通常SaaS | 开放协议,自托管 |
| 用例 | 审核员工ChatGPT使用情况 | 阻止代理删除数据库 |
这些是互补的:使用劳动力治理来监控员工人工智能的使用情况。使用AIP来保护这些员工构建的代理。
与OAuth/API密钥
| 特性 | OAuth | AIP |
|---|---|---|
| 粒度 | 作用域级别(“repo访问”) | 操作级别(“带有org:X的repos.get”) |
| 时机 | 授权时间 | 运行时(每次调用) |
| 观众 | 最终用户 | 开发人员/安全团队 |
| 格式 | 令牌声明 | YAML策略文件 |
OAuth回答“这是谁?” --AIP答案 “应该允许这种具体行动吗?”
______________________________________________________________________
查看代理的实际操作
当代理尝试危险操作时,AIP会立即阻止它:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32001,
"message": "Permission Denied: Tool 'delete_database' is not allowed by policy"
}
}刚才发生了什么?
- 特工(可能被快速注射劫持)试图拨打电话
delete_database - AIP策略引擎检查
allowed_tools列表 - 未找到工具→ 请求在到达您的基础架构之前被阻止
- 尝试记录到审计跟踪以进行取证分析
您的数据库从未收到该请求。 这是正在进行的零信任授权。
______________________________________________________________________
快速开始
用一个命令保护任何MCP工具服务器:
# Secure your local Docker MCP
aip wrap docker --policy ./policies/read-only.yaml或者保护您现有的配置:
# Start the AIP proxy with your policy
aip --target "python mcp_server.py" --policy ./agent.yaml
# Generate Cursor IDE configuration
aip --generate-cursor-config --policy ./agent.yaml --target "npx @mcp/server"政策示例
apiVersion: aip.io/v1alpha1
kind: AgentPolicy
metadata:
name: secure-agent
spec:
mode: enforce
allowed_tools:
- read_file
- list_directory
- git_status
tool_rules:
- tool: write_file
action: ask # Human approval required
- tool: exec_command
action: block # Never allowed
dlp:
patterns:
- name: "AWS Key"
regex: "AKIA[A-Z0-9]{16}"______________________________________________________________________
路线图
我们正在建造一个 标准不仅仅是一个工具。
- \[x\] v0.1:本地主机代理 --The *“小飞贼”* AI代理
- 工具歧视执法 - 使用正则表达式进行参数验证 - 人机交互(macOS、Linux) - DLP输出扫描 - JSONL审计日志记录 - 监控模式
- \[ \] v0.2:Kubernetes Sidecar --The *“Istio”* AI代理
- Helm图表 - 网络策略集成 - 普罗米修斯指标
- \[ \] v1.0:OIDC/SPIFFE联合会 --企业标识
- 工作负载身份联合 - 集中策略管理 - 多租户审计聚合
______________________________________________________________________
文档
______________________________________________________________________
SDK和实现
想用另一种语言构建AIP实现吗?看 贡献.md.
贡献
AIP是一个开放的规范。我们欢迎:
- 协议反馈 --规范中的问题和PR
- 新实施 --在Rust、TypeScript、Python中构建AIP
- 安全性研究 --威胁建模、攻击面分析
- 文档 --教程、示例、集成
看 贡献.md 作为指导方针。
______________________________________________________________________
许可证
Apache 2.0 --请参阅 许可证
企业友好。用它,叉它,在它上面建造。
______________________________________________________________________
安全
有关漏洞报告,请参阅 安全.md.
______________________________________________________________________
Stop trusting your agents. Start verifying them.
