techblaze-au/idprova
GitHub: techblaze-au/idprova
为自主 AI 代理提供基于 Ed25519 签名的加密身份、可链式委托权限和哈希链式审计收据的开放协议与实现。
Stars: 1 | Forks: 0
IDProva
AI 代理的加密身份
一个用于可验证身份、限定范围委托和防篡改审计追踪的开放协议 —— 专为自主 AI 代理打造。
[](https://github.com/techblaze-au/idprova/actions)
[](https://crates.io/crates/idprova-core)
[](https://pypi.org/project/idprova/)
[](https://www.npmjs.com/package/@idprova/core)
[](https://docs.rs/idprova-core)
[](LICENSE)
[](docs/protocol-spec-v0.1.md)
[Documentation](https://idprova.dev) | [Getting Started](docs/getting-started.md) | [Protocol Spec](docs/protocol-spec-v0.1.md) | [API Reference](docs/api-reference.md)
## 为什么选择 IDProva?
AI 代理正在调用 API、将任务委托给子代理,并访问敏感系统。但当今的身份基础设施是为人类和静态工作负载构建的,而不是为会生成其他自主软件的自主软件构建的。
**问题在于:** 目前没有标准的方法来回答关于 AI 代理活动的三个关键问题:
- **谁**是这个代理,我能通过加密手段证明吗?
- **它**被允许做什么,谁授予了该权限?
- **它**做了什么,我能否验证审计追踪未被篡改?
OAuth token 无法链式传递。API key 无法限定作用域。SPIFFE 并非为委托层次结构而设计。它们都无法生成防篡改的审计日志。
**IDProva 通过三个专为代理时代设计的加密原语解决了这个问题:**
| 原语 | 用途 |
|-----------|---------|
| **代理身份文档** | 绑定到 Ed25519 密钥的 W3C DID 身份 |
| **委托证明 token (DATs)** | 已签名、限定范围、有时间限制、可链式传递的权限 token |
| **操作收据** | 哈希链式的、防篡改的每个代理操作的审计日志 |
## 快速安装
### 从包注册表安装
```
# Rust (CLI + core library)
cargo install idprova-cli
# Python SDK (PyO3 bindings)
pip install idprova
# TypeScript SDK (napi-rs bindings)
npm install @idprova/core
```
### 从源代码构建
```
git clone https://github.com/techblaze-au/idprova.git
cd idprova
cargo build --release
# 二进制文件位于:target/release/idprova 和 target/release/idprova-registry
```
## 60 秒快速入门
### CLI:生成密钥、创建身份、颁发委托
```
# 1. 生成 Ed25519 keypair
idprova keygen --output operator.key
# 2. 创建 Agent Identity Document
idprova aid create \
--id "did:aid:example.com:my-agent" \
--name "My Agent" \
--controller "did:aid:example.com:operator" \
--key operator.key
# 3. 签发 scoped delegation token(只读,24小时过期)
idprova dat issue \
--issuer "did:aid:example.com:operator" \
--subject "did:aid:example.com:my-agent" \
--scope "mcp:tool:filesystem:read" \
--expires-in 24h \
--key operator.key
# 4. 验证 token
idprova dat verify
--key operator.key.pub --scope "mcp:tool:filesystem:read"
```
### Rust:编程式使用
```
use idprova_core::crypto::KeyPair;
use idprova_core::aid::AidBuilder;
use idprova_core::dat::Dat;
use chrono::{Utc, Duration};
// Generate keys
let keypair = KeyPair::generate();
// Create an Agent Identity Document
let aid = AidBuilder::new()
.id("did:aid:example.com:my-agent")
.controller("did:aid:example.com:operator")
.name("My Agent")
.add_ed25519_key(&keypair)
.build()?;
// Issue a Delegation Attestation Token
let dat = Dat::issue(
"did:aid:example.com:operator", // issuer
"did:aid:example.com:my-agent", // subject
vec!["mcp:tool:filesystem:read".into()],
Utc::now() + Duration::hours(24), // expiry
None, // constraints
None, // config attestation
&keypair,
)?;
// Serialize to compact JWS
let token = dat.to_compact()?;
// Verify: signature + timing + scope in one call
let pub_bytes = keypair.public_key_bytes();
dat.verify(&pub_bytes, "mcp:tool:filesystem:read", &Default::default())?;
```
## 架构


```
Workspace Layout
─────────────────
crates/
idprova-core/ Core library (crypto, AID, DAT, receipts, trust, policy)
idprova-verify/ High-level verification utilities
idprova-cli/ Command-line tool
idprova-registry/ Registry server (Axum + SQLite)
idprova-middleware/ Tower/Axum DAT verification middleware
idprova-mcp-demo/ MCP protocol integration demo
sdks/
python/ Python SDK (PyO3)
typescript/ TypeScript SDK (napi-rs)
docs/ Protocol specification and guides
```
## DID 方法
IDProva 使用兼容 W3C DID 的标识符方案:
```
did:aid:techblaze.com.au:kai
│ │ │ └─ agent name
│ │ └─ domain (verification anchor)
│ └─ did method
└─ DID scheme
```
## 作用域系统
委托作用域遵循带有通配符支持的 `namespace:category:resource:action` 层次结构模式:
```
mcp:tool:filesystem:read # specific permission
mcp:tool:filesystem:* # all filesystem actions
mcp:*:*:* # full MCP access
api:service:billing:read # custom namespace
```
作用域是**递减的** —— 重新委托的 token 只能缩小权限,永远不能扩大权限。
## 对比:代理身份解决方案
| 能力 | **IDProva** | OAuth 2.0 | SPIFFE | mTLS | API Keys |
|---|---|---|---|---|---|
| 代理到代理的委托 | 可链式传递的 DAT | 无原生链式传递 | 否 | 否 | 否 |
| 限定范围的权限 | 层次化作用域 | 粗粒度作用域 | 无作用域 | 无作用域 | 全有或全无 |
| 有时间限制的访问 | 每个 token 的过期时间 | Refresh token | 证书轮换 | 证书过期 | 手动轮换 |
| 防篡改审计 | 哈希链式收据 | 否 | 否 | 否 | 否 |
| 委托深度限制 | 每个 token 可配置 | 不适用 | 不适用 | 不适用 | 不适用 |
| 离线验证 | Ed25519 签名检查 | 需要认证服务器 | 需要 SPIRE | 需要 CA | 需要服务器 |
| 后量子就绪 | 计划支持 ML-DSA-65 | 否 | 否 | 否 | 否 |
| 专为代理打造 | 是 | 否(以人为中心) | 否(以工作负载为中心) | 否(传输层) | 否 |
## 信任级别
| 级别 | 名称 | 验证方式 | 使用场景 |
|-------|------|-------------|----------|
| L0 | 自我声明 | 无 | 开发、测试 |
| L1 | 域名已验证 | DNS TXT 记录 | 生产环境代理 |
| L2 | 组织已验证 | 类似 CA 的流程 | 企业级代理 |
| L3 | 第三方审计 | 外部审计 | 受监管行业 |
| L4 | 持续监控 | 运行时监控 | 关键基础设施 |
## 密码学
| 用途 | 算法 | 状态 |
|---------|-----------|--------|
| 签名 | Ed25519 | 稳定 |
| 哈希 | BLAKE3 | 稳定 |
| 互操作哈希 | SHA-256 | 稳定 |
| 密钥清零 | Drop 时清零 (Zeroize on drop) | 稳定 |
| 后量子 | ML-DSA-65 (FIPS 204) | 已计划 |
## 运行注册中心
```
# 从源码
cargo run -p idprova-registry
# Docker
docker run -p 3000:3000 idprova/registry
# 生产环境(使用 admin key)
REGISTRY_ADMIN_PUBKEY= cargo run -p idprova-registry
```
**端点:** `GET /health` | `GET /ready` | `GET /v1/meta` | `GET|PUT|DELETE /v1/aid/:id` | `GET /v1/aid/:id/key` | `POST /v1/dat/verify` | `POST /v1/dat/revoke` | `GET /v1/dat/revocations` | `GET /v1/dat/revoked/:jti`
## 合规性映射
| 框架 | 相关控制项 | IDProva 组件 |
|-----------|------------------|-------------------|
| NIST 800-53 | AU-2, AU-3, AU-8, AU-9, AU-10, AU-12, IA-2, AC-6 | 收据、AID、DAT |
| 澳大利亚 ISM | 代理身份、访问控制、审计日志 | 三大支柱全部涉及 |
| SOC 2 | CC6.1, CC6.3, CC7.2 | DAT、收据 |
## 文档
完整的文档、指南和协议规范可在 **[idprova.dev](https://idprova.dev)** 获取。
- [快速入门](docs/getting-started.md)
- [协议概念](docs/concepts.md)
- [核心库 API](docs/core-api.md)
- [API 参考](docs/api-reference.md)
- [安全模型](docs/security.md)
- [协议规范](docs/protocol-spec-v0.1.md)
- [视频演练](https://www.youtube.com/playlist?list=PL4svyyKD4sjwivQsb9EWmkKAFJeS0A-2T)
## 许可证
Apache 2.0 —— 详见 [LICENSE](LICENSE)。
由 [Tech Blaze Consulting](https://techblaze.com.au) 构建 | [idprova.dev](https://idprova.dev) | [YouTube](https://www.youtube.com/@TechBlazeConsulting)
标签:Agent协议, AI代理身份验证, API安全, CSV导出, Ed25519, Force Graph, IAM, JSONLines, JSON输出, Python SDK, Rust核心, SPIFFE替代方案, StruQ, TypeScript SDK, 分布式账本技术, 加密身份, 区块链哈希, 可视化界面, 可验证凭证, 合规性审计, 哈希链审计收据, 多语言SDK, 委托授权, 密码学, 工作负载身份, 开源协议, 手动系统调用, 机器身份, 网络安全, 自主AI代理, 请求拦截, 身份与访问管理, 身份验证协议, 逆向工具, 通知系统, 防篡改审计日志, 隐私保护, 零信任