Protokol SingLink Kini Sumber Terbuka

By SingLinkVPN Editorial Team2026-11-12Kemas Kini Produk7 minit bacaan
Protokol SingLink Kini Sumber Terbuka
Contents

Hari ini SingLinkLabs, pasukan di sebalik SingLinkVPN, menerbitkan kod sumber penuh Protokol SingLink di GitHub di bawah lesen Apache-2.0. Kini sesiapa sahaja boleh membaca spesifikasinya, menjalankan kodnya, menyemak keselamatannya dan membina di atasnya.

Semasa kami melancarkan pelan sumber terbuka SingLinkVPN, kami menyatakan bahawa sebuah protokol VPN dan sebuah klien VPN akan menyusul secara berperingkat. Inilah langkah tersebut. Protokol ini dikeluarkan bersama prototaip generasi pertama aplikasi SingLinkVPN yang berjalan di atasnya — lihat prototaip aplikasi SingLinkVPN kini sumber terbuka.

Repositori: SingLinkLabs / singlink-protocol · Versi: 1.0.0-draft (nama wayar SingLink/1, draf spesifikasi 2) · Lesen: Apache-2.0 · Bahasa: Go, pustaka standard sahaja

Apa yang dikeluarkan

  • Spesifikasi. SPEC.md menerangkan format wayar bait demi bait, supaya protokol ini boleh dilaksanakan secara bebas.
  • Pustaka protokol dalam Go. Ia hanya menggunakan kriptografi dalam pustaka standard Go, tanpa sebarang kebergantungan pihak ketiga.
  • Alat baris perintah untuk menjana kunci, mengeluarkan pas akses, mencipta pautan sambungan, menjalankan nod dan klien, serta memulakan demo pada satu mesin.
  • Proksi tempatan untuk aplikasi (SOCKS5 dan HTTP) serta antara muka pustaka C (libsinglink), supaya aplikasi di mana-mana platform boleh membenamkan protokol ini.
  • Contoh penggunaan: contoh konfigurasi nod dan fail perkhidmatan systemd yang diperkukuh.
  • Semakan keselamatan dalaman, lengkap dengan setiap penemuan dan pembaikan: SECURITY-AUDIT.md.

SingLink 2.0 dan Protokol Terbuka SingLink ialah protokol yang berbeza

Aplikasi rasmi SingLinkVPN berjalan di atas protokol pengeluaran kami, termasuk SingLink 2.0. Kod sumber teras SingLink 2.0 tidak termasuk dalam keluaran ini dan kekal tertutup.

Protokol SingLink yang diterbitkan hari ini — Protokol Terbuka SingLink, apabila perlu dibezakan daripada SingLink 2.0 — ialah protokol berasingan yang direka oleh SingLinkLabs dari awal untuk pembangunan terbuka. Aplikasi rasmi tidak menggunakannya buat masa ini. Tiada apa yang berubah bagi pengguna sedia ada: aplikasi yang sama, akaun yang sama dan sambungan yang sama.

Mengapa kami menjadikannya sumber terbuka

  • Dakwaan keselamatan sepatutnya boleh disemak. Pertukaran kunci pasca-kuantum, pengikatan peranti dan ketahanan terhadap penyiasatan mudah didakwa. Dengan kod dan spesifikasi terbuka kepada umum, sesiapa sahaja boleh mengesahkannya.
  • Lebih ramai mata menemui masalah lebih awal. Penyelidik dan jurutera luar akan nampak isu yang terlepas pandang oleh pasukan dalaman.
  • Orang lain boleh membina di atasnya. Pembangun boleh mengujinya, membenamkannya dalam projek mereka sendiri dan mencadangkan penambahbaikan.
  • Ia menunaikan pelan kami. Menerbitkan sebuah protokol ialah salah satu peringkat yang kami janjikan.

Cara ia berfungsi, dalam bahasa mudah

