Der Ausdruck vorab vereinbarter Schlüssel taucht in der Dokumentation von IPsec, OpenVPN und WireGuard auf, und er bezeichnet dort drei verschiedene Objekte. Eines ist ein Authentifizierungsgeheimnis, eines schützt einen Steuerkanal, und eines fügt einem Handshake Material hinzu, der bereits Identitäten besitzt. Wer sie als austauschbar behandelt, erhält eine Verbindung, die in einer Phase scheitert, mit der niemand gerechnet hat. Lesen Sie nach, was das Feld in jenem Protokoll bewirkt, bevor Sie einen Wert hineinkopieren.

Drei Protokolle, drei Bedeutungen

Jedes Protokoll legt die Aufgabe des Schlüssels in seiner eigenen Spezifikation fest, und die Aufgaben überschneiden sich nicht. Ein Authentifizierungsgeheimnis beweist, dass zwei Gegenstellen denselben Wert kennen. Ein Schlüssel für den Steuerkanal schützt die anschließende Aushandlung. Ein Zusatz für den Handshake ändert den Schlüsselplan, ohne zu ändern, wer die Gegenstellen sind.

Keine dieser Rollen authentifiziert einen menschlichen Benutzer, und genau diese Verwechslung kostet die meiste Zeit. Ein vorab vereinbarter Schlüssel wird vor dem Austausch auf Geräten oder Gateways hinterlegt, sodass jeder Inhaber für die andere Seite gleich aussieht. Diese Eigenschaft ist ein Vorteil für eine Standort-zu-Standort-Verbindung zwischen zwei Routern und ein Risiko für einen Fernzugriffsdienst mit namentlich bekannten Mitarbeitern. Halten Sie das Kontokennwort und das kryptografische Geheimnis in getrennten Spalten jedes Dokuments, das die Bereitstellung beschreibt.

IPsec und OpenVPN verwenden das Wort unterschiedlich

IKEv2 kann eine Gegenstelle mit einem vorab vereinbarten Geheimnis statt mit Zertifikaten authentifizieren, und der Wert muss auf beiden Seiten übereinstimmen. Weil dasselbe Geheimnis meist für eine Gruppe von Gegenstellen konfiguriert wird, kann jeder Inhaber die anderen imitieren, und der Austausch gewinnt keine Forward Secrecy aus Identitätsschlüsseln, die er nie hatte.

Die Optionen tls-auth und tls-crypt von OpenVPN hängen einen statischen Schlüssel an den Steuerkanal und fügen damit eine HMAC-Signatur hinzu oder verschlüsseln die Aushandlung selbst. Dieser Schlüssel ist kein Benutzerpasswort und ersetzt nicht das Client-Zertifikat. Die beiden zu unterscheiden ist bei der Erneuerung wichtig, wenn eine Passwortänderung den Schlüssel des Steuerkanals unberührt lässt.

Der PSK von WireGuard ergänzt, er identifiziert nicht

WireGuard-Gegenstellen besitzen bereits öffentliche und private Curve25519-Schlüssel, und der Handshake authentifiziert diese Identitäten. Ein optionaler vorab vereinbarter Schlüssel wird in den Verkettungsschlüssel eingemischt und trägt symmetrisches Material zusätzlich zum Austausch der öffentlichen Schlüssel bei.

Er liefert keine eigene Identität und kein Benutzerkonto, daher kann ein Betreiber zwei Inhaber nicht anhand ihres PSK unterscheiden. Beide Seiten müssen denselben Wert tragen, sonst scheitert der Handshake ohne hilfreiche Fehlermeldung. Deshalb muss die Rotation für beide Seiten zugleich geplant werden und nicht als Bearbeitung einer einzelnen Datei.

Verteilung, Rotation und Entfernung prüfen

Die Verteilung ist der schwache Punkt jedes Entwurfs, der ein Geheimnis an vielen Stellen verwendet. Ein Wert, der in ein Chatfenster eingefügt, in einem Repository gespeichert oder über Umgebungen hinweg wiederverwendet wird, sammelt Kopien an, die niemand aufzählen kann, und jede Kopie erweitert still den Schadensradius.

Base64-Text ist keine Verschlüsselung. Ein Geheimnis, das neben einem öffentlichen Zertifikat im selben Verzeichnis liegt, ist weiterhin ein Geheimnis im Klartext.

openssl rand -base64 32
sudo wg show wg0 preshared-keys
sudo grep -R -n 'psk' /etc/ipsec.d/ 2>/dev/null

Rotieren Sie nach Plan und nach jedem vermuteten Zugriff, und aktualisieren Sie jede vorgesehene Gegenstelle, bevor Sie den alten Wert zurückziehen. Testen Sie die Verbindung danach von beiden Seiten, denn ein nicht passender Schlüssel scheitert am Handshake und sieht genauso aus wie ein Firewall-Problem.

Halten Sie fest, welches Geheimnis welche Phase schützt, damit ein Passwort-Reset niemals mit der Erneuerung eines kryptografischen Schlüssels verwechselt wird. Diese eine Zeile spart jedes Mal eine Stunde, wenn jemand die Bereitstellung prüft.

Ähnliche Artikel