Voucher Bertanda Tangan Buta dan Kredensial Akses Anonim
Bagaimana voucher VPN AeroNyx memungkinkan node memverifikasi pembayaran tanpa mengetahui akun yang membayar, apa yang masih diizinkan oleh peluncuran reject_invalid, apa yang masih dapat dilihat node dan backend, serta mengapa penerimaan Blind Vault sudah diimplementasikan tetapi belum diterapkan.
AeroNyx menggunakan voucher bertanda tangan buta agar node VPN dapat memeriksa bahwa sebuah koneksi sudah dibayar tanpa mengetahui akun mana yang membayar. Fitur ini sudah aktif untuk VPN saat ini, dalam mode kompatibilitas yang masih menerima koneksi tanpa voucher. Jalur kredensial kedua, yaitu penerimaan Blind Vault, ada di perangkat lunak node tetapi belum diterapkan dan tidak digunakan oleh aplikasi resmi.
Dua jalur kredensial
| Jalur kredensial | Keadaan | Model penukaran |
|---|---|---|
| Voucher handshake VPN | Aktif. Berjalan dalam mode kompatibilitas reject_invalid | Node memeriksa tanda tangan. Node tidak melacak pembelanjaan sekali pakai |
| Penerimaan Blind Vault V2 | Sudah diimplementasikan di node. Belum diterapkan, dan tidak digunakan oleh aplikasi resmi | Pembelanjaan sekali pakai dicatat secara atomik bersamaan dengan pembuatan sewa |
| Penerimaan Blind Vault V1 | Hanya untuk kompatibilitas, dalam komponen yang sama yang dinonaktifkan | Pembelanjaan sekali pakai, tetapi penerbitan dapat dikaitkan dengan penukaran |
Cara voucher VPN diterbitkan
- Aplikasi membuat token acak 32 byte dan membutakannya secara lokal, menggunakan tanda tangan buta RSA (RSABSSA-SHA384-PSS-Randomized, RFC 9474).
- Aplikasi hanya mengirim pesan yang telah dibutakan ke backend AeroNyx di
/api/voucher/issue/. Backend memeriksa bahwa akun yang masuk berhak, menandatangani pesan yang telah dibutakan, dan mengembalikan tanda tangannya. Backend tidak pernah melihat token tersebut. - Aplikasi menyelesaikan tanda tangan secara lokal. Voucher yang sudah jadi (token, tanda tangan, pengacak pesan, dan epoch kunci) adalah kredensial pembawa yang tidak terkait dengan permintaan penerbitannya.
Kunci publik penerbit, yang dikelompokkan berdasarkan epoch, dipublikasikan di:
GET https://api.aeronyx.network/api/voucher/issuer/keys/
Cara node memeriksa voucher
Aplikasi menambahkan ekstensi voucher ke ClientHello VPN:
ClientHello fixed frame
+ magic: AVCH
+ voucher_length: u16 little-endian
+ voucher JSON (maximum 2048 bytes)
{
"token": "base64-32-byte-token",
"signature": "base64-finalized-blind-signature",
"msg_randomizer": "base64-32-byte-randomizer",
"epoch": "issuer-key-epoch"
}
Node hanya mengurai kolom-kolom ini. Node mengambil kunci publik penerbit untuk epoch tersebut dari endpoint di atas, menyimpannya dalam cache selama satu jam, dan memverifikasi tanda tangan RSA-PSS SHA-384 teracak. Node tidak memerlukan pengenal dompet atau akun.
Mode peluncuran: reject_invalid
- Voucher yang formatnya rusak dan yang tidak valid secara kriptografis ditolak sebelum handshake diterima.
- Koneksi tanpa voucher sama sekali masih diterima, agar klien lama tetap berfungsi. Penggunaan voucher belum diwajibkan.
- Node tidak mencatat voucher yang sudah dibelanjakan. Node menerima voucher yang valid sesering voucher tersebut ditunjukkan, selama epoch kunci penerbitnya masih dipublikasikan. Batasan berbagi, replay, dan kuota ditegakkan oleh backend, bukan oleh node.
Node hanya melaporkan hasil agregat:
mode = reject_invalid
valid | invalid | missing | malformed | total
valid_ratio | invalid_ratio | missing_ratio | malformed_ratio
last_observation | last_error
Apa yang diketahui node tentang Anda
Jaminan bahwa "node tidak pernah mengetahui identitas dompet Anda" berlaku hanya untuk koneksi voucher.
- Koneksi voucher (aplikasi resmi): aplikasi terhubung dengan voucher dan kunci handshake sementara yang baru. Node dapat memverifikasi pembayaran tetapi tidak dapat mengaitkan sesi dengan dompet atau identitas P2P Anda.
- Koneksi lama: klien yang mengautentikasi dengan kunci identitasnya alih-alih voucher mengirimkan kunci tersebut dalam handshake.
Dalam kedua kasus, node melaporkan kunci publik handshake sesi ke backend AeroNyx dalam kolom bernama client_wallet, bersama dengan waktu sesi dan jumlah byte. Untuk koneksi voucher, nilai tersebut adalah kunci sementara. Untuk koneksi lama, nilai tersebut adalah kunci identitas klien. Operator node dapat melihat lalu lintas per sesi dan kunci-kunci ini di Nodeboard.
Voucher juga tidak menyembunyikan semua hal lainnya. Node tetap melihat alamat IP Anda dan, sebagai titik keluar, tujuan dan DNS Anda, seperti VPN mana pun. Saat aplikasi mencadangkan koneksi harian, backend juga mencatat bahwa akun tersebut terhubung pada waktu itu, tetapi tidak mencatat node mana yang digunakannya. Lihat perbandingan VPN dan Pusat Kepercayaan.
Penerimaan Blind Vault (belum diterapkan)
Blind Vault adalah komponen node untuk menyimpan objek yang dienkripsi klien di bawah sewa anonim. Komponen ini dijelaskan di MemChain dan Blind Vault. Desain penerimaannya:
- V2: klien membutakan pesan penerimaan RFC 9474. Layanan hak akses mengotorisasi penerbitan, dan proses penanda tangan terpisah (
aeronyx-blind-issuer) hanya menandatangani byte yang telah dibutakan. Proses tersebut tidak memiliki basis data akun, penyimpanan, atau visibilitas penukaran. Node memverifikasi kredensial yang sudah diselesaikan terhadap epoch kunci publik yang ditetapkan dan, dalam satu transaksi SQLite, mencatat penanda pembelanjaan serta membuat sewa acak yang mengautentikasi dirinya sendiri. Kredensial yang sudah dibelanjakan tidak dapat membuat sewa kedua. Mengulang permintaan yang persis sama mengembalikan sewa yang sama. - V1: tiket pembawa dengan tabel pembelanjaan sekali pakai yang sama. Node menyimpan identitas tiket, sehingga penukaran dapat dikaitkan dengan penerbitan. Versi ini dipertahankan hanya demi kompatibilitas.
Node hanya mengekspos rute-rute ini saat Blind Vault dan API publiknya sama-sama diaktifkan. Keduanya nonaktif secara default.
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
Status saat ini: Blind Vault belum diterapkan di node produksi, aplikasi resmi tidak memanggil rute-rute ini, dan backend AeroNyx tidak memiliki endpoint hak akses Blind Vault. Blind Vault bukan produk cadangan, arsip, atau penyimpanan, dan tidak ada produk semacam itu yang ditawarkan.
Observabilitas
Antarmuka operator hanya menampilkan kesehatan kredensial agregat:
- total dan rasio VPN
valid,invalid,missing, danmalformed, serta mode peluncuran - ketersediaan kunci penerbit dan kelompok kegagalan secara kasar
Antarmuka tersebut tidak pernah menampilkan token voucher, tanda tangan, pengacak, pesan yang telah dibutakan, atau ID pembelanjaan. Lalu lintas tingkat sesi dan kunci handshake adalah tampilan operator yang terpisah, seperti dijelaskan di atas.
Model ancaman dan batasan
Tanda tangan buta memutus kaitan antara permintaan penerbitan dan voucher. Tanda tangan buta tidak menghilangkan risiko berikut:
- korelasi waktu antara catatan penerbitan atau reservasi koneksi di backend dan catatan sesi di node, terutama jika satu pihak dapat melihat keduanya
- node yang melihat alamat IP, tujuan, dan DNS Anda
- pencurian, pembagian, atau penjualan kembali voucher selama epoch kuncinya dipublikasikan, karena node tidak menegakkan pembelanjaan sekali pakai
- koneksi tanpa voucher, yang masih diterima dalam mode
reject_invalid - kesalahan rotasi kunci penerbit atau klien yang disusupi
Peta sumber
| Lapisan | Jalur di repositori node | Peran |
|---|---|---|
| Pemverifikasi VPN | crates/aeronyx-server/src/voucher_verifier.rs | Mengurai AVCH, mengambil kunci epoch, memverifikasi voucher, dan mencatat hasil agregat |
| Penanda tangan buta | crates/aeronyx-blind-issuer/src/signer.rs, api.rs | Penandatanganan buta RSA tanpa identitas untuk Blind Vault V2 |
| Kontrak wire | crates/aeronyx-core/src/protocol/blind_vault.rs | Pesan penerimaan RFC 9474, epoch kunci, dan ID pembelanjaan |
| Layanan dan API Blind Vault | crates/aeronyx-server/src/services/blind_vault.rs, api/blind_vault.rs | Penerimaan, pembelanjaan dan sewa atomik, rute objek |
| Konfigurasi Blind Vault | crates/aeronyx-server/src/config_blind_vault.rs | Nonaktif secara default; aturan penetapan dan rotasi penerbit |
Perangkat lunak node bersumber terbuka di bawah AGPL-3.0 di github.com/AeroNyxNetwork/AeroNyx. Aplikasinya tidak bersumber terbuka.
<!-- faq:start -->Pertanyaan yang sering diajukan
Apakah node VPN AeroNyx tahu dompet mana yang saya gunakan untuk membayar?
Tidak untuk koneksi voucher, yang digunakan oleh aplikasi resmi. Node memverifikasi voucher bertanda tangan buta dan kunci handshake sementara, yang keduanya tidak terkait dengan dompet Anda. Klien lama yang terhubung dengan kunci identitasnya memang mengungkapkan kunci tersebut kepada node.
Dapatkah voucher digunakan lebih dari sekali?
Ya. Node memverifikasi tanda tangan terhadap kunci yang dipublikasikan untuk epoch voucher tersebut, tetapi tidak menyimpan daftar voucher yang sudah dibelanjakan. Kuota ditegakkan oleh backend.
Apakah voucher diwajibkan untuk terhubung?
Belum. Node menolak voucher yang formatnya rusak atau tidak valid, tetapi masih menerima koneksi tanpa voucher apa pun, agar klien lama tetap berfungsi.
Di mana kunci penerbit voucher dipublikasikan?
Kunci tersebut dipublikasikan di https://api.aeronyx.network/api/voucher/issuer/keys/, dikelompokkan berdasarkan epoch. Node menyimpan kunci-kunci ini dalam cache selama satu jam.
Apakah Blind Vault tersedia di aplikasi?
Tidak. Penerimaan Blind Vault sudah diimplementasikan di perangkat lunak node, tetapi nonaktif secara default, belum diterapkan, dan tidak digunakan oleh aplikasi resmi. AeroNyx tidak menawarkan produk cadangan atau penyimpanan.
<!-- faq:end -->