Der Linux-Kernel enthielt WireGuard VPN

Heute ist Linus in eine Net-Next-Filiale mit WireGuard VPN-Schnittstellen umgezogen . Dieses Ereignis wurde auf der WireGuard-Mailingliste gemeldet .



Derzeit wird die Codeerfassung für den neuen Linux 5.6-Kernel fortgesetzt. WireGuard ist ein schnelles VPN der neuen Generation mit moderner Kryptografie. Es wurde ursprünglich als einfachere und bequemere Alternative zu vorhandenen VPNs entwickelt. Der Autor ist der kanadische Informationssicherheitsspezialist Jason A. Donenfeld. Im August 2018 wurde WireGuard von Linus Torvalds gelobt . Etwa zu der Zeit begannen die Arbeiten zur Einbindung eines VPN in den Linux-Kernel. Der Prozess war etwas verzögert.

"Ich sehe, dass Jason einen Pool-Antrag gestellt hat, um WireGuard in den Core aufzunehmen", schrieb Linus am 2. August 2018. - Kann ich nur noch einmal meine Liebe zu diesem VPN erklären 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 dies ein echtes Kunstwerk. “

Trotz der Wünsche von Linus zog sich die Fusion eineinhalb Jahre hin. Das Hauptproblem stellte sich heraus, dass sie selbst kryptografische Funktionen implementierten, die zur Steigerung der Produktivität eingesetzt wurden. Nach langwierigen Verhandlungen im September 2019 wurde ein Kompromiss geschlossen, um die Patches auf die Kernfunktionen der Crypto-API zu übertragen, bei denen WireGuard-Entwickler Beschwerden über die Leistung und die allgemeine Sicherheit haben. Sie beschlossen jedoch, die nativen WireGuard-Kryptofunktionen in eine separate Zink-API auf niedriger Ebene zu integrieren und sie schließlich auf den Kernel zu portieren. Im November hielten die Kernentwickler ihr Versprechen und einigten sich darauf , einen Teil des Codes von Zink auf den Hauptkern zu übertragen. Zum Beispiel enthält die Crypto-API WireGuard-vorbereitete schnelle Implementierungen der ChaCha20- und Poly1305-Algorithmen.

Am 9. Dezember 2019 akzeptierte David S. Miller, verantwortlich für das Linux-Kernel-Netzwerk-Subsystem, Patches mit der Implementierung der VPN-Schnittstelle vom WireGuard-Projekt in den net-next-Zweig.

Und heute, am 29. Januar 2020, gingen die Änderungen an Linus, um in den Kernel aufgenommen zu werden.



Die erklärten Vorteile von WireGuard gegenüber anderen VPN-Lösungen:

  • Einfach zu bedienen
  • Verwendet moderne Kryptografie: Noise Protocol Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF usw.
  • Kompakter lesbarer Code, der leichter auf Schwachstellen untersucht werden kann.
  • Hohe leistung.
  • Klare und detaillierte Spezifikation .

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

„WireGuard verwendet das Konzept des Weiterleitens von Verschlüsselungsschlüsseln, bei dem ein privater Schlüssel an jede Netzwerkschnittstelle gebunden und zum Binden öffentlicher Schlüssel verwendet wird. Der Austausch öffentlicher Schlüssel zum Verbindungsaufbau erfolgt analog zu SSH. Um Schlüssel auszuhandeln und eine Verbindung herzustellen, ohne einen separaten Dämon im Benutzerbereich zu starten, wird der Noise_IK-Mechanismus aus dem Noise Protocol Framework verwendet , ähnlich wie bei der Verwaltung von authorized_keys in SSH. Daten werden durch Kapselung in UDP-Paketen übertragen. Es unterstützt das Ändern der IP-Adresse des VPN-Servers (Roaming) ohne Unterbrechung der Verbindung mit automatischer Rekonfiguration des Clients, schreibt Opennet.

Für die Verschlüsselung werden die ChaCha20- Stream-Verschlüsselung und der von Daniel J. Bernstein , Tanja Lange und Peter Schwabe entwickelte Nachrichtenauthentifizierungsalgorithmus (MAC) Poly1305 verwendet. ChaCha20 und Poly1305 sind die schnelleren und sichereren Analoga von AES-256-CTR und HMAC, deren Software-Implementierung es ermöglicht, eine feste Laufzeit ohne spezielle Hardware-Unterstützung zu erreichen. Um einen gemeinsamen geheimen Schlüssel zu generieren, wird das Diffie-Hellman-Protokoll für elliptische Kurven in der Implementierung von Curve25519 verwendet , das auch von Daniel Bernstein vorgeschlagen wurde. Für das Hashing wird der BLAKE2- Algorithmus (RFC7693) verwendet . “

Leistungstestergebnisse von der offiziellen Website:

Bandbreite (Megabit / s)


Ping (ms)


Testkonfiguration:


  • Intel Core i7-3820QM und Intel Core i7-5200U
  • Gigabit Intel 82579LM und Intel I218LM Karten
  • Linux 4.6.1
  • WireGuard-Konfiguration: 256-Bit-ChaCha20 mit Poly1305 für MAC
  • IPsec-Erstkonfiguration: 256-Bit-ChaCha20 mit Poly1305 für MAC
  • Zweite IPsec-Konfiguration: AES-256-GCM-128 (mit AES-NI)
  • OpenVPN-Konfiguration: Äquivalentes 256-Bit-AES-Verschlüsselungsset mit HMAC-SHA2-256, UDP-Modus
  • Die Leistung wurde mit iperf3 gemessen und zeigte ein durchschnittliches Ergebnis in 30 Minuten.

Theoretisch sollte WireGuard nach der Integration in den Netzwerkstack noch schneller arbeiten. In der Realität ist dies jedoch nicht unbedingt der Fall, da auf die im Kern der Crypto-API integrierten kryptografischen Funktionen übergegangen wird. Vielleicht sind noch nicht alle auf das Leistungsniveau des nativen WireGuard optimiert.

„Meiner Meinung nach ist WireGuard im Allgemeinen ideal für den Benutzer. 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 verwechseln, - sie haben 2018 über Habré geschrieben. - Der Installationsprozess ist auf der offiziellen Website ausführlich beschrieben , ich möchte die hervorragende Unterstützung für OpenWRT erwähnen . Eine solche Benutzerfreundlichkeit und Kompaktheit der Codebasis wurde aufgrund der Ablehnung der Verteilung von Schlüsseln erreicht. Es gibt kein kompliziertes Zertifikatsystem und all diesen Unternehmensschrecken, kurze Verschlüsselungsschlüssel werden ungefähr wie SSH-Schlüssel verteilt. “

Das WireGuard-Projekt wird seit 2015 entwickelt und hat eine Prüfung und formelle Verifizierung bestanden . Die WireGuard-Unterstützung ist in NetworkManager und systemd integriert, und Kernel-Patches sind Teil der Basisdistributionen von Debian Unstable, Mageia, Alpine, Arch, Gentoo, OpenWrt, NixOS, Subgraph und ALT.

Source: https://habr.com/ru/post/de486046/


All Articles