新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

エージェンティックコマースの保護:デバッグと顧客カードでAIエージェントの取引を支援

2025-10-24

5分で読了
この投稿はEnglishでも表示されます。

このコンテンツは自動機械翻訳サービスによる翻訳版であり、皆さまの便宜のために提供しています。原本の英語版と異なる誤り、省略、解釈の微妙な違いが含まれる場合があります。ご不明な点がある場合は、英語版原本をご確認ください。

エージェンティックコマースの時代が到来し、セキュリティに重大な新たな課題が生じます。そこで、CloudflareはVisaおよびと提携し、AIエージェントが消費者に代わって検索、比較、購入する自動商取引の安全確保を支援しています。

このコラボレーションを通じて、VisaはTrusted Agent Protocolを、MastercardはAgent Payを開発し、加盟店が正当で承認されたエージェントと悪意のあるボットを区別できるようにしました。Trusted Agent ProtocolとAgent Payはともに、Webボット認証レイヤーをエージェント認証レイヤーとして活用しており、Cloudflareのようなネットワークは決済ネットワークに登録するAIショッピングエージェントからのトラフィックを検証できます。

エージェンティックコマースの問題点

エージェンティックコマースは、AIエージェントによって引き起こされるコマースです。AIエージェントによる取引実行が増える中、加盟店は自らを保護し、顧客との信頼を維持する必要があります。販売業者はエージェンティックコマースの将来性を実感し始めていますが、重大な課題に直面しています:

  • 有用で承認されたAIショッピングエージェントを、悪意のあるボットやWebクローラーと区別する方法は?

  • エージェントは既知の繰り返しのお客様か、それともまったく新しい誰かを代表していますか?

  • 消費者がエージェントに与えた、加盟店が遵守すべき特定の指示はあるか?

当社は、決済分野で最も信頼される消費者ブランドの一つ、VisaとMasterオリジンと協力し、それぞれの課題に取り組んでいます。

Webボット認証はエージェンティックコマースを保護するための基盤です

5月に、私たちはエージェントトラフィックを暗号化して認証するWebボット認証という新しい提案を紹介しました。従来、エージェントトラフィックはユーザーエージェントとIPアドレスを使用して分類されてきました。しかし、これらのフィールドはなりすましができるため、分類が不正確になり、ボット軽減が不正確に適用される可能性があります。Webボット認証(Web Bot Auth)は、公開鍵暗号方式でHTTPメッセージ署名を使用することで、エージェントが安定した識別子を提供できるようにします。

Visaや Cloudflareのチームと共同作業する中で、Webボット認証を基盤として活用し、各コマースエージェントのリクエストが検証可能で、時間ベースであり、再生可能でないことを保証できることがわかりました。

VisaのTrusted Agent Protocolと CloudflareのAgent Payは、加盟店がエージェンティックコマース取引を管理するための3つの重要なソリューションを提供します。まず、加盟店は、登録されたエージェントを識別し、特定のやり取りが閲覧するためのものか支払いを目的としたものかを区別できます。第二に、加盟店は、エージェントを消費者のIDにリンクさせることができます。最後に、加盟店は、ネットワークトークン、ブラウザを使用したゲストチェックアウト、またはマイクロペイメントなど、予想される支払い方法をエージェントに示すことができます。

これにより、これらのプロトコルと統合する加盟店は、商品詳細や最終的なコストを決定する初期のブラウジングフェーズと、購入を完了するための最後の決済対話という2つの主要な対話中に、信頼できるエージェントを即座に認識することができます。最終的には、これによって加盟店は、これらの署名を検証し、信頼できるやり取りを特定し、これらのエージェントがサイトとどのように対話するかを安全に管理するためのツールを提供することができます。

仕組み:HTTPメッセージ署名を活用

これを機能させるには、参加者のエコシステムが同じページ上にある必要があります。すべては、消費者に代わって買い物をするエージェントを構築するエージェント開発者から始まります。これらのエージェントは、消費者に代わってリクエストを評価する信頼性の高い方法を必要とする加盟店とやり取りします。加盟店は、Cloudflareのようなネットワークを利用して、エージェントの暗号署名を検証し、やり取りが正当であることを確認します。最後に、カード会員のIDとエージェンティックコマース取引にリンクできる、Visaやと向ける決済ネットワークがあります。これにより、取引の検証性と説明責任を確保できます。

