
Protocolo de delegación de uso de secretos — uso de secretos a nivel de protocolo para sistemas agénticos
Uso de secretos a nivel de protocolo para sistemas agénticos.
Implementación de referencia de arXiv:2604.24920 — véase Citar este artículo.
sudp permite que un Requester (R) autónomo proponga una operación respaldada por un secreto, que un Authorizer (A) autorice exactamente esa operación, y que un Custodian (T) la ejecute. La unidad de delegación es un uso, no el secreto.
┌─────────────────────────┐
│ Authorizer A │
│ (passkey on a device) │
└────────────┬────────────┘
│ signs β over (DS ‖ r ‖ H(o))
▼
┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ Requester R │ ─o─▶ │ Custodian T │ ─s─▶ │ Environment │
│ (agent) │ │ │ │ E │
│ │◀ρ────│ holds sealed Σ│ │ │
└──────────────┘ └───────────────┘ └──────────────┘
R nunca ve s y no obtiene ninguna autoridad reutilizable sobre él — incluso si R está
totalmente comprometido (inyección de prompt, shim en tiempo de ejecución, etc.).
@misc{yu2026sudp,
title = {SUDP: Secret-Use Delegation Protocol for Agentic Systems},
author = {Xiaohang Yu and Hejia Geng and Xinmeng Zeng and William Knottenbelt},
year = {2026},
eprint = {2604.24920},
archivePrefix = {arXiv},
primaryClass = {cs.CR},
url = {https://arxiv.org/abs/2604.24920}
}
Xiaohang Yu, Hejia Geng, Xinmeng Zeng y William Knottenbelt. "SUDP: Secret-Use Delegation Protocol for Agentic Systems." arXiv preprint arXiv:2604.24920 (2026).
| Rol | Fuente | Publicado como |
|---|---|---|
| Custodian (T) | custodian/rust | sudp en crates.io |
| Authorizer (A) | authorizer/ts | @sudp-protocol/authorizer en npm |
| Requester (R) | requester/ts | @sudp-protocol/requester en npm |
Requisitos previos: Rust 1.85+ (mediante rustup) y Node.js 20+.
git clone https://github.com/xhyumiracle/sudp
cd sudp/examples/protocol-demo
./run.sh
Compila los tres paquetes, genera el Custodian, ejecuta R + A en un script
de Node, imprime cada interacción de la red con colores según el rol y finaliza
con una comprobación adversarial (R manipula o después de que A firma → T rechaza).
Para uso a nivel de API: custodian/rust ·
authorizer/ts · requester/ts.
Los autores de agentes normalmente solo necesitan
@sudp-protocol/requester — constructores tipados de Operation
y validadores de forma, sin transporte, sin adaptadores de framework. El Requester
es la capa más reemplazable; cada framework de agentes conecta su propio pegamento.
Los vectores de conformidad fijan los bytes del Authorizer contra el Custodian a nivel de byte — las formas compuestas permanecen alineadas por construcción.
| Superficie | Ancla Rust | Ancla TS |
|---|---|---|
canonical(o) | pruebas unitarias de Operation::canonical_bytes | conformance.test.ts: canonical: nested ordering |
β + DS_BIND | beta_matches_ts_authorizer_conformance_vector | conformance.test.ts: β: matches Rust... |
β por lotes (H(canonical(ops))) | batch_beta_matches_ts_authorizer_conformance_vector | conformance.test.ts: batch β: matches Rust... |
derive_wrapping_key | derive_wrapping_key_matches_ts_authorizer_conformance_vector | conformance.test.ts: deriveWrappingKey: matches Rust... |
| cifrado AEAD (nonce fijo) | aead_matches_ts_authorizer_conformance_vector | conformance.test.ts: aeadEncrypt: matches Rust... |
diseño de wrap_ad | pruebas de WrapBinding::to_canonical_ad | conformance.test.ts: wrap_ad: DS_WRAP ‖ cid ‖ ver_be |
diseño de seal_ad | phases::setup::seal_ad (pruebas de setup) | conformance.test.ts: seal_ad: DS_SEAL ‖ ver_be |
sellado por registro (record_aad / K_aead / framing sellado) | state::record::tests::conformance_* | conformance.test.ts: per-record conformance vectors |
WRAP_VERSION ↔ CURRENT_VERSION | state::CURRENT_VERSION = 1 | conformance.test.ts: WRAP_VERSION matches Rust... |
CI ejecuta ambas mitades en cada push:
cd custodian/rust && cargo test
cd authorizer/ts && npm test
cd requester/ts && npm test
El formato de conexión y las formas de los traits aún pueden cambiar antes de la 1.0. Fija las versiones menores en producción:
# Cargo.toml
sudp = "~0.1"
// package.json
"@sudp-protocol/authorizer": "~0.1.0",
"@sudp-protocol/requester": "~0.1.0"
Consulte SECURITY.md.
Apache-2.0. Consulte LICENSE.