Proveyouragent:AI代理的加密身份(Ed25519和DPoP)
Proveyouragent是一個Python庫,為AI代理提供加密身份,使用Ed25519金鑰對和DPoP(RFC 9449)請求籤名,確保每個請求都來自合法代理。它解決了代理身份驗證、授權和防重放攻擊的問題。
proveyouragent是一個輕量級的Python庫,旨在為AI代理提供強大的加密身份系統。它透過Ed25519金鑰對、OAuth 2.0動態客戶端註冊(RFC 7591)和DPoP(RFC 9449)的結合,讓每個代理都能在呼叫API、讀寫資料庫或傳送郵件時,向服務證明其身份和許可權。
核心問題:AI代理通常使用硬編碼的服務賬戶令牌或借用使用者憑證,這導致服務無法得知是哪個代理發起的請求、誰對代理負責、代理被允許做什麼,以及請求是否來自被盜的令牌。proveyouragent透過一套簡單的原語解決了這些痛點。
工作原理
每個代理啟動時生成一個Ed25519金鑰對,私鑰永遠留在代理內,公鑰則釋出在公開URL上,以便服務無需回撥即可驗證。代理的身份文件是一個簽名的JWT(軟體宣告),宣告瞭所有者、代理名稱、版本、許可權範圍以及公鑰位置。
請求籤名採用DPoP(OAuth 2.0的證明金鑰持有者)機制。每個請求附帶一個新鮮的DPoP證明,其中包含HTTP方法和URI的簽名,從而將令牌繫結到特定的代理和請求,防止令牌被盜後重放。
服務端驗證四個要素:軟體宣告簽名是否有效、宣告是否過期、代理是否擁有所需許可權、DPoP證明是否新鮮且未被使用過。驗證結果返回VerifiedAgent物件或VerificationError,避免異常處理。
許可權委託鏈
proveyouragent支援許可權委託,允許編排代理將其許可權的子集委託給子代理。委託鏈透過加密方式連結,許可權只能逐級縮小,不能擴大。例如,人類使用者授權編排代理讀取發票和寫入支付,編排代理可以委託讀取發票的許可權給一個摘要代理,但無法委託刪除許可權。
部署與擴充套件
庫內建了記憶體重放快取,適用於單程序開發。生產環境可切換為Redis快取,只需一行程式碼即可整合。中介軟體模式也支援FastAPI等Web框架,自動為每個路由新增身份驗證。
設計哲學
專案堅持只使用Ed25519演算法,不進行演算法協商,以減少複雜性和攻擊面。信任錨點基於DNS,而非區塊鏈或DID基礎設施。操作者只需在域名下的公開URL釋出公鑰即可,開發者無需學習新技術。
總的來說,proveyouragent為AI代理的世界提供了一種標準化、安全且簡潔的身份驗證方案。