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エージェントのツール呼び出しをポリシーで評価し、許可された操作にEd25519とML-DSA-65のハイブリッド署名レシートを発行するMCPサーバーです。入力のサニタイズ、障害時の拒否、オフライン検証により、監査記録が必要なエージェントのワークフローに適しています。
主な機能
- 01リスクスコア付きポリシー評価
- 02許可操作へのハイブリッド署名レシート
- 03ML-DSA-65によるオフライン検証
- 04入力サニタイズとフェイルクローズ
- 05ポリシー事前確認とヘルスチェック
活用シーン
- 01コードデプロイ前の操作許可確認
- 02エージェント操作の検証可能な記録
- 03監査レシートの後年オフライン検証
MCP 対応
MCPサーバーとして、クライアントにgate_decision、verify_receipt、check_policy、healthツールを提供します。入力をサニタイズしてポリシー評価を行い、許可時にはハイブリッド署名レシートを発行し、バックエンド障害時には拒否します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
trust-gate-mcp
NIST FIPS 204 準拠の耐量子レシートを備えた、初の本番環境向け MCP サーバー。
レシートなし。信頼なし。
AI エージェントが実行するすべての MCP ツール呼び出しを、ポリシーで制御し、ハイブリッド署名し、オフラインでも永続的にフォレンジック検証できるようにします。
ツールが汚染されたり、突然提供を打ち切られたり、乗っ取られたり、2033 年に量子計算機で破られたりした場合でも、今日の時点で暗号学的な証明を得られます。
問題(ひと言で)
AI エージェントの判断は、7~10 年後に実施されるコンプライアンス監査に備えて保管されます。しかし、現在の署名が持ちこたえるのは、おそらく 7 年ほどです。
- 2026 年 2 月:CVE-2026-25253(OpenClaw)により、認証なしでリモートコード実行が可能となり、AI エージェントのゲートウェイ 135,000 台が危険にさらされました。同日、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
3 層の防御全体については、アニメーション付きアーキテクチャ図をご覧ください。
クイックスタート
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 — 次の 1 つのコマンドを実行します。
claude mcp add trust-gate -- uvx trust-gate-mcp
MCP 互換のあらゆるエージェント:
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 — 独立検証
あらゆるレシートを数学的に検証します。方法は2つあります。
- オフライン 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 公開鍵は、すべてのレシートに埋め込まれています。次の3つの特性があります。
- 現在 — これまでどおり、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 として標準化されました。
セキュリティモデル
独立した3つの防御レイヤー。攻撃者は3つすべてを突破しなければなりません。
レイヤー1 — 入力のサニタイズ
すべての文字列引数は、条件ロジックや API 呼び出しの前にサニタイズされます。
| 脅威 | パターン数 | 防御 | 参考資料 |
|---|---|---|---|
| 不可視 Unicode(ツールポイズニング) | 無制限 | _INVISIBLE_UNICODE_RE が RTL、ゼロ幅文字、BOM、C0/C1 を除去 | Invariant Labs、2025年4月 |
| クラス A — ポリシーの上書き | 13 | _INJECTION_RE がインジェクション句を無害化 | CVE-2025-54794 |
| クラス B — エージェントによる拡散/流出中継 | 4 | _INJECTION_RE が exfiltrate、leak/steal/dump + target、base64 encode-and-relay、embed-in-response を無害化 | Willison の Lethal Trifecta(2025年6月) · OWASP LLM Top 10 |
| 過大な入力 | フィールドごと | FIPS 204 を考慮したサイズ設定を行う _MAX_LEN | DoS の防止 |
| 環境変数の偽装 | — | _validate_env の許可リストにより SANDBOX に強制 | CVE-2025-64106 |
クラス B 防御フローをご覧ください。完全な脅威モデルについては、docs/THREAT_MODEL.mdをご覧ください。
レイヤー2 — ポリシー評価
バックエンドが宣言型ポリシールールを評価します。登録されていないエージェントには明示的な拒否が返され、デフォルトで許可されることはありません。判定には、連続的なリスクスコア(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 ノート PC、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 bytes
- ML-DSA-65 署名:3,309 bytes
- ML-DSA-65 公開鍵:1,952 bytes(すべてのレシートに埋め込まれます)
python demo_quantum_proof.py で再現できます。
セキュリティ評価
Python 3.10~3.13、Linux/macOS/Windows 環境で、3 つのスイートすべてが各 PR で GitHub Actions により実行されます。
| スイート | チェック数 | 結果 |
|---|---|---|
ユニットテスト(pytest) | 47 | PASS |
| OWASP ASI01–06 評価 | 51 | PASS |
| 敵対的ストレステスト(CVE 対応) | 19 | PASS |
| Bandit 静的解析 | 528 LOC | 問題 0 件 |
| pip-audit(直接依存関係) | 依存関係 3 件 | CVE 0 件 |
ローカルで再現するには:
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 Tool Poisoning | 不可視 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) | エージェント環境の偽装 | 高(CVSS 8.8) | 環境変数の許可リスト |
| 7 | CVE-2025-6515 Prompt Hijacking | セッショントークンの乗っ取り | 高 | レシートベースのセッションバインディング |
| 8 | Invariant Labs Rug Pull | 承認後のツール説明の改変 | 重大 | レシートベースのツールハッシュ |
| 9 | CVE-2025-5276 SSRF | MCP URL の取得を介した SSRF | 高 | ポリシーで制御される許可リスト |
| 10 | OWASP MCP Top 10 — MCP02, MCP10 | 過剰なスコープ/コンテキストの過剰共有 | 高 | アクションごとのレシートスコープ |
| 11 | Willison Lethal Trifecta(2025年6月) | エージェント型拡散によるデータ窃取 | 高 | クラス B の無害化 |
| 12 | OWASP LLM04 | 安全でないプラグインによるデータ窃取 | 高 | クラス B の無害化 |
| 13 | Trend Micro Agentic AI Exfil(2024年) | Base64 エンコードされたデータ窃取チャネル | 高 | クラス B の無害化 |
| 14 | Palo Alto Unit 42 Agentic AI Attack Framework(2025年5月) | ツールチェーンを介した権限昇格 | 高 | クラス B の無害化+フェイルクローズ |
| 15 | Salt Typhoon HNDL(2024年10月) | レシートを対象とした「今収集し、後で復号」攻撃 | 国家レベル | ML-DSA-65 ハイブリッド署名 |
全体のマトリックスについては、docs/THREAT_MODEL.md を参照してください。python stress_test.py を実行すると、CVE に対応する入力に対する防御を検証できます。
コンプライアンス
1 つのデプロイメントで、複数の重複する要件を満たせます。
| フレームワーク | 要件 | レシートによる対応 |
|---|---|---|
| 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 | (空) | ベアラートークン — 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 オーバーライド、ゼロ幅文字、クラス A インジェクション、サイズ超過、環境変数の偽装 |
TestAgenticDiffusionDefense | 5 | クラス B のデータ流出パターン(2026 年 4 月以降、必須) |
TestMlDsaFieldSizeLimits | 4 | FIPS 204 のフィールドサイズ健全性チェック(必須) |
TestGateDecisionSanitization | 5 | エンドツーエンドのサニタイズ、空のフィールドを拒否 |
TestCheckPolicySanitization | 1 | 空のフィールドは拒否を返す |
合計:47 件のテスト。OWASP ASI チェック 51 件。ストレステスト 19 件。すべての PR で 3 種類すべてを再実行します。
FAQ
MCP サーバーをツールポイズニングから保護するにはどうすればよいですか?
MCP 設定に trust-gate-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 アカウントも、インターネット接続も必要ありません。
EU AI Act に準拠していますか? 第 50 条の透明性義務(2026 年 8 月 2 日発効)では、AI が生成したコンテンツや意思決定にデジタル署名を付与することが義務付けられています。すべての TrustAtom 証明書はデジタル署名され、タイムスタンプが付与された機械可読形式であり、第三者がオフラインで検証できます。コンプライアンス表をご覧ください。
パフォーマンスへの影響はどの程度ですか?
エンドツーエンドの gate_decision は、バックエンド呼び出しを含めて約 180 ms です。オフラインでの ML-DSA-65 検証は約 7 ms です。ベンチマークをご覧ください。
ドキュメント
- WHITEPAPER.md — 測定結果、関連研究、再現性に関する付録を含む技術論文全文
- ARCHITECTURE.md — 3 層の防御、データフロー、パフォーマンス予算、拡張ポイント
- THREAT_MODEL.md — 攻撃の分類、防御策、CVE 対応範囲の全マトリックス
- SECURITY.md — 責任ある脆弱性開示(72 時間以内に受領確認、30 日以内に修正、90 日後に公開)
- 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。