VPN WireGuard wurde in den net-next-Branch aufgenommen und ist für die Aufnahme in den Linux-Kernel 5.6 vorgesehen.

David Miller (David S. Miller), verantwortlich für die Netzwerksubsysteme des Linux-Kernels, hat in den net-next-Branch Patches mit der Implementierung der VPN-Schnittstelle aus dem Projekt WireGuard. Anfang nächsten Jahres werden die im net-next-Branch gesammelten Änderungen die Grundlage für die Veröffentlichung des Linux-Kernels 5.6 bilden.

Versuche, den WireGuard-Code in den Hauptkern zu bringen, wurden in den letzten Jahren unternommen, blieben jedoch aufgrund der Bindung an eigene Implementierungen kryptografischer Funktionen ohne Ergebnis, die zur Leistungssteigerung verwendet wurden. Diese Funktionen wurden zunächst angeboten für den Kernel als zusätzliche Low-Level-API Zinc entwickelt, die im Laufe der Zeit das eingebaute Crypto-API ersetzen könnte.

Nach Gesprächen auf der Kernel Recipes-Konferenz trafen die Entwickler von WireGuard im September eine Kompromisslösung und beschlossen, ihre Patches so zu ändern, dass sie das bereits im Kernel vorhandene Crypto-API nutzen, gegen das die Entwickler von WireGuard Bedenken hinsichtlich der Leistung und der allgemeinen Sicherheit äußerten. Es wurde beschlossen, die API Zinc weiterzuentwickeln, jedoch als separates Projekt.

Im November gingen die Kernel-Entwickler auf einen Gegenvorschlag ein und stimmten zu, Teile des Codes von Zinc in den Hauptkern zu übertragen. Im Wesentlichen werden einige Komponenten von Zinc in den Kernel übertragen, jedoch nicht als separate API, sondern als Teil des Crypto-API. Beispielsweise sind im Crypto-API bereits die in WireGuard bereitgestellten schnellen Implementierungen der Algorithmen ChaCha20 und Poly1305. aufgenommen In Anbetracht der bevorstehenden Einbindung von WireGuard in den Hauptkern plant der Gründer des Projekts

eine Umstrukturierung des Repositories. Um die Entwicklung zu vereinfachen, wird das monolithische Repository "WireGuard.git", das für ein isoliertes Bestehen ausgelegt war, durch drei separate Repositories ersetzt, die besser für die Organisation der Arbeit mit dem Code im Hauptkern geeignet sind: gab bekannt wireguard-linux.git

Wir erinnern daran, dass das VPN WireGuard auf modernen Verschlüsselungsmethoden basiert, sehr hohe Leistung bietet, einfach zu bedienen ist, keine Komplikationen aufweist und sich in einer Reihe von großen Implementierungen, die große Datenmengen verarbeiten, bewährt hat. Das Projekt entwickelt sich seit 2015, hat eine Überprüfung bestanden und eine formale Verifikation der verwendeten Verschlüsselungsmethoden. Die Unterstützung von WireGuard ist bereits in NetworkManager und systemd integriert, und Patches für den Kernel sind Bestandteil der Basisdistributionen Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph und ALT.

Bei WireGuard wird das Konzept der Verschlüsselungsschlüssel-Routierung angewendet, das eine Bindung des privaten Schlüssels an jede Netzwerkschnittstelle und die Verwendung öffentlicher Schlüssel für die Verknüpfung vorsieht. Der Austausch öffentlicher Schlüssel zur Verbindung erfolgt analog zu SSH. Zur Aushandlung von Schlüsseln und Verbindungen ohne den Start eines separaten Daemons im Benutzerraum kommt der Noise_IK-Mechanismus aus Noise Protocol Framework, ähnlich wie die Pflege von authorized_keys in SSH. Die Datenübertragung erfolgt durch Kapselung in UDP-Pakete. Der Wechsel der IP-Adresse des VPN-Servers (Roaming) wird ohne Unterbrechung der Verbindung und mit automatischer Neukonfiguration des Clients unterstützt.

Für die Verschlüsselung wird verwendet der Stream-Cipher ChaCha20 und der Nachrichtenintegritätsalgorithmus (MAC) HMAC., entwickelt von Daniel Bernstein (Daniel J. Bernstein), Tanja Lange
(Tanja Lange) und Peter Schwabe (Peter Schwabe). ChaCha20 und Poly1305 werden als schnellere und sicherere Alternativen zu AES-256-CTR und HMAC positioniert, deren Softwareimplementierung eine konstante Ausführungszeit ohne den Einsatz spezieller hardwaremäßiger Unterstützung ermöglicht. Für die Erzeugung des gemeinsamen geheimen Schlüssels wird das Diffie-Hellman-Protokoll auf elliptischen Kurven in der Implementierung Curve25519, ebenfalls von Daniel Bernstein vorgeschlagen. Zum Hashing wird der Algorithmus BLAKE2s (RFC7693).

Bei verwendet. Die Leistung von WireGuard zeigte eine um das 3,9-Fache höhere Bandbreite und eine um das 3,8-Fache 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 Leistungsüberlegenheit (13-18%) und geringere Latenzen (21-23%). Die Tests wurden unter Verwendung der vom Projekt entwickelten schnellen Implementierungen der Verschlüsselungsalgorithmen durchgeführt – ein Wechsel zum Standard-Crypto-API des Kernels könnte zu einer Verschlechterung der Werte führen.

VPN WireGuard wurde in den net-next-Branch aufgenommen und ist für die Aufnahme in den Linux-Kernel 5.6 vorgesehen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4