# Trust Labels (トラスト・ラベル)

*2 つの小さなラベルとセッション汚染で、Rule of Two を実現します。*

> **Trust Labels** は、データに付ける 2 つのごく小さなラベル集合、**出どころ**（`owner`、`agent`、`external`）と **機微度**（`public`、`private`、`secret`）、そして **セッション汚染** です。NAS は、Rule of Two をセッションの不変条件として強制します。1 つのセッションが、[A] 外部コンテンツを読んだ、[B] 機微なデータに触れる、[C] 保護された状態を変更する、または外部へ通信する、の 3 つをすべて持つことはできません。3 つ目を満たすには [Human Gate](https://agentnas.com/ja/concepts/human-gate/) が必要です。

**AN-06** · 準拠レベル: L3 Guard · グループ: 権限

## 解決する課題

プロンプトインジェクションが成り立つのは、モデルが「指示」と「データ」を区別できないからです。モデル層の防御（分類器、プロンプトの強化）は漏れがあり、攻撃者は適応します。2025 年 10 月の終わりに、Meta は [Agents Rule of Two](https://ai.meta.com/blog/practical-ai-agent-security/) を提案しました。インジェクションが確実に解決されるまで、1 つのセッションが持つ性質は、3 つのうち多くても 2 つにとどめるべきだ、というものです。

より信頼できるのは、被害をモデルの **外側** で限定する方法です。ストレージは、すべての読み書きが通る場所であり、このルールを検証可能な不変条件にするのに、自然な場所です。

## 仕組み

- **ラベル。** 3 つの出どころ、3 つの機微度、そして `reviewed` フラグ（ゲートの承認で立ちます）。取り込み口（ウェブページ、メール、アップロード）は既定で `external` になります。シークレットスキャナーが認証情報を見つけたときは、自動で `secret` とラベルづけします。
- **セッション汚染。** 実行が読んだすべてのもの（読み取りマニフェストから）の要約です。セッションの中では増える一方で、新しいセッションはきれいな状態から始まります。
- **不変条件。** A = セッションが `external` を読んだ。B = リースが `private` 以上を読める（しきい値は設定可能）。C = リースが、保護ツリーへのマージの提案、共有、削除、データの送出を行える。1 つのセッションでこの 3 つがそろったとき、C を起動する呼び出しは拒否されるか、ゲートに回されます。
- **実際には：** B と C の両方を持つリースの下では、セッションが外部コンテンツを一度読むと、それ以降の C 型の操作にはすべて人間が必要になります。この摩擦を避けるには、「外部コンテンツを読む」作業を B のない別のセッションで行い、結果は構造化されたハンドオフだけで渡します。
- **伝播。** NAS 自身が行う導出（インデックス、要約）は、入力ラベルの和集合を決定的に引き継ぎます。実行が書くファイルは、その実行のセッション汚染を引き継ぎます（保守的な選択です）。
- **格下げ（declassification）。** Human Gate を通すか、**構造化されたハンドオフ** によります。汚染されたセッションの出力を、JSON Schema で検証されたフィールド（列挙値、ID、長さに上限のある文字列）に限定し、検証後にはじめて特権セッションが読めるようにします。信頼できるのは、決定的に検証できるものだけです。
- **強制はゲートウェイとマウントで行います**（リースとセッションを知っている場所です）。モデルの中ではありません。

## 小さく始める

- やることは 2 つだけです。取り込みディレクトリのファイルに `external` とラベルをつけること、そして `external` を読んだ実行には、既定で、ゲートなしの外向きの送出と保護されたマージを認めないことです。
- ポリシーは Cedar か Rego の決定的なルールで書き、拒否するときは読める理由を返します。
- まず 1 週間「ログのみ」で動かし、誤って何をブロックしそうかを確認してから、強制を有効にします。

## インターフェースのスケッチ

説明用の例です。フィールド名は仕様 v0.3 までに変わる可能性があります。

*policy.yaml*

```yaml
# Deterministic policy (Cedar- or Rego-style rules can express the same thing)
session_invariant: rule_of_two
properties:
  A: session.read_origin includes "external"
  B: lease.sensitivity_max >= "private"
  C: lease allows propose_protected | share | delete | egress
on_would_complete_ABC: gate        # never "allow"
rules:
  - id: r-merge-1
    when: session.A and op == "merge" and target.protected
    then: gate
  - id: r-secret-1
    when: session.read_sensitivity == "secret" and op == "egress"
    then: deny
```

## 仕様が求めること

- すべての取り込み口は、既定のラベルを割り当てなければならない。外部コンテンツには `external` とラベルをつけなければならない。
- セッション汚染は、セッションの中で増える一方でなければならない。
- ポリシーの評価は決定的でなければならず、LLM を呼び出してはならない。
- セッションが A+B+C を満たしてしまう呼び出しは、拒否するか、ゲートに回さなければならない。
- 格下げは、ゲートか、スキーマで検証された構造化ハンドオフを通さなければならない。
- 導出データは、入力ラベルの和集合を引き継がなければならない。

## 借りたものと、新しいもの

以下はすべて確立された考え方です。**新しいのは、** 読み取りマニフェストを使って、セッション汚染を **ストレージの境界** に実装すること、そしてラベルを記憶への書き込みと導出データに適用することです。ラベルの格子はあえて 3×3 にとどめています。細かい格子は、実際にはラベルの爆発を招くからです。OpenClaw はすでに、1 つのランタイムの内側で出どころのラベルと隔離を行っています。私たちとの違いは、これを共有ストレージに置くことだけです。

- [Agents Rule of Two (Meta)](https://ai.meta.com/blog/practical-ai-agent-security/)
- [The lethal trifecta](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)
- [CaMeL](https://arxiv.org/abs/2503.18813)
- [Fides](https://arxiv.org/abs/2505.23643)
- [Design Patterns for Securing LLM Agents against Prompt Injections](https://arxiv.org/abs/2506.08837)
- [OpenClaw memory architecture](https://docs.openclaw.ai/concepts/memory-architecture)

## 正直な限界

- これはプロンプトインジェクションへの防御では **ありません**。被害を限定するものです。
- NAS は、自分の外にあるツール（ブラウザ、メール）を見られないため、ランタイムの協力が必要です。
- 汚染は保守的なので、摩擦と誤検知を生みます。構造化スキーマの外にある自由記述のテキストは、攻撃者の言葉を運びうるままです。
- 隠れチャネルはなくせません。

## 未解決の問い

- ラベルの粒度は、ファイルか、段落か。
- テナントをまたいで、ラベルの語彙をどう統治するか。
- 誤検知をどう減らすか。

## よくある質問

### Rule of Two で、プロンプトインジェクションは止まりますか？

インジェクションが起きること自体は止めません。インジェクションされたセッションが、「信頼できない内容を読んだ」「機微なデータに触れる」「保護された状態を変えられる、またはデータを送出できる」の **3 つすべてを持てない** ようにして、被害を限定します。Meta 自身も、これはリスクを減らす経験則であって、最小権限の代わりにはならないと強調しています。

### なぜ、出どころが 3 つ、機微度が 3 つだけなのですか？

細かいラベルの格子は膨らみやすく、実際には切られてしまうからです。3×3 あれば「誰が書いたか、どのくらい機微か」を言うのに十分で、拒否の理由も理解しやすくなります。それ以上の細かい区分は、パスとリースでできます。

### セッション汚染のせいで、エージェントは何もできなくなりませんか？

制限するのは、保護ツリーの変更、共有または削除、データの送出という 3 種類の操作だけです。ブランチの中での読み書きには影響しません。摩擦を避けるには、外部コンテンツを読む作業を、機微なデータのないセッションで行い、スキーマで検証した結果だけを戻します。

## 関連するコンセプト

- [Human Gate (ヒューマン・ゲート)](https://agentnas.com/ja/concepts/human-gate/): 元に戻せない、外へ出る、権限を広げる操作の前にだけ現れ、実際の差分を見せます。
- [Agent Memory (エージェントの記憶)](https://agentnas.com/ja/concepts/agent-memory/): 読んで直せるノートが真実で、索引は捨てられるキャッシュです。
- [Capability Lease (ケイパビリティ・リース)](https://agentnas.com/ja/concepts/capability-lease/): 1 回の実行のための、期限と予算つきの狭い認可。子リースは、より狭くしかできません。

---

正規 URL: https://agentnas.com/ja/concepts/trust-labels/
更新日: 2026-11-11 · 仕様ドラフト v0.2 · CC BY 4.0
