Bei WireGuard sind die verwendeten kryptographischen Algorithmen im Protokoll fest verankert, bei IPSec werden diese dagegen bei jedem Verbindungsaufbau zwischen den Gegenstellen dynamisch ausgehandelt. WireGuard ist daher einfacher und schneller, IPSec erlaubt aber eine schrittweise Evolution und Anpassung der Kryptographie ohne das Protokoll grundsätzlich verändern zu müssen. Auch ältere Gegenstellen können bei IPSec ohne Änderung weiterhin angebunden bleiben und so ist eine langsame, bruchfreie Migration möglich. Sollten die bei WireGuard festgelegten kryptographischen Algorithmen eines Tages nicht mehr als ausreichend angesehen werden, wäre ein harter Bruch und ein grundlegend neues und inkompatibles Protokoll nötig.
IPSec ist für den Verbindungsaufbau auf UDP-Port 500 festgelegt. Dieser Port kann aber flexibel für alle Verbindungen, Verbindungs- und Portokollvarianten und mehrere eigene Schlüssel verwendet werden. Das vereinfacht z.B. das Einrichten von Portforwardings. Bei WireGuard wird pro eigenem privatem Schlüssel eine separate Portnummer benötigt. Diese Portnummer kann aber frei gewählt werden.
Durch das Aushandeln der Protokollvarianten und Algorithmen benötigt IPSec den Austausch mehrerer Pakete für einen Verbindungsaufbau. Dieser ist daher langsamer und benötigt größere UDP-Pakete die dann u.U. fragmentiert werden müssen. WireGuard kommt mit einem Paket hin und zurück für den Verbindungsaufbau aus und dieses Paket ist klein genug, sodass es normalerweise nicht fragmentiert werden muss. Dies erhöht die Geschwindigkeit und Funktionsfähigkeit an eingeschränkten Internetzugängen bei WireGuard.
Da bei IPSec ein eindeutiger Verbindungsaufbau am Anfang stattfindet und dieser normalerweise nur im Zeitraum mehrerer Stunden wiederholt werden muss, können die für die Authentifizierung nötigen privaten Schlüssel auf externe Geräte wie Smartcards oder USB-Tokens ausgelagert werden und müssen niemals im Arbeitsspeicher des Client-PCs vorliegen. Dies ermöglicht eine volle Mehr-Faktor-Authentifizierung mit echtem Ausleseschutz der privaten Schlüssel. Auch wenn der private Schlüssel auf dem Client-PC abgelegt wird, ist es bei IPSec-Clients üblich diesen mit einem speziellen Kennwort zu verschlüsseln und dieses vor jedem Verbindungsaufbau abzufragen. Für die Übertragung von privaten Schlüsseln an Clients kommt bei den meisten Clients PKCS#12 zum Einsatz, welches den Schlüssel für die Übertragung mit einem Passwort schützt.
Bei WireGuard findet der Handshake mit Authentifizierung etwa alle 2 Minuten statt. Es ist nicht vorgesehen oder realistisch, die privaten Schlüssel dafür auf externe Hardware auszulagern. Das etablierte Austauschformat für WireGuard-Konfigurationen ("wg-quick Format") sieht es nicht vor den privaten Schlüssel mit einem Passwort zu sichern. Die meisten Clients für WireGuard sehen auch nicht vor, dies nachträglich für den lokalen Speicher der Schlüssel hinzuzufügen und verlassen sich hierfür auf evtl. vom Betriebssystem bereitgestellte Funktionen.
IPSec nutzt standardisierte X.509-Zertifikate und kann damit leicht an vorhandene Zertifizierungsstellen und -infrastruktur angebunden werden. WireGuard verwendet sein eigenes Schlüsselformat, welches ausschließlich für WireGuard genutzt wird.
Die bei IPSec verwendeten X.509-Zertifikate haben ein Ablaufdatum, das bei der Erstellung festgelegt wird. Hierüber lässt sich eine regelmäßige Überprüfung der Berechtigung und der Nutzung angemessenser Kryptographiestandards von vorneherein festlegen und sicherstellen. Ein regelmäßiger Wechsel der Schlüssel dämmt den Schaden bei nicht sofort erkanntem Schlüsselverlust oder der Zugriff durch nicht mehr berechtigte Personen ein. Die bei WireGuard verwendeten Schlüssel haben kein Ablaufdatum und der Nutzer muss eigene Prozesse implementieren, um sicherzustellen, dass die genannten Punkte im richtigen Zeitintervall geprüft werden. Das Intra2net System zeigt bei WireGuard-Schlüsseln den Zeitpunkt an, zu dem ein Schlüssel erstellt oder importiert wurde, um solche Prozesse zu unterstützen.
Bei IPSec werden die zu verbindenden Quell- und Zielnetze am Anfang beim Verbindungsaufbau zwischen den Gegenseiten abgeglichen. Eine Verbindung kommt nur zustande, wenn diese exakt identisch sind. Konfigurationsfehler werden daher direkt beim Verbindungsaufbau ersichtlich und es wird auf einer zur Firewall zusätzlichen Ebene sichergestellt, dass nur die gewünschten Netze miteinander verbunden sind. Da aber jedes Paar an Quell- und Zielnetz einzeln konfiguriert werden muss, kann die Konfiguration aufwendiger werden.
Bei WireGuard sind die IP-Netze nicht Teil des Verbindungsaufbaus und werden zwischen den Gegenseiten nicht abgeglichen. Ein Konfigurationsfehler an dieser Stelle fällt also nicht bereits beim Verbindungsaufbau auf und muss evtl. erst durch den Vergleich der Einstellungen und Protokolle von beiden Seiten identifiziert werden. Es ist aber einfacher die Konfiguration zu erstellen und anzupassen, da keine Paare an Quell- und Zielnetzen festgelegt werden müssen.
Bei IPSec gibt es kein etabliertes Dateiformat für den Austausch von Konfigurationsdaten. Für die Authentifizierung kommen die gängigen Formate PEM und PKCS#12 zum Einsatz. Die von unterschiedlichen Gegenstellen geforderten Details der Zertifikate wie z.B. Subject-CN vs. SubjectAlternativeName, Vertrauenskette oder CRL unterscheiden sich allerdings. Dies kompliziert die Konfiguration von IPSec-Verbindungen zwischen verschiedenen Gegenstellen und fordert detaillierte Kenntnis der jeweiligen Produkte von den Administratoren. Das fehlende gemeinsame Austauschformat für Konfigurationsdaten erschwert die Kommunikation, vor allem wenn die Gegenseiten von verschiedenen Organisationen betrieben und betreut werden.
Bei WireGuard hat sich ein herstellerübergreifendes Format für den Austausch der Konfigurationsdaten und Schlüssel etabliert. Dies kann von den meisten WireGuard Clients zumindest importiert werden und vereinfacht die Konfiguration wesentlich.
Bei IPSec wird in den meisten Fällen AES zur Verschlüsselung der Nutzdaten verwendet. Dies ist zwar rechenintensiver, wird aber bei vielen CPU-Modellen mit spezieller Hardwarebeschleunigung unterstützt. Das ChaCha20-Poly1305 von WireGuard ist einfacher, wird aber rein in Software umgesetzt. Welches der beiden Verfahren letztlich den höheren Datendurchsatz liefert, ist daher stark von der konkret verwendeten CPU, Mainboard und Netzwerkkarten abhängig und ohne konkrete Tests schwer vorherzusagen.
IPSec ist seit vielen Jahren am Markt etabliert und hat daher eine breite, herstellerübergreifende und untereinander kompatible Unterstützung bei Router- und Firewallprodukten. WireGuard ist ein neuerer VPN-Standard und ist daher, insbesondere bei Firewallprodukten, noch nicht so weit verbreitet. Dort wo WireGuard unterstützt wird, wurden von uns aber noch keine Kompatibilitätsprobleme zwischen verschiedenen Implementationen beobachtet. Hier ist die Festlegung auf einen Kryptographiestandard hilfreich.
Für WireGuard werden für alle gängigen Plattformen kostenlose Clientprogramme angeboten. Bei IPSec sind für einige Plattformen nur kostenpflichtige Clientprogramme empfehlenswert.
Als Fazit ergibt sich daraus, dass beide Standards ihre individuellen Stärken und Daseinsberechtigung haben. Es sollte für jeden Einsatzzweck individuell entschieden werden, welches der beiden Protokolle besser passt.