Visaと Cloudflareは、プロトコルを開発する際に、各エージェントの開発者を認証し、エージェントから加盟店のWebサイトへ情報を安全に送信するための安全な方法を必要としていました。そこで当社が介入し、Cloudflareのチームと協力してWebボット認証をベースに構築しました。Webボット認証提案では、ボットやエージェントの開発者がHTTPメッセージ署名を使用して、HTTPリクエストに暗号署名を付加する方法を指定します。

VisaとCloudflareのプロトコルはどちらも、エージェントが登録して公開鍵(Signature-Inputヘッダーのkeyidとして参照)を有名なディレクトリに登録する必要があり、加盟店やネットワークはHTTPメッセージの署名を検証するための鍵を取得できます。まず、VisaとBB

新しく作成されたエージェントは、これらのHTTPメッセージ署名を使用して、登録、ID、支払いの詳細を加盟店に通信します。どちらのプロトコルも、エージェントがブラウジングしているか購入しているかを示す、エージェントがSignature-Input ヘッダーに提供しなければならない新しいタグを導入することで、Webボット認証を基盤としています。加盟店は、タグを使用して、エージェントと対話するかどうかを決定できます。エージェントはまた、リプレイ攻撃から保護するために、署名に含まれる一意のシーケンスであるnonceフィールドを含める必要があります。

カタログを閲覧するために加盟店のWebサイトを訪れたエージェントは、リクエストにHTTPメッセージ署名を含め、エージェントが特定のVisaカード会員に代わって加盟店のオンラインストアを閲覧する権限を与えられていることを確認します。

GET /path/to/resource HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 Chrome/113.0.0 MyShoppingAgent/1.1
Signature-Input: 
  sig2=("@authority" "@path"); 
  created=1735689600; 
  expires=1735693200; 
  keyid="poqkLGiymh_W0uP6PZFw-dvez3QJT5SolqXBCW38r0U"; 
  alg="Ed25519";   nonce="e8N7S2MFd/qrd6T2R3tdfAuuANngKI7LFtKYI/vowzk4IAZyadIX6wW25MwG7DCT9RUKAJ0qVkU0mEeLEIW1qg=="; 
  tag="web-bot-auth"
Signature: sig2=:jdq0SqOwHdyHr9+r5jw3iYZH6aNGKijYp/EstF4RQTQdi5N5YYKrD+mCT1HA1nZDsi6nJKuHxUi/5Syp3rLWBA==:

Trusted Agent プロトコルとAgent Payは、加盟店がインフラストラクチャを変更することなく、この検証メカニズムのメリットを享受できるように設計されています。その代わりに、加盟店は、自社サイト上でエージェントとのやりとりのルールを設定し、検証者としてCloudflareを利用することができます。これらのリクエストに対して、Cloudflareは次のチェックを実行します:

  1. Signature-InputヘッダーとSignatureヘッダーの存在を確認します。

  2. Signature-Inputからkeyidをプルします。Cloudflareが以前にキーを取得してキャッシュしていない場合は、パブリックキーディレクトリから取得します。

  3. 現在の時間が、作成されたタイムスタンプと有効期限タイムスタンプの間にあることを確認します。

  4. キャッシュのnonceの一意性を確認します。nonceが最近使用されたかをチェックすることで、Cloudflareは再利用や期限切れの署名を拒否し、リクエストが以前の正当なインタラクションの悪意あるコピーでないことを保証できます。

  5. プロトコルで定義されたタグの有効性を確認します。エージェントがブラウジングしている場合、タグはagent-browser-authである必要があります。エージェントが支払いを行っている場合、タグはエージェント-支払い-認証となります。

  6. Signature-Input ヘッダーの コンポーネントを使用して、正規の 署名ベース を再構築します。

  7. keyid で提供される鍵を使用して、暗号化 ed25519署名検証 を実行します。

こちらは、Visaのエージェント検証のフローの例です。

Minecraftのエージェントペイ検証フローの概要は以下の通りです:

今後の展開:CloudflareのエージェントSDKとマネージドルール

