Warum sollten Sie WireGuard nicht verwenden?

In letzter Zeit zieht WireGuard tatsächlich viel Aufmerksamkeit auf sich - dies ist ein neuer "Star" unter den VPNs. Aber ist er so gut wie er scheint? Ich möchte einige Beobachtungen diskutieren und die Implementierung von WireGuard in Betracht ziehen, um zu erklären, warum es keine Lösung ist, die IPsec oder OpenVPN ersetzt.

In diesem Artikel möchte ich einige Mythen [um WireGuard] entlarven. Ja, das Lesen wird lange dauern. Wenn Sie also keine Tasse Tee oder Kaffee zubereitet haben, ist es Zeit, dies zu tun. Ich möchte auch Peter dafür danken, dass er meine chaotischen Gedanken Korrektur gelesen hat.

Ich habe mir nicht das Ziel gesetzt, WireGuard-Entwickler zu diskreditieren, ihre Bemühungen oder Ideen abzuwerten. Ihr Produkt funktioniert, aber ich persönlich denke, dass es völlig anders präsentiert wird als es wirklich ist - es wird als Ersatz für IPsec und OpenVPN präsentiert, die in Wirklichkeit jetzt einfach nicht existieren.

Als Anmerkung möchte ich hinzufügen, dass die Verantwortung für eine solche Positionierung von WireGuard bei den Medien liegt, die darüber gesprochen haben, und nicht beim Projekt selbst oder seinen Erstellern.

In letzter Zeit gab es nicht allzu viele gute Nachrichten zum Thema Linux-Kernel. So wurde uns über die ungeheuren Schwachstellen des Prozessors berichtet, die durch Software ausgeglichen wurden, und Linus Torvalds sprach darüber als zu unhöflich und langweilig, zweckmäßige Sprache des Entwicklers. Scheduler oder Network Stack Zero Level - auch nicht zu klare Themen für Hochglanzmagazine. Und dann erscheint WireGuard.

Auf dem Papier klingt alles gut: eine aufregende neue Technologie.

Aber schauen wir sie uns etwas genauer an.

Technische Dokumentation zu WireGuard


Dieser Artikel basiert auf der offiziellen WireGuard-Dokumentation von Jason Donenfeld. Dort erklärt er das Konzept, den Zweck und die technische Implementierung von [WireGuard] im Linux-Kernel.

Der erste Satz lautet:

WireGuard [...] IPsec , / TLS, OpenVPN, , [].

Der Hauptvorteil aller neuen Technologien ist natürlich ihre Einfachheit [im Vergleich zu ihren Vorgängern]. Ein VPN muss aber auch effizient und sicher sein .

Und was dann?

Wenn Sie sagen, dass Sie [vom VPN] dies nicht benötigen, können Sie das Lesen beenden. Ich werde jedoch feststellen, dass solche Aufgaben vor jeder anderen Tunnelbautechnologie gestellt werden.

Das interessanteste der obigen Zitate liegt in den Worten „in den meisten Fällen“, die natürlich von der Presse ignoriert wurden. Und hier sind wir, wo wir wegen des Chaos gelandet sind, das durch diese Nachlässigkeit entstanden ist - in diesem Artikel.



Wird WireGuard meine [IPsec] VPN-Verbindung zwischen Standorten ersetzen?


Nein. Es besteht einfach keine Chance, dass große Anbieter wie Cisco, Juniper und andere WireGuard für ihre Produkte kaufen. Sie „hüpfen“ unterwegs nicht an Zügen vorbei, es sei denn, es besteht ein großer Bedarf dafür. Später werde ich über einige Gründe sprechen, warum sie WireGuard-Produkte wahrscheinlich nicht an Bord installieren könnten, selbst wenn sie dies wollten.

Überträgt WireGuard meinen RoadWarrior von einem Laptop in ein Rechenzentrum?


Nein. WireGuard hat derzeit noch nicht viele wichtige Funktionen implementiert, damit es so etwas tun kann. Beispielsweise kann die dynamische IP-Adresse auf der Serverseite des Tunnels nicht verwendet werden, und dies allein bricht das gesamte Szenario einer ähnlichen Verwendung des Produkts.

