
Secret-Use Delegation Protocol — Geheimnisnutzung auf Protokollebene für agentische Systeme
Secret-Nutzung auf Protokollebene für agentische Systeme.
Referenzimplementierung von arXiv:2604.24920 — siehe Diese Arbeit zitieren.
sudp ermöglicht es einem autonomen Requester (R), eine durch ein Secret abgesicherte Operation vorzuschlagen, einem Authorizer (A), genau diese Operation zu autorisieren, und einem Custodian (T), sie auszuführen. Die Einheit der Delegation ist eine einzelne Nutzung, nicht das Secret.
┌─────────────────────────┐
│ Authorizer A │
│ (passkey on a device) │
└────────────┬────────────┘
│ signs β over (DS ‖ r ‖ H(o))
▼
┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ Requester R │ ─o─▶ │ Custodian T │ ─s─▶ │ Environment │
│ (agent) │ │ │ │ E │
│ │◀ρ────│ holds sealed Σ│ │ │
└──────────────┘ └───────────────┘ └──────────────┘
R sieht s nie und erlangt keine wiederverwendbare Berechtigung darüber — selbst wenn R vollständig kompromittiert ist (Prompt-Injection, Runtime-Shim usw.).
@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 und William Knottenbelt. "SUDP: Secret-Use Delegation Protocol for Agentic Systems." arXiv preprint arXiv:2604.24920 (2026).
| Rolle | Quelle | Veröffentlicht als |
|---|---|---|
| Custodian (T) | custodian/rust | sudp auf crates.io |
| Authorizer (A) | authorizer/ts | @sudp-protocol/authorizer auf npm |
| Requester (R) | requester/ts | @sudp-protocol/requester auf npm |
Voraussetzungen: Rust 1.85+ (über rustup) und Node.js 20+.
git clone https://github.com/xhyumiracle/sudp
cd sudp/examples/protocol-demo
./run.sh
Erstellt alle drei Pakete, startet den Custodian, führt R + A in einem Node-Skript aus, gibt jede Wire-Interaktion farbcodiert nach Rolle aus und schließt mit einer adversarialen Prüfung ab (R manipuliert o, nachdem A signiert hat → T lehnt ab).
Für die Nutzung auf API-Ebene: custodian/rust ·
authorizer/ts · requester/ts.
Agent-Autoren benötigen in der Regel nur
@sudp-protocol/requester — typisierte Operation-Builder
und Shape-Validatoren, kein Transport, keine Framework-Adapter. Der Requester
ist die am leichtesten ersetzbare Schicht; jedes Agent-Framework verdrahtet seinen eigenen Kleber.
Conformance-Vektoren fixieren die Bytes des Authorizers gegen den Custodian auf Byte-Ebene — zusammengesetzte Shapes bleiben durch Konstruktion ausgerichtet.
| Oberfläche | Rust-Anker | TS-Anker |
|---|---|---|
canonical(o) | Operation::canonical_bytes Unit-Tests | 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... |
| AEAD-Verschlüsselung (fester Nonce) | aead_matches_ts_authorizer_conformance_vector | conformance.test.ts: aeadEncrypt: matches Rust... |
wrap_ad-Layout | WrapBinding::to_canonical_ad Tests | conformance.test.ts: wrap_ad: DS_WRAP ‖ cid ‖ ver_be |
seal_ad-Layout | phases::setup::seal_ad (Setup-Tests) | conformance.test.ts: seal_ad: DS_SEAL ‖ ver_be |
Seal pro Datensatz (record_aad / K_aead / versiegelte Rahmung) | 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 führt beide Hälften bei jedem Push aus:
cd custodian/rust && cargo test
cd authorizer/ts && npm test
cd requester/ts && npm test
Das Wire-Format und die Trait-Strukturen können sich vor 1.0 noch ändern. In der Produktion sollten Minor-Versionen fest gepinnt werden:
# Cargo.toml
sudp = "~0.1"
// package.json
"@sudp-protocol/authorizer": "~0.1.0",
"@sudp-protocol/requester": "~0.1.0"
Siehe SECURITY.md.
Apache-2.0. Siehe LICENSE.