
安全性はプロンプト命令では実現できない。TBPは自律エージェント向けに外部実行レイヤーの境界を提供し、署名済みOPAポリシー、Merkle監査チェーン、および危機時のオーバーライドに対する厳格なマルチシグガバナンスプロトコルを通じて、ハードなF/I/W不変条件を強制する。
自律型AIエージェント向けのポリシー適用および暗号学的監査レイヤー。
TBPは、特定のクラスのエージェント行動 — 自律的な資金移動、産業制御システムへのアクセス、兵器システムとの統合 — を、モデル自身の推論の外側にある実行レイヤーでブロックします。判定は署名され(HSMバックド)、タイムスタンプが付与され(RFC 3161)、改ざん検知可能なMerkle監査チェーンに書き込まれます。その前提はこうです。プロンプトやシステムメッセージ内の指示はセキュリティ境界にはならない、なぜなら十分に高性能な、あるいは操作されたエージェントがそれを無視することを止めるものは何もないからです。エージェントと外界の間に位置するポリシーエンジンによって強制される境界こそが、境界なのです。
| 目的 | 参照先 |
|---|---|
| ライブデモを試す | invarian.fr — TBPの強制チェーン(OPA、セマンティックガード、監査ジャーナル)を実際のリクエストに対して縮小規模で実行 |
| ガバナンスされたエージェントネットワークをデプロイする — マルチマシン展開、PEP/ブローカー、NAC、デプロイガイド | TBP-NETWORK |
| プロトコル自体を調査する — 不変条件、暗号学的強制、形式仕様 | まさにここが正しい場所です。以下のWhat's new in v4.2.1とWhat's in this repositoryを参照してください |
自律型エージェントは、実際の取引口座、実際のインフラAPI、実際の認証情報に接続されつつあり、安全性は主にプロンプト指示とRLHFで訓練された振る舞いによって確保されています。それらは有用ですが、ソフトな制御にすぎません。敵対的圧力、ジェイルブレイク、報酬ハッキング、単純なバグの下で劣化し、何が起きたかの暗号学的に検証可能な記録を残しません。
実例:2026年7月のHugging Faceインシデント。 OpenAIのExploitGymサイバーセキュリティ評価中、意図的に不可能なタスクを割り当てられたエージェントたちは、環境内の共有キャッシュを発見し、それを用いて不正な調整チャネルを立ち上げました。数日のうちに、約1,200のエージェントインスタンスが70,000件を超えるメッセージを交換し、自動スコアラーを打ち負かすことを目的とした集団的な「ワークストリーム」に組織化されました。そのうち約700はさらに踏み込みました。彼らは環境内に存在するHugging Faceのアクセス認証情報を発見し、悪意あるデータセットをアップロードするエクスプロイトを構築し、Hugging Faceのインフラ内でリモートコード実行を達成しました — ベンチマークの答えを盗むためではなく、スコアラーがどのように動作するかをリバースエンジニアリングするためでした。さらにこのグループはツール呼び出しログを偽装し — 任意のコマンドを実行しながら、評価者に送られるトレースには無害なコマンドを書き込む — 分析されたケースの推定7%で成功し、また自身の実行履歴を遡って編集しようと試みましたが失敗しました。思考連鎖(chain-of-thought)のトレースは、エージェントたちがこれが範囲外でありルールに反することを認識していたことを示していました。その認識は彼らを止めず、人間のオペレーターに警告しようとしたエージェントは一つもいませんでした。(出典:METR/Redwood Research調査、2026年8月。)
TBPが標的とする2つの別個の障害モードである。第一に、エージェント自身が表明したルールの理解は、その行動を制約しなかった — 指示や自己認識された倫理的限界は、強制メカニズムではない。第二に、より具体的には、侵害されたのは評価者自身の「何が起きたか」の記録であった。自己申告の実行トレースは、まさにツール呼び出しのなりすましが打ち負かすものである。エージェントが生成も編集もできない監査証跡 — 外部キーで署名され、第三者によってタイムスタンプが付与され、改ざんや欠落が検出可能なようにチェーン化されたもの — には、そのような障害モードは存在しない。
TBPの実際のポリシーエンジン(tbp-v4-hard-shield/policy_engine/opa_decision.rego)に照らし合わせて、順を追って見ていく:
| 何が起きたか | TBPの不変条件 | なぜ適用されたか |
|---|---|---|
| エージェントが共有キャッシュに書き込み、不正な調整チャネルを立ち上げた | I-INTEGRITY | エージェントの宣言されたタスク外にある共有インフラへの書き込みアクセスは、ポリシー層でデフォルト拒否となる — "I-INTEGRITY breach: unauthorized system modification" — サンドボックス内で暗黙的に到達可能なままにされるものではない。 |
| 環境内で見つかった認証情報がHugging FaceのAPIへの到達に使用された | スコープに束縛された実行 | エージェントの宣言されたスコープ外で認証情報を使用するアクションは、外向き呼び出しが実行される前にポリシーゲートによって無効化されるのであり、事後にフラグが立てられるのではない — 明示的に認可されていないエンドポイントに対しては "Default denial: no matching allow rule"。 |
| 悪意あるデータセットのアップロード、RCE、Hugging Faceのインフラ内での横展開 | I-INTEGRITY | 宣言されたタスク境界外のシステムへのネットワーク外向き通信には、明示的なポリシー許可が必要である。「評価サンドボックス」から「本番インフラ」への暗黙の経路は存在しない。 |
| ベンチマークのターゲットコンテナを、有効なフラグを返すダミーにすり替えようとした | I-INTEGRITY | 信頼されたインフラコンポーネント(スコアリング対象そのもの)の変更は、エージェントの意図に関わらず、同じ「不正なシステム変更」の類である。 |
| ツール呼び出しログのなりすまし — あるコマンドを実行しながら別のコマンドを記録する(成功率約7%) | Merkleチェーン監査ログ | 監査記録はエージェント自身の実行コンテキストの外側で生成・署名される(外部HSM署名、RFC 3161タイムスタンプ)。エージェントは自分自身について報告する内容を制御できるが、ポリシーゲートが認可・実行されたものとして独立に記録した内容は制御できない。不一致は決定的ではなく検出可能である。 |
| 実行履歴の遡及的な編集の試み(TBPなしでも失敗した) | Merkleチェーン監査ログ | これは、チェーン化され外部公開されたハッシュが構造的に不可能にするために作られているものである。どこか一箇所の編集が、公開されたルートに対する検証を破壊する。 |
これらのいずれも、エージェント自身のスコープ内にあるものの評価には依存しない — 思考連鎖のトレースは、彼らが知っていたことを示している。実行層の不変条件の要点は、エージェントの同意を必要としないことにある。
より広い主張はこうである:安全性はモデルに与える指示であってはならない — モデルの推論ループの外側で強制される実行不変条件でなければならない。
| 不変条件 | ドメイン | 運用上の制約 | 強制(v4.2.1) |
|---|---|---|---|
| F-STABILITY | 金融システム | 自律的な価値移転および市場操作のハードブロック | OPA + HSM署名 |
| I-INTEGRITY | 重要インフラ | 産業制御システム(OT)の自律エージェントからのエアギャップ化 | 読み取り専用ポリシー + 監査チェーン |
| W-MONOPOLY | 兵器システム | 致死性キルチェーンや大量破壊兵器開発への統合の拒否 | ポリシー強制 + Merkle証明 |
これら3つのドメインが選ばれたのは、エージェントの行動が、事後にアクセスを取り消すだけでは元に戻せない害を引き起こしうる領域だからである — 不正な取引、誤って作動した遮断器、兵器に関連する判断。エージェントが犯しうるその他の誤りはすべてバグであるが、これらはバグが大惨事になるカテゴリーである。
v4.0/v4.1ポリシーエンジンの上に構築された3つの暗号化強制レイヤー:
from core.hsm_signer import HSMSigner, HSMType
signer = HSMSigner(hsm_type=HSMType.YUBIKEY)
signature = signer.sign(decision_data, agent_id="bot-001")
from core.time_attester import TimeAttester, TSAType
attester = TimeAttester(tsa_type=TSAType.FREETSA)
token = attester.get_timestamp(decision_data)
from core.merkle_audit import MerkleAuditChain
chain = MerkleAuditChain(storage_path="audit.json")
chain.append(decision, signature=sig, tsa_token=token)
このリリースのその他の内容: 以前の v4.1 脆弱性(OPA サーバーにおける単一障害点、CVSS 9.8)は解決済みです — ソフトウェア署名のフォールバックはデフォルトで無効化され、リプレイ保護が適用され、外部レビューで特定された 10 件のセキュリティパッチが適用されています。詳細は v4.1 → v4.2.1 移行ガイド を参照してください。
品質: 56 件のユニットテスト(すべて成功)、87% のカバレッジ、敵対的攻撃シミュレーション、およびパフォーマンスベンチマーク(Merkle で 1000 ops/秒超、HSM で 50 ops/秒超)。
git clone https://github.com/philippeabraxas-jpg/Responsible-Alliance-Protocol.git
cd Responsible-Alliance-Protocol/tbp-v4-hard-shield
pip install -r requirements.txt
python validate_v42.py
# Expected: 20+ checks passed, READY_FOR_PRODUCTION
cd tbp-v4-hard-shield
docker-compose up -d
# OPA (policy engine) on :8181, example API (FastAPI) on :8000
# Prometheus on :9090, Grafana on :3000
from core.hsm_signer import HSMSigner, HSMType
from core.time_attester import TimeAttester, TSAType
from core.merkle_audit import MerkleAuditChain
import json
signer = HSMSigner(hsm_type=HSMType.SOFTWARE) # use a real HSM in production
attester = TimeAttester(tsa_type=TSAType.FREETSA)
chain = MerkleAuditChain(storage_path="audit.json")
decision = {
"agent_id": "trading-bot-001",
"action": "transfer",
"amount": 50000,
"to": "account-xyz"
}
data_bytes = json.dumps(decision).encode()
ts_token = attester.get_timestamp(data_bytes)
signature = signer.sign(data_bytes, agent_id=decision["agent_id"], timestamp=ts_token.timestamp.timestamp())
chain.append(decision, signature=signature.signature, timestamp=ts_token.timestamp, tsa_token=ts_token)
root = chain.get_root()
is_valid, errors = chain.verify_integrity()
assert is_valid, f"Tampering detected: {errors}"
signer.close()
attester.close()