Voucher bertanda tangan buta dan kredensial akses anonim

AeroNyx29 Juni 20264 menit baca51 tayangan

Panduan berbasis source untuk VPN voucher dan Blind Vault RFC 9474 admission, mencakup rollout, replay, issuer, dan batas privasi.

AeroNyx memakai blind signature pada dua authorization path berbeda. Keduanya mengurangi identity linkage, tetapi rollout dan replay guarantees berbeda. Halaman ini menyatakan Rust main, kemampuan deployment-controlled, dan hal yang tidak boleh disimpulkan dari credential.

Dua jalur credential

VPN mengizinkan ClientHello dengan finalized blind-signature credential. Blind Vault V2 memakai RFC 9474 untuk membuat random self-authenticating lease. V1 adalah linkable one-time bearer compatibility, bukan blind issuance.

JalurStatus saat iniModel replay/redemption
VPN ClientHello voucherDiimplementasikan; rollout kompatibel reject_invalidTidak ada one-time spend di VoucherVerifier
Blind Vault V2 admissionDiimplementasikan di Rust; deployment controlledAtomic spend dan idempotent exact retry
Blind Vault V1 admissionHanya kompatibilitas; V2 untuk integrasi baruAtomic spend tetapi issuance linkable

Invarian privasi

Tujuan adalah authorize tanpa memberi issuance identity ke redeeming node. Signer, entitlement backend, storage node, dan console harus terpisah; join request-level records merusak unlinkability.

  • Node verify hak tanpa wallet/account identity.
  • Signer menerima blinded bytes dan key ID, bukan entitlement identity.
  • Secrets, tokens, randomizers, spend/lease IDs, private keys tidak di-log.
  • Aggregate counters tidak di-join dengan per-user traffic.
  • Tidak terkait wallet blind signing transaction tak dikenal.

VPN handshake voucher

Client mengirim bounded AVCH extension. Rust hanya parse fields, mengambil public key per epoch, cache satu jam, dan verify randomized SHA-384 RSA-PSS tanpa wallet/account ID.

text
ClientHello fixed frame
  + magic: AVCH
  + voucher_length: u16 little-endian
  + voucher JSON (maximum 2048 bytes)
json
{
  "token": "base64-final-credential-message",
  "signature": "base64-finalized-blind-signature",
  "msg_randomizer": "base64-32-byte-randomizer",
  "epoch": "issuer-key-epoch"
}

Flow hanya blind bila client blind message sebelum signature. Signature normal pada identity-linked token tidak setara. Token, signature, randomizer, epoch adalah bearer secrets dan tidak boleh di-log.

Batas rollout VPN

VPN dalam reject_invalid: malformed/invalid ditolak, missing masih diterima untuk migrasi old client. Ini bukan mandatory enforcement.

text
mode = reject_invalid
valid | invalid | missing | malformed | total
valid_ratio | invalid_ratio | missing_ratio | malformed_ratio
last_observation | last_error

VoucherVerifier verify dan menyimpan aggregate outcome, tetapi tidak atomic spend VPN token. Belum ada node one-time redemption; sharing, replay, quota, expiry perlu versioned contract.

Blind Vault V2 admission

Blind Vault V2 menemukan node-signed epochs, blind RFC 9474 message, mendapat signature dari isolated issuer, finalize local lalu memakai /api/vault/v1/lease. Public API dan pinned issuers harus aktif.

http
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
text
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

Isolasi issuer dan rotasi key

Private operation ada di aeronyx-blind-issuer, hanya menerima version, public fingerprint, bounded blinded RSA bytes. Tidak ada account model, storage DB, redemption visibility; interface mendukung software dan HSM/KMS nanti.

Epoch membawa canonical DER, SHA-256 key ID, validity, max lease TTL. Update memerlukan pinned authority terpisah, monotonic generation, continuity, atomic persistence; rollback fail closed.

Atomic spend, idempotency, dan replay

V2 verify credential dan commit spend ID plus lease dalam immediate SQLite transaction. Credential spent tidak membuat lease kedua; exact retry idempotent.

V1/V2 berbagi spend table tetapi scheme-separated: V1 raw ticket linkable, V2 spend ID unlinkable. Replay protection ini bukan milik VPN verifier.

Observability dan Nodeboard

Nodeboard hanya menampilkan aggregate validity, capacity, signer health, coarse buckets. Jangan tambah token, wallet, lease, request, atau per-user dimensions.

Bukti agregat yang diizinkan:

  • VPN valid/invalid/missing/malformed totals/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

Jangan pernah tampilkan:

  • 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

Ancaman dan batasan

Blind signature mengurangi linkage, bukan timing, region, capacity, client compromise, issuer collection, theft, collusion, traffic correlation; tetap perlu blind relay, encryption, bounded logs, separation.

  • korelasi issuer collection dan redemption timing
  • theft, sharing, resale, client compromise
  • VPN replay sebelum versioned policy
  • issuer/backend/node/operator collusion
  • timing, region, capacity, traffic correlation
  • key rollback atau broken continuity
  • aggregate telemetry menjadi per-user history

Peta source

Source memisahkan VPN verification, signing, wire contracts, Blind Vault admission/API/config, reporting. Pertahankan ownership boundaries.

LapisanPath repositoryPeran
VPN verifiercrates/aeronyx-server/src/voucher_verifier.rsParse AVCH, discovery epoch, verify voucher, rollout metrics.
Blind signercrates/aeronyx-blind-issuer/src/signer.rsIdentity-free RSA policy dan custody abstraction.
Issuer APIcrates/aeronyx-blind-issuer/src/api.rsAuthenticated bounded signing, epochs, pressure, health.
Wire contractscrates/aeronyx-core/src/protocol/blind_vault.rsRFC 9474 contracts, epochs, spend IDs, frames, signatures.
Blind Vault servicecrates/aeronyx-server/src/services/blind_vault.rsV1/V2 admission dan atomic spend+lease.
Blind Vault APIcrates/aeronyx-server/src/api/blind_vault.rsIssuers/lease/put/pull/delete routes dan coarse errors.
Blind Vault configcrates/aeronyx-server/src/config_blind_vault.rsPinned issuers/authority, TTL, monotonic rotation.
Health/reportingcrates/aeronyx-server/src/api/vpn_health.rs and management/reporter.rsAggregate status tanpa secrets atau wallet traffic.

Aturan pengembangan

Selesai bila crypto semantics, rollout, spend, observability, tests, dan semua bahasa cocok. Pilih claim sempit dan benar.

  1. Pisahkan VPN dan Blind Vault semantics di names/code/telemetry/docs.
  2. Jangan klaim mandatory VPN saat missing diterima.
  3. Jangan klaim one-time VPN tanpa atomic spend.
  4. Jangan beri signer account/wallet/lease/node/redemption context.
  5. Jaga continuity, authority fail-closed, atomicity.
  6. Hanya aggregate health; tanpa credential/identity dimensions.
  7. Perbarui tests, Nodeboard, terjemahan saat semantics berubah.

Blind Vault: kontak terenkripsi dan archive opsional