IPFire wird häufig für kostengünstige Internetkanäle wie DSL oder Kabelverbindungen verwendet. Dies ist sinnvoll für kleine oder mittlere Unternehmen, die keine schnelle Faser benötigen.[Anmerkung des Übersetzers: Vergessen Sie nicht, dass Russland und einige GUS-Staaten in Bezug auf die Kommunikation Europa und den USA weit voraus sind, da wir viel später mit dem Aufbau unserer Netzwerke begonnen haben und mit dem Aufkommen von Ethernet- und Glasfasernetzen als Standard der Wiederaufbau für uns einfacher war. In denselben EU-Ländern oder den USA ist der xDSL-Breitbandzugang mit einer Geschwindigkeit von 3 bis 5 Mbit / s immer noch die universelle Norm, und Glasfaserverbindungen kosten nach unseren Maßstäben unrealistisches Geld. Daher spricht der Autor des Artikels eher von einer normalen DSL- oder Kabelverbindung als von der alten Vergangenheit.] DSL, Kabel, LTE (und andere drahtlose Zugriffsmethoden) haben jedoch dynamische IP-Adressen. Natürlich ändern sie sich manchmal nicht oft, aber immer noch.

Es gibt ein Teilprojekt namens "wg-dynamic"Der User Space Daemon fügt hinzu, um diesen Mangel zu beheben. Ein großes Problem bei dem oben beschriebenen Benutzerszenario ist die Verschärfung der Situation durch dynamische IPv6-Adressierung.

Aus Sicht des Distributors sieht das alles auch nicht sehr gut aus. Eines der Entwurfsziele war es, das Protokoll einfach und sauber zu halten.

Leider wurde all dies tatsächlich zu einfach und primitiv, so dass wir zusätzliche Software verwenden müssen, um dieses gesamte Design unter realen Bedingungen realisierbar zu machen.

Ist WireGuard so einfach zu bedienen?


Noch nicht. Ich sage nicht, dass WireGuard niemals eine gute Alternative für die Weiterleitung eines Tunnels zwischen zwei Punkten sein wird, aber bisher ist es nur eine Alpha-Version des Produkts, die es werden sollte.

Aber was macht er dann wirklich? Ist IPSec wirklich so viel schwieriger zu bedienen?

Offensichtlich nicht. Der IPSec-Anbieter hat diesen Punkt berücksichtigt und liefert sein Produkt zusammen mit einer Schnittstelle wie IPFire.

Um einen VPN-Tunnel über IPsec zu konfigurieren, benötigen Sie fünf Datensätze, die Sie in die Konfiguration eingeben müssen: Ihre eigene öffentliche IP-Adresse, die öffentliche IP-Adresse der empfangenden Seite, Subnetze, die Sie über diese VPN-Verbindung veröffentlichen und vorab freigeben möchten Schlüssel. Somit ist das VPN in wenigen Minuten konfiguriert und mit jedem Anbieter kompatibel.

Leider gibt es einige Ausnahmen zu dieser Geschichte. Jeder, der versucht hat, einen VPN-Tunnel über IPsec an einen Computer unter OpenBSD weiterzuleiten, versteht, wovon ich spreche. Es gibt ein paar schmerzhaftere Beispiele, aber in der Tat ist die gute Praxis der Verwendung von IPSec viel, viel mehr.

Über die Komplexität des Protokolls


Der Endbenutzer muss sich nicht um die Komplexität des Protokolls kümmern.

Wenn wir in einer Welt gelebt hätten, in der dies das eigentliche Anliegen des Benutzers war, hätten wir SIP, H.323, FTP und andere Protokolle, die vor mehr als zehn Jahren erstellt wurden und mit NAT nicht gut funktionieren, längst beseitigt.

Es gibt Gründe, warum IPsec komplizierter ist als WireGuard: Es macht viel mehr. Zum Beispiel Benutzerauthentifizierung mit einem Login / Passwort oder einer SIM-Karte mit EAP. Es verfügt über die erweiterte Möglichkeit, neue kryptografische Grundelemente hinzuzufügen .

WireGuard jedoch nicht.

Dies bedeutet, dass WireGuard irgendwann kaputt geht, weil eines der kryptografischen Grundelemente geschwächt oder vollständig kompromittiert wird. Der Autor der technischen Dokumentation sagt dies:

