Voucher ký mù và thông tin truy cập ẩn danh

AeroNyx29 tháng 6, 20265 phút đọc49 lượt xem

Hướng dẫn được đối chiếu source cho VPN voucher và Blind Vault RFC 9474 admission, gồm rollout, replay, issuer và ranh giới riêng tư.

AeroNyx dùng blind signature trong hai authorization path khác nhau. Cả hai giảm identity linkage nhưng rollout và replay guarantees không giống nhau. Trang này nêu đúng Rust main, phần do deployment kiểm soát và thông tin không được suy ra từ credential.

Hai đường credential

VPN dùng finalized blind-signature credential để cho phép ClientHello. Blind Vault V2 dùng RFC 9474 tạo random self-authenticating lease. V1 là linkable one-time bearer compatibility, không phải blind issuance.

ĐườngTrạng thái hiện tạiMô hình replay/redemption
VPN ClientHello voucherĐã triển khai; rollout tương thích reject_invalidKhông one-time spend trong VoucherVerifier
Blind Vault V2 admissionĐã triển khai Rust; deployment controlledAtomic spend và idempotent exact retry
Blind Vault V1 admissionChỉ tương thích; dùng V2 cho tích hợp mớiAtomic spend nhưng issuance linkable

Bất biến riêng tư

Mục tiêu là authorize mà không đưa issuance identity cho redeeming node. Signer, entitlement backend, storage node và console phải là boundary riêng; join request-level records sẽ phá unlinkability.

  • Node verify quyền mà không có wallet/account identity.
  • Signer nhận blinded bytes và key ID, không nhận entitlement identity.
  • Secrets, tokens, randomizers, spend/lease IDs, private keys không được log.
  • Aggregate counters không join với per-user traffic.
  • Không liên quan wallet blind signing transaction không rõ.

VPN handshake voucher

Client gửi bounded AVCH extension. Rust chỉ parse fields, lấy public key theo epoch, cache một giờ và verify randomized SHA-384 RSA-PSS mà không cần 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 chỉ blind khi client blind message trước khi ký. Signature thường trên identity-linked token không tương đương. Token, signature, randomizer, epoch là bearer secrets và không được log.

Ranh giới rollout VPN

VPN đang ở reject_invalid: malformed/invalid bị từ chối, missing vẫn được nhận để migrate old client. Đây không phải 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 và ghi aggregate outcome nhưng không atomic spend VPN token. Chưa có node one-time redemption; sharing, replay, quota, expiry cần versioned contract.

Blind Vault V2 admission

Blind Vault V2 tìm node-signed epochs, blind RFC 9474 message, lấy signature từ isolated issuer, finalize local rồi gọi /api/vault/v1/lease. Public API và pinned issuers phải bật.

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

Cô lập issuer và xoay khóa

Private operation ở process aeronyx-blind-issuer, chỉ nhận version, public fingerprint và bounded blinded RSA bytes. Không có account model, storage DB, redemption visibility; interface hỗ trợ software và HSM/KMS tương lai.

Epoch mang canonical DER, SHA-256 key ID, validity và max lease TTL. Update cần pinned authority riêng, monotonic generation, continuity và atomic persistence; rollback fail closed.

Atomic spend, idempotency và replay

V2 verify credential và commit spend ID cùng lease trong immediate SQLite transaction. Credential đã spend không tạo lease thứ hai; exact retry là idempotent.

V1/V2 dùng chung spend table nhưng scheme-separated: V1 raw ticket linkable, V2 spend ID unlinkable. Replay protection này không thuộc VPN verifier.

Observability và Nodeboard

Nodeboard chỉ hiển thị aggregate validity, capacity, signer health và coarse buckets. Không thêm token, wallet, lease, request hoặc per-user dimensions.

Bằng chứng tổng hợp được phép:

  • 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

Không bao giờ lộ:

  • 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

Mối đe dọa và giới hạn

Blind signature giảm linkage chứ không che timing, region, capacity, client compromise, issuer collection, theft, collusion, traffic correlation; vẫn cần blind relay, encryption, bounded logs và separation.

  • issuer collection tương quan redemption timing
  • theft, sharing, resale, client compromise
  • VPN replay trước versioned policy
  • issuer/backend/node/operator collusion
  • timing, region, capacity, traffic correlation
  • key rollback hoặc broken continuity
  • aggregate telemetry thành per-user history

Bản đồ source

Source tách VPN verification, signing, wire contracts, Blind Vault admission/API/config và reporting. Phải giữ ownership boundaries.

LớpPath repositoryVai trò
VPN verifiercrates/aeronyx-server/src/voucher_verifier.rsParse AVCH, khám phá epoch, verify voucher, rollout metrics.
Blind signercrates/aeronyx-blind-issuer/src/signer.rsIdentity-free RSA policy và 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 và atomic spend+lease.
Blind Vault APIcrates/aeronyx-server/src/api/blind_vault.rsIssuers/lease/put/pull/delete routes và coarse errors.
Blind Vault configcrates/aeronyx-server/src/config_blind_vault.rsPinned issuers/authority, TTL và monotonic rotation.
Health/reportingcrates/aeronyx-server/src/api/vpn_health.rs and management/reporter.rsAggregate status không secrets hoặc wallet traffic.

Quy tắc phát triển

Chỉ hoàn tất khi crypto semantics, rollout, spend, observability, tests và mọi ngôn ngữ đồng nhất. Chọn claim hẹp nhưng đúng.

  1. Tách VPN và Blind Vault semantics trong names/code/telemetry/docs.
  2. Không tuyên bố mandatory VPN khi missing còn được nhận.
  3. Không tuyên bố one-time VPN khi chưa có atomic spend.
  4. Không đưa account/wallet/lease/node/redemption context vào signer.
  5. Giữ continuity, authority fail-closed và atomicity.
  6. Chỉ aggregate health; không credential/identity dimensions.
  7. Cập nhật tests, Nodeboard và bản dịch khi semantics đổi.

Blind Vault: liên hệ mã hóa và archive tùy chọn