Táto stránka je automaticky prekladaná do viacerých jazykov pomocou softvéru od Kohei Koyanagi. Pre čo najväčšiu presnosť si pozrite originál v angličtine .

Ako chránime vaše heslá

Splync nikdy neukladá vaše heslo v čistej podobe

V predchádzajúcich článkoch sme sa zaoberali tým, ako HTTPS chráni cestu medzi vašou aplikáciou a naším serverom, a ako SSH zabezpečuje samotný server. Teraz je čas pozrieť sa dovnútra servera - ako Splync chráni vaše heslo po jeho príchode. Ak by niekto získal vaše heslo, mohol by sa prihlásiť do vášho účtu a získať citlivé informácie, vrátane záznamov o výdavkoch. Preto Splync nikdy neukladá heslá v čistej podobe. Namiesto toho je každé heslo pred uložením v databáze transformované na zašifrovanú verziu. Čo to presne znamená? Hashovanie je jednosmerná konverzia — po transformácii sa už nedá vrátiť späť na pôvodné heslo. Táto metóda je štandardom na internete, od bánk po veľké cloudové služby, ale mnohí ľudia nevedia, ako vlastne funguje. Pozrime sa na to prostredníctvom jednoduchej každodennej analógie.

Základy hashovania: Mixér, ktorý vždy mieša rovnako

Aby sme pochopili, ako funguje ochrana hesiel, začnime jednoduchou metódou hashovania nazývanou SHA-256. Predstavte si ho ako mixér, ktorý vždy mieša ingrediencie presne rovnakým spôsobom. Ak vložíte rovnaké heslo do mixéra a stlačíte tlačidlo, vždy dostanete rovnaký unikátny "smoothie" — zamiešanú zmes písmen a číslic. Kľúčovou myšlienkou je, že proces sa nedá zvrátiť. Rovnako ako nemôžete vziať smoothie a oddeliť ho späť na pôvodný banán a mlieko, nemôžete vziať zamiešaný hash a získať pôvodné heslo.

Príklad SHA-256: Ako overiť heslá bez ich poznania

SHA-256 je jedným z najbežnejších hashovacích algoritmov. Napríklad, zašifruje heslo "splync1234" na "9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41". V milisekundách, zakaždým, keď existujúci používateľ zadá prihlasovacie heslo, SHA-256 vždy vytvorí rovnaké zašifrované heslo. Aplikácia jednoducho znovu zašifruje vložené heslo a skontroluje, či sa zhoduje s uloženým hashom. Systém nikdy nepozná pôvodné heslo používateľa. Čo však, ak útočník predpočíta zoznam bežných hesiel a ich hashov (známy ako útok rainbow table), aby rýchlo odhadol heslá používateľov? Táto obava je veľmi reálna. Preto moderné systémy, vrátane Splync, sa nespoliehajú na obyčajný SHA-256.

Splync hashuje heslá pomocou bcrypt — silnejšie ako SHA-256

Bcrypt používa náhodnú "soľ" pre každého používateľa a zakóduje túto soľ (a náklady) priamo do uloženého hash reťazca. Predstavte si bcrypt ako mixér s tajným korením (soľou) a pomalým motorom (pracovný faktor) — robí každú zmes unikátnou a ťažšie kopírovateľnou. Pretože soľ má 128 bitov (≈3×10³⁸ možností), rovnaké heslo môže mapovať na astronomicky veľký počet rôznych uložených hashov. To robí predpočítané rainbow tables na veľkej škále nepoužiteľnými. Pri prihlásení Splync číta soľ a náklady z uloženého bcrypt reťazca, znovu spustí bcrypt na zadanom hesle s týmito parametrami a porovná výsledok s uloženým hashom. Ak sa zhodujú, heslo je správne — ale pretože bcrypt je úmyselne pomalý a soli sú unikátne, útoky hrubou silou sú pre útočníka oveľa nákladnejšie.

Jednoduchý príklad s bcrypt

Pozrime sa, ako to vyzerá v praxi. Ak zašifrujete heslo "splync1234" pomocou bcrypt (s nákladmi 12), môžete získať reťazec ako tento: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. V tomto bcrypt reťazci, `$2b` označuje verziu algoritmu, `$12` ukazuje faktor nákladov (koľkokrát je heslo spracované), `gBeouKYdue9uvvuV0HtGgeV` je unikátna náhodná soľ a `PymnrojMqP/wcRw28HFlGEGIQbyw7O` je konečné zašifrované heslo. Pretože samotný hash obsahuje soľ a náklady, Splync môže zopakovať rovnaký proces hashovania na overenie extrahovaním týchto hodnôt z uloženého reťazca a porovnaním výsledku. Na druhej strane, ak útočník nepozná soľ a náklady, nemôže vytvoriť jedinú rainbow table, ktorá by fungovala pre každého používateľa.

Zašifrované heslá poskytujú dvojitú ochranu

Tento prístup má ďalšiu dôležitú výhodu. Pretože Splync nikdy neukladá heslá v čistej podobe, aj keby bola databáza uniknutá alebo ukradnutá, používatelia nie sú okamžite v ohrození. Útočníci nemôžu priamo prihlasovať so získanými dátami, pretože majú iba zamiešané reťazce. Tento dizajn poskytuje používateľom ďalšiu vrstvu ochrany, nad rámec existujúcich zabezpečení okolo samotného servera. Hashovanie hesiel nie je unikátne pre Splync; je to štandard v technologickom priemysle, využívaný gigantmi ako Google, Apple a Amazon. Splync bol vybudovaný veľmi bezpečne a bude sa len zlepšovať, ako budeme pokračovať v zvyšovaní bezpečnosti s funkciami ako overenie e-mailom, ochrana pred hrubou silou a neustály monitoring.