Jason A. Donenfeld, Autor von VPN WireGuard, o in den Hauptbestandteil des OpenBSD-Kerneltreibers âwgâ fĂŒr das WireGuard-Protokoll, einer spezifischen Netzwerkschnittstelle und Werkzeugen, die im Benutzermodus arbeiten. OpenBSD ist das zweite Betriebssystem nach mit vollstĂ€ndiger und integrierter UnterstĂŒtzung fĂŒr WireGuard. Die Einbindung von WireGuard wird fĂŒr die OpenBSD-Version 6.8 erwartet.
Die Patches umfassen den Treiber fĂŒr den OpenBSD-Kernel, Ănderungen an den Tools ifconfig und tcpdump mit UnterstĂŒtzung fĂŒr die FunktionalitĂ€t von WireGuard, Dokumentation und kleine Ănderungen zur Integration von WireGuard in das restliche System. Der Treiber verwendet eine eigene Implementierung der Algorithmen , und , sowie die bereits im OpenBSD-Kernel vorhandene Implementierung von SipHash.
Die Implementierung ist mit allen offiziellen WireGuard-Clients fĂŒr Linux, Windows, macOS, *BSD, iOS und Android kompatibel. Leistungstests auf dem Laptop des Entwicklers (Lenovo x230) zeigten eine Durchsatzrate von 750 mbit/s. Zum Vergleich bietet isakmpd mit den Standardkonfigurationen von ike psk einen Durchsatz von 380 mbit/s.
Bei der Entwicklung des Treibers fĂŒr den OpenBSD-Kernel wurden einige architektonische Entscheidungen getroffen, die mit dem Treiber fĂŒr Linux vergleichbar sind, aber der Treiber wurde in erster Linie fĂŒr OpenBSD entwickelt, unter BerĂŒcksichtigung der Besonderheiten dieses Systems und unter BerĂŒcksichtigung der Erfahrungen, die bei der Erstellung des Treibers fĂŒr Linux gesammelt wurden. Mit Zustimmung des ursprĂŒnglichen Autors von WireGuard wird der Code des neuen Treibers vollstĂ€ndig unter der freien ISC-Lizenz veröffentlicht.
Der Treiber ist eng in den Netzwerk-Stack von OpenBSD integriert und nutzt bestehende Subsysteme, was es ermöglicht hat, den Code sehr kompakt zu halten (etwa 3000 Zeilen Code). Zu den Unterschieden zĂ€hlt auch eine andere, als fĂŒr Linux, Trennung der Treiberkomponenten: spezifische fĂŒr OpenBSD Schnittstellen wurden in die Dateien âif_wg.*â verschoben, der Code zum Schutz vor DoS in âwg_cookie.*â, und die Logik zur Aushandlung von Verbindungen und VerschlĂŒsselung in âwg_noise.*â.
Quelle: opennet.ru
