VPN WireGuard im Linux-Kernel 5.6 enthalten

Heute hat Linus die Net-Next-Filiale mit VPN-Schnittstellen zu sich verlegt WireGuard. Über diese Veranstaltung сообщили auf der WireGuard-Mailingliste.

VPN WireGuard im Linux-Kernel 5.6 enthalten

Derzeit wird die Codesammlung für den neuen Linux 5.6-Kernel fortgesetzt. WireGuard ist ein schnelles VPN der nächsten Generation, das moderne Kryptografie implementiert. Es wurde ursprünglich als einfachere und bequemere Alternative zu bestehenden VPNs entwickelt. Der Autor ist der kanadische Informationssicherheitsspezialist Jason A. Donenfeld. Im August 2018 wurde WireGuard wurde gelobt von Linus Torvalds. Ungefähr zu dieser Zeit begann man damit, VPN in den Linux-Kernel zu integrieren. Der Vorgang dauerte etwas länger.

„Ich sehe, dass Jason eine Pull-Anfrage gestellt hat, um WireGuard in den Kernel aufzunehmen“, schrieb Linus am 2. August 2018. — Kann ich noch einmal meine Liebe zu diesem VPN bekunden und auf eine baldige Fusion hoffen? Der Code ist vielleicht nicht perfekt, aber ich habe ihn mir angesehen und im Vergleich zu den Schrecken von OpenVPN und IPSec ist er ein echtes Kunstwerk.“

Entgegen Linus‘ Wunsch zog sich die Fusion eineinhalb Jahre hin. Es stellte sich heraus, dass das Hauptproblem mit proprietären Implementierungen kryptografischer Funktionen zusammenhing, die zur Leistungsverbesserung eingesetzt wurden. Nach langen Verhandlungen im September 2019 war es soweit Es wurde eine Kompromissentscheidung getroffen Übersetzen Sie Patches auf die im Kernel verfügbaren Crypto API-Funktionen, worüber die WireGuard-Entwickler Beschwerden im Bereich der Leistung und der allgemeinen Sicherheit haben. Sie entschieden sich jedoch dafür, die nativen WireGuard-Kryptofunktionen in eine separate Low-Level-Zink-API zu unterteilen und sie schließlich auf den Kernel zu portieren. Im November haben die Kernel-Entwickler ihr Versprechen gehalten und einverstanden Übertragen Sie einen Teil des Codes von Zinc an den Hauptkernel. Zum Beispiel in der Crypto API enthalten schnelle Implementierungen der in WireGuard vorbereiteten ChaCha20- und Poly1305-Algorithmen.

Am 9. Dezember 2019 schließlich erklärte David S. Miller, verantwortlich für das Netzwerksubsystem des Linux-Kernels, akzeptiert die zum Net-Next-Zweig Flecken mit der Implementierung einer VPN-Schnittstelle aus dem WireGuard-Projekt.

Und heute, am 29. Januar 2020, gingen die Änderungen zur Aufnahme in den Kernel an Linus.

VPN WireGuard im Linux-Kernel 5.6 enthalten

Angebliche Vorteile von WireGuard gegenüber anderen VPN-Lösungen:

  • Einfach zu verwenden.
  • Verwendet moderne Kryptographie: Noise-Protokoll-Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF usw.
  • Kompakter, lesbarer Code, einfacher auf Schwachstellen zu untersuchen.
  • Hohe Leistung.
  • Klar und ausführlich Spezifikation.

Die gesamte Kernlogik von WireGuard benötigt weniger als 4000 Zeilen Code, während OpenVPN und IPSec Hunderttausende Zeilen erfordern.

„WireGuard nutzt das Konzept des Verschlüsselungsschlüssel-Routings, bei dem ein privater Schlüssel an jede Netzwerkschnittstelle angehängt und mit öffentlichen Schlüsseln gebunden wird. Der Austausch öffentlicher Schlüssel zum Verbindungsaufbau erfolgt ähnlich wie bei SSH. Um Schlüssel auszuhandeln und eine Verbindung herzustellen, ohne einen separaten Daemon im Benutzerbereich auszuführen, wird der Noise_IK-Mechanismus von verwendet Noise Protocol FrameworkÄhnlich wie bei der Verwaltung autorisierter_Schlüssel in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Paketen. Es unterstützt die Änderung der IP-Adresse des VPN-Servers (Roaming), ohne die Verbindung zu trennen, mit automatischer Neukonfiguration des Clients, - schreibt Opennet.

Zur Verschlüsselung benutzt Stream Chiffre ChaCha20 und Nachrichtenauthentifizierungsalgorithmus (MAC) Poly1305, entworfen von Daniel Bernstein (Daniel J. Bernstein), Tanja Lange und Peter Schwabe. ChaCha20 und Poly1305 gelten als schnellere und sicherere Analoga von AES-256-CTR und HMAC, deren Softwareimplementierung das Erreichen einer festen Ausführungszeit ohne den Einsatz spezieller Hardwareunterstützung ermöglicht. Um einen gemeinsamen geheimen Schlüssel zu generieren, wird in der Implementierung das Elliptic-Curve-Diffie-Hellman-Protokoll verwendet Curve25519, ebenfalls vorgeschlagen von Daniel Bernstein. Der für das Hashing verwendete Algorithmus ist BLAKE2s (RFC7693)".

Ergebnisse Leistungstests von der offiziellen Website:

Bandbreite (Megabit/s)
VPN WireGuard im Linux-Kernel 5.6 enthalten

Ping (ms)
VPN WireGuard im Linux-Kernel 5.6 enthalten

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: AES 256-Bit-äquivalente Verschlüsselungssuite mit HMAC-SHA2-256, UDP-Modus
  • Die Leistung wurde mit gemessen iperf3, zeigt das durchschnittliche Ergebnis über 30 Minuten.

Theoretisch sollte WireGuard, einmal in den Netzwerk-Stack integriert, noch schneller arbeiten. In der Realität wird dies jedoch aufgrund der Umstellung auf die im Kernel integrierten kryptografischen Funktionen der Crypto API nicht unbedingt der Fall sein. Möglicherweise sind noch nicht alle auf das Leistungsniveau des nativen WireGuard optimiert.

„Aus meiner Sicht ist WireGuard grundsätzlich ideal für den Anwender. Alle Entscheidungen auf niedriger Ebene werden in der Spezifikation getroffen, sodass die Vorbereitung einer typischen VPN-Infrastruktur nur wenige Minuten dauert. Es ist fast unmöglich, die Konfiguration zu vermasseln – schrieb auf Habré im Jahr 2018. - Installationsprozess ausführlich beschrieben Auf der offiziellen Website möchte ich das Hervorragende gesondert erwähnen OpenWRT-Unterstützung. Diese Benutzerfreundlichkeit und Kompaktheit der Codebasis wurde durch den Wegfall der Schlüsselverteilung erreicht. Es gibt kein komplexes Zertifikatsystem und all diesen Unternehmenshorror; kurze Verschlüsselungsschlüssel werden ähnlich wie SSH-Schlüssel verteilt.“

Das WireGuard-Projekt entwickelt sich seit 2015, es wurde geprüft und formelle Überprüfung. Die WireGuard-Unterstützung ist in NetworkManager und systemd integriert und Kernel-Patches sind in den Basisdistributionen von Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph und ALT enthalten.

Source: habr.com

Kommentar hinzufügen