قسائم موقعة توقيعاً أعمى وبيانات وصول مجهولة
دليل موثق لـ VPN voucher وBlind Vault RFC 9474 admission مع حدود rollout وreplay وissuer والخصوصية.
تستخدم AeroNyx blind signature في مساري تفويض مختلفين. كلاهما يقلل identity linkage لكن rollout وreplay guarantees مختلفان. توضح الصفحة ما ينفذه Rust main وما يتحكم به deployment وما لا يجوز استنتاجه من credential.
مسارا بيانات الاعتماد
يصرح VPN لـ ClientHello عبر finalized blind-signature credential. ينشئ Blind Vault V2 random self-authenticating lease بـ RFC 9474. أما V1 فهو linkable one-time bearer للتوافق وليس blind issuance.
| المسار | الحالة الحالية | نموذج replay/redemption |
|---|---|---|
| VPN ClientHello voucher | مطبق؛ rollout متوافق reject_invalid | لا one-time spend في VoucherVerifier |
| Blind Vault V2 admission | مطبق في Rust؛ يتحكم به deployment | Atomic spend وexact retry idempotent |
| Blind Vault V1 admission | توافق فقط؛ يفضل V2 للجديد | Atomic spend لكن issuance linkable |
ثابت الخصوصية
الهدف تفويض الخدمة دون إعطاء issuance identity للعقدة. يجب فصل signer وentitlement backend وstorage node وconsole؛ جمع request-level records يكسر unlinkability.
- تتحقق العقدة من الحق دون wallet/account identity.
- يستقبل signer blinded bytes وkey ID لا entitlement identity.
- لا تسجل secrets أو tokens أو randomizers أو spend/lease IDs أو private keys.
- لا تربط aggregate counters بـ per-user traffic.
- ليست wallet blind signing لمعاملة مجهولة.
Voucher مصافحة VPN
يرسل client امتداد AVCH محدوداً. يحلل Rust الحقول فقط ويجلب public key حسب epoch ويخزنه ساعة ويتحقق من randomized SHA-384 RSA-PSS دون wallet/account ID.
ClientHello fixed frame
+ magic: AVCH
+ voucher_length: u16 little-endian
+ voucher JSON (maximum 2048 bytes)
{
"token": "base64-final-credential-message",
"signature": "base64-finalized-blind-signature",
"msg_randomizer": "base64-32-byte-randomizer",
"epoch": "issuer-key-epoch"
}
يكون المسار blind فقط عندما يعمي client الرسالة قبل التوقيع. توقيع token مرتبط بالهوية ليس مكافئاً. Token وsignature وrandomizer وepoch bearer secrets لا تسجل.
حد rollout الحالي للـ VPN
VPN في reject_invalid: يرفض malformed/invalid ويقبل missing مؤقتاً لترحيل العملاء القدامى. هذا ليس mandatory enforcement.
mode = reject_invalid
valid | invalid | missing | malformed | total
valid_ratio | invalid_ratio | missing_ratio | malformed_ratio
last_observation | last_error
يتحقق VoucherVerifier ويجمع النتائج لكنه لا ينفذ atomic spend للـ VPN token. لا يوجد node one-time redemption؛ sharing وreplay وquota وexpiry تحتاج عقداً versioned.
Blind Vault V2 admission
يكتشف Blind Vault V2 epochs موقعة ويعمي RFC 9474 ويحصل على signature من issuer معزول ثم finalize محلي ويرسل إلى /api/vault/v1/lease. يلزم تفعيل API وpinned issuers.
GET /api/vault/v1/issuers
POST /api/vault/v1/lease
POST /api/vault/v1/put
POST /api/vault/v1/pull
POST /api/vault/v1/delete
Content-Type: application/vnd.aeronyx.blind-vault-v1
client blinds RFC 9474 admission message
-> entitlement backend authorizes issuance
-> isolated blind issuer signs blinded bytes only
-> client finalizes signature
-> node verifies active public epoch
-> atomic spend marker + random self-authenticating lease
-> ciphertext storage operations use lease-scoped keys/capabilities
عزل issuer وتدوير المفاتيح
العملية الخاصة في aeronyx-blind-issuer تستقبل version وpublic fingerprint وbounded blinded RSA bytes فقط، بلا account model أو storage DB أو redemption visibility، وتدعم software وHSM/KMS مستقبلاً.
يحمل epoch canonical DER وSHA-256 key ID وvalidity وmax lease TTL. يتطلب update authority منفصلة وmonotonic generation وcontinuity وatomic persistence؛ rollback يفشل مغلقاً.
Atomic spend وidempotency وreplay
يتحقق V2 ويثبت spend ID وlease في immediate SQLite transaction واحدة. Credential المصروف لا ينشئ lease ثانياً، والـ exact retry idempotent.
يشترك V1/V2 في spend table مع فصل schemes: V1 raw ticket linkable وV2 spend ID unlinkable. هذه replay protection تخص Blind Vault لا VPN verifier.
Observability وNodeboard
يعرض Nodeboard aggregate validity وcapacity وsigner health وcoarse buckets فقط. لا تضف token أو wallet أو lease أو request أو per-user dimensions.
الأدلة المجمعة المسموحة:
- VPN
validوinvalidوmissingوmalformedtotals/ratios - issuer key وreload وcapacity وrate وtimeout وcircuit counters
- Blind Vault aggregate leases وobjects وbytes وexpiry وcleanup
- mode وepoch availability وlast observation وprivacy boundary
لا تكشف أبداً:
- tokens أو signatures أو randomizers أو blinded messages أو spend IDs
- wallet أو account أو payment أو membership أو social identity
- per-user history أو lease/object/capability/request IDs
- client IP أو destination أو DNS أو route أو message أو browsing metadata
- private keys أو provider errors أو ciphertext أو plaintext أو wallet traffic
التهديدات والقيود
تقلل blind signature linkage ولا تخفي timing وregion وcapacity وclient compromise وissuer collection وtheft وcollusion وtraffic correlation؛ نحتاج blind relay وencryption وbounded logs وseparation.
- ربط issuer collection بـ redemption timing
- theft أو sharing أو resale أو client compromise
- VPN replay قبل versioned policy
- تواطؤ issuer/backend/node/operator
- timing وregion وcapacity وtraffic correlation
- key rollback أو broken continuity
- تحول aggregate telemetry إلى per-user history
خريطة المصدر
يفصل source بين VPN verification وsigning وwire contracts وBlind Vault admission/API/config وreporting. هذه ownership boundaries مقصودة.
| الطبقة | مسار المستودع | الدور |
|---|---|---|
| VPN verifier | crates/aeronyx-server/src/voucher_verifier.rs | يحلل AVCH ويكتشف epochs ويتحقق من voucher ويسجل rollout metrics. |
| Blind signer | crates/aeronyx-blind-issuer/src/signer.rs | سياسة RSA identity-free وcustody abstraction. |
| Issuer API | crates/aeronyx-blind-issuer/src/api.rs | Authenticated bounded signing وepochs وpressure وhealth. |
| Wire contracts | crates/aeronyx-core/src/protocol/blind_vault.rs | RFC 9474 contracts وepochs وspend IDs وframes وsignatures. |
| Blind Vault service | crates/aeronyx-server/src/services/blind_vault.rs | V1/V2 admission وatomic spend+lease. |
| Blind Vault API | crates/aeronyx-server/src/api/blind_vault.rs | Routes issuers/lease/put/pull/delete وcoarse errors. |
| Blind Vault config | crates/aeronyx-server/src/config_blind_vault.rs | Pinned issuers/authority وTTL وmonotonic rotation. |
| Health/reporting | crates/aeronyx-server/src/api/vpn_health.rs and management/reporter.rs | Aggregate status بلا secrets أو wallet traffic. |
قواعد التطوير
يكتمل التغيير عند توافق crypto semantics وrollout وspend وobservability وtests وكل اللغات. الادعاء الضيق الصادق أفضل.
- افصل VPN وBlind Vault في names/code/telemetry/docs.
- لا تدع mandatory VPN مع قبول missing.
- لا تدع one-time VPN دون atomic spend.
- لا تضف account/wallet/lease/node/redemption context إلى signer.
- حافظ على continuity وauthority fail-closed وatomicity.
- Aggregate health فقط بلا credential/identity dimensions.
- حدث tests وNodeboard والترجمات مع semantics.