Proveyouragent:AIエージェントの暗号化アイデンティティ(Ed25519とDPoP)
Proveyouragentは、AIエージェントに暗号化アイデンティティを提供するPythonライブラリです。Ed25519鍵ペアとDPoP(RFC 9449)リクエスト署名を利用し、すべてのリクエストが正当なエージェントから送信されたことを保証します。エージェントの認証、認可、リプレイ攻撃防止の問題を解決します。
proveyouragentは、AIエージェント向けの軽量で強力な暗号化アイデンティティシステムを提供するPythonライブラリです。Ed25519鍵ペア、OAuth 2.0動的クライアント登録(RFC 7591)、およびDPoP(RFC 9449)を組み合わせることで、エージェントがAPIを呼び出したり、データベースにアクセスしたり、メールを送信したりする際に、その身元と権限をサービスに証明できるようにします。
問題点
AIエージェントは通常、ハードコードされたサービスアカウントトークンや借用したユーザー資格情報を使用します。そのため、サービスはどのエージェントがリクエストを送信したのか、誰がそのエージェントに対して責任を持つのか、エージェントに何が許可されているのか、そしてリクエストが盗まれたトークンからリプレイされていないのかを知る標準的な方法がありません。proveyouragentは、これらの問題を解決するための一連のプリミティブを提供します。
仕組み
各エージェントは起動時にEd25519鍵ペアを生成します。秘密鍵はエージェントから離れることはなく、公開鍵は既知のURLに公開されるため、サービスは追加の通信なしでリクエストを検証できます。エージェントのアイデンティティドキュメントは、ソフトウェアステートメントと呼ばれる署名付きJWTであり、所有者、エージェント名、バージョン、権限スコープ、公開鍵の場所を宣言します。
リクエスト署名にはDPoP(OAuth 2.0のProof-of-Possession)メカニズムを使用します。各リクエストには、HTTPメソッドとURIをカバーする新しいDPoP証明が添付され、トークンを特定のエージェントとリクエストにバインドすることで、トークンが盗まれてもリプレイされないようにします。
サーバー側では、ソフトウェアステートメントの署名、有効期限、権限スコープ、DPoP証明の新しさと一意性を検証します。検証結果はVerifiedAgentオブジェクトまたはVerificationErrorとして返され、例外処理は不要です。
委任チェーン
proveyouragentは権限の委任をサポートしており、オーケストレーターエージェントはその権限のサブセットをサブエージェントに委任できます。委任チェーンは暗号的にリンクされ、スコープはチェーンを下るにつれて縮小するのみです。例えば、人間のユーザーがオーケストレーターに請求書の読み取りと支払いの書き込みを許可した場合、オーケストレーターはサブエージェントに請求書の読み取りのみを委任できますが、削除権限を委任することはできません。
デプロイと拡張
ライブラリにはデフォルトでインメモリのリプレイキャッシュが含まれており、シングルプロセスの開発に適しています。本番環境ではRedisに切り替えることができ、コードを1行変更するだけで統合できます。また、FastAPIなどのWebフレームワーク向けのミドルウェアも提供されており、すべてのルートに自動的に認証を追加できます。
設計哲学
プロジェクトは、複雑さと攻撃面を減らすために、アルゴリズムネゴシエーションを行わずEd25519のみを使用します。信頼のアンカーはDNSベースであり、ブロックチェーンやDIDインフラは使いません。オペレーターは自分のドメインの既知のURLに公開鍵を公開するだけでよく、開発者は新しい技術を学ぶ必要はありません。
全体として、proveyouragentはAIエージェントの世界に標準化された安全でシンプルな認証ソリューションを提供します。