WireGuard VPN untuk Windows dan WireGuardNT 1.0 Dirilis

Jason A. Donenfeld, penulis WireGuard VPN, telah merilis versi utama pertama perangkat lunak klien WireGuard untuk Windows 1.0, serta driver WireGuardNT 1.0 dengan port VPN WireGuard untuk kernel Windows 10 dan 11, mendukung arsitektur AMD64, x86, dan ARM64. Kode komponen kernel Windows dilisensikan di bawah lisensi GPLv2, dan perangkat lunak klien dilisensikan di bawah lisensi MIT.

Port ini didasarkan pada basis kode implementasi WireGuard utama untuk kernel Linux, yang telah dikonversi untuk menggunakan entitas kernel Windows dan tumpukan jaringan NDIS. Dibandingkan dengan implementasi wireguard-go, yang berjalan di ruang pengguna dan menggunakan antarmuka jaringan Wintun, WireGuardNT menawarkan peningkatan kinerja yang signifikan dengan menghilangkan peralihan konteks dan menyalin isi paket dari kernel ke ruang pengguna. Mirip dengan implementasi untuk Linux, OpenBSD, dan FreeBSD, semua logika pemrosesan protokol di WireGuardNT berjalan langsung pada tingkat tumpukan jaringan.

Versi 1.0 ditandai sebagai tonggak penting, menandai penyelesaian sejumlah masalah dan pemenuhan tugas yang direncanakan, seperti: penggunaan fungsi NdisWdfGetAdapterContextFromAdapterHandle() sebagai pengganti penyimpanan status driver yang kurang aman di bidang Reserved dan penggunaan offset yang tidak terdokumentasi; pelacakan ukuran MTU (Maximum Transmission Unit) yang benar dan cepat melalui intersepsi panggilan sistem; penggunaan standar C23 dalam kode.

Sebagai pengingat, WireGuard VPN didasarkan pada metode enkripsi modern, memberikan kinerja luar biasa, mudah digunakan, bebas dari komplikasi, dan telah terbukti dalam sejumlah penerapan skala besar yang menangani volume lalu lintas yang besar. Proyek ini telah dikembangkan sejak tahun 2015 dan telah menjalani audit dan verifikasi formal terhadap metode enkripsinya. WireGuard menggunakan konsep perutean enkripsi berbasis kunci, yang melibatkan pengikatan kunci privat ke setiap antarmuka jaringan dan penggunaan kunci publik untuk pengikatan kunci.

Pertukaran kunci publik untuk membangun koneksi mirip dengan SSH. Untuk menegosiasikan kunci dan terhubung tanpa menjalankan daemon terpisah di ruang pengguna, mekanisme Noise_IK dari Noise Protocol Framework digunakan, mirip dengan pemeliharaan authorized_keys di SSH. Transfer data dilakukan melalui enkapsulasi dalam paket UDP. Perubahan didukung. Alamat IP Server VPN (roaming) tanpa gangguan koneksi dengan konfigurasi ulang klien otomatis.

Algoritma enkripsi yang digunakan adalah cipher aliran ChaCha20 dan algoritma otentikasi pesan (MAC) Poly1305, yang dikembangkan oleh Daniel J. Bernstein, Tanja Lange, dan Peter Schwabe. ChaCha20 dan Poly1305 dipasarkan sebagai alternatif yang lebih cepat dan lebih aman daripada AES-256-CTR dan HMAC, yang implementasi perangkat lunaknya memungkinkan eksekusi waktu tetap tanpa memerlukan dukungan perangkat keras khusus. Kunci rahasia bersama dihasilkan menggunakan protokol Diffie-Hellman kurva eliptik dalam implementasi Curve25519, yang juga diusulkan oleh Daniel Bernstein. Algoritma BLAKE2s (RFC7693) digunakan untuk hashing.

Sumber: opennet.ru