
بروتوكول تفويض استخدام الأسرار — استخدام الأسرار على مستوى البروتوكول للأنظمة الوكيلية
استخدام الأسرار على مستوى البروتوكول للأنظمة الوكيلية.
التنفيذ المرجعي لـ arXiv:2604.24920 — راجع الاستشهاد بهذه الورقة.
يتيح sudp لـ الطالب (Requester، R) المستقل اقتراح عملية مدعومة بسر، ولـ المُفوِّض (Authorizer، A) تفويض تلك العملية تحديدًا، ولـ الحافظ (Custodian، T) تنفيذها. وحدة التفويض هي استخدام واحد، وليس السر.
┌─────────────────────────┐
│ Authorizer A │
│ (passkey on a device) │
└────────────┬────────────┘
│ signs β over (DS ‖ r ‖ H(o))
▼
┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ Requester R │ ─o─▶ │ Custodian T │ ─s─▶ │ Environment │
│ (agent) │ │ │ │ E │
│ │◀ρ────│ holds sealed Σ│ │ │
└──────────────┘ └───────────────┘ └──────────────┘
لا يرى R المتغير s ولا يحصل على أي صلاحية قابلة لإعادة الاستخدام عليه — حتى لو كان R مخترقًا بالكامل (حقن الأوامر، أو تعديل بيئة التشغيل، أو ما شابه ذلك).
@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، وWilliam Knottenbelt. "SUDP: Secret-Use Delegation Protocol for Agentic Systems." arXiv preprint arXiv:2604.24920 (2026).
| الدور | المصدر | منشور باسم |
|---|---|---|
| Custodian (T) | custodian/rust | sudp على crates.io |
| Authorizer (A) | authorizer/ts | @sudp-protocol/authorizer على npm |
| Requester (R) | requester/ts | @sudp-protocol/requester على npm |
المتطلبات المسبقة: Rust 1.85+ (عبر rustup) وNode.js 20+.
git clone https://github.com/xhyumiracle/sudp
cd sudp/examples/protocol-demo
./run.sh
يبني الحزم الثلاث، ويُشغّل Custodian، ويُشغّل R + A في سكربت
Node، ويطبع كل تفاعل عبر الشبكة مُلوّنًا حسب الدور، وينتهي
بفحص عدائي (R يعبث بـ o بعد أن يوقّع A → يرفض T).
لاستخدام على مستوى API: custodian/rust ·
authorizer/ts · requester/ts.
عادةً لا يحتاج مؤلفو الوكلاء إلا إلى
@sudp-protocol/requester — بُنّاة Operation المُنمّطة
ومُدقّقات الأشكال، بلا نقل، بلا مُهايئات أُطُر عمل. الـ Requester هو الطبقة
الأكثر قابلية للاستبدال؛ كل إطار عمل للوكلاء يربط غراءه الخاص.
تُثبّت متجهات المطابقة بايتات الـ Authorizer مقابل الـ Custodian على مستوى البايت — تبقى الأشكال المركّبة متوافقة بحكم البناء.
| السطح | مرتكز Rust | مرتكز TS |
|---|---|---|
canonical(o) | اختبارات وحدة Operation::canonical_bytes | conformance.test.ts: canonical: nested ordering |
β + DS_BIND | beta_matches_ts_authorizer_conformance_vector | conformance.test.ts: β: matches Rust... |
β الدفعي (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 (nonce ثابت) | aead_matches_ts_authorizer_conformance_vector | conformance.test.ts: aeadEncrypt: matches Rust... |
تخطيط wrap_ad | اختبارات WrapBinding::to_canonical_ad | conformance.test.ts: wrap_ad: DS_WRAP ‖ cid ‖ ver_be |
تخطيط seal_ad | phases::setup::seal_ad (اختبارات setup) | conformance.test.ts: seal_ad: DS_SEAL ‖ ver_be |
ختم لكل سجل (record_aad / K_aead / تأطير مختوم) | 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 كلا النصفين عند كل دفع:
cd custodian/rust && cargo test
cd authorizer/ts && npm test
cd requester/ts && npm test
قد يتغيّر تنسيق الاتصال السلكي وأشكال السمات (traits) قبل الإصدار 1.0. ثبّت إصدارات minor في بيئة الإنتاج:
# Cargo.toml
sudp = "~0.1"
// package.json
"@sudp-protocol/authorizer": "~0.1.0",
"@sudp-protocol/requester": "~0.1.0"
راجع SECURITY.md.
Apache-2.0. راجع LICENSE.