Kör imzalı voucherlar ve anonim erişim kimlikleri

AeroNyx29 Haziran 20264 dk okuma47 görüntüleme

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.

YolGüncel durumReplay/redemption modeli
VPN ClientHello voucherUygulandı; uyumlu reject_invalid rolloutVoucherVerifier içinde one-time spend yok
Blind Vault V2 admissionRust'ta uygulandı; deployment controlledAtomic spend ve idempotent exact retry
Blind Vault V1 admissionYalnız uyum; yeni entegrasyon V2Atomic 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.

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 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.

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

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

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/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

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.

KatmanRepository yoluRol
VPN verifiercrates/aeronyx-server/src/voucher_verifier.rsAVCH parse, epoch discovery, voucher verify, rollout metrics.
Blind signercrates/aeronyx-blind-issuer/src/signer.rsIdentity-free RSA policy ve 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 ve atomic spend+lease.
Blind Vault APIcrates/aeronyx-server/src/api/blind_vault.rsIssuers/lease/put/pull/delete routes ve coarse errors.
Blind Vault configcrates/aeronyx-server/src/config_blind_vault.rsPinned issuers/authority, TTL ve monotonic rotation.
Health/reportingcrates/aeronyx-server/src/api/vpn_health.rs and management/reporter.rsSecrets/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.

  1. VPN ve Blind Vault semantics'i names/code/telemetry/docs içinde ayırın.
  2. Missing kabul edilirken mandatory VPN demeyin.
  3. Atomic spend olmadan one-time VPN demeyin.
  4. Signer'a account/wallet/lease/node/redemption context eklemeyin.
  5. Continuity, authority fail-closed ve atomicity koruyun.
  6. Yalnız aggregate health; credential/identity dimensions yok.
  7. Semantics değişince tests, Nodeboard ve çevirileri güncelleyin.

Blind Vault: şifreli kişiler ve isteğe bağlı arşiv