The first official release of the experimental implementation of the SSH3 protocol server and client is available. This is designed as an extension over the HTTP/3 protocol, using QUIC (based on UDP) and TLS 1.3 to establish a secure communication channel while utilizing HTTP mechanisms for user authentication. The project is being developed by François Michel, a PhD student at the Catholic University of Leuven (Belgium), with participation from Olivier Bonaventure, a professor at the same university known for developing the Multipath TCP subsystem and IPv6 segment routing code for the Linux kernel, as well as being a co-author of 10 RFCs and drafts of over 60 network specifications. The reference implementation code for the client and server is written in Go and is distributed under the Apache 2.0 license.
The development of SSH3 resulted from a complete overhaul of the SSH protocol conducted by a separate group of researchers independently from OpenSSH and other projects that are advancing implementations of the classic SSH protocol. In SSH3, the semantics of the classic SSH protocol are implemented through HTTP mechanisms, allowing for additional functionalities and ensuring the obfuscation of SSH-related activity amongst other traffic.
When using SSH3, the server is indistinguishable from an HTTP server and accepts requests on port 443 (HTTPS), while the SSH3 traffic merges with standard HTTP traffic, making it difficult to conduct port scanning attacks and identify SSH servers for password guessing. To complicate the execution of attacks on servers SSH3, besides having knowledge of the existence of a server at a given IP address, a secret SSH3 server identifier path can be specified. Without the correct identifier, the server will process requests as a regular HTTPS server and will not reveal the existence of the SSH3 connection capability. For example, with the identifier "e6ae772cbdaafd6918865cc2ce449dae", you can connect to the server only via the URL "https://192.0.2.0:443/e6ae772cbdaafd6918865cc2ce449dae"; if the identifier is incorrectly specified, the server will return the standard error "404".
The extended functionality of SSH3 includes the ability to use X.509 certificates and OAuth 2.0/OpenID Connect methods for authentication, in addition to classic SSH methods; support for UDP port forwarding through an SSH tunnel as well as TCP port forwarding (e.g., for passing QUIC, DNS, and RTP); and the use of advanced features of the QUIC protocol, such as connection migration without interrupting connectivity and establishing multipath connections for parallelizing traffic across multiple routes.
A significant reduction in connection setup time when using SSH3 is highlighted. Connecting to an SSH3 server requires only 3 network iterations (Round Trip), while SSHv2 requires 5-7 packet exchanges. The response time for keyboard input for already established sessions in both SSH3 and SSHv2 is at the same level.

For encrypting the communication channel in SSH3, the TLS 1.3 protocol is used, and authentication can employ classic password-based methods and public key methods (RSA and EdDSA/ed25519). Additionally, SSH3 can use methods based on OAuth 2.0, allowing for offloading authentication to third-party providers, such as enabling logins with confirmation via accounts on Google, Microsoft, and GitHub services. For connecting to servers using keys, besides SSH keys, X.509 certificates used for HTTPS can also be utilized.
The published implementation of the SSH3 client and server supports many basic features of OpenSSH, including:
- Support for the file ~/.ssh/authorized_keys with key settings on server.
- The ability to use the configuration file ~/.ssh/config on the client side. Currently, the parameters Hostname, User, Port, and IdentityFile are supported, while others are ignored.
- Support for authentication connection to the server based on certificates.
- Support for the known_hosts mechanism (in situations where X.509 certificates are not used).
- Support for the client to work with the OpenSSH Agent (ssh-agent) and automatic use of the agent for open key authentication.
- Support for port forwarding through the SSH agent for using local keys on an external server.
- Direct TCP port forwarding.
Source: opennet.ru
