WireGuard zal naar de Linux-kernel "komen" - waarom?
Eind juli hebben de ontwikkelaars van de WireGuard VPN-tunnel voorgesteld patch ingesteld, waardoor hun VPN-tunnelingsoftware onderdeel wordt van de Linux-kernel. De exacte datum van implementatie van het ‘idee’ blijft echter onbekend. Onder de snit zullen we meer in detail over deze tool praten.
WireGuard is een VPN-tunnel van de volgende generatie, gemaakt door Jason A. Donenfeld, CEO van Edge Security. Het project is ontwikkeld als vereenvoudigd en een snel alternatief voor OpenVPN en IPsec. De eerste versie van het product bevatte slechts vierduizend regels code. Ter vergelijking: OpenVPN heeft ongeveer 4 duizend lijnen en IPSec - 120 duizend.
Op volgens ontwikkelaars is WireGuard eenvoudig te configureren en wordt protocolbeveiliging bereikt via beproefde cryptografische algoritmen. Bij het veranderen van netwerk: Wi-Fi, LTE of Ethernet moeten elke keer opnieuw verbinding maken met de VPN-server. WireGuard-servers verbreken de verbinding niet, zelfs niet als de gebruiker een nieuw IP-adres heeft ontvangen.
Ondanks het feit dat WireGuard oorspronkelijk is ontworpen voor de Linux-kernel, hebben de ontwikkelaars er is voor gezorgd en over een draagbare versie van de tool voor Android-apparaten. De applicatie is nog niet volledig ontwikkeld, maar je kunt hem nu uitproberen. Hiervoor heb je nodig word een van de testers.
В officiële documentatie (p. 18) wordt opgemerkt dat de doorvoersnelheid van WireGuard vier keer hoger is dan die van OpenVPN: respectievelijk 1011 Mbit/s versus 258 Mbit/s. WireGuard loopt ook voor op de standaardoplossing voor Linux IPsec: het heeft 881 Mbit/s. Het overtreft het ook qua installatiegemak.
Nadat de sleutels zijn uitgewisseld (de VPN-verbinding wordt net als SSH geïnitialiseerd) en de verbinding tot stand is gebracht, handelt WireGuard alle andere taken zelfstandig af: u hoeft zich geen zorgen te maken over routering, statuscontrole, enz. Extra configuratie-inspanningen zijn alleen nodig vereist als u symmetrische encryptie wilt gebruiken.
Zoals de redactie van xakep.ru opmerkt, is het zelf samenstellen van bronteksten ook eenvoudig. Het volstaat om de interface te openen en publieke en private sleutels te genereren:
$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey
WireGuard gebruikt niet interface voor het werken met een cryptoprovider crypto-API. In plaats daarvan wordt een stroomcodering gebruikt ChaCha20, cryptografisch imitatie inzetstuk Poly1305 en eigen cryptografische hashfuncties.
In dit geval gebruikt WireGuard de ioctl-functie om I/O te besturen (eerder gebruikt netlink), wat de code schoner en eenvoudiger maakt. Je kunt dit verifiëren door te kijken configuratiecode.
Ontwikkelaars plannen
Voorlopig is WireGuard een kernelmodule die niet meer in de boom zit. Maar de auteur van het project is Jason Donenfeld говорит, dat het tijd is voor volledige implementatie in de Linux-kernel. Omdat het eenvoudiger en betrouwbaarder is dan andere oplossingen. Jason in dit opzicht ondersteunt de zelfs Linus Torvalds zelf noemde de WireGuard-code een ‘kunstwerk’.
Maar niemand heeft het over de exacte data voor de introductie van WireGuard in de kernel. EN nauwelijks dit zal gebeuren met de release van de Linux-kernel 4.18 in augustus. Er bestaat echter een mogelijkheid dat dit in de zeer nabije toekomst zal gebeuren: in versie 4.19 of 5.0.
Wanneer WireGuard aan de kernel wordt toegevoegd, kunnen ontwikkelaars wil voltooi de applicatie voor Android-apparaten en begin met het schrijven van een applicatie voor iOS. Er zijn ook plannen om implementaties in Go en Rust te voltooien en deze over te zetten naar macOS, Windows en BSD. Het is ook de bedoeling om WireGuard te implementeren voor meer “exotische systemen”: DPDK, FPGA, evenals vele andere interessante dingen. Ze staan allemaal vermeld in te doen lijst auteurs van het project.