Es ist erwähnenswert, dass WireGuard kryptografisch selbstbewusst ist. Ihm fehlt absichtlich die Flexibilität von Chiffren und Protokollen. Wenn in den zugrunde liegenden Grundelementen schwerwiegende Lücken gefunden werden, müssen alle Endpunkte aktualisiert werden. Wie Sie dem laufenden Strom von SLL / TLS-Schwachstellen entnehmen können, hat die Flexibilität der Verschlüsselung jetzt enorm zugenommen.

Der letzte Satz ist absolut wahr.

Konsens , auf dem die Verschlüsselung Gebrauch macht Protokolle wie IKE und TLS mehr komplex. Zu kompliziert? Ja, Schwachstellen sind in TLS / SSL weit verbreitet, und es gibt keine Alternative dazu.

Über das Ignorieren realer Probleme


Stellen Sie sich vor, Sie haben irgendwo auf der Welt einen VPN-Server mit 200 Kampfclients. Dies ist ein sehr normaler Anwendungsfall. Wenn Sie die Verschlüsselung ändern müssen, müssen Sie das Update für alle Kopien von WireGuard auf diesen Laptops, Smartphones usw. bereitstellen. Zur gleichen Zeit liefern. Es ist buchstäblich unmöglich. Administratoren, die dies versuchen, benötigen Monate, um die erforderlichen Konfigurationen bereitzustellen, und mittelständische Unternehmen benötigen buchstäblich Jahre, um eine solche Veranstaltung auszurichten.

IPsec und OpenVPN bieten Verschlüsselungsverhandlungen. Daher funktioniert nach einiger Zeit, nach der Sie die neue Verschlüsselung aktivieren, die alte. Dank dessen können aktuelle Kunden auf die neue Version upgraden. Nach der Einführung des Updates deaktivieren Sie einfach die anfällige Verschlüsselung. Und alle! Erledigt! Du bist wunderschön! Und die Kunden werden es nicht einmal bemerken.

Dies ist tatsächlich ein sehr häufiger Fall bei großen Bereitstellungen, und selbst OpenVPN hat einige Schwierigkeiten. Abwärtskompatibilität ist wichtig, und obwohl Sie eine schwächere Verschlüsselung verwenden, führt dies für viele nicht zur Schließung des Geschäfts. Weil es zu einer Lähmung von Hunderten von Kunden führen wird, weil sie ihre Arbeit nicht erledigen können.

Das WireGuard-Team hat das Protokoll einfacher, aber für Personen, die nicht die ständige Kontrolle über beide Peers ihres Tunnels haben, völlig ungeeignet gemacht. Nach meiner Erfahrung ist dies das häufigste Szenario.



Kryptographie!


Aber was ist diese interessante neue Verschlüsselung, die WireGuard verwendet?

WireGuard verwendet Curve25519 für den Schlüsselaustausch, ChaCha20 für die Verschlüsselung und Poly1305 für die Datenauthentifizierung. Es funktioniert auch mit SipHash für Hash-Schlüssel und BLAKE2 für Hashing.

ChaCha20-Poly1305 ist standardisiert für IPsec und OpenVPN (über TLS).

Offensichtlich wird die Entwicklung von Daniel Bernstein sehr oft genutzt. BLAKE2 ist der Nachfolger von BLAKE, dem SHA-3-Finalisten, der aufgrund seiner Ähnlichkeit mit SHA-2 nicht gewonnen hat. Wenn SHA-2 gehackt würde, bestünde eine hohe Wahrscheinlichkeit, dass BLAKE kompromittiert würde.

IPsec und OpenVPN benötigen aufgrund ihres Designs kein SipHash. Das einzige, was im Moment nicht mit ihnen verwendet werden kann, ist BLAKE2, und zwar nur bis es standardisiert ist. Dies ist kein großer Nachteil, da VPNs HMAC verwenden, um Integrität zu schaffen, was selbst in Verbindung mit MD5 als starke Lösung angesehen wird.

Daher kam ich zu dem Schluss, dass alle VPNs fast die gleichen kryptografischen Tools verwenden. Daher ist WireGuard in Bezug auf Verschlüsselung oder Datenintegrität nicht mehr und nicht weniger sicher als alle anderen relevanten Produkte.

Aber auch dies ist nicht das Wichtigste, auf das Sie gemäß der offiziellen Dokumentation des Projekts achten sollten. Die Hauptsache ist schließlich die Geschwindigkeit.

