- 1 Section
- 10 Lessons
- unbegrenzt
WireGuard
WireGuard ist ein modernes VPN-Protokoll, das 2019 in den Linux-Kernel aufgenommen wurde und seitdem die VPN-Welt verändert hat. Im Vergleich zu OpenVPN (ca. 70.000 Codezeilen) und IPsec (hunderttausende Codezeilen) ist WireGuard mit etwa 4.000 Zeilen Code winzig. Das ist kein Nachteil – es ist der größte Sicherheitsvorteil: Weniger Code bedeutet weniger Angriffsfläche, einfachere Auditierbarkeit und weniger Bugs.
WireGuard verzichtet auf Aushandlungs-Komplexität: Es gibt keine Protokoll-Negotiation, keine Cipher-Suites zur Auswahl. Es gibt genau einen Kryptographie-Stack – sorgfältig ausgewählte, moderne Algorithmen – und der ist fest eingebaut. Das macht WireGuard schnell, einfach zu verstehen und schwer falsch zu konfigurieren.
1) Code-Umfang und Angriffsfläche
Die geringe Codegröße ist kein Kompromiss, sondern das Ergebnis konsequenter Designentscheidungen: kein Rauschen durch Legacy-Support, kein Verhandlungsmechanismus, keine veralteten Algorithmen. Die folgende Übersicht zeigt den Vergleich.
2) WireGuard-Kryptographie
WireGuard verwendet einen fest definierten Kryptographie-Stack – keine Auswahl, keine Legacy-Algorithmen, keine Verhandlung. Das ist bewusst so gestaltet: Es gibt keine Möglichkeit, unsichere Algorithmen zu konfigurieren.
Schlüsselaustausch: Noise Protocol Framework (Diffie-Hellman)
DH-Kurve: Curve25519 (ECDH)
# Datenverschlüsselung
Verschlüsselung: ChaCha20-Poly1305 (Authenticated Encryption)
# Hashing und Schlüsselableitung
Hashing: BLAKE2s
Schlüsselableitung: HKDF (HMAC-based Extract-and-Expand)
# Handshake
Handshake-Protokoll: Noise_IKpsk2 (1-RTT)
Peer-Auth: Public-Key-Kryptographie (Curve25519-Schlüsselpaar)
3) Konfiguration: einfach wie ein SSH-Schlüssel
WireGuard-Konfiguration ist radikal einfach: Jeder Peer hat ein Schlüsselpaar (öffentlich + privat). Verbindungen werden durch gegenseitigen Schlüsselaustausch konfiguriert – ähnlich wie SSH Authorized Keys. Die gesamte Konfiguration passt in wenige Zeilen.
PrivateKey = server_priv_key
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD ...
[Peer] # Client Anna
PublicKey = anna_pub_key
AllowedIPs = 10.0.0.2/32
PrivateKey = anna_priv_key
Address = 10.0.0.2/24
DNS = 192.168.0.10
[Peer] # Server
PublicKey = server_pub_key
Endpoint = vpn.firma.de:51820
AllowedIPs = 0.0.0.0/0 # Full Tunnel
PersistentKeepalive = 25
0.0.0.0/0 = Full Tunnel (alles durch den VPN). Für Split Tunnel: nur die internen Subnetze angeben, z.B. 192.168.0.0/24, 10.0.0.0/8. WireGuard ist zustandslos im Sinne seiner Konfiguration – es gibt keinen expliziten Verbindungsauf- oder -abbau.4) Verbindungsaufbau – deutlich schneller als IPsec
5) WireGuard vs. OpenVPN vs. IPsec
Zusammenfassung
WireGuard ist das modernste VPN-Protokoll: ~4.000 Codezeilen, fest eingebauter moderner Kryptographie-Stack (Curve25519, ChaCha20-Poly1305, BLAKE2s), 1-RTT-Handshake, Stealth-Verhalten. Im Linux-Kernel seit 5.6, nativ auf Windows, macOS, iOS, Android. Ideal für Remote-Access, mobilfreundlich. Schwäche: kein dynamisches BGP-Routing für komplexe Site-to-Site-Szenarien. Mehr zu Split-Tunneling: Split Tunneling & Sicherheitsbetrachtung.
