Heute hat Linus den net-next Branch mit VPN-Schnittstellen übernommen. . Über dieses Ereignis in der WireGuard-Mailingliste.

Momentan wird der Code für den neuen Linux-Kernel 5.6 gesammelt. WireGuard ist ein schneller VPN der neuen Generation, der moderne Kryptographie implementiert. Es wurde ursprünglich als einfachere und benutzerfreundlichere Alternative zu bestehenden VPNs entwickelt. Der Autor ist der kanadische IT-Sicherheitsspezialist Jason Donenfeld. Im August 2018 wurde WireGuard Ungefähr zu dieser Zeit begann die Arbeit am integrierten VPN im Linux-Kernel. Der Prozess zog sich etwas.
„Ich sehe, dass Jason einen Pull-Request zur Integration von WireGuard in den Kernel gemacht hat“, schrieb Linus am 2. August 2018. „Darf ich einfach nochmals meine Liebe zu diesem VPN äußern und auf eine baldige Fusion hoffen? Der Code ist vielleicht nicht perfekt, aber ich habe ihn durchgesehen und im Vergleich zu den Schrecken von OpenVPN und IPSec ist das ein wahres Kunstwerk.“
Trotz Linus' Wunsch zog sich die Fusion über eineinhalb Jahre hin. Das Hauptproblem lag in der Bindung an die eigenen Implementierungen von Krypto-Funktionen, die zur Leistungssteigerung verwendet wurden. Nach langen Verhandlungen wurde im September 2019 eine um die Patches auf die im Kernel vorhandenen Crypto API-Funktionen zu übertragen, gegen die die WireGuard-Entwickler Bedenken hinsichtlich der Leistung und der allgemeinen Sicherheit hatten. Es wurde jedoch beschlossen, die nativen Krypto-Funktionen von WireGuard in eine separate niedrigstufige Zinc API auszulagern und sie im Laufe der Zeit in den Kernel zu portieren. Im November hielten die Kernel-Entwickler ihr Versprechen und einen Teil des Codes von Zinc in den Hauptkernel zu übertragen. Beispielsweise die in WireGuard vorbereiteten schnellen Implementierungen der Algorithmen ChaCha20 und Poly1305 in Crypto API. Schließlich am 9. Dezember 2019 übernahm David Miller, verantwortlich für das Netzwerk-Subsystem des Linux-Kernels,
mit der Implementierung der VPN-Schnittstelle des WireGuard-Projekts. in den net-next-Branch Und heute, am 29. Januar 2020, wurden die Änderungen an Linus zur Integration in den Kernel gesendet.
Die angegebenen Vorteile von WireGuard gegenüber anderen VPN-Lösungen:

Einfach zu bedienen.
- Verwendet moderne Kryptographie: Noise-Protokoll-Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF etc.
- Kompetter, lesbarer Code, leichter auf Sicherheitsanfälligkeiten zu untersuchen.
- Eine klare und durchdachte
- Hohe Leistung.
- Spezifikation. .
Die gesamte Hauptlogik von WireGuard umfasst weniger als 4000 Codezeilen, während OpenVPN und IPSec Hunderte von Tausenden Zeilen benötigen.
In WireGuard wird das Konzept der Schlüssel-basierten Routing angewendet, welches vorschreibt, jeden Netzwerk-Interface mit einem privaten Schlüssel zu verknüpfen und zur Verknüpfung der öffentlichen Schlüssel zu nutzen. Der Austausch von öffentlichen Schlüsseln zur Verbindungsherstellung erfolgt analog zu SSH. Zur Aushandlung von Schlüsseln und Verbindungen ohne den Start eines separaten Daemons im User-Space wird der Noise_IK-Mechanismus aus , ähnlich wie bei der Verwaltung von authorized_keys in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Pakete. Es wird ein Wechsel der IP-Adresse des VPN-Servers (Roaming) unterstützt, ohne die Verbindung zu trennen, mit automatischer Neuauslegung des Clients, — Opennet.
Für die Verschlüsselung der Stream-Cipher und der Nachrichtenintegritätsalgorithmus (MAC) , entwickelt von Daniel Bernstein (), Tanja Lange und Peter Schwabe. ChaCha20 und Poly1305 werden als schnellere und sicherere Alternativen zu AES-256-CTR und HMAC positioniert, deren softwarebasierte Implementierung eine feste Ausführungszeit ohne die Verwendung spezieller Hardwareunterstützung ermöglicht. Zur Generierung des gemeinsamen geheimen Schlüssels wird das Diffie-Hellman-Protokoll über elliptische Kurven in der Implementierung , ebenfalls vorgeschlagen von Daniel Bernstein. Zum Hashing wird der Algorithmus ».
Ergebnisse von der offiziellen Webseite:
Durchsatz (Megabit/s)

Ping (ms)

Testkonfiguration:
- Intel Core i7-3820QM und Intel Core i7-5200U
- Gigabit-Karten Intel 82579LM und Intel I218LM
- Linux 4.6.1
- WireGuard-Konfiguration: 256-Bit ChaCha20 mit Poly1305 für MAC
- Erste IPSec-Konfiguration: 256-Bit ChaCha20 mit Poly1305 für MAC
- Zweite IPSec-Konfiguration: AES-256-GCM-128 (mit AES-NI)
- OpenVPN-Konfiguration: entsprechender 256-Bit-AES-Verschlüsselungssatz mit HMAC-SHA2-256, UDP-Modus
- Die Leistung wurde mit Hilfe von
iperf3, der durchschnittliche Wert wurde über 30 Minuten ermittelt.
Theoretisch sollte WireGuard nach der Integration in den Netzwerk-Stack noch schneller arbeiten. In der Realität könnte dies jedoch nicht der Fall sein, da es zu einem Übergang zu den im Kernel integrierten kryptographischen Funktionen Crypto API kommt. Möglicherweise sind noch nicht alle von ihnen auf das Leistungsniveau von nativem WireGuard optimiert.
Aus meiner Sicht ist WireGuard für den Nutzer absolut ideal. Alle Low-Level-Lösungen sind in der Spezifikation festgelegt, daher dauert der Prozess zur Vorbereitung einer typischen VPN-Infrastruktur nur wenige Minuten. Es ist praktisch unmöglich, bei der Konfiguration Fehler zu machen, — auf Habré im Jahr 2018. — Der Installationsprozess auf der offiziellen Website, hier möchte ich besonders die hervorragende . Solche Benutzerfreundlichkeit und die kompakte Codebasis konnten durch den Verzicht auf die Verteilung von Schlüsseln erreicht werden. Es gibt kein komplexes Zertifikatsystem und diesen ganzen Unternehmensschreck, die kurzen Verschlüsselungsschlüssel werden ähnlich wie SSH-Schlüssel verteilt.
Das WireGuard-Projekt entwickelt sich seit 2015, es hat eine Prüfung bestanden und . Die Unterstützung von WireGuard ist in NetworkManager und systemd integriert, und die Patches für den Kernel sind Bestandteil der Basisdistributionen Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph und ALT.
Quelle: habr.com
