Čo SSH vlastne robí
Splync používa HTTPS na ochranu spojenia medzi vaším smartfónom a naším serverom, ale musíme chrániť aj samotný server, aby sme zaistili bezpečnosť užívateľských dát. Vývojári aplikácií a správcovia systémov potrebujú spôsob, ako sa dostať na server na údržbu a nasadenie aktualizácií — bezpečne. Tu prichádza na rad SSH (Secure Shell). Je to protokol, ktorý umožňuje autorizovaným užívateľom bezpečne sa prihlásiť na vzdialené počítače, aj cez nedôveryhodné siete. SSH nahrádza staršie, menej bezpečné metódy ako Telnet, ktorý posielal používateľské mená a heslá v obyčajnom texte.
Myšlienka za „kľúčmi“
SSH sa nespolieha na typické heslo. Namiesto toho využíva kryptografické kľúče — zodpovedajúci pár verejného a súkromného kľúča. Predstavte si ich ako zámok a kľúč, ktoré do seba presne zapadajú. Verejný kľúč je na serveri, súkromný kľúč ostáva pri užívateľovi. Keď sa pripojíte, server vás vyzve, aby ste preukázali, že máte súkromný kľúč, bez toho, aby ste ho odhalili. To robí prakticky nemožným, aby vás niekto odpočul a vydával sa za vás. Kým tradičné heslá sa dajú uhádnuť, uniknúť alebo znovu použiť, SSH kľúče sú dlhé, náhodné kryptografické reťazce — prakticky neuhádnuteľné. Aj keby niekto zachytil pripojenie, vidí len šifrovaný šum. A keďže SSH kľúče sa nikdy neposielajú cez sieť, nie je čo ukradnúť počas prenosu.
Ako SSH kľúč vlastne vyzerá
Ak ste nikdy nevideli SSH kľúč, môže sa to zdať abstraktné — ale je to vlastne len dlhý blok kódovaného textu. Verejný kľúč má obvykle pár stoviek znakov, zatiaľ čo súkromný presahuje tisíc. Oba sú uložené ako textové súbory, ale ich obsah vyzerá ako náhodný šum — zmes písmen, čísel a symbolov. Verejný kľúč je bezpečné zdieľať; je to ako dať váš zámok na server. Súkromný kľúč, na druhej strane, je vaša jedinečná digitálna identita a nikdy by sa nemal zdieľať. Je uložený lokálne vo vašom počítači a používa sa len na dokazovanie, že ste tým, kým tvrdíte, že ste — bez toho, aby ste odhalili samotný kľúč.
Verejný kľúč a súkromný kľúč
Verejný kľúč je ako zámok, ktorý pripevníte na svoj dom. Každý ho môže vidieť z ulice, rovnako ako zámok na vašich dverách. Ale pohľad na zámok nikomu nepovie, ako ho otvoriť. Inými slovami, každý ho môže vidieť, ale len správny kľúč ho dokáže otvoriť. Na druhej strane, súkromný kľúč je ten, ktorý otvára zámok — a zostáva bezpečne pri vás. Ak by niekto získal váš súkromný kľúč, mohol by vstúpiť do vášho domu, ako keby bol vy. Preto musí byť vždy uchovávaný v tajnosti.
Mechanizmus SSH
Každý verejný a súkromný kľúč tvoria jedinečný pár jeden k jednému. Sú generované spolu matematickým procesom, takže len konkrétny súkromný kľúč môže zodpovedať svojmu verejnému kľúču. Môžete si ich predstaviť ako zámok a kľúč na mieru — kované spolu, a žiadny iný kľúč na svete do toho zámku nepasuje. Aj keby ste vygenerovali ďalší pár pomocou toho istého algoritmu (ako RSA alebo Ed25519), čísla vo vnútri budú úplne odlišné. Matematika, ktorá ich spája, je jednosmerná: verejný kľúč môžete ľahko získať zo súkromného, ale je prakticky nemožné obrátiť proces a zistiť súkromný kľúč z verejného. Preto je každý pár SSH kľúčov jedinečný a bezpečný.
Ako SSH preukazuje, kto ste
Keď sa prihlásite na server pomocou SSH, váš súkromný kľúč nikdy neopustí váš počítač. Namiesto toho server pošle náhodnú výzvu — ako jednorazovú hádanku — ktorú môže vyriešiť len váš súkromný kľúč. Váš počítač tú výzvu matematicky podpíše, čím vytvorí krátku odpoveď, ktorú server môže overiť pomocou vášho verejného kľúča. Ak odpoveď sedí, server vie, že máte správny súkromný kľúč — bez toho, aby ho vôbec videl. To je kúzlo modernej kryptografie: môžete preukázať svoju identitu bez odhalenia svojho tajomstva. Autentifikácia pomocou SSH funguje, pretože váš súkromný kľúč obsahuje všetky informácie potrebné na odvodenie verejného kľúča, ale opačne je to prakticky nemožné.
Ako vývojári používajú SSH v praxi
Kedykoľvek vývojári nasadzujú kód, aktualizujú databázu alebo reštartujú službu, často sa pripájajú k vzdialeným serverom cez SSH. Po autentifikácii získajú zabezpečené príkazové spojenie so serverom. Odtiaľ môžu spravovať súbory, reštartovať služby alebo kontrolovať záznamy — všetko je šifrované od začiatku do konca. V prípade Splync, SSH je spôsob, akým bezpečne spravujeme náš cloudový server. Každá administratívna akcia — nasadzovanie aktualizácií, kontrola záznamov, zálohovanie dát — sa vykonáva cez SSH spojenia chránené kryptografickými kľúčmi. Nikto nemôže získať prístup na server bez správneho súkromného kľúča. Aj keby niekto poznal našu IP adresu, bez toho kľúča sa dvere jednoducho neotvoria.
Pripravujeme: Šifrovanie vo vnútri servera
SSH chráni vstup na server a HTTPS chráni dáta počas prenosu. Ale keď dáta dorazia do databázy, ako ich ochrániť? Tu prichádza na rad hashovanie a šifrovanie — posledná vrstva obrany.