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代理的世界提供了一种标准化、安全且简洁的身份验证方案。