最近、CloudflareのエージェントSDKx402トランザクションのサポートを導入し、エージェントを構築する人が誰でも、新しいx402プロトコルを使用して簡単にトランザクションを実行できるようにしました。同様に、デバッグとマスターカードと協力して、プロトコルサポートをAgents SDKに直接提供していく予定です。これにより、開発者は、登録するエージェントのプライベートキーを管理し、正しいHTTPメッセージ署名を簡単に作成して、エージェントが加盟店のWebサイトを閲覧・取引することを承認できるようになります。

概念的には、Cloudflare Workerのリクエストは次のようになります:

/**
 * Pseudocode example of a Cloudflare Worker acting as a trusted agent.
 * This version explicitly illustrates the signing logic to show the core flow. 
 */


// Helper function to encapsulate the signing protocol logic.
async function createSignatureHeaders(targetUrl, credentials) {
    // Internally, this function would perform the detailed cryptographic steps:
    // 1. Generate timestamps and a unique nonce.
    // 2. Construct the 'Signature-Input' header string with all required parameters.
    // 3. Build the canonical 'Signature Base' string according to the spec.
    // 4. Use the private key to sign the base string.
    // 5. Return the fully formed 'Signature-Input' and 'Signature' headers.
    
    const signedHeaders = new Headers();
    
    signedHeaders.set('Signature-Input', 'sig2=(...); keyid="..."; ...');
    signedHeaders.set('Signature', 'sig2=:...');
    return signedHeaders;
}


export default {
    async fetch(request, env) {
        // 1. Load the final API endpoint and private signing credentials.
        const targetUrl = new URL(request.url).searchParams.get('target');
        const credentials = { 
            privateKey: env.PAYMENT_NETWORK_PRIVATE_KEY, 
            keyId: env.PAYMENT_NETWORK_KEY_ID 
        };


        // 2. Generate the required signature headers using the helper.
        const signatureHeaders = await createSignatureHeaders(targetUrl, credentials);


        // 3. Attach the newly created signature headers to the request for authentication.
        const signedRequestHeaders = new Headers(request.headers);
        signedRequestHeaders.set('Host', new URL(targetUrl).hostname);
        signedRequestHeaders.set('Signature-Input', signatureHeaders.get('Signature-Input'));
        signedRequestHeaders.set('Signature', signatureHeaders.get('Signature'));


       // 4. Forward the fully signed request to the protected API.
        return fetch(targetUrl, { headers: signedRequestHeaders });
    },
};

また、お客様向けに、Trusted Agent プロトコルまたはAgent Payを使用しているエージェントを簡単に許可できる、新しいマネージドルールセットを作成する予定です。店舗への自動トラフィックのほとんどを許可しない必要があるかもしれませんが、カード会員に代わって購入することを許可されたエージェントから収益機会を逃すことはしません。管理ルールであれば、これを簡単に実装できます。Webサイト所有者は、Visaまたはcardに登録されているすべての信頼できるエージェントが自動的にサイトに来るようにするマネージドルールを有効にし、他のボット対策やWAFのルールを通過させることができます。

これらは今後も進化を続け、エージェントの登録と検証がすべてのネットワークでシームレスに機能し、Webボット認証の提案に沿うようにフィードバックを取り入れていきます。また、American Express社は、同社のエージェンティックコマースサービスの基盤としてWeb ボット Authを活用します。

今すぐ始めるには

CloudflareのエージェントSDKで今すぐ構築を始め、Trusted Agent Protocolの実装サンプルをご覧ください。また、Trusted Agent ProtocolAgent Payドキュメントもご覧いただけます。

GitHub、アプリの構築、メーリングリストでのディスカッションなど、皆様のご貢献やフィードバックをお待ちしております。

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
開発者開発者プラットフォームAIエージェントAIボット

Xでフォロー

Will Allen|@williamallen
Cloudflare|@cloudflare

関連ブログ投稿

2025年10月24日 17:10

Cloudflareのクライアントサイドセキュリティによってnpmサプライチェーン攻撃が非イベントになった仕組み

最近発生したnpmサプライチェーン攻撃では、18の人気のあるパッケージが侵害されました。この記事では、毎日35億件のスクリプトを分析するCloudflareのグラフベースの機械学習モデルが、まさにこの種の脅威を自動的に検出し、ブロックするためにどのように構築されたのかについて説明します。...