Ist WireGuard schneller als andere VPN-Lösungen?


Kurzum: Nein, nicht schneller.

ChaCha20 ist eine Stream-Verschlüsselung, die einfacher in Software zu implementieren ist. Es verschlüsselt jeweils ein Bit. Blockprotokolle wie AES verschlüsseln jeweils einen Block mit 128 Bit. Um die Hardwareunterstützung zu implementieren, sind viel mehr Transistoren erforderlich. Daher werden größere Prozessoren mit AES-NI geliefert, einer Erweiterung des Befehlssatzes, der einige Aufgaben des Verschlüsselungsprozesses ausführt, um ihn zu beschleunigen.

Es wurde erwartet, dass AES-NI niemals Smartphones treffen wird [und es traf, - ca. trans.]. Dafür wurde der ChaCha20 entwickelt - als einfache und wirtschaftliche Alternative, die Batteriestrom spart. Daher kann es für Sie neu sein, dass jedes Smartphone, das Sie heute kaufen können, die eine oder andere Beschleunigung für AES hat und mit dieser Verschlüsselung schneller und mit weniger Stromverbrauch arbeitet als mit ChaCha20.

Offensichtlich verfügt fast jeder Desktop- / Server-Prozessor, der in den letzten Jahren gekauft wurde, über AES-NI.

Daher erwarte ich, dass AES ChaCha20 in jedem einzelnen Szenario übertrifft. In der offiziellen Dokumentation von WireGuard wird erwähnt, dass der ChaCha20-Poly1305 dank des AVX512 AES-NI übertreffen wird. Diese Erweiterung des Befehlssatzes ist jedoch nur auf großen Prozessoren verfügbar, was wiederum bei kleineren und mobilen Geräten, die mit AES immer schneller arbeiten, nicht hilfreich ist NI.

Ich bin mir nicht sicher, ob dies während der Entwicklung von WireGuard hätte vorhergesehen werden können, aber heute ist die Tatsache, dass es an eine Verschlüsselung gebunden ist, bereits ein Nachteil, der seine Arbeit möglicherweise nicht sehr gut beeinflusst.

Mit IPsec können Sie frei wählen, welche Verschlüsselung für Ihre Anwendung am besten geeignet ist. Dies ist natürlich erforderlich, wenn Sie beispielsweise 10 oder mehr Gigabyte Daten über eine VPN-Verbindung übertragen möchten.

Probleme mit der Linux-Integration


Obwohl WireGuard ein modernes Verschlüsselungsprotokoll gewählt hat, verursacht dies bereits viele Probleme. Anstatt das zu verwenden, was vom Kernel sofort unterstützt wird, hat sich die WireGuard-Integration aufgrund des Fehlens dieser Grundelemente unter Linux um Jahre verzögert.

Ich bin mir der Situation in anderen Betriebssystemen nicht ganz bewusst, aber wahrscheinlich unterscheidet sie sich nicht wesentlich von der Situation unter Linux.

Wie sieht die Realität aus?


Leider stoße ich jedes Mal, wenn ein Client mich auffordert, eine VPN-Verbindung für ihn einzurichten, auf das Thema, dass er veraltete Anmeldeinformationen und Verschlüsselung verwendet. 3DES in Verbindung mit MD5 ist nach wie vor eine gängige Praxis, ebenso wie AES-256 und SHA1. Und obwohl letzteres etwas besser ist, sollte dies 2020 nicht verwendet werden.

Für den Schlüsselaustausch wird immer RSA verwendet - ein langsames, aber ziemlich sicheres Tool.

Meine Kunden sind mit Zollbehörden und anderen staatlichen Organisationen und Institutionen sowie mit großen Unternehmen verbunden, deren Namen auf der ganzen Welt bekannt sind. Sie alle verwenden ein Anforderungsformular, das vor Jahrzehnten erstellt wurde, und die Möglichkeit, SHA-512 zu verwenden, wurde einfach nie hinzugefügt. Ich kann nicht sagen, dass dies den technologischen Fortschritt eindeutig beeinflusst, aber es verlangsamt offensichtlich den Unternehmensprozess.

