WireGuard akan "datang" ke kernel Linux - mengapa?

Pada akhir Juli, pengembang tunnel VPN WireGuard mengusulkan satu set tambalan yang akan menjadikan perangkat lunak organisasi VPN tunnel mereka menjadi bagian dari kernel Linux. Namun, tanggal pasti untuk implementasi "ide" masih belum diketahui. Di bawah kucing, kita akan berbicara tentang alat ini secara lebih rinci.


/ foto Tambako The Jaguar CC

Secara singkat tentang proyek


WireGuard adalah terowongan VPN generasi berikutnya yang dibuat oleh Jason A. Donenfeld, kepala Edge Security. Proyek ini dikembangkan sebagai alternatif yang disederhanakan dan gesit untuk OpenVPN dan IPsec. Versi pertama produk hanya berisi 4 ribu baris kode. Sebagai perbandingan, di OpenVPN sekitar 120 ribu baris, dan di IPSec - 420 ribu.

Menurut pengembang, WireGuard mudah untuk dikonfigurasi, dan keamanan protokol dicapai melalui algoritma kriptografi yang terbukti . Saat mengubah jaringan : Wi-Fi, LTE atau Ethernet, Anda harus menyambung kembali ke server VPN setiap kali. Server WireGuard tidak memutus koneksi, bahkan jika pengguna menerima alamat IP baru.

Terlepas dari kenyataan bahwa WireGuard awalnya diasah untuk kernel Linux, para pengembang menjaga versi portabel alat untuk perangkat Android. Aplikasi ini masih belum selesai, tetapi Anda dapat mencobanya dalam praktik sekarang. Untuk melakukan ini, Anda harus menjadi salah satu penguji .

Secara umum, WireGuard cukup populer dan bahkan telah diimplementasikan oleh beberapa penyedia VPN, seperti Mullvad dan AzireVPN. Jaringan telah menerbitkan sejumlah besar panduan untuk mengkonfigurasi solusi ini. Misalnya, ada panduan yang dibuat pengguna, dan ada panduan yang disiapkan oleh penulis proyek .

Rincian teknis


Dalam dokumentasi resmi (hlm. 18), tercatat bahwa bandwidth WireGuard empat kali lebih tinggi daripada OpenVPN: 1011 Mbit / dtk dibandingkan 258 Mbit / dtk, masing-masing. WireGuard unggul dari solusi Linux IPsec standar - 881 Mbps. Ini melampaui dalam hal kemudahan pengaturan.

Setelah bertukar kunci (koneksi VPN diinisialisasi hampir seperti di SSH) dan membuat koneksi, WireGuard secara mandiri menyelesaikan semua tugas lain: tidak perlu khawatir tentang perutean, memantau keadaan, dll. Upaya konfigurasi tambahan perlu diterapkan hanya jika Anda ingin menggunakan enkripsi simetris.


/ foto Anders Hojbjerg CC

Untuk menginstal, Anda memerlukan distribusi dengan kernel Linux "lebih tua" 4.1. Ini dapat ditemukan di repositori distribusi Linux utama.

$ sudo add-apt-repository ppa:hda-me/wireguard $ sudo apt update $ sudo apt install wireguard-dkms wireguard-tools 

Menurut editor xakep.ru, perakitan sendiri dari sumber juga tidak rumit. Cukup untuk meningkatkan antarmuka dan menghasilkan kunci publik dan pribadi:

 $ sudo ip link add dev wg0 type wireguard $ wg genkey | tee privatekey | wg pubkey > publickey 

WireGuard tidak menggunakan antarmuka untuk bekerja dengan penyedia kriptografi CryptoAPI . Sebagai gantinya, stream cipher ChaCha20 , insert cryptographic imitasi Poly1305 dan fungsi hash kriptografiknya digunakan.

Kunci rahasia dibuat menggunakan protokol Diffie-Hellman berdasarkan kurva eliptik Curve25519 . Hashing menggunakan fungsi hash BLAKE2 dan SipHash . Karena format cap waktu TAI64N , protokol membuang paket dengan nilai cap waktu yang lebih rendah, sehingga mencegah DoS dan serangan replay .

Pada saat yang sama, WireGuard menggunakan fungsi ioctl untuk mengontrol I / O (digunakan untuk menggunakan Netlink ), yang membuat kode lebih bersih dan lebih sederhana. Anda dapat memverifikasi ini dengan melihat kode konfigurasi .

Paket Pengembang


Sejauh ini, WireGuard adalah modul kernel out-of-tree. Tetapi penulis proyek Jason Donenfeld mengatakan waktunya telah tiba untuk implementasi penuh di kernel Linux. Karena lebih sederhana dan lebih dapat diandalkan daripada solusi lain. Jason didukung dalam hal ini bahkan oleh Linus Torvalds sendiri - ia menyebut kode WireGuard "sebuah karya seni".

Tetapi tidak ada yang berbicara tentang tanggal yang tepat untuk memperkenalkan WireGuard ke dalam kernel. Dan ini tidak mungkin terjadi dengan rilis kernel Linux 4.18 Agustus. Namun, kemungkinan ini akan terjadi dalam waktu dekat: dalam versi 4.19 atau 5.0.

Ketika WireGuard ditambahkan ke kernel, pengembang ingin memperbaiki aplikasi untuk perangkat Android dan mulai menulis aplikasi untuk iOS. Selain itu, direncanakan untuk menyelesaikan implementasi di Go and Rust dan port mereka ke macOS, Windows dan BSD. Juga direncanakan untuk mengimplementasikan WireGuard untuk lebih banyak "sistem eksotis": DPDK , FPGA , serta banyak hal menarik lainnya. Semuanya tercantum dalam daftar yang harus dilakukan penulis proyek.



NB Beberapa artikel lagi dari blog perusahaan kami:




Arah utama aktivitas kami adalah penyediaan layanan cloud:

Infrastruktur Virtual (IaaS) | Hosting PCI DSS | Cloud FZ-152 | SAP hosting | Penyimpanan Virtual | Enkripsi Data di Awan | Penyimpanan cloud

Source: https://habr.com/ru/post/id419769/


All Articles