A fost lansată prima versiune oficială a unei implementări experimentale a serverului și clientului pentru protocolul SSH3, realizată sub forma unui overlay pe protocolul HTTP/3, folosind QUIC (bazat pe UDP) și TLS 1.3 pentru a stabili un canal de comunicație securizat, precum și mecanisme HTTP pentru autentificarea utilizatorilor. Proiectul este dezvoltat de François Michel, student la Universitatea Catolică din Leuven (Belgia), cu ajutorul lui Olivier Bonaventure, profesor la aceeași universitate, cunoscut pentru dezvoltarea subsystemului Multipath TCP și a codului de rutare a segmentelor IPv6 pentru nucleul Linux, precum și coautor al 10 RFC și a peste 60 de specificații de rețea. Codul de referință pentru implementarea clientului și serverului este scris în limbajul Go și este distribuit sub licența Apache 2.0.
Dezvoltarea SSH3 a fost rezultatul unei revizuiri complete a protocolului SSH, efectuată de un grup separat de cercetători, independent de OpenSSH și alte proiecte care dezvoltă implementări ale protocolului SSH clasic. În SSH3, semantica protocolului SSH clasic este realizată prin mecanisme HTTP, ceea ce a permis implementarea unor funcționalități suplimentare și ascunderea activității legate de SSH printre alte tipuri de trafic.
Utilizând SSH3, serverul este indistinguibil de un server HTTP și acceptă cereri pe portul de rețea 443 (HTTPS), iar traficul SSH3 se amestecă cu traficul HTTP standard, îngreunând efectuarea atacurilor legate de scanarea porturilor și identificarea serverelor SSH pentru încercarea de parole. Pentru a complica derularea atacurilor servere SSH3, pe lângă cunoașterea informațiilor despre existența serverului la o anumită adresă IP, poate avea un identificator secret de cale al serverului SSH3. Fără a trimite un identificator corect, serverul va trata răspunsurile ca un server HTTPS obișnuit și nu va dezvălui existența posibilității de conectare prin SSH3. De exemplu, pentru a te conecta la server cu identificatorul „e6ae772cbdaafd6918865cc2ce449dae”, trebuie utilizat URL-ul „https://192.0.2.0:443/e6ae772cbdaafd6918865cc2ce449dae”, iar dacă identificatorul este incorect, serverul va returna o eroare standard „404”.
Din funcționalitatea extinsă a SSH3 se menționează posibilitatea utilizării certificatelor X.509 și a metodelor OAuth 2.0/OpenID Connect pentru autentificare, pe lângă metodele clasice SSH; suport pentru redirecționarea porturilor UDP prin tunel SSH, în plus față de posibilitatea de redirecționare a porturilor TCP (de exemplu, pentru tunelarea QUIC, DNS și RTP); utilizarea funcționalităților avansate ale protocolului QUIC, cum ar fi migrarea conexiunilor fără întreruperea conectării și stabilirea conexiunilor multipath pentru a dispersa traficul pe mai multe rute.
Se evidențiază o reducere semnificativă a timpului de conectare la utilizarea SSH3. La conectarea la serverul SSH3, sunt necesare doar 3 iterații de rețea (Round Trip), în timp ce pentru SSHv2 se efectuează 5-7 iterații de schimb de pachete. Timpul de reacție la introducerea de la tastatură pentru sesiunile deja stabilite în SSH3 și SSHv2 este similar.

Pentru criptarea canalului de comunicație în SSH3 este folosit protocolul TLS 1.3, iar pentru autentificare se pot utiliza metode clasice bazate pe parole și chei publice (RSA și EdDSA/ed25519). În plus, în SSH3 se pot aplica metode bazate pe protocolul OAuth 2.0, permițând delegarea autentificării către furnizori terți, de exemplu, pentru a asigura conectarea cu confirmare prin conturile de servicii Google, Microsoft și GitHub. Pentru conectarea la servere prin chei, pe lângă cheile SSH, se pot utiliza certificate X.509, folosite pentru HTTPS.
Implementarea publicată a clientului și serverului SSH3 suportă multe dintre funcționalitățile de bază ale OpenSSH, printre care:
- Suport pentru fișierul ~/ .ssh/ authorized_keys cu setările cheilor pe server.
- Posibilitatea utilizării fișierului de configurare ~/ .ssh/ config de către client. În prezent, sunt acceptate parametrii Hostname, User, Port și IdentityFile, iar ceilalți sunt ignorați.
- Suport pentru autentificarea conexiunii la server pe baza certificatelor.
- Suport pentru mecanismul known_hosts (în situațiile în care nu sunt folositecertificatele X.509).
- Suport pentru funcționarea clientului cu OpenSSH Agent (ssh-agent) și utilizarea automată a agentului pentru autentificare prin chei publice.
- Suport pentru funcția de redirecționare prin SSH-agent pentru utilizarea cheilor locale pe un server extern.
- Redirecționarea directă a porturilor TCP.
Sursa: opennet.ro
