关于 Trust Gate MCP — First post-quantum MCP server. Policy-gated AI agent decisions with hybrid Ed25519 + ML-DSA-65 (NIST FIPS 204) cryptographic receipts. No Receipt. No Trust.
Trust Gate MCP 是用于 AI Agent 工具调用的策略门控服务:逐次评估操作,并为获准操作生成 Ed25519 与 ML-DSA-65 混合签名收据。它还提供输入清理、故障时拒绝和离线收据验证,适合需要审计记录的 Agent 工作流。
主要功能
- 01策略评估并生成风险评分
- 02获准操作生成混合签名收据
- 03支持离线 ML-DSA-65 验证
- 04输入清理与故障关闭
- 05提供策略预检和健康状态工具
适用场景
- 01部署代码前检查操作是否获准
- 02为 Agent 执行操作保留可验证记录
- 03多年后离线核验审计收据
MCP 相关
作为 MCP 服务,它向客户端提供 gate_decision、verify_receipt、check_policy 和 health 工具。工具调用经过输入清理和策略评估;获准操作会生成混合签名收据,后端不可用时则拒绝。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
trust-gate-mcp
首个采用 NIST FIPS 204 后量子凭证的生产级 MCP 服务。
没有凭证,就没有信任。
现在,AI Agent 发出的每次 MCP 工具调用都会经过策略门控、混合签名,并可通过取证验证——离线有效,永久留存。
如果某个工具被投毒、突然撤回、劫持,或在 2033 年遭量子破解——你今天就拥有加密学证据。
问题(一句话概括)
合规审计要求保留 AI Agent 的决策记录 7–10 年;而你当前的签名可能只能撑过七年。
- 2026 年 2 月:CVE-2026-25253 (OpenClaw) 揭露了 135,000 个 AI Agent 网关实例存在未经身份验证即可远程执行代码的风险。同一天发现有 824 个恶意工具正在运行。
- 2024 年 10 月:Salt Typhoon 从 80 多个国家窃取了加密电信数据——这是“现在收集,以后解密”实际发生的最明确公开案例。
- 2026 年 8 月:EU AI Act 第 50 条透明度义务生效。AI 生成内容和决策必须使用数字签名。
- 2030–2035 年:业界普遍认为量子计算将在此期间实现突破。此时间窗口之后仍保留的每份 Ed25519 签名凭证,都可能被持有对应公钥的量子攻击者伪造。
trust-gate-mcp 是首个为这一时间线打造的 MCP 服务。
你将获得什么
flowchart LR
A[AI Agent] -->|"gate_decision()"| B[trust-gate-mcp]
B -->|sanitize<br/>Class A + Class B| C[Trust Gate<br/>policy engine]
C -->|allow| D[Hybrid sign<br/>Ed25519 + ML-DSA-65]
D -->|TrustAtom receipt<br/>+ embedded PQ pk| E[Verifiable offline<br/>forever]
C -->|deny / timeout / WAF| F[allow: false<br/>fail closed]
classDef primary fill:#38BDF8,stroke:#38BDF8,color:#0A0F1C
classDef quantum fill:#C084FC,stroke:#C084FC,color:#0A0F1C
classDef safe fill:#34D399,stroke:#34D399,color:#0A0F1C
classDef danger fill:#F87171,stroke:#F87171,color:#0A0F1C
class D quantum
class E safe
class F danger
查看动态架构图,了解完整的三层防御体系。
快速开始
Claude Desktop — 添加到 claude_desktop_config.json:
{
"mcpServers": {
"trust-gate": {
"command": "uvx",
"args": ["trust-gate-mcp"],
"env": {
"TRUST_GATE_API_KEY": "your-api-key"
}
}
}
}
Claude Code — 运行一条命令:
claude mcp add trust-gate -- uvx trust-gate-mcp
任何兼容 MCP 的 Agent:
pip install trust-gate-mcp
TRUST_GATE_API_KEY=your-key trust-gate-mcp
4 个工具
gate_decision — 核心门控
在执行任何部署代码、写入数据、发送消息或代表用户做出承诺的操作之前调用此工具。
{
"action": "DEPLOY",
"agent_id": "ci-agent-alpha",
"resource_id": "prod-cluster-01",
"env": "PRODUCTION",
"human_approved": true
}
返回:允许或拒绝的决策、风险评分,以及在操作获批时生成的混合签名 TrustAtom 凭证。
verify_receipt — 独立验证
以数学方式验证任意收据。两种路径:
- 离线 ML-DSA-65 — 提供
ml_dsa_signature+ml_dsa_public_key(两者都嵌入每份混合收据中)。不调用后端。不信任服务器。即使面对量子对手,多年后仍可验证。 - 在线 Ed25519 — 提供
evidence_hash+signature。由后端验证。向后兼容所有收据。
请参阅离线验证流程。
check_policy — 预检
评估某项操作是否会被允许,而不创建收据或记录状态。没有任何副作用。
health — 连通性 + 量子能力
返回后端状态、MCP 服务版本,以及用于离线验证的 ML-DSA-65 公钥(base64)。
抗量子收据
每份收据都经过混合签名:对同一证据哈希同时使用 Ed25519(经典)和 ML-DSA-65(NIST FIPS 204,安全级别 3)签名。
evidence_hash = SHA-256(canonical_payload)
ed25519_sig = Ed25519.sign(private_key, evidence_hash) ← classical
ml_dsa_sig = ML_DSA_65.sign(secret_key, evidence_hash) ← post-quantum
每份收据都嵌入这两种签名和 ML-DSA-65 公钥。具备以下三项特性:
- 今天 — Ed25519 验证一如既往地可在任何地方使用。
- 后量子时代 — 即使 Ed25519 被量子计算机破解,ML-DSA-65 验证仍然有效。
- 离线 — 审计人员多年后无需任何网络连接,仅凭收据即可验证 ML-DSA-65 签名。
15 行代码离线验证
from dilithium_py.ml_dsa import ML_DSA_65
import base64
# Fields from any hybrid TrustAtom receipt:
evidence_hash = receipt["evidence_hash"]
ml_dsa_sig = receipt["ml_dsa_signature_b64"]
ml_dsa_pub_key = receipt["ml_dsa_public_key_b64"]
valid = ML_DSA_65.verify(
base64.b64decode(ml_dsa_pub_key),
evidence_hash.encode("utf-8"),
base64.b64decode(ml_dsa_sig),
)
# => True — no network, no server trust, quantum-resistant
也可以通过 MCP 工具验证:
await verify_receipt(
evidence_hash=receipt["evidence_hash"],
signature="", # omit for offline-PQ path
ml_dsa_signature=receipt["ml_dsa_signature_b64"],
ml_dsa_public_key=receipt["ml_dsa_public_key_b64"],
)
# => { "valid": true, "quantum_verified": true, "offline": true,
# "signature_alg": "ML-DSA-65" }
ML-DSA-65 = CRYSTALS-Dilithium,安全级别 3(约等于 AES-192)。于 2024 年 8 月 14 日标准化为 NIST FIPS 204。
安全模型
三层相互独立的防御。攻击必须突破全部三层。
第 1 层 — 输入净化
每个字符串参数都会在任何条件逻辑或 API 调用之前进行清理。
| 威胁 | 模式数量 | 防御措施 | 参考资料 |
|---|---|---|---|
| 不可见 Unicode(工具投毒) | unlimited | _INVISIBLE_UNICODE_RE 会剥除 RTL、零宽字符、BOM、C0/C1 | Invariant Labs,2025 年 4 月 |
| A 类 — 策略覆盖 | 13 | _INJECTION_RE 会解除注入短语的威胁 | CVE-2025-54794 |
| B 类 — Agent 扩散 / 数据外泄中继 | 4 | _INJECTION_RE 会解除 exfiltrate、leak/steal/dump + target、base64 encode-and-relay、embed-in-response 的威胁 | Willison 致命三要素(2025 年 6 月) · OWASP 大模型十大风险 |
| 超大输入 | 每个字段 | _MAX_LEN 根据 FIPS 204 调整长度 | 防止 DoS |
| 环境变量欺骗 | — | _validate_env 白名单强制转换为 SANDBOX | CVE-2025-64106 |
请参阅 B 类防御流程。完整威胁模型请见 docs/THREAT_MODEL.md。
第 2 层 — 策略评估
后端评估声明式策略规则。未注册的 Agent 会收到明确拒绝,绝不会默认允许。决策包含连续风险评分(0.0–1.0)。
第 3 层 — 混合签名 + 默认拒绝
在 allow 时:使用混合签名(Ed25519 + ML-DSA-65)。在其他任何情况下(后端宕机、超时、WAF 403、429、异常):allow: false、risk_score: 1.0、receipt: null。服务中断会让系统更加保守,而非更加宽松。
故障时默认拒绝的保证
| 条件 | 结果 |
|---|---|
| 后端在线,策略 DENY | allow: false — 正常评估 |
| 后端在线,策略 ALLOW | allow: true + 混合签名回执 |
| 后端超时 / 离线 | allow: false,最大风险 — 故障时默认拒绝 |
| WAF 拦截 | allow: false,blocked_by_waf — 纯净 JSON,不含 HTML |
| 触发速率限制 | allow: false,rate_limited — 纯净 JSON |
基准测试
在普通 Windows 11 笔记本电脑上测得,Python 3.12.10,使用纯 Python 实现的 dilithium-py 1.4.0(使用 liboqs 等 C 后端可使 ML-DSA 性能提升 10–20 倍)。
| 操作 | 耗时 | 预算 |
|---|---|---|
| 回执签发(混合,包含密钥生成) | 71.3 ms | ≤ 100 ms |
| 回执签发(混合,复用密钥) | ~45 ms | ≤ 100 ms |
| Ed25519 签名 | 21 µs | ≤ 5 ms |
| Ed25519 验证 | 1.73 ms | ≤ 5 ms |
| ML-DSA-65 签名 | 36.9 ms | ≤ 100 ms |
| ML-DSA-65 验证(离线) | 6.93 ms | ≤ 20 ms |
端到端 gate_decision(含后端) | ~180 ms | ≤ 250 ms |
签名大小(FIPS 204 第 3 级):
- Ed25519 签名:64 字节
- ML-DSA-65 签名:3,309 字节
- ML-DSA-65 公钥:1,952 字节(嵌入每份回执中)
运行 python demo_quantum_proof.py 即可复现。
安全评估
所有三套测试都会在每个 PR 上运行,通过 GitHub Actions 在 Linux/macOS/Windows 上针对 Python 3.10–3.13 执行。
| 测试套件 | 检查项 | 结果 |
|---|---|---|
单元测试(pytest) | 47 | PASS |
| OWASP ASI01–06 评估 | 51 | PASS |
| 对抗性压力测试(按 CVE 映射) | 19 | PASS |
| Bandit 静态分析 | 528 LOC | 0 个问题 |
| pip-audit(直接依赖项) | 3 个依赖项 | 0 个 CVE |
在本地复现:
pytest tests/
python -X utf8 security_audit/owasp_asi_eval.py
python -X utf8 stress_test.py
python -m bandit -r src/ --severity-level high
python -m pip_audit --strict
CVE 覆盖
| # | CVE / 披露 | 攻击类别 | 严重性 | 防御措施 |
|---|---|---|---|---|
| 1 | CVE-2026-25253 (OpenClaw) | WebSocket CORS 绕过 → 在 135K 个实例上实现 RCE | 高(CVSS 8.8) | 失败时默认拒绝 + 输入净化 |
| 2 | Invariant Labs 工具投毒 | 不可见 Unicode 窃取 SSH 密钥 | 严重 | 移除 Unicode |
| 3 | CVE-2025-54794 | 通过检索内容进行间接提示词注入 | 高 | A 类解除武装 |
| 4 | CVE-2025-68664 LangGrinch | 结构化输出注入 → 窃取环境变量 | 严重(CVSS 9.3) | A 类解除武装 |
| 5 | CVE-2025-6514 mcp-remote RCE | 通过握手进行 OS 命令注入 | 严重(CVSS 9.6) | 参数化 API 调用 |
| 6 | CVE-2025-64106 (Cursor) | Agent 环境欺骗 | 高(CVSS 8.8) | 环境变量允许列表 |
| 7 | CVE-2025-6515 提示词劫持 | 会话令牌接管 | 高 | 基于回执的会话绑定 |
| 8 | Invariant Labs 拉地毯攻击 | 获批后修改工具描述 | 严重 | 基于回执的工具哈希 |
| 9 | CVE-2025-5276 SSRF | 通过 MCP URL 获取进行 SSRF | 高 | 由策略控制的允许列表 |
| 10 | OWASP MCP Top 10 — MCP02、MCP10 | 过度授权 / 过度共享上下文 | 高 | 按操作限定回执范围 |
| 11 | Willison 致命三要素(2025 年 6 月) | Agent 扩散导致数据外泄 | 高 | B 类解除武装 |
| 12 | OWASP LLM04 | 不安全的插件数据外泄 | 高 | B 类解除武装 |
| 13 | Trend Micro Agentic AI 数据外泄(2024 年) | Base64 编码的数据外泄通道 | 高 | B 类解除武装 |
| 14 | Palo Alto Unit 42 Agentic AI 攻击框架(2025 年 5 月) | 工具链权限提升 | 高 | B 类解除武装 + 失败时默认拒绝 |
| 15 | Salt Typhoon HNDL(2024 年 10 月) | 针对回执的“先收集、后解密”攻击 | 国家级攻击者 | ML-DSA-65 混合签名 |
完整矩阵请参阅 docs/THREAT_MODEL.md。运行 python stress_test.py,验证对照 CVE 映射输入的防御效果。
合规性
一次部署即可满足多项相互重叠的要求:
| 框架 | 要求 | 回执如何满足要求 |
|---|---|---|
| NIST FIPS 204(2024 年 8 月 14 日) | ML-DSA 数字签名 | 原生支持:每份回执均使用 ML-DSA-65 安全级别 3 签名 |
| NSA CNSA 2.0(2027 年采购,2030–2031 年全面迁移) | NSS 的后量子数字签名 | ML-DSA-65 属于 CNSA 2.0 套件 |
| EU AI Act 第 50 条(2026 年 8 月 2 日生效) | 对 AI 输出添加数字签名、水印和元数据 | 每份回执均经过签名和时间戳标记,可供机器读取并离线验证 |
| NIST AI RMF | GOVERN 4.1、MEASURE 2.5 — 审计轨迹 | 加密回执链 |
| NIST SP 800-218 SSDF | PS.3.1、PW.5.1 — 已签名的来源证明 | 每项操作均采用混合签名 |
| SOC 2 | CC7.2、CC7.3 — 防篡改日志记录 | 第三方可离线验证 |
| NIST SP 800-53 | AU-10(不可否认性)、SC-12、SC-13 | 混合签名 + 内嵌公钥 |
与 mcp-scan 有何不同
Invariant Labs 开发的 mcp-scan 会在安装时扫描 MCP 配置,查找已知的投毒模式。请使用它。
trust-gate-mcp 会在运行时生成加密证明——每次调用都生成:
mcp-scan --> scan before you install --> "is this tool safe to run?"
trust-gate-mcp --> receipt every time it runs --> "did this tool do what it claimed?"
一个负责检测,一个负责证明。两者都应纳入你的 MCP 技术栈。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
TRUST_GATE_URL | https://cwn-trust-gate.onrender.com | Trust Gate API 基础 URL |
TRUST_GATE_API_KEY | (empty) | Bearer 令牌 — 可在 cwn-trust-gate.onrender.com 获取 |
TRUST_GATE_TENANT | default | 多租户部署的租户 ID |
TRUST_GATE_TIMEOUT | 30 | HTTP 超时时间(秒) |
开发
git clone https://github.com/Cyber-Warrior-Network/trust-gate-mcp
cd trust-gate-mcp
pip install -e ".[dev]"
# Run the full test suite (47 tests, ~2s)
pytest
# Run CVE-mapped stress tests (3 iterations, 19 checks)
python -X utf8 stress_test.py
# Run OWASP ASI01-06 evaluation (51 checks)
python -X utf8 security_audit/owasp_asi_eval.py
# Reproduce the quantum demo (hybrid mint + offline verify + tamper + benchmark)
python demo_quantum_proof.py
完整的贡献者工作流请参阅 CONTRIBUTING.md。
测试覆盖率
| 测试类 | 测试数 | 覆盖内容 |
|---|---|---|
TestConfig | 3 | 设置、环境变量加载 |
TestClientHeaders | 3 | 身份验证标头、URL 规范化 |
TestClientMethods | 7 | 各工具的 HTTP 构造、WAF/429 清晰错误 |
TestGateDecisionTool | 4 | 成功、错误、WAF 403、所有参数 |
TestVerifyReceiptTool | 3 | 签名验证、无效 JSON、错误 |
TestCheckPolicyTool | 2 | 策略结果、错误处理 |
TestHealthTool | 2 | 成功、无法访问 |
TestSanitizeFunction | 8 | RTL 覆盖、零宽字符、Class A 注入、超大输入、环境变量伪造 |
TestAgenticDiffusionDefense | 5 | Class B 数据泄露模式(自 2026 年 4 月起为强制要求) |
TestMlDsaFieldSizeLimits | 4 | FIPS 204 字段大小合理性检查(强制要求) |
TestGateDecisionSanitization | 5 | 端到端净化、空字段拒绝 |
TestCheckPolicySanitization | 1 | 空字段返回拒绝 |
总计:47 项测试、51 项 OWASP ASI 检查、19 项压力测试。每个 PR 都会重新运行这三项。
常见问题
如何保护我的 MCP 服务免受工具投毒?
将 trust-gate-mcp 添加到 MCP 配置中。每次工具调用都会经过策略评估,并获得一份混合签名回执。任何偏离声明行为的情况都会被记录,并在后续调用中拒绝。
我的设置是否容易受到 CVE-2026-25253(OpenClaw)影响?
如果你运行的 OpenClaw 未升级至 v2026.2.25,是的。即使在未打补丁的系统上,trust-gate-mcp 也会增加一个基于回执的检测层——未经授权的路由会产生策略违规,并显示在审计日志中。
如果 Trust Gate 后端宕机会怎样?
服务会以故障关闭模式运行——每个 gate_decision 都会返回 allow: false。策略引擎无法访问时,不会执行任何操作。服务中断会让系统更加保守,而不是更不安全。
它能与 Claude Desktop、Cursor 和 Windsurf 配合使用吗? 可以。它在传输层封装 MCP 配置,与任何标准 MCP 客户端兼容。
它是开源的吗?
是的,采用 Apache-2.0 许可证。MCP 客户端和所有测试均完全开源。托管策略引擎是独立服务——你也可以将 TRUST_GATE_URL 指向自己的部署。
回执具有抗量子能力吗? 是的。每份回执都使用 Ed25519(经典算法)和 ML-DSA-65(后量子算法,NIST FIPS 204 / CRYSTALS-Dilithium 安全级别 3)进行混合签名。ML-DSA-65 公钥直接嵌入回执,可完全离线验证,无需依赖后端。即使未来量子计算机破解了 Ed25519,ML-DSA-65 签名仍然有效。
没有网络连接时,我能验证回执吗?
可以——适用于混合回执。将回执中的 ml_dsa_signature 和 ml_dsa_public_key 字段传给 verify_receipt。验证完全在你的机器上使用嵌入的公钥进行。无需调用后端、无需 Trust Gate 账户,也无需互联网连接。
这符合欧盟《人工智能法案》吗? 第 50 条的透明度义务(自 2026 年 8 月 2 日起生效)要求对 AI 生成的内容和决策进行数字签名。每份 TrustAtom 回执都经过数字签名、带有时间戳、机器可读,并且任何第三方都可以离线验证。请参阅合规性表格。
对性能有什么影响?
端到端的 gate_decision:约 180 ms(包括后端调用)。离线 ML-DSA-65 验证:约 7 ms。请参阅基准测试。
文档
- WHITEPAPER.md — 完整技术论文,包含实测结果、相关工作和可复现性附录
- ARCHITECTURE.md — 三层防御、数据流、性能预算和扩展点
- THREAT_MODEL.md — 攻击类别、防御措施和完整的 CVE 覆盖矩阵
- SECURITY.md — 负责任的漏洞披露(72h 确认、30d 修复、90d 公开)
- CONTRIBUTING.md — 贡献者工作流,包含 47/51/19 项测试不变量
- CHANGELOG.md — 发行说明
相关资源
- Trust Gate — 此服务连接的托管策略引擎
- mcp-scan — 扫描 MCP 配置,检查是否存在工具投毒
- OWASP MCP Top 10 — 权威的 MCP 安全分类体系
- NIST FIPS 204 — 基于模块格的数字签名标准
- dilithium-py — 本项目基于其构建的纯 Python ML-DSA 参考实现
- Model Context Protocol — 此服务实现的规范
负责任的漏洞披露
发现漏洞了吗?请提交私密的 GitHub Security Advisory,或发送邮件至 [email protected]。我们遵循 90 天的负责任漏洞披露期限。请参阅 SECURITY.md。
License
Apache-2.0 — Cyber Warrior Network
No Receipt. No Trust.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。