Tim pengembang meluncurkan sanstun, sebuah implementasi mesin status WireGuard berbasis sans-IO dalam bahasa pemrograman Rust. Pustaka ini dirancang untuk menawarkan kemudahan penggunaan, keamanan, serta performa tinggi melalui antarmuka pemrograman aplikasi (API) yang ramah pemrosesan paralel dan idiomatik.
Mengenal Konsep Sans-IO
Pendekatan sans-IO memisahkan operasi masukan-keluaran (I/O) serta efek samping dari logika inti dan status sistem, termasuk elemen seperti waktu dan keacakan. Tanpa efek samping, komponen dengan pola ini menjadi lebih mudah diuji dan disusun, sekaligus menghindari masalah pewarnaan fungsi serta selaras dengan aturan kepemilikan di Rust. Meskipun contoh kode yang disediakan menggunakan Rust, pola sans-IO dapat diterapkan pada bahasa pemrograman apa pun.
Sebelum mengembangkan sanstun, pengembang menggunakan boringtun sebagai implementasi WireGuard untuk proyek Firezone. Seiring berjalannya waktu, mereka kerap melakukan penambalan kode untuk perbaikan kutu dan penambahan fitur, hingga akhirnya menemukan bahwa mempertahankan kompatibilitas API penuh dengan perangkat lunak tersebut semakin sulit seiring evolusi produk.
Pembaruan Desain API
Perubahan besar pertama yang dilakukan adalah menerapkan penanganan waktu secara penuh dengan pola sans-IO melalui penambahan akhiran _at yang menerima parameter Instant. Selain itu, pengembang menghapus penyangga internal (internal buffering) untuk menyederhanakan antarmuka dan implementasi di kedua sisi, karena penyangga internal sebelumnya menimbulkan masalah alokasi tambahan serta keharusan memanggil fungsi dekapsulasi dengan datagram nol.
Blok bangunan utama dari API sans-IO yang baru mencakup penanganan paket masuk melalui fungsi seperti Tunnel::handle_handshake_initiation, Tunnel::handle_handshake_response, Tunnel::handle_cookie_reply, serta Tunnel::begin_decapsulate dan Tunnel::commit_decapsulate. Sementara itu, paket keluar dikelola lewat Tunnel::begin_encapsulate, pembaruan pengatur waktu melalui Tunnel::handle_timeout dan Tunnel::poll_timeout, serta penanganan kejadian menggunakan Tunnel::poll_event.
Pemetaan Protokol dan Kriptografi Paralel
Protokol WireGuard mendukung empat jenis pesan, yakni inisiasi jabat tangan (handshake), tanggapan jabat tangan, balasan kuki, dan data terenkripsi. Untuk mencegah serangan penolakan layanan (DoS) berupa pengiriman jabat tangan palsu yang menghabiskan siklus CPU penerima, WireGuard menerapkan mekanisme kuki yang memaksa pihak jarak jauh membuktikan kepemilikan alamat IP sumber sebelum pembatasan tarif diberlakukan.
Dalam sanstun, konsep antarmuka dan terowongan dipetakan langsung ke tipe Interface dan Tunnel. Seluruh paket masuk melewati Interface::receive untuk diproses melalui penguraian data, penerapan batas tarif, dan validasi jabat tangan secara aman tanpa memerlukan intervensi manual pengembang.
Salah satu keunggulan utama pustaka ini adalah API yang ramah paralel untuk proses enkripsi dan dekapsulasi paket. Sanstun memisahkan fungsi pembukuan dari enkripsi aktual dengan menyediakan struktur PendingEncapsulate melalui pemanggilan Tunnel::begin_encapsulate, yang memungkinkan pengalihan tugas berat kriptografi ke utas pekerja terpisah untuk meningkatkan kecepatan pemrosesan.
Pustaka sanstun kini telah tersedia di platform crates.io serta dirilis sebagai perangkat lunak sumber terbuka di bawah lisensi Apache 2.0 melalui repositori GitHub. Dengan peluncuran ini, cabang pengembangan terdahulu pada repositori boringtun resmi dinyatakan usang.
Sumber: Hacker News: Front Page








