VPN WireGuard wurde in den Net-Next-Zweig aufgenommen und soll in den Linux 5.6-Kernel integriert werden

David Miller (David S. Miller), verantwortlich für das Netzwerksubsystem des Linux-Kernels, akzeptiert die zum Net-Next-Zweig Flecken mit der Implementierung der VPN-Schnittstelle aus dem Projekt WireGuard. Anfang nächsten Jahres werden die im Net-Next-Zweig gesammelten Änderungen die Grundlage für die Veröffentlichung des Linux-Kernels 5.6 bilden.

In den letzten Jahren gab es Versuche, den WireGuard-Code in den Hauptkernel zu pushen, blieben jedoch erfolglos, da sie an proprietäre Implementierungen kryptografischer Funktionen gebunden waren, die zur Leistungsverbesserung eingesetzt wurden. Ursprünglich waren diese Funktionen vorgeschlagen für den Kernel als zusätzliche Low-Level-Zink-API, die schließlich die Standard-Crypto-API ersetzen könnte.

Nach Diskussionen auf der Kernel Recipes-Konferenz haben die Macher von WireGuard im September eine Kompromissentscheidung getroffen Übertragen Sie Ihre Patches, um die im Kern verfügbare Crypto API zu verwenden, worüber die WireGuard-Entwickler Beschwerden im Bereich der Leistung und der allgemeinen Sicherheit haben. Es wurde beschlossen, die Zink-API weiterzuentwickeln, jedoch als separates Projekt.

Im November Kernel-Entwickler lass uns gehen als Reaktion auf einen Kompromiss und stimmte zu, einen Teil des Codes von Zinc auf den Hauptkernel zu übertragen. Im Wesentlichen werden einige Zinc-Komponenten in den Kern verschoben, jedoch nicht als separate API, sondern als Teil des Crypto API-Subsystems. Zum Beispiel die Crypto API bereits enthalten schnelle Implementierungen der in WireGuard vorbereiteten ChaCha20- und Poly1305-Algorithmen.

Im Zusammenhang mit der bevorstehenden Lieferung von WireGuard im Hauptkern sagte der Gründer des Projekts объявил über die Umstrukturierung des Endlagers. Um die Entwicklung zu vereinfachen, wird das monolithische „WireGuard.git“-Repository, das isoliert existieren sollte, durch drei separate Repositorys ersetzt, die sich besser für die Organisation der Arbeit mit Code im Hauptkernel eignen:

  • Wireguard-linux.git - ein vollständiger Kernelbaum mit Änderungen aus dem Wireguard-Projekt, dessen Patches auf Aufnahme in den Kernel überprüft und regelmäßig in die Net/Net-Next-Zweige übertragen werden.
  • Wireguard-Tools.git – ein Repository für Dienstprogramme und Skripte, die im Benutzerbereich ausgeführt werden, wie z. B. wg und wg-quick. Das Repository kann zum Erstellen von Paketen für Distributionen verwendet werden.
  • wireguard-linux-compatible.git – ein Repository mit einer Variante des Moduls, das separat vom Kernel bereitgestellt wird und die compat.h-Schicht enthält, um die Kompatibilität mit älteren Kerneln sicherzustellen. Die Hauptentwicklung wird im Repository „wireguard-linux.git“ durchgeführt, aber solange die Möglichkeit und der Bedarf bei den Benutzern besteht, wird auch eine separate Version der Patches in funktionsfähiger Form unterstützt.

Wir möchten Sie daran erinnern, dass VPN WireGuard auf Basis moderner Verschlüsselungsmethoden implementiert ist, eine sehr hohe Leistung bietet, einfach zu bedienen und komplikationslos ist und sich in einer Reihe großer Einsätze mit großen Datenverkehrsmengen bewährt hat. Das Projekt befindet sich seit 2015 in der Entwicklung, wurde geprüft und formelle Überprüfung verwendete Verschlüsselungsmethoden. Die WireGuard-Unterstützung ist bereits in NetworkManager und systemd integriert und Kernel-Patches sind in den Basisdistributionen enthalten Debian instabil, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Untergraph и ALT.

WireGuard nutzt das Konzept des Verschlüsselungsschlüssel-Routings, bei dem an jede Netzwerkschnittstelle ein privater Schlüssel angehängt und dieser zum Binden der öffentlichen Schlüssel verwendet 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 Pflege autorisierter_Schlüssel in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Paketen. Es unterstützt das Ändern der IP-Adresse des VPN-Servers (Roaming), ohne die Verbindung zu trennen und den Client automatisch neu zu konfigurieren.

Zur Verschlüsselung benutzt Stream Chiffre ChaCha20 und Nachrichtenauthentifizierungsalgorithmus (MAC) Poly1305, entworfen von Daniel Bernstein (Daniel J. Bernstein), Tanya Lange
(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).

bei testen Leistung WireGuard zeigte einen 3.9-mal höheren Durchsatz und eine 3.8-mal höhere Reaktionsfähigkeit im Vergleich zu OpenVPN (256-Bit-AES mit HMAC-SHA2-256). Im Vergleich zu IPsec (256-Bit ChaCha20+Poly1305 und AES-256-GCM-128) zeigt WireGuard eine leichte Leistungsverbesserung (13–18 %) und eine geringere Latenz (21–23 %). Die Tests wurden mit schnellen Implementierungen der vom Projekt entwickelten Verschlüsselungsalgorithmen durchgeführt – die Übertragung auf die Standard-Crypto-API des Kernels kann zu einer schlechteren Leistung führen.

VPN WireGuard wurde in den Net-Next-Zweig aufgenommen und soll in den Linux 5.6-Kernel integriert werden

Source: opennet.ru

Kommentar hinzufügen