
Protocollo di delega dell'uso dei segreti — uso dei segreti a livello di protocollo per sistemi agentici
Uso dei segreti a livello di protocollo per sistemi agentici.
Implementazione di riferimento di arXiv:2604.24920 — vedi Cita questo articolo.
sudp consente a un Requester (R) autonomo di proporre un'operazione basata su un segreto, a un Authorizer (A) di autorizzare esattamente quell'operazione e a un Custodian (T) di eseguirla. L'unità di delega è un singolo uso, non il segreto.
┌─────────────────────────┐
│ Authorizer A │
│ (passkey on a device) │
└────────────┬────────────┘
│ signs β over (DS ‖ r ‖ H(o))
▼
┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ Requester R │ ─o─▶ │ Custodian T │ ─s─▶ │ Environment │
│ (agent) │ │ │ │ E │
│ │◀ρ────│ holds sealed Σ│ │ │
└──────────────┘ └───────────────┘ └──────────────┘
R non vede mai s e non ottiene alcuna autorità riutilizzabile su di esso — anche se R è
completamente compromesso (prompt injection, runtime shim, ecc.).
@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 e William Knottenbelt. "SUDP: Secret-Use Delegation Protocol for Agentic Systems." arXiv preprint arXiv:2604.24920 (2026).
| Ruolo | Sorgente | Pubblicato come |
|---|---|---|
| Custodian (T) | custodian/rust | sudp su crates.io |
| Authorizer (A) | authorizer/ts | @sudp-protocol/authorizer su npm |
| Requester (R) | requester/ts | @sudp-protocol/requester su npm |
Prerequisiti: Rust 1.85+ (tramite rustup) e Node.js 20+.
git clone https://github.com/xhyumiracle/sudp
cd sudp/examples/protocol-demo
./run.sh
Crea tutti e tre i pacchetti, avvia il Custodian, esegue R + A in uno script
Node, stampa ogni interazione sul wire con colori distinti per ruolo e termina
con un controllo avversariale (R manomette o dopo che A ha firmato → T rifiuta).
Per l'utilizzo a livello API: custodian/rust ·
authorizer/ts · requester/ts.
Gli autori di agent necessitano tipicamente solo di
@sudp-protocol/requester — builder Operation tipizzati
e validatori di forma, senza trasporto, senza adattatori di framework. Il Requester
è lo strato più sostituibile; ogni framework di agent collega il proprio glue.
I vettori di conformità bloccano i byte dell'Authorizer rispetto al Custodian a livello di byte — le forme composite rimangono allineate per costruzione.
| Superficie | Ancora Rust | Ancora TS |
|---|---|---|
canonical(o) | test unitari Operation::canonical_bytes | conformance.test.ts: canonical: nested ordering |
β + DS_BIND | beta_matches_ts_authorizer_conformance_vector | conformance.test.ts: β: matches Rust... |
batch β (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... |
| cifratura AEAD (nonce fisso) | aead_matches_ts_authorizer_conformance_vector | conformance.test.ts: aeadEncrypt: matches Rust... |
layout wrap_ad | test WrapBinding::to_canonical_ad | conformance.test.ts: wrap_ad: DS_WRAP ‖ cid ‖ ver_be |
layout seal_ad | phases::setup::seal_ad (test di setup) | conformance.test.ts: seal_ad: DS_SEAL ‖ ver_be |
seal per-record (record_aad / K_aead / framing sigillato) | 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... |
La CI esegue entrambe le metà a ogni push:
cd custodian/rust && cargo test
cd authorizer/ts && npm test
cd requester/ts && npm test
Il formato wire e le forme dei trait potrebbero ancora cambiare prima della 1.0. Fissa le versioni minor in produzione:
# Cargo.toml
sudp = "~0.1"
// package.json
"@sudp-protocol/authorizer": "~0.1.0",
"@sudp-protocol/requester": "~0.1.0"
Vedi SECURITY.md.
Apache-2.0. Vedi LICENSE.