Es schmerzt mich, das zu sehen, weil IPsec seit dem Jahr 2005 elliptische Kurven von Anfang an unterstützt. Curve25519 ist auch neuer und zugänglicher. Es gibt immer noch Alternativen zu AES wie Camellia und ChaCha20, aber offensichtlich werden nicht alle von großen Anbietern wie Cisco und anderen unterstützt.

Und die Leute benutzen es. Es gibt viele Cisco-Kits und viele Kits, die für die Zusammenarbeit mit Cisco entwickelt wurden. Sie sind Marktführer in diesem Segment und nicht sehr an Innovationen interessiert.

Ja, die Situation [im Unternehmenssegment] ist schrecklich, aber wir werden aufgrund von WireGuard keine Änderungen sehen. Hersteller werden wahrscheinlich niemals Leistungsprobleme mit den bereits verwendeten Tools und der Verschlüsselung feststellen, noch werden sie Probleme bei der Verwendung von IKEv2 feststellen - und suchen daher nicht nach Alternativen.

Haben Sie jemals darüber nachgedacht, Cisco aufzugeben?

Benchmarks


Fahren wir nun mit den Benchmarks aus der WireGuard-Dokumentation fort. Obwohl diese [Dokumentation] kein wissenschaftlicher Artikel ist, habe ich dennoch erwartet, dass die Entwickler einen wissenschaftlicheren Ansatz verfolgen oder einen wissenschaftlichen Ansatz als Referenz verwenden. Alle Benchmarks sind nutzlos, wenn sie nicht reproduziert werden können, und noch mehr, wenn sie im Labor erhalten werden.

Im WireGuard Build für Linux nutzt er das GSO - Generic Segmentation Offloading. Dank ihm erstellt der Client ein riesiges Paket mit einer Größe von 64 Kilobyte und verschlüsselt / entschlüsselt es in einem Ansatz. Dadurch werden die Kosten für das Aufrufen und Implementieren von kryptografischen Operationen reduziert. Wenn Sie die Bandbreite Ihrer VPN-Verbindung maximieren möchten, ist dies eine gute Idee.

Aber wie immer ist es in Wirklichkeit nicht so einfach. Das Senden eines so großen Pakets an einen Netzwerkadapter erfordert, dass es in viele kleinere Pakete aufgeteilt wird. Die typische Sendegröße beträgt 1.500 Byte. Das heißt, unsere riesigen 64 Kilobyte werden in 45 Pakete aufgeteilt (1240 Byte Information und 20 Byte IP-Header). Dann blockieren sie für eine Weile den Betrieb des Netzwerkadapters vollständig, da sie zusammen und sofort gesendet werden müssen. Infolgedessen führt dies zu einem Prioritätssprung, und Pakete wie beispielsweise VoIP werden in die Warteschlange gestellt.

Somit wird der hohe Durchsatz, den WireGuard so kühn behauptet, durch Verlangsamung des Netzwerkbetriebs anderer Anwendungen erreicht. Und das WireGuard-Team hat meine Schlussfolgerung bereits bestätigt .

Aber lass uns weitermachen.

Gemäß den Benchmarks in der technischen Dokumentation weist die Verbindung eine Bandbreite von 1011 Mbit / s auf.

Beeindruckend.

Dies ist besonders beeindruckend, da die maximale theoretische Bandbreite einer Gigabit-Ethernet-Verbindung 966 Mbit / s bei einer Paketgröße von 1.500 Byte minus 20 Byte pro IP-Header, 8 Byte pro UDP-Header und 16 Byte pro Draht-Header selbst beträgt. . Das gekapselte Paket enthält einen weiteren IP-Header und einen weiteren in 20-Byte-TCP. Woher kam diese zusätzliche Bandbreite?

Mit den riesigen Frames und Vorteilen von GSO, über die wir oben gesprochen haben, wird das theoretische Maximum bei einer Frame-Größe von 9000 Bytes 1014 Mbit / s betragen. Normalerweise ist ein solcher Durchsatz in der Realität nicht erreichbar, da er mit großen Schwierigkeiten verbunden ist. Daher kann ich nur davon ausgehen, dass der Test mit noch fetteren Frames durchgeführt wurde, die die Größe von 64 Kilobyte mit einem theoretischen Maximum von 1023 Mbit / s überschreiten, was nur von einigen Netzwerkadaptern unterstützt wird. Dies gilt jedoch unter realen Bedingungen absolut nicht oder kann nur zwischen zwei direkt miteinander verbundenen Stationen ausschließlich innerhalb des Prüfstands verwendet werden.

