Skip to main content
Sam stands at a wide marble counter facing a confident agent in a sharp blazer holding a clipboard of glossy ad placements — but the counter behind the agent is empty, with no logo, no signage, and no one else in sight get_products レスポンスがちょうど Sam のオーケストレーターにヒットしました。セラー — Northwind Media — は Acme Outdoor が乗りたいスポーツネットワーク StreamHaus 全体で CTV 在庫を見積もりました。CPM は公正に見え、アベイルはフライトに合い、レスポンスは 1 秒未満で到着しました。 Sam は Northwind とトランザクションしたことがありません。このレスポンスに署名したエージェントが実際に StreamHaus 在庫を販売する認可を受けているか、StreamHaus が彼が認識する親ハウスの下の実パブリッシャーか、賢い攻撃者が先週 northw1nd.example を登録し $25,000 を持ち去ろうとしているかを知りません。 彼は Northwind にセールスデッキで説得してもらう必要はありません。プロトコルにコードでチェーンを検証可能にしてもらう必要があります — レスポンスの署名鍵から、Northwind のブランドアイデンティティを通じて、StreamHaus の認可へ、彼が認識できる親ハウスに戻るまで、すべてのリンク。彼のバイヤーエージェントはチェーンを自動的に歩きます。Sam は判定を読みます。 このウォークスルーはそのチェーンを Sam の目を通じてたどります。
これが検証するものとしないもの。 チェーンは 誰が販売する認可を受けているか に答えます。それは エージェントの背後の法人が誰か(KYC、実オペレーター)、アベイルが配信時に現実を反映するか(カタログ精度、CPM、配信)、ホスティングインフラが信頼できるか(DNS、CDN、レジストラ)には答えません。境界された正直さステップ がすべての制限を明示的に名指します。これは在庫に適用された C2PA の「クレーム非認証」姿勢です — プロトコルは認可クレームを運びそれを検証可能にし、そこで止まります。

一目でわかるチェーン

3 つの発見可能な表面と 1 つの暗号チェック。Sam のエージェントは都合のよい順序でそれらを実行します: チェーンは設計上双方向です: 各事実はそれに対する権限を持つちょうどその当事者によって主張されます。パブリッシャーが誰が在庫を販売できるか決定します。ブランドオーナーが何を所有するか決定します。セラーがどの鍵がレスポンスに署名するか決定します。第三者レジストリがそれらの間を裁定しません — 誤動作する認可されたセラーは、プロトコル内クレームチェックではなく、パブリッシャーが adagents.json エントリーを取り消すことで修復されます。 下の 4 ステップのうち 1 つのみが暗号的に基礎付けられています(署名)。他の 3 つは整合性チェックされた発見です — well-known な場所の権威ファイルに対する文字列等価マッチ。チェーンは、パブリッシャーとセラーの自身の DNS、ホスティング、well-known エンドポイントの制御と同じだけ強いです。それが含意するものについては Step 5 を参照。

ステップ 1: レスポンス署名を検証

Sam holds a paper response up to a lamp — a wax seal in the corner glows under the light, revealing a cryptographic pattern that matches a key card he pulls from a folder labeled adagents.json get_products レスポンスは RFC 9421 SignatureSignature-Input ヘッダーを運びます。keyid パラメーターは Northwind の公開された JWKS の JWK を指します。Sam のクライアントはボディを解析する前に署名を検証します:
パスは Sam に 1 つの狭いことを伝えます: keyid とペアの秘密鍵を保持するエンティティがこのレスポンスを生成し、レスポンスは転送中に改ざんされていない。それはまだ keyid が正当な Northwind に属することを伝えません。そのバインディングはステップ 3 の adagents.json から来ます。

ステップ 2: Northwind の brand.json を読む

Sam opens a leather-bound folder on Northwind's reception desk — inside is a single embossed page declaring the agency's portfolio, signing keys, and authorized operators, with a glowing seal at the top Sam のエージェントは https://northwind.example/.well-known/brand.json をフェッチします。これは Northwind の自己宣言です: それが誰で、署名鍵がどこに存在するか。
ここで 2 つが重要:
  1. ステップ 1 の keyidhttps://northwind.example/.well-known/jwks.json で解決しなければならない — Northwind 自身の brand.json が指す JWKS。Sam は今や署名から自己宣言のブランドアイデンティティへのバインディングを持ちます。
  2. Northwind はスタンドアロンエージェンシーhouse_domain フィールドなし。Northwind 側で検証する親ハウスクレームはありません。重要な認可クレームはパブリッシャー側、ステップ 3 に存在します。
brand.json はそれが記述するエンティティによって HTTPS 上で公開されます。生のフィールドをまずスキーマ検証せずに LLM プロンプトにパイプするバイヤーエージェントは、相手方から敵対的入力を取っています。解析前に brand.json スキーマ に対して検証し、攻撃者制御の文字列フィールド(namesdescription、カスタムキー)をサニタイズなしに LLM コンテキストに決して渡さないでください。

ステップ 3: StreamHaus の adagents.json に対して確認

Sam holds two documents side by side — Northwind's brand.json on the left listing StreamHaus, and StreamHaus's adagents.json on the right listing Northwind — and the matching delegation_type field on both glows green as the chain locks in Sam のエージェントは https://streamhaus.example/.well-known/adagents.json をフェッチします — 誰が在庫を販売する認可を受けているかのパブリッシャー自身の宣言:
これが双方向ロックです:
  • url が一致 Northwind の brand.jsonagents[].url で名指した MCP エンドポイントと。両側で同じエージェント。
  • delegation_type: "delegated" が商業関係を宣言 — Northwind は StreamHaus に代わって販売する認可を受けている。enum は direct | delegated | ad_network。パブリッシャーがどれが合うか選ぶ。
  • signing_keys[] が、その kid がステップ 1 の署名で使われたものに一致する JWK を含む。これが Sam が欠いていたリンクです: パブリッシャーの StreamHaus が、自身のファイルでこの特定の公開鍵が自身に代わって署名できると証明します。
