Dostupan je prvi službeni izdanak eksperimentalne implementacije servera i klijenta za SSH3 protokol, oblikovan kao nadogradnja HTTP/3 protokola, koristeći QUIC (baziran na UDP-u) i TLS 1.3 za uspostavljanje sigurnog komunikacijskog kanala, kao i mehanizme HTTP za autentifikaciju korisnika. Projekt razvija François Michel, doktorand Katoličkog sveučilišta Leuven (Belgija), uz sudjelovanje Oliviera Bonaventurea, profesora istog sveučilišta, poznatog po razvoju Multipath TCP podsustava i IPv6 segmentne usmjeravanja koda za Linux kernel, kao i koautora 10 RFC-ova i više od 60 nacrta mrežnih specifikacija. Kod referentne implementacije klijenta i servera napisan je na Go jeziku i distribuira se pod Apache 2.0 licencom.
Razvoj SSH3 predstavlja rezultat potpune revizije SSH protokola, koju je provela posebna grupa istraživača neovisno od OpenSSH-a i drugih projekata koji razvijaju implementacije klasičnog SSH protokola. U SSH3, semantika klasičnog SSH protokola ostvarena je kroz HTTP mehanizme, što je omogućilo dodatne funkcionalnosti i skrivanje aktivnosti povezanih sa SSH-om među ostalim prometom.
Pri korištenju SSH3, server je neodvojiv od HTTP servera i prihvaća zahtjeve na 443 mrežnoj luci (HTTPS), dok se SSH3 promet miješa s tipičnim HTTP prometom, što otežava provođenje napada povezanih s skeniranjem portova i otkrivanjem SSH servera za pogađanje lozinki. Za otežavanje napada na servere SSH3, osim znanja o postojanju servera na određenoj IP adresi, može se postaviti tajna put-identifikator SSH3 servera. Bez ispravnog identifikatora, server će obraditi odgovore kao običan HTTPS server i neće otkriti mogućnost povezivanja putem SSH3. Na primjer, uz postavljanje identifikatora „e6ae772cbdaafd6918865cc2ce449dae“, povezivanje s serverom moguće je samo putem URL-a „https://192.0.2.0:443/e6ae772cbdaafd6918865cc2ce449dae“, a ako je identifikator naveden netočno, server će vratiti standardnu grešku „404“.
Među proširenim funkcionalnostima SSH3 ističe se mogućnost korištenja X.509 certifikata i OAuth 2.0/OpenID Connect za autentifikaciju, pored klasičnih SSH metoda; podrška za preusmjeravanje UDP portova kroz SSH tunel uz mogućnost preusmjeravanja TCP portova (npr. za prijenos QUIC, DNS i RTP); korištenje naprednih funkcija QUIC protokola, poput migracije veze bez prekida veze i uspostave multipath veza za paralelno upravljanje prometom kroz nekoliko puteva.
Izdvojeno je značajno smanjenje vremena uspostavljanja veze prilikom korištenja SSH3. Za povezivanje s SSH3 poslužiteljem potrebno je izvršiti samo 3 mrežne iteracije (Round Trip), dok se za SSHv2 izvode 5-7 iteracija razmjene paketa. Vrijeme reakcije na unos s tipkovnice za već uspostavljene sesije u SSH3 i SSHv2 je na istoj razini.

Za šifriranje komunikacijskog kanala u SSH3 koristi se TLS 1.3 protokol, a za autentifikaciju mogu se koristiti klasične metode temeljene na lozinkama i javnim ključevima (RSA i EdDSA/ed25519). Osim toga, u SSH3 se mogu primjenjivati metode temeljene na OAuth 2.0 protokolu, koje omogućuju prebacivanje autentifikacije na vanjske pružatelje, primjerice, za omogućavanje prijave uz potvrdu putem računa u Google, Microsoft i GitHub uslugama. Za povezivanje s poslužiteljima korištenjem ključeva, osim SSH ključeva, mogu se koristiti X.509 certifikati koji se koriste za HTTPS.
Objavljena implementacija klijenta i poslužitelja SSH3 podržava mnoge osnovne mogućnosti OpenSSH, uključujući:
- Podrška za datoteku ~/ .ssh/ authorized_keys s postavkama ključeva za serveru.
- Mogućnost korištenja datoteke s konfiguracijom ~/ .ssh/config na strani klijenta. Trenutno su podržani parametri Hostname, User, Port i IdentityFile, dok se ostali ignoriraju.
- Podrška za autentifikaciju povezivanja s poslužiteljem na temelju certifikata.
- Podrška za mehanizam known_hosts (u situacijama kada se ne koriste X.509 certifikati).
- Podrška za rad klijenta s OpenSSH Agent (ssh-agent) i automatsko korištenje agenta za autentifikaciju pomoću javnih ključeva.
- Podrška za funkciju preusmjeravanja kroz SSH agent za korištenje lokalnih ključeva na vanjskom poslužitelju.
- Direktno propuštanje TCP portova.
Izvor: opennet.ru
