Die erste offizielle Version einer experimentellen Implementierung eines Servers und Clients für das Protokoll SSH3, die als Erweiterung des HTTP/3-Protokolls gestaltet ist und QUIC (auf UDP-Basis) sowie TLS 1.3 zur Einrichtung eines geschützten Kommunikationskanals und HTTP-Mechanismen zur Benutzerauthentifizierung verwendet, ist verfügbar. Das Projekt wird von François Michel, einem Doktoranden der Katholischen Universität Leuven (Belgien), in Zusammenarbeit mit Olivier Bonaventure, Professor an derselben Universität, der für die Entwicklung des Multipath TCP und des IPv6-Segmentrouting-Codes für den Linux-Kernel bekannt ist, sowie Mitautor von 10 RFC und Entwürfen von mehr als 60 Netzspezifikationen, entwickelt. Der Referenzcode der Client- und Serverimplementierung ist in Go geschrieben und wird unter der Lizenz Apache 2.0 vertrieben.
Die Entwicklung von SSH3 ist das Ergebnis einer umfassenden Überarbeitung des SSH-Protokolls, die von einer separaten Forschergruppe unabhängig von OpenSSH und anderen Projekten durchgeführt wurde, die Implementierungen des klassischen SSH-Protokolls entwickeln. In SSH3 wird die Semantik des klassischen SSH-Protokolls durch HTTP-Mechanismen umgesetzt, was die Implementierung zusätzlicher Funktionen ermöglicht und die mit SSH-Aktivitäten verbundene Kommunikation unter anderem Verkehr verbirgt.
Bei der Verwendung von SSH3 ist der Server von einem HTTP-Server nicht zu unterscheiden und akzeptiert Anfragen über den Netzwerkport 443 (HTTPS). Der SSH3-Verkehr verschmilzt mit typischem HTTP-Verkehr, was es erschwert, Angriffe im Zusammenhang mit Portscanning und der Identifizierung von SSH-Servern für Passwortversuche durchzuführen. Um Angriffe zu erschweren, Server kann beim SSH3 neben dem Wissen über die Existenz eines Servers an einer bestimmten IP-Adresse auch ein geheimer SSH3-Serveridentifikationspfad festgelegt werden. Ohne die korrekte Kennung zu verwenden, behandelt der Server die Antworten wie ein gewöhnlicher HTTPS-Server und gibt nicht an, dass eine Verbindung über SSH3 möglich ist. Zum Beispiel kann bei der Angabe der Kennung „e6ae772cbdaafd6918865cc2ce449dae“ eine Verbindung zum Server nur über die URL „https://192.0.2.0:443/e6ae772cbdaafd6918865cc2ce449dae“ hergestellt werden, und wenn die Kennung falsch angegeben wird, gibt der Server einen regulären Fehler „404“ aus.
Von den erweiterten Funktionen von SSH3 wird die Möglichkeit erwähnt, X.509-Zertifikate und OAuth 2.0/OpenID Connect für die Authentifizierung zu nutzen, neben den klassischen SSH-Methoden; Unterstützung für die Umleitung von UDP-Ports durch einen SSH-Tunnel zusätzlich zur Möglichkeit der Umleitung von TCP-Ports (zum Beispiel für QUIC, DNS und RTP); die Nutzung erweiterter Funktionen des QUIC-Protokolls, wie z.B. die unterbrechungsfreie Migration von Verbindungen und die Einrichtung von Multipath-Verbindungen zur Parallelisierung von Datenverkehr über mehrere Routen.
Ganz besonders fällt die signifikante Verkürzung der Verbindungszeit bei der Nutzung von SSH3 auf. Beim Verbinden mit einem SSH3-Server sind nur 3 Netzwerk-Rundreise (Round Trip) erforderlich, während für SSHv2 5-7 Paket-Austauschiterationen durchgeführt werden. Die Reaktionszeit auf Tasteneingaben für bereits etablierte Sitzungen in SSH3 und SSHv2 liegt auf dem gleichen Niveau.

Für die Verschlüsselung der Kommunikationskanäle in SSH3 wird das TLS 1.3-Protokoll verwendet, während zur Authentifizierung klassische Methoden auf Basis von Passwörtern und öffentlichen Schlüsseln (RSA und EdDSA/ed25519) zum Einsatz kommen können. Zudem können in SSH3 auch Methoden basierend auf dem OAuth 2.0-Protokoll verwendet werden, die es ermöglichen, die Authentifizierung auf externe Anbieter zu übertragen, beispielsweise zur Bereitstellung eines Zugangs mit Bestätigung über Konten bei Google, Microsoft und GitHub. Für die Verbindung zu Servern mithilfe von Schlüsseln können neben SSH-Schlüsseln auch X.509-Zertifikate verwendet werden, die für HTTPS eingesetzt werden.
Die veröffentlichte Implementierung des SSH3-Clients und -Servers unterstützt viele grundlegende Funktionen von OpenSSH, darunter:
- Unterstützung für die Datei ~ / .ssh / authorized_keys mit Schlüsselkonfigurationen für Server.
- Möglichkeit der Verwendung der Konfigurationsdatei ~ / .ssh / config auf der Client-Seite. Derzeit werden die Parameter Hostname, User, Port und IdentityFile unterstützt, während alle anderen ignoriert werden.
- Unterstützung der Authentifizierung der Verbindung zum Server auf Basis von Zertifikaten.
- Unterstützung des Known-Hosts-Mechanismus (in Situationen, in denen keine X.509-Zertifikate verwendet werden).
- Unterstützung für die Funktionalität der Weiterleitung über den SSH-Agenten (ssh-agent) und automatische Nutzung des Agenten zur Authentifizierung mit öffentlichen Schlüsseln.
- Unterstützung der Funktion zur Umleitung über den SSH-Agenten zur Verwendung lokaler Schlüssel auf externen Servern.
- Direkte Umleitung von TCP-Ports.
Quelle: opennet.ru
