30.01.2026. ·
3 min

Zašto jedan pritisak na taster u SSH-u šalje stotine paketa i ubija performanse

HelloWorld
0
Zašto jedan pritisak na taster u SSH-u šalje stotine paketa i ubija performanse

Ako ste ikada pretpostavili da jedan pritisak na taster u SSH sesiji znači jedan mali paket preko mreže, tcpdump će vas brzo razuveriti. U praksi, jedan jedini keystroke može da generiše stotine paketa, većinom identične veličine, raspoređene u pravilnim vremenskim intervalima.

Za autora ovog istraživanja to nije bila teorijska radoznalost, već vrlo konkretan problem performansi u realnom sistemu.

Neočekivani pad opterećenja i pitanje bez odgovora

Autor radi na visoko-performantnoj igri koja se izvršava preko SSH-a, sa tekstualnim interfejsom renderovanim 10 puta u sekundi, za hiljade istovremenih igrača. Cilj je obrada oko 100 miliona ćelija u sekundi, što svaku neefikasnost čini vidljivom.

Tokom testiranja, greškom je prekinuto slanje podataka o igri, a server je klijentima slao samo poruku da je ekran previše mali. CPU i bandwidth su tada pali za oko 50 odsto.

Ne za 100 odsto.

Ako se ništa ne renderuje, zašto sistem i dalje troši polovinu resursa?

Tcpdump otkriva obrazac koji ne bi trebalo da postoji

Snimci sa tcpdump-a pokazali su vrlo čudan obrazac. Ogromna većina paketa imala je tačno 36 bajtova, stizali su u razmacima od oko 20 milisekundi i bili su inicirani od strane SSH klijenta, ne servera.

Isto ponašanje se pojavilo i u običnoj SSH sesiji, bez igre, bez TUI-ja, bez bilo kakvog specijalnog koda. Dovoljan je bio jedan pritisak na taster.

To je bio ključni signal da problem nema veze sa aplikacijom, već sa samim SSH-om.

Obfuscation keystroke timing i “chaff” paketi

Odgovor se pojavio tek kada je SSH pokrenut sa -vvv opcijom. Log je bio jasan:

SSH namerno šalje dodatne pakete, takozvani “chaff”, kako bi zamaskirao tačan trenutak kada korisnik zaista pritiska tastere.

Ova funkcionalnost je uvedena 2023. godine kao zaštita privatnosti. Ideja je da napadač ne može da zaključi šta korisnik kuca na osnovu ritma unosa, čak i ako ne vidi sadržaj enkriptovanog saobraćaja.

Sa bezbednosne strane, ovo ima savršenog smisla. Sa performansne strane, posledice su ogromne.

Jedan keystroke može da proizvede desetine ili stotine “lažnih” paketa, raspoređenih u pravilnim intervalima od oko 20 ms.

Kada bezbednost direktno udara na skaliranje

Za klasične SSH sesije ovo je prihvatljiv kompromis. Za interaktivnu igru dostupnu celom internetu, gde je latencija kritična, a privatnost kucanja sekundarna, to je ozbiljan problem.

Klijentski, keystroke obfuscation može da se isključi, ali to nije realno rešenje za javni servis koji treba da “samo radi”.

Ključno otkriće je bilo da se ovi “chaff” paketi šalju samo ako server advertajzuje podršku za [email protected] ekstenziju. U implementaciji SSH protokola u Go ekosistemu, ta podrška je relativno skoro dodata.

Rešenje je bilo brutalno jednostavno, ali tehnički hrabro. Forkovana je Go kripto biblioteka i uklonjena je podrška za tu ekstenziju.

Rezultati su bili dramatični.

CPU potrošnja pala je sa oko 30 na 11 procenata. Broj sistemskih poziva se višestruko smanjio. Kriptografski trošak je praktično nestao. Bandwidth je pao za više od 50 odsto.

Sve to bez promene u ponašanju same aplikacije.

LLM alati pomažu, ali ne razmišljaju umesto vas

Zanimljiv deo priče je i uloga LLM alata u celom procesu. Autor je koristio Claude Code za analizu pcap fajlova i istraživanje, što je značajno ubrzalo iteracije i eksperimentisanje.

Istovremeno, drugi LLM alat je potpuno pogrešno tvrdio da je ovakvo ponašanje “normalno” i da nema veze sa SSH protokolom, čak i kada su mu predstavljeni konkretni dokazi.

Zaključak autora nije da su LLM alati beskorisni, već da su korisni samo ako osoba koja ih koristi ima dobar mentalni model problema. Ključni skok u razmišljanju i dalje mora da dođe od čoveka.

Lekcija za sisteme koji rade “na ivici”

Ova priča je dobar podsetnik da moderni softver često sadrži bezbednosne i privatnosne mehanizme koji su nevidljivi dok ne postanu problem. SSH keystroke obfuscation je dobar primer funkcije koja je potpuno opravdana u jednom kontekstu, a pogubna u drugom.

Za sisteme koji rade na velikoj skali i sa strogo definisanim performansnim zahtevima, razumevanje ovih “skrivenih” slojeva protokola može da napravi razliku između sistema koji jedva opstaje i sistema koji bez problema skalira.

 

Oceni tekst

0

0 komentara

Iz ove kategorije

Svi članci sa Bloga

Slični poslovi

Povezane kompanije po tagovima