Kör imzalı voucherlar ve anonim erişim kimlikleri
VPN voucher ve Blind Vault RFC 9474 admission için rollout, replay, issuer ve gizlilik sınırlarını kaynak kodla doğrulayan rehber.
AeroNyx blind signature tekniğini iki ayrı authorization path içinde kullanır. İkisi de identity linkage azaltır ancak rollout ve replay guarantees farklıdır. Bu sayfa Rust main gerçekliğini, deployment-controlled kapsamı ve credential üzerinden çıkarılmaması gerekenleri açıklar.
İki credential yolu
VPN finalized blind-signature credential ile ClientHello yetkilendirir. Blind Vault V2 RFC 9474 ile random self-authenticating lease oluşturur. V1 linkable one-time bearer compatibility yoludur, blind issuance değildir.
| Yol | Güncel durum | Replay/redemption modeli |
|---|---|---|
| VPN ClientHello voucher | Uygulandı; uyumlu reject_invalid rollout | VoucherVerifier içinde one-time spend yok |
| Blind Vault V2 admission | Rust'ta uygulandı; deployment controlled | Atomic spend ve idempotent exact retry |
| Blind Vault V1 admission | Yalnız uyum; yeni entegrasyon V2 | Atomic spend, issuance linkable |
Gizlilik değişmezi
Amaç issuance identity bilgisini redeeming node'a vermeden yetkilendirmedir. Signer, entitlement backend, storage node ve console ayrı boundary kalmalıdır; request-level records birleştirilirse unlinkability bozulur.
- Node wallet/account identity olmadan hakkı doğrular.
- Signer blinded bytes ve key ID alır, entitlement identity almaz.
- Secrets, tokens, randomizers, spend/lease IDs ve private keys loglanmaz.
- Aggregate counters per-user traffic ile join edilmez.
- Unknown wallet transaction blind signing ile ilgili değildir.
VPN handshake voucher
Client bounded AVCH extension gönderir. Rust yalnız fields parse eder, epoch public key alır, bir saat cache eder ve wallet/account ID olmadan randomized SHA-384 RSA-PSS doğrular.
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"
}
Flow yalnız client imzadan önce message blind ederse kördür. Identity-linked token için normal signature eşdeğer değildir. Token, signature, randomizer ve epoch bearer secret'tır ve loglanmaz.
VPN rollout sınırı
VPN reject_invalid modundadır: malformed/invalid reddedilir, missing eski client migration için kabul edilir. Mandatory enforcement değildir.
mode = reject_invalid
valid | invalid | missing | malformed | total
valid_ratio | invalid_ratio | missing_ratio | malformed_ratio
last_observation | last_error
VoucherVerifier doğrular ve aggregate sonuç tutar fakat VPN token atomic spend etmez. Node one-time redemption yoktur; sharing, replay, quota ve expiry versioned contract ister.
Blind Vault V2 admission
Blind Vault V2 node-signed epochs keşfeder, RFC 9474 message blind eder, isolated issuer signature alır, local finalize eder ve /api/vault/v1/lease kullanır. API ve pinned issuers aktif olmalıdır.
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 izolasyonu ve anahtar rotasyonu
Private operation aeronyx-blind-issuer process'indedir; version, public fingerprint ve bounded blinded RSA bytes alır. Account model, storage DB, redemption visibility yoktur; software ve gelecek HSM/KMS aynı interface'i kullanır.
Epoch canonical DER, SHA-256 key ID, validity ve max lease TTL taşır. Update ayrı pinned authority, monotonic generation, continuity ve atomic persistence gerektirir; rollback fail closed olur.
Atomic spend, idempotency ve replay
V2 credential doğrular ve spend ID ile lease'i bir immediate SQLite transaction içinde commit eder. Spent credential ikinci lease yaratamaz; exact retry idempotent'tir.
V1/V2 spend table paylaşır ama scheme-separated'dır: V1 raw ticket linkable, V2 spend ID unlinkable. Bu replay protection VPN verifier'a ait değildir.
Observability ve Nodeboard
Nodeboard yalnız aggregate validity, capacity, signer health ve coarse buckets gösterir. Token, wallet, lease, request veya per-user dimensions eklenmez.
İzinli aggregate evidence:
- VPN
valid/invalid/missing/malformedtotals/ratios - issuer key/reload/capacity/rate/timeout/circuit counters
- Blind Vault aggregate lease/object/bytes/expiry/cleanup health
- mode, epoch availability, last observation, privacy boundary
Asla gösterme:
- 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
Tehditler ve sınırlar
Blind signature linkage azaltır; timing, region, capacity, client compromise, issuer collection, theft, collusion ve traffic correlation için blind relay, encryption, bounded logs ve separation gerekir.
- issuer collection ve redemption timing correlation
- theft, sharing, resale, client compromise
- versioned policy öncesi VPN replay
- issuer/backend/node/operator collusion
- timing, region, capacity, traffic correlation
- key rollback veya broken continuity
- aggregate telemetry'nin per-user history olması
Kaynak kod haritası
Source VPN verification, signing, wire contracts, Blind Vault admission/API/config ve reporting olarak ayrıdır. Ownership boundaries korunur.
| Katman | Repository yolu | Rol |
|---|---|---|
| VPN verifier | crates/aeronyx-server/src/voucher_verifier.rs | AVCH parse, epoch discovery, voucher verify, rollout metrics. |
| Blind signer | crates/aeronyx-blind-issuer/src/signer.rs | Identity-free RSA policy ve 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 ve atomic spend+lease. |
| Blind Vault API | crates/aeronyx-server/src/api/blind_vault.rs | Issuers/lease/put/pull/delete routes ve coarse errors. |
| Blind Vault config | crates/aeronyx-server/src/config_blind_vault.rs | Pinned issuers/authority, TTL ve monotonic rotation. |
| Health/reporting | crates/aeronyx-server/src/api/vpn_health.rs and management/reporter.rs | Secrets/wallet traffic olmadan aggregate status. |
Geliştirici kuralları
Crypto semantics, rollout, spend, observability, tests ve tüm diller uyuşunca değişiklik tamamdır. Dar ve doğru claim seçin.
- VPN ve Blind Vault semantics'i names/code/telemetry/docs içinde ayırın.
- Missing kabul edilirken mandatory VPN demeyin.
- Atomic spend olmadan one-time VPN demeyin.
- Signer'a account/wallet/lease/node/redemption context eklemeyin.
- Continuity, authority fail-closed ve atomicity koruyun.
- Yalnız aggregate health; credential/identity dimensions yok.
- Semantics değişince tests, Nodeboard ve çevirileri güncelleyin.