Hari ini Linus memindahkan cabang net-next dengan antarmuka VPN ke dirinya sendiri WireGuard. Tentang acara ini ΡΠΎΠΎΠ±ΡΠΈΠ»ΠΈ di milis WireGuard.
Pengumpulan kode untuk kernel Linux 5.6 baru saat ini sedang berlangsung. WireGuard adalah VPN cepat generasi berikutnya yang mengimplementasikan kriptografi modern. Awalnya dikembangkan sebagai alternatif yang lebih sederhana dan nyaman untuk VPN yang sudah ada. Penulisnya adalah spesialis keamanan informasi Kanada Jason A. Donenfeld. Pada bulan Agustus 2018, WireGuard dipuji oleh Linus Torvalds. Sekitar waktu itu, pekerjaan mulai memasukkan VPN ke dalam kernel Linux. Prosesnya memakan waktu sedikit lebih lama.
βSaya melihat Jason telah membuat pull request untuk memasukkan WireGuard ke dalam kernel,β tulis Linus pada 2 Agustus 2018. β Bolehkah saya sekali lagi menyatakan kecintaan saya pada VPN ini dan berharap bisa segera merger? Kodenya mungkin tidak sempurna, tapi saya melihatnya, dan dibandingkan dengan OpenVPN dan IPSec yang mengerikan, ini adalah karya seni yang nyata.β
Terlepas dari keinginan Linus, merger tersebut berlangsung selama satu setengah tahun. Masalah utamanya ternyata terkait dengan implementasi fungsi kriptografi yang dipatenkan, yang digunakan untuk meningkatkan kinerja. Setelah negosiasi panjang pada bulan September 2019, akhirnya terwujud keputusan kompromi dibuat menerjemahkan tambalan ke fungsi Crypto API yang tersedia di kernel, yang mana pengembang WireGuard memiliki keluhan di bidang kinerja dan keamanan umum. Namun mereka memutuskan untuk memisahkan fungsi kripto asli WireGuard ke dalam Zinc API tingkat rendah yang terpisah dan akhirnya memindahkannya ke kernel. Pada bulan November, pengembang kernel menepati janji mereka dan sepakat transfer sebagian kode dari Zinc ke kernel utama. Misalnya, di API Kripto termasuk implementasi cepat dari algoritma ChaCha20 dan Poly1305 yang disiapkan di WireGuard.
Terakhir, pada tanggal 9 Desember 2019, David S. Miller, yang bertanggung jawab atas subsistem jaringan kernel Linux, diterima ke cabang net-next tambalan dengan implementasi antarmuka VPN dari proyek WireGuard.
Dan hari ini, 29 Januari 2020, perubahan tersebut masuk ke Linus untuk dimasukkan ke dalam kernel.
Keunggulan WireGuard yang diklaim dibandingkan solusi VPN lainnya:
Seluruh logika inti WireGuard membutuhkan kurang dari 4000 baris kode, sedangkan OpenVPN dan IPSec memerlukan ratusan ribu baris kode.
βWireGuard menggunakan konsep perutean kunci enkripsi, yang melibatkan melampirkan kunci pribadi ke setiap antarmuka jaringan dan menggunakan kunci publik untuk mengikatnya bersama-sama. Kunci publik dipertukarkan untuk membuat koneksi dengan cara yang mirip dengan SSH. Untuk menegosiasikan kunci dan terhubung tanpa menjalankan daemon terpisah di ruang pengguna, mekanisme Noise_IK dari Kerangka Protokol Kebisinganmirip dengan mempertahankan kunci_otorisasi di SSH. Transmisi data dilakukan melalui enkapsulasi dalam paket UDP. Mendukung perubahan alamat IP server VPN (roaming) tanpa memutus koneksi dengan konfigurasi ulang otomatis klien, - menulis jaringan terbuka.
Untuk enkripsi bekas sandi aliran ChaCha20 dan algoritma otentikasi pesan (MAC) Poly1305, dirancang oleh Daniel Bernstein (Daniel J. Bernstein), Tanja Lange dan Peter Schwabe. ChaCha20 dan Poly1305 diposisikan sebagai analog yang lebih cepat dan aman dari AES-256-CTR dan HMAC, yang implementasi perangkat lunaknya memungkinkan pencapaian waktu eksekusi tetap tanpa menggunakan dukungan perangkat keras khusus. Untuk menghasilkan kunci rahasia bersama, implementasinya menggunakan kurva elips protokol Diffie-Hellman Curve25519, juga diusulkan oleh Daniel Bernstein. Algoritma yang digunakan untuk hashing adalah BLAKE2 (RFC7693)'.
Konfigurasi OpenVPN: Cipher suite setara AES 256-bit dengan HMAC-SHA2-256, mode UDP
Kinerja diukur menggunakan iperf3, menunjukkan hasil rata-rata selama 30 menit.
Secara teori, setelah diintegrasikan ke dalam tumpukan jaringan, WireGuard akan bekerja lebih cepat. Namun pada kenyataannya hal ini belum tentu terjadi karena transisi ke fungsi kriptografi Crypto API yang ada di dalam kernel. Mungkin belum semuanya dioptimalkan ke tingkat kinerja WireGuard asli.
Proyek WireGuard telah berkembang sejak tahun 2015, telah diaudit dan verifikasi formal. Dukungan WireGuard diintegrasikan ke dalam NetworkManager dan systemd, dan patch kernel disertakan dalam distribusi dasar Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph dan ALT.