今や Sam は「誰が販売する認可を受けているか」の答えを持ちます: このレスポンスに署名したエンティティはパブリッシャー自身の認可ファイルで、一致する商業関係と明示的な署名鍵認可とともに名指されている。チェーンが閉じました。
ブランドプロトコルの 相互主張モデル は、Sam の下流ロジックが行動できる離散シグナルを生成します:Sam のチェーンは mutual_assertion に解決します — inline に次ぐ最強の状態。inlinemutual_assertion のみがチェーンを閉じます。

ステップ 4: 親ハウスを歩く

Sam stands in front of a wall display showing a brand-portfolio hierarchy — a large parent-house emblem at top, with the publisher emblem below it connected by a glowing teal line, and other sibling sub-brand emblems branching off the parent Acme Outdoor の包含リストは親ハウスレベルで解決します — 彼らは Sportshaus Holdings のブランドファミリーを信頼します。StreamHaus はサブブランドなので、Sam のエージェントは 1 ホップさらに歩きます。 StreamHaus 自身の brand.json がその親を宣言します:
次に親の brand.json が相互にします:
相互性ルール: StreamHaus の house_domain ↔ Sportshaus Holdings の brand_refs[].domain。両側が一致します。 このステップに 2 つの別個の概念が乗り、文書はそれらを混同しないよう注意します:
  • 子の keller_typeendorsed)はブランドアーキテクチャ関係を記述 — サブブランドが親の隣にどう位置付けられるか。それは Keller アーキテクチャメタデータで、商業認可ではありません。
  • Northwind が販売できるようにする商業関係 はステップ 3 の delegation_type: "delegated" で、親ハウスではなくパブリッシャー(StreamHaus)に存在します。
Sportshaus Holdings は Acme Outdoor の包含リストにあります。Sam のエージェントがちょうど歩いたチェーンは: 署名付きレスポンス → Northwind の brand.json → StreamHaus の adagents.json → StreamHaus と Sportshaus Holdings の相互 brand.json 宣言。4 つの発見可能な表面、1 つの暗号アンカー、認可質問のための電話ゼロ。

Step 5: Know what the chain does not prove

Sam sits at his desk with the sealed document beside him, holding his phone to his ear — the technical chain is complete, and now he's calling a person at the publisher to confirm the human-layer details the protocol cannot attest 認可チェーンが閉じました。Northwind は初めて Acme Outdoor が実際に意味ある支出でトランザクションする相手方なので、Sam は電話を取ります。プロトコルのためではありません — チェーンは伝えられることを彼に伝えました。チェーンが伝えられないすべてのために。 そのテーブルの右側に 3 つの名指しされたギャップが存在します。 人間層ギャップ。 AdCP はオペレーター/人間 KYC プリミティブを運びません。暗号チェーンは「このドメインは販売する認可を受けており、この鍵がこのレスポンスに署名した」と言います — 「検証された会社の検証された人間がこのエージェントの反対側にいる」とは言いません。KYC はメンバーシップとアカウント層です。Acme のしきい値を超える新しい相手方には、Sam は依然として、任意の意味ある新ベンダーに対してするのとまったく同様に人間チェックにエスカレートします。 ホスティング層ギャップ。 チェーンは northwind.example、その DNS、TLS、CDN を制御する誰でも信頼します。レジストラ乗っ取り、CDN 侵害、誤発行された TLS 証明書はチェーン全体を置き換えます — 攻撃者が有効に見えるパイプライン上で攻撃者制御の brand.jsonadagents.json、JWKS をサーブします。3.x に公開鍵透明性ログはありません。初回遭遇信頼は trust-on-first-use で、失効は再フェッチによってのみ検出可能です。以前 Northwind とトランザクションしたバイヤークライアントは見た kid をピン留めしローテーションで警告します。初回遭遇のバイヤークライアントはそのシグナルを持ちません。#3925 を参照。 配信時ギャップ。 カタログ精度はプロトコル証明されません。パブリッシャーは個別の製品エントリーに署名せず、製品ごとの証明は在庫が本番でどう運用されるかに一致しません — 予測はドリフトし、価格は動き、供給は動的です。誤動作する認可されたセラーは、プロトコル内クレームチェックではなく、パブリッシャーが adagents.json エントリーを取り消すことで修復されます。配信時の真実は 測定 と課金照合に存在します。 これは C2PA の「クレーム非認証」姿勢です。プロトコルは認可クレームを運びそれを暗号的に検証可能にします。それは — そしてプロトコル層ではすべきでない — 任意の意味ある新相手方に対してバイヤーがする人間層、ホスティング層、配信層のチェックを置き換えません。

Sam が次にすること

Sam のクライアントは、決定時にキャプチャした brand.jsonadagents.json、JWKS バイトを含めて — ライブファイルへのポインターだけでなく — get_products レスポンスとともに検証結果をログします。数か月後、監査人はそれらのキャプチャされたアーティファクトに対して署名を再検証し Sam の決定を正確に再現できます。ライブ .well-known/ ファイルの再フェッチは不十分です — それらは可変で、単一の鍵ローテーションまたはドメイン移転が素朴なリプレイを無効化します。 検証結果と 5 状態トラストシグナルは候補プランとともに Sam の ガバナンスフロー に移動し、そこで Jordan のガバナンスエージェントが任意の支出がコミットされる前に Acme のポリシーチェックを適用します。

ここからどこに行くか