Agent双向认证与零信任

· 2026-11-14 22:00 · 1 阅读

原创 pandazhengzheng 2026-11-14 22:00 广东

目录

  1. 引言:多 Agent 信任问题

  2. 威胁模型

  3. Agent 身份与证书体系

  4. 双向认证与 mTLS

  5. 持续验证机制

  6. 零信任策略引擎

  7. Agent 服务网格

  8. 跨信任域联邦

  9. 评估框架

  10. 前沿挑战

  11. 参考文献


1. 引言:多 Agent 信任问题

多 Agent 系统中 Agent 间通信面临多重威胁:

威胁

描述

后果

冒充

攻击者伪造 Agent 身份

未授权访问

中间人

窃听/篡改 Agent 间通信

数据泄露/注入

被攻陷 Agent

持有合法证书但行为恶意

内部攻击

证书滥用

复制/重放合法证书

身份盗用

信任传递

通过信任链过度获取权限

权限蔓延

零信任原则:永不信任,始终验证——每次 Agent 间请求都经过身份、上下文、行为风险评估。


2. 威胁模型

攻击者能力:

  • 网络位置:可观察、拦截、注入 Agent 间通信

  • 身份:可能持有部分合法证书(被攻陷 Agent)

  • 计算:多项式时间

  • 限制:无法破解密码学原语,无法攻破硬件信任根

安全目标:

  • 认证性:通信双方确认为声称的 Agent

  • 机密性:通信内容仅双方可知

  • 完整性:通信内容未被篡改

  • 新鲜性:无重放攻击

  • 授权性:每次请求经权限检查

  • 持续验证:通信过程中持续验证身份与完整性


3. Agent 身份与证书体系

3.1 基于硬件信任根的身份

信任根:TPM 2.0 / AMD SEV-SNP / Intel TDX 提供硬件级密钥保护。

Agent 身份生成:

1. 硬件信任根生成 Agent 专用密钥对 (pk_agent, sk_agent)
   sk_agent 存储于 TPM 内,永不导出
2. CA 签发 Agent 身份证书:
   Cert_agent = Sign_CA(pk_agent, {agent_id, capabilities, expiry, issuer})
3. Agent 持有 Cert_agent,私钥永不离开 TPM

证书内容:

{
"agent_id": "agent-uuid-xxx",
"public_key": "Ed25519:...",
"creator": "org-yyy",
"capabilities": ["read:db1", "write:queue1", "call:api_zzz"],
"trust_level": "verified",
"issued_at": "2026-09-10T00:00:00Z",
"expires_at": "2026-09-10T01:00:00Z",
"attestation": {
"tpm_quote": "...",
"measurement": "SHA256:..."
  }
}

3.2 远程证明

远程证明:Agent 向对方证明其运行在可信执行环境(TEE)中,且代码度量值符合预期。

协议:

Agent A → Agent B:
  1. A 生成 nonce_A
  2. TPM_A 生成 quote = Quote(nonce_A, measurement_A)
  3. A 发送 (Cert_A, quote, nonce_A) → B
Agent B 验证:
  4. B 验证 Cert_A 的 CA 签名
  5. B 验证 quote 的 TPM 签名
  6. B 检查 measurement_A ∈ ExpectedMeasurements
  7. B 生成 nonce_B, 发送 (Cert_B, quote_B, nonce_B) → A
  8. 双方派生会话密钥 = KDF(nonce_A, nonce_B, ...)

3.3 证书生命周期

阶段

操作

安全要求

签发

CA 签发证书

身份验证、能力审核

分发

Agent 获取证书

安全通道、私钥不出 TEE

使用

出示证书认证

每次通信出示

轮换

定期更新证书

自动轮换、零停机

吊销

撤销被攻陷证书

及时传播、OCSP/CRL

归档

保留审计记录

防篡改存储

短期证书:证书有效期 < 1 小时,减少吊销需求(过期即失效)。


4. 双向认证与 mTLS

4.1 mTLS 通信

Agent 间 mTLS 握手:

Agent A                          Agent B
  |                                |
  | ---- ClientHello(Cert_A) ----> |
  |                                |
  | <--- ServerHello(Cert_B) ---- |
  |                                |
  | <--- CertificateRequest ----- |
  |                                |
  | ---- Certificate(Cert_A) ---> |
  |                                |
  | ---- Finished(verify) -------> |
  |                                |
  | <--- Finished(verify) ------- |
  |                                |
  | <== Secure Channel (mTLS) ==> |

证书钉扎:Agent 预配置信任的 CA/证书指纹,防止 CA 被攻陷后的中间人攻击。

4.2 会话安全

跳转微信打开

本文转载自微信公众号「安全分析与研究」,查看原文。版权归原作者所有,如有侵权请联系删除。