Protokol SingLink Kini Bersumber Terbuka

By SingLinkVPN Editorial Team2026-11-12Pembaruan Produk6 menit baca
Protokol SingLink Kini Bersumber Terbuka
Contents

Hari ini SingLinkLabs, tim di balik SingLinkVPN, merilis seluruh kode sumber Protokol SingLink di GitHub dengan lisensi Apache-2.0. Kini siapa pun dapat membaca spesifikasinya, menjalankan kodenya, meninjau keamanannya, dan mengembangkan sesuatu di atasnya.

Saat meluncurkan rencana sumber terbuka SingLinkVPN, kami menyampaikan bahwa protokol VPN dan klien VPN akan menyusul secara bertahap. Inilah tahap tersebut. Protokol ini dirilis bersama prototipe generasi pertama aplikasi SingLinkVPN yang berjalan di atasnya. Baca prototipe aplikasi SingLinkVPN kini bersumber terbuka.

Repositori: SingLinkLabs / singlink-protocol · Versi: 1.0.0-draft (nama protokol di jaringan SingLink/1, draf spesifikasi 2) · Lisensi: Apache-2.0 · Bahasa: Go, hanya pustaka standar

Apa yang dirilis

  • Spesifikasi. SPEC.md menjelaskan format data di jaringan byte demi byte, sehingga protokol ini dapat diimplementasikan secara independen.
  • Pustaka protokol dalam Go. Pustaka ini hanya memakai kriptografi dari pustaka standar Go, tanpa dependensi pihak ketiga.
  • Alat baris perintah untuk membuat kunci, menerbitkan pas akses, membuat tautan koneksi, menjalankan node dan klien, serta memulai demo di satu mesin.
  • Proxy lokal untuk aplikasi (SOCKS5 dan HTTP) serta antarmuka pustaka C (libsinglink), sehingga aplikasi di platform apa pun dapat menyematkan protokol ini.
  • Contoh penerapan: contoh konfigurasi node dan berkas layanan systemd yang sudah diperketat.
  • Tinjauan keamanan internal, lengkap dengan setiap temuan dan perbaikannya: SECURITY-AUDIT.md.

SingLink 2.0 dan Protokol Terbuka SingLink adalah dua protokol yang berbeda

Aplikasi resmi SingLinkVPN berjalan di atas protokol produksi kami, termasuk SingLink 2.0. Kode sumber inti SingLink 2.0 tidak termasuk dalam rilis ini dan tetap tertutup.

Protokol SingLink yang dirilis hari ini (disebut Protokol Terbuka SingLink bila perlu dibedakan dari SingLink 2.0) adalah protokol terpisah yang dirancang SingLinkLabs dari nol untuk pengembangan terbuka. Aplikasi resmi saat ini tidak menggunakannya. Tidak ada yang berubah bagi pengguna yang sudah ada: aplikasinya sama, akunnya sama, dan koneksinya pun sama.

Mengapa kami membuka kodenya

  • Klaim keamanan harus bisa diperiksa. Pertukaran kunci pascakuantum, pengikatan perangkat, dan ketahanan terhadap pemindaian mudah diklaim. Dengan kode dan spesifikasi yang terbuka, siapa pun dapat memverifikasinya.
  • Makin banyak mata, makin cepat masalah ditemukan. Peneliti dan insinyur dari luar akan melihat masalah yang terlewat oleh tim internal.
  • Pihak lain dapat mengembangkannya. Para pengembang dapat mengujinya, menyematkannya dalam proyek mereka sendiri, dan mengusulkan perbaikan.
  • Kami menepati rencana. Merilis protokol adalah salah satu tahap yang kami janjikan.

Cara kerjanya, dalam bahasa sederhana

Gagasannya dalam satu kalimat: dari luar, pengguna terlihat hanya mengunjungi situs web HTTPS biasa. Di dalamnya tersembunyi permintaan akses terenkripsi, dan server hanya meneruskan lalu lintas bagi pemegang pas yang sah.

Desainnya memakai tiga kunci. Bayangkan sistem keamanan sebuah gedung perkantoran:

  • Kunci node, gembok pintu. Setiap server punya kuncinya sendiri. Hanya server itu yang dapat membuka permintaan pengguna, sekaligus membuktikan bahwa pengguna terhubung ke server yang asli.
  • Kunci penerbit, stempel bagian HRD. Kunci ini tetap berada di backend akun, yang menstempel setiap pas akses dengan paket langganan, tanggal kedaluwarsa, batas kecepatan, dan batas perangkat.
  • Kunci perangkat, sidik jari pengguna. Kunci ini tetap berada di ponsel atau komputer pengguna dan menandatangani setiap koneksi, membuktikan bahwa pas tersebut dipakai oleh pemiliknya yang sah.

Server cukup mengetahui rupa stempelnya untuk memeriksa pas secara mandiri. Karena itulah node tidak menyimpan basis data pengguna maupun data pengguna apa pun.

Apa yang terjadi dalam satu koneksi

  1. Aplikasi membuka koneksi yang terlihat seperti koneksi HTTPS biasa ke sebuah situs web.
  2. Paket pertamanya membawa kunci sekali pakai untuk koneksi ini, ciphertext pascakuantum, dan bagian tersegel berisi tujuan, pas akses, hingga 8 KB pertama data sebenarnya, serta tanda tangan perangkat atas seluruh permintaan. Tidak perlu bolak-balik tambahan.
  3. Server memeriksa semuanya: apakah permintaan dapat didekripsi, apakah stempelnya asli, apakah tanda tangan perangkat cocok, apakah waktunya tepat, serta apakah permintaan itu bukan pengulangan dan tidak kedaluwarsa atau dicabut.
  4. Hanya jika semua pemeriksaan lolos, server menjawab dan mulai meneruskan lalu lintas. Jika ada satu saja yang gagal, koneksi diserahkan utuh ke situs web sungguhan. Siapa pun yang memindai server hanya akan melihat situs web biasa, tanpa perbedaan waktu respons.
  5. Kedua sisi menggabungkan kunci sekali pakai mereka menjadi kunci sesi untuk koneksi ini. Data dienkripsi per potongan, potongan-potongan pertama diberi padding, dan kunci diganti otomatis setelah pemakaian mencapai jumlah tertentu.