Da der VPN-Tunnel jedoch zwischen zwei Hosts über eine Internetverbindung weitergeleitet wird, die überhaupt keine großen Frames unterstützt, kann das am Stand erzielte Ergebnis nicht als Standard angesehen werden. Dies ist einfach eine unrealistische Laborleistung, die unmöglich ist und unter realen Kampfbedingungen nicht anwendbar ist.

Selbst wenn ich im Rechenzentrum sitze, kann ich keine Frames übertragen, die größer als 9000 Bytes sind.

Das Kriterium der Anwendbarkeit im wirklichen Leben wird vollständig verletzt, und der Autor der "Messung" hat sich meines Erachtens aus offensichtlichen Gründen ernsthaft diskreditiert.



Der letzte Hoffnungsschimmer


Auf der WireGuard-Website wird viel über Container gesprochen, und es wird klar, wofür sie eigentlich bestimmt sind.

Ein einfaches und schnelles VPN, für das keine Konfiguration erforderlich ist und das mit umfangreichen Orchestrierungs-Tools wie Amazon in der Cloud bereitgestellt und konfiguriert werden kann. Insbesondere verwendet Amazon die neuesten Hardwarefunktionen, die ich bereits erwähnt habe, z. B. AVX512. Dies geschieht, um die Arbeit zu beschleunigen und nicht an x86 oder eine andere Architektur gebunden zu sein.

Sie optimieren die Bandbreite und Pakete, deren Größe 9000 Byte überschreitet. Dies führt zu riesigen gekapselten Frames für die Kommunikation von Containern untereinander oder für Sicherungsvorgänge, das Erstellen von Snapshots oder das Bereitstellen dieser Container. Selbst dynamische IP-Adressen haben im Fall des von mir beschriebenen Szenarios keinen Einfluss auf den Betrieb von WireGuard.

Nicht schlecht gespielt. Geniale Implementierung und ein sehr dünnes, fast Referenzprotokoll.

Aber es ist einfach nicht für die Welt außerhalb des Rechenzentrums geeignet, das Sie vollständig kontrollieren. Wenn Sie das Risiko eingehen und WireGuard verwenden, müssen Sie bei der Entwicklung und Implementierung des Verschlüsselungsprotokolls ständig Kompromisse eingehen.

Fazit


Ich kann leicht zu dem Schluss kommen, dass WireGuard noch nicht fertig ist.

Es wurde als leichte und schnelle Lösung für eine Reihe von Problemen mit vorhandenen Lösungen konzipiert. Leider hat er für diese Lösungen viele Funktionen geopfert, die für die meisten Benutzer relevant sind. Aus diesem Grund kann IPsec oder OpenVPN nicht ersetzt werden.

Damit WireGuard wettbewerbsfähig wird, müssen mindestens die IP-Adresskonfiguration sowie die Routing- und DNS-Konfiguration hinzugefügt werden. Dafür werden natürlich verschlüsselte Kanäle benötigt.

Sicherheit ist meine oberste Priorität, und im Moment habe ich keinen Grund zu der Annahme, dass IKE oder TLS irgendwie kompromittiert oder kaputt sind. In beiden Fällen wird die moderne Verschlüsselung unterstützt, und sie wurden jahrzehntelang getestet. Wenn etwas Neueres nicht bedeutet, dass es etwas ist, ist es besser.

Die Interoperabilität ist von entscheidender Bedeutung, wenn Sie sich an Dritte wenden, deren Stationen Sie nicht kontrollieren. IPsec ist der De-facto-Standard und wird nahezu universell unterstützt. Und es funktioniert. Und egal wie es aussieht, theoretisch ist WireGuard in Zukunft möglicherweise nicht einmal mit verschiedenen Versionen von sich selbst kompatibel.

Jeder kryptografische Schutz wird früher oder später gehackt und muss dementsprechend ersetzt oder aktualisiert werden.

All diese Fakten zu leugnen und blindlings WireGuard verwenden zu wollen, um Ihr iPhone mit Ihrer Heimarbeitsstation zu verbinden, ist nur ein Workshop, in dem Sie Ihren Kopf in den Sand stecken.

All Articles