Zum Hauptinhalt springen

9. Key Re-Exchange (Schlüssel-Neuaustausch)

9. Key Re-Exchange (Schlüssel-Neuaustausch)

Der Schlüssel-Neuaustausch wird gestartet, indem ein SSH_MSG_KEXINIT-Paket gesendet wird, wenn nicht bereits ein Schlüsselaustausch durchgeführt wird (wie in Abschnitt 7.1 beschrieben). Wenn diese Nachricht empfangen wird, MUSS eine Partei mit ihrer eigenen SSH_MSG_KEXINIT-Nachricht antworten, außer wenn das empfangene SSH_MSG_KEXINIT bereits eine Antwort war. Beide Parteien KÖNNEN den Neuaustausch initiieren, aber die Rollen DÜRFEN NICHT geändert werden (d.h. der Server bleibt der Server und der Client bleibt der Client).

Der Schlüssel-Neuaustausch wird unter Verwendung der Verschlüsselung durchgeführt, die beim Start des Austauschs in Kraft war. Verschlüsselungs-, Kompressions- und MAC-Methoden werden nicht geändert, bevor nach dem Schlüsselaustausch ein neues SSH_MSG_NEWKEYS gesendet wird (wie beim initialen Schlüsselaustausch). Der Neuaustausch wird identisch zum initialen Schlüsselaustausch verarbeitet, mit Ausnahme der Sitzungskennung, die unverändert bleibt. Es ist zulässig, einige oder alle Algorithmen während des Neuaustauschs zu ändern. Host-Schlüssel können sich ebenfalls ändern. Alle Schlüssel und Initialisierungsvektoren werden nach dem Austausch neu berechnet. Kompressions- und Verschlüsselungskontexte werden zurückgesetzt.

Es wird EMPFOHLEN, die Schlüssel nach jedem Gigabyte übertragener Daten oder nach jeder Stunde Verbindungszeit zu ändern, je nachdem, was früher eintritt. Da der Neuaustausch jedoch eine Public-Key-Operation ist, erfordert er eine erhebliche Verarbeitungsleistung und sollte nicht zu häufig durchgeführt werden.

Weitere Anwendungsdaten können gesendet werden, nachdem das SSH_MSG_NEWKEYS-Paket gesendet wurde. Der Schlüsselaustausch beeinflusst nicht die Protokolle, die über der SSH-Transportschicht liegen.