Jason A. Donenfeld, de auteur van VPN WireGuard, groter publiek. in de hoofdcomponent van de OpenBSD-kerneldriver "wg" voor het WireGuard-protocol, specifieke netwerkinterface en tools die in de gebruikersruimte werken. OpenBSD is het tweede besturingssysteem na met volledige en geïntegreerde ondersteuning voor WireGuard. De opname van WireGuard wordt verwacht in de release van OpenBSD 6.8.
De patches omvatten een driver voor de OpenBSD-kernel, wijzigingen voor de utilities ifconfig en tcpdump met ondersteuning voor WireGuard-functionaliteit, documentatie en kleine wijzigingen voor de integratie van WireGuard met de rest van het systeem. In de driver wordt een eigen implementatie van de algoritmes , en , evenals de reeds in de OpenBSD-kernel aanwezige implementatie van SipHash, gebruikt.
De implementatie is compatibel met alle officiële WireGuard-clients voor Linux, Windows, macOS, *BSD, iOS en Android. Prestatietests op de laptop van de ontwikkelaar (Lenovo x230) toonden een doorvoersnelheid van 750 mbit/s aan. Ter vergelijking biedt isakmpd met standaardinstellingen van ike psk een doorvoersnelheid van 380 mbit/s.
Bij het ontwikkelen van de driver voor de OpenBSD-kernel zijn enkele architectonische oplossingen gekozen die vergelijkbaar zijn met die van de driver voor Linux, maar de driver is in de eerste plaats ontwikkeld voor OpenBSD, rekening houdend met de specifieke kenmerken van dit systeem en de ervaring die is opgedaan bij het maken van de driver voor Linux. Met toestemming van de oorspronkelijke auteur van WireGuard wordt de code van de nieuwe driver volledig verspreid onder de vrije ISC-licentie.
De driver integreert nauw met de netwerkstack van OpenBSD en maakt gebruik van bestaande subsysteem, waardoor de code zeer compact is (ongeveer 3000 regels code). Een van de verschillen is ook de andere, dan voor Linux, verdeling van de componenten van de driver: specifieke OpenBSD-interfacen zijn ondergebracht in de bestanden "if_wg.*", code ter bescherming tegen DoS in "wg_cookie.*", en de logica voor het tot stand brengen van verbindingen en versleuteling in "wg_noise.*".
Bron: opennet.ru
