WebにアクセスしてきたAIエージェントやクローラBotが正しいか、確認出来るようにする仕組みがIETFに提案されています。
以下の2つを組み合わせて実現されます。
この仕組みでは、エージェント(AIエージェントやクローラBot)が送信するHTTPリクエストに署名を施します。これにより、Webサイト側は、正規のエージェントであることを確認できるようになります。
背景
IETFのミーティングで、アクセスしてきたAIエージェト・クローラボットを識別するのにIPアドレスやUser-Agentでは不十分という議論がありました。そのときの議論のまとめは以下。
mailarchive.ietf.org
今回、それに対する最初の案が出てきた形です。
HTTP Message Signatures for automated traffic Architecture
署名付きリクエスト
AIエージェントはWebサーバにアクセスする際、署名付きHTTPリクエストを作ります。署名の具体的な方法としては『RFC 9421 HTTP Message Signatures』を使っています。(tagに web-bot-auth を指定します)
GET/path/to/resource Signature: abc== Signature-Input: sig=(@authority);tag="web-bot-auth"; keyid="NFcWBst6DXG-N35nHdzMrioWntdzNZghQSkjHNMMSjw" Signature-Agent: signer.example.com
検証および、鍵情報の取得
Webサーバ側は、HTTPリクエストの署名を検証します。
この時、知らないkeyidの場合は、Signature-Agentで指定されたURLに鍵を取得しに行くことが出来ます。これがHTTP Message Signatures Directoryです。鍵の情報は、JWKSのキーディレクトリ形式で記述されます。(鍵情報はキャッシュとして持っておけます)
https://signer.example.com/.well-known/http-message-signatures-directory
{ "keys": { "kty": "OKP", "crv": "Ed25519", "kid": "NFcWBst6DXG-N35nHdzMrioWntdzNZghQSkjHNMMSjw", "x": "JrQLj5P_89iXES9-vFgrIy29clF9CC_oPPsw3c5D0bs", "use": "sig", "nbf": 1712793600, "exp": 1715385600 } }
デモサイト
提案者によってすでにデモサイトが公開されています
http-message-signatures-example.research.cloudflare.com