Fitur keamanan

  • Dua lapis enkripsi. HTTPS di luar, ditambah lapisan AES-256-GCM milik protokol sendiri di dalam, sehingga CDN yang mengakhiri HTTPS pun tidak dapat melihat isinya.
  • Perlindungan pascakuantum. Pertukaran kunci menggabungkan X25519 klasik dengan ML-KEM-768 (FIPS 203). Penyerang harus membobol keduanya.
  • Kerahasiaan maju (forward secrecy). Setiap koneksi memakai kunci sekali pakai, sehingga server yang dibobol di kemudian hari tidak dapat mendekripsi lalu lintas sebelumnya. Pengecualiannya adalah paket pertama (lihat keterbatasan di bawah).
  • Pengikatan perangkat. Pas akses yang disalin dari mana pun tidak berguna tanpa kunci perangkat yang menjadi tujuan penerbitannya.
  • Perlindungan dari serangan replay. Mengirim ulang paket yang disadap tidak akan berhasil, bahkan setelah server dimulai ulang.
  • Ketahanan terhadap pemindaian. Permintaan yang kedaluwarsa, dicabut, diulang, atau dipalsukan diperlakukan sama: semuanya diserahkan ke situs web sungguhan.
  • Kendali terpusat. Saat akun atau perangkat dicabut, koneksi aktifnya di semua server ditutup dalam sekitar 10 detik.
  • Server yang diperketat. Batas koneksi per server dan per IP, anggaran CPU untuk handshake, serta daftar blokir lengkap untuk alamat privat dan alamat khusus.

Asal-usul gagasannya

Protokol SingLink belajar dari desain-desain yang sudah teruji: koneksi satu permintaan dari VLESS dan Trojan; penyerahan koneksi gagal ke situs web sungguhan dari Trojan dan obfs4; pola handshake Noise NK; derivasi kunci dan penanganan 0-RTT dari TLS 1.3; pertukaran kunci pascakuantum hibrida dari draf standar X-Wing; enkripsi per potongan dari Shadowsocks AEAD; token bertanda tangan dari JWT dan PASETO; token yang terikat perangkat dari OAuth DPoP; HAProxy PROXY protocol; serta perlindungan replay dan beban dari WireGuard.

Semua itu hanya gagasan desain. Seluruh kode ditulis dari nol. Tidak ada kode dari Xray, V2Ray, sing-box, atau WireGuard yang disertakan.

Status saat ini dan keterbatasan yang diketahui

  • Masih berupa draf. Versinya 1.0.0-draft dan format data di jaringan masih bisa berubah.
  • Sejauh ini baru tinjauan keamanan internal. Dua peninjau memeriksa desain kriptografi dan implementasinya secara terpisah dan mencatat 31 temuan: 2 tingkat tinggi, 14 tingkat sedang, dan sisanya tingkat rendah atau bersifat informasi. Tidak satu pun yang membobol kerahasiaan atau autentikasi lalu lintas pengguna. Semua temuan tingkat tinggi dan sedang telah diperbaiki atau dimitigasi, masing-masing dengan uji regresi, dan setiap parser dicakup oleh uji fuzz.
  • Belum ada audit pihak ketiga. Kami menyarankan agar protokol ini tidak diandalkan untuk penggunaan berisiko tinggi sampai menjalani audit independen, yang kami rencanakan sebelum menyatakannya stabil.
  • Paket pertama tidak memiliki kerahasiaan maju. Paket ini dilindungi kunci jangka panjang server, jadi kunci server sebaiknya dirotasi secara berkala. Rotasi kunci sudah didukung.
  • Belum diuji di lapangan di Tiongkok daratan. Sidik jari TLS dan ukuran paket pertamanya masih dapat dikenali. Untuk pengguna di Tiongkok daratan, aplikasi resmi SingLinkVPN tetap memakai protokol produksi kami yang sudah ada.
  • Server memerlukan domain sendiri, sertifikat yang diterima browser, dan situs web sungguhan di belakangnya.

Coba dan ikut berkontribusi

Dengan Go 1.24 atau yang lebih baru, make test menjalankan rangkaian pengujian, make cli membangun alat baris perintah, dan singlink demo memulai server dan klien lokal di satu mesin. README di repositori menjelaskan cara menjalankan server.

Pertanyaan, laporan bug, dan pull request dipersilakan di GitHub. Laporkan kerentanan keamanan secara pribadi, bukan melalui issue publik. Prosesnya dijelaskan di SECURITY.md.

Lisensi dan merek dagang

Kode ini dilisensikan dengan Apache-2.0: Anda boleh menggunakan, memodifikasi, dan mendistribusikannya ulang, termasuk untuk tujuan komersial, sesuai ketentuan lisensi. Nama "SingLink" dan "SingLinkVPN" beserta logonya adalah merek dagang SingLinkLabs, dan lisensi tersebut tidak memberikan izin untuk menggunakannya di luar keperluan menyebutkan asal karya. Versi modifikasi dan fork sebaiknya dirilis dengan nama dan ikon sendiri.

Bacaan lanjutan

Related articles