Ideanya dalam satu ayat: dari luar, pengguna kelihatan sekadar melawat laman web HTTPS biasa. Tersembunyi di dalamnya ialah permintaan akses yang disulitkan, dan pelayan hanya menyalurkan trafik untuk orang yang memegang pas yang sah.

Reka bentuk ini menggunakan tiga kunci. Bayangkan sistem keselamatan sebuah bangunan pejabat:

  • Kunci nod, iaitu kunci pintu. Setiap pelayan mempunyai kuncinya sendiri. Hanya pelayan itu boleh membuka permintaan pengguna, dan ini juga membuktikan pengguna telah sampai ke pelayan yang sebenar.
  • Kunci pengeluar, iaitu cop jabatan sumber manusia. Ia kekal di bahagian belakang akaun, yang mengecop setiap pas akses dengan pelan, tarikh luput, had kelajuan dan had peranti.
  • Kunci peranti, iaitu cap jari pengguna. Ia kekal pada telefon atau komputer pengguna dan menandatangani setiap sambungan, membuktikan bahawa pas itu digunakan oleh pemiliknya yang sah.

Pelayan hanya perlu tahu rupa cop itu untuk menyemak pas secara sendiri. Sebab itulah nod tidak menyimpan pangkalan data pengguna dan tidak menyimpan data pengguna.

Apa yang berlaku dalam satu sambungan

  1. Aplikasi membuka apa yang kelihatan seperti sambungan HTTPS biasa ke sebuah laman web.
  2. Paket pertamanya membawa kunci sekali guna untuk sambungan ini, teks sifer pasca-kuantum, dan bahagian bermeterai yang mengandungi destinasi, pas akses, sehingga 8 KB pertama data sebenar serta tandatangan peranti ke atas keseluruhan permintaan. Tiada perjalanan pergi-balik tambahan diperlukan.
  3. Pelayan menyemak segala-galanya: bahawa ia boleh menyahsulit permintaan, bahawa cop itu tulen, bahawa tandatangan peranti sepadan, bahawa masanya betul, dan bahawa permintaan itu bukan ulang main serta tidak luput atau dibatalkan.
  4. Hanya jika setiap semakan lulus barulah ia menjawab dan mula menyalurkan trafik. Jika mana-mana semakan gagal, sambungan diserahkan tanpa diusik kepada laman web sebenar. Sesiapa yang menyiasat pelayan hanya akan nampak laman web biasa, tanpa sebarang perbezaan masa.
  5. Kedua-dua pihak menggabungkan kunci sekali guna mereka menjadi kunci sesi untuk sambungan ini. Data disulitkan dalam cebisan, cebisan pertama diberi pelapik, dan kunci diganti secara automatik selepas jumlah penggunaan tertentu.

Ciri keselamatan

  • Dua lapisan penyulitan. HTTPS di luar ditambah lapisan AES-256-GCM protokol itu sendiri di dalam, jadi CDN yang menamatkan HTTPS pun tidak dapat melihat kandungannya.
  • Perlindungan pasca-kuantum. Pertukaran kunci menggabungkan X25519 klasik dengan ML-KEM-768 (FIPS 203). Penyerang perlu memecahkan kedua-duanya.
  • Kerahsiaan hadapan. Setiap sambungan menggunakan kunci sekali guna, jadi pelayan yang dikompromi kemudian tidak dapat menyahsulit trafik lampau. Pengecualiannya ialah paket pertama (lihat had di bawah).
  • Pengikatan peranti. Pas akses yang disalin dari mana-mana tidak berguna tanpa kunci peranti yang menjadi asas pengeluarannya.
  • Perlindungan ulang main. Menghantar semula paket yang ditangkap tidak berkesan, walaupun selepas pelayan dimulakan semula.
  • Ketahanan terhadap penyiasatan. Permintaan yang luput, dibatalkan, diulang main atau dipalsukan semuanya menerima layanan yang sama: ia diserahkan kepada laman web sebenar.
  • Kawalan berpusat. Apabila akaun atau peranti dibatalkan, sambungan aktifnya pada setiap pelayan ditutup dalam kira-kira 10 saat.
  • Pelayan yang diperkukuh. Had sambungan bagi setiap pelayan dan setiap IP, belanjawan CPU untuk jabat tangan, serta senarai sekatan lengkap untuk alamat persendirian dan alamat tujuan khas.

Dari mana idea-idea ini datang

Protokol SingLink belajar daripada reka bentuk yang sudah mantap: sambungan permintaan tunggal daripada VLESS dan Trojan, penyerahan sambungan yang gagal kepada laman web sebenar daripada Trojan dan obfs4, corak jabat tangan Noise NK, terbitan kunci dan pengendalian 0-RTT daripada TLS 1.3, pertukaran kunci pasca-kuantum hibrid daripada draf piawai X-Wing, penyulitan bercebisan daripada Shadowsocks AEAD, token bertandatangan daripada JWT dan PASETO, token terikat peranti daripada OAuth DPoP, HAProxy PROXY protocol, serta perlindungan ulang main dan beban daripada WireGuard.

Ini hanyalah idea reka bentuk. Semua kod ditulis dari awal. Tiada kod daripada Xray, V2Ray, sing-box atau WireGuard yang disertakan.

Status semasa dan had yang diketahui

  • Ia masih draf. Versinya ialah 1.0.0-draft dan format wayar mungkin masih berubah.
  • Setakat ini hanya semakan keselamatan dalaman. Dua penyemak meneliti reka bentuk kriptografi dan pelaksanaannya secara berasingan dan merekodkan 31 penemuan: 2 Tinggi, 14 Sederhana, dan selebihnya Rendah atau bersifat makluman. Tiada satu pun yang menjejaskan kerahsiaan atau pengesahan trafik pengguna. Semua penemuan Tinggi dan Sederhana telah dibaiki atau dimitigasi, masing-masing dengan ujian regresi, dan setiap penghurai dilindungi oleh ujian fuzz.
  • Belum ada audit pihak ketiga. Kami mengesyorkan agar tidak bergantung pada protokol ini untuk kegunaan berisiko tinggi sehingga ia menjalani audit bebas, yang kami rancang sebelum mengisytiharkannya stabil.
  • Paket pertama tidak mempunyai kerahsiaan hadapan. Ia dilindungi oleh kunci jangka panjang pelayan, jadi kunci pelayan patut diputar secara berkala. Putaran kunci disokong.
  • Belum diuji di lapangan di tanah besar China. Cap jari TLS dan saiz paket pertamanya masih boleh dibezakan. Bagi pengguna di tanah besar China, aplikasi rasmi SingLinkVPN terus menggunakan protokol pengeluaran sedia ada kami.
  • Pelayan memerlukan domainnya sendiri, sijil yang diterima oleh pelayar, dan laman web sebenar di belakangnya.

Cuba dan sertai kami

Dengan Go 1.24 atau lebih baharu, make test menjalankan suite ujian, make cli membina alat baris perintah, dan singlink demo memulakan pelayan dan klien tempatan pada satu mesin. README dalam repositori menerangkan cara menjalankan pelayan.

Soalan, laporan pepijat dan pull request dialu-alukan di GitHub. Sila laporkan kelemahan keselamatan secara peribadi, bukan dalam Issue awam — prosesnya diterangkan dalam SECURITY.md.

Lesen dan tanda dagangan

Kod ini dilesenkan di bawah Apache-2.0: anda boleh menggunakan, mengubah suai dan mengedarkannya semula, termasuk secara komersial, mengikut terma lesen. Nama "SingLink" dan "SingLinkVPN" serta logonya ialah tanda dagangan SingLinkLabs, dan lesen ini tidak memberi kebenaran untuk menggunakannya melainkan untuk menerangkan asal usul karya. Versi yang diubah suai dan fork hendaklah diterbitkan di bawah nama dan ikon mereka sendiri.

Bacaan lanjut

Related articles