Splync nikdy neukládá vaše heslo v čitelném textu
V předchozích článcích jsme zkoumali, jak HTTPS chrání cestu mezi vaší aplikací a naším serverem a jak SSH zabezpečuje samotný server. Nyní je čas podívat se dovnitř serveru — na to, jak Splync chrání vaše heslo, jakmile tam dorazí. Pokud by někdo získal vaše heslo, mohl by se přihlásit do vašeho účtu a získat přístup k citlivým informacím, včetně záznamů o výdajích. Proto Splync nikdy neukládá hesla v čitelném textu. Místo toho je každé heslo převedeno na hashovanou verzi před uložením do databáze. Co to přesně znamená? Hashování je jednosměrná konverze — jakmile je heslo převedeno, nelze ho zpětně převést do původní podoby. Tato metoda je standardem na internetu, od bank po velké cloudové služby, přesto mnoho lidí neví, jak přesně funguje. Pojďme to prozkoumat jednoduchým každodenním přirovnáním.
Základy hashování: Mixér, který vždy míchá stejně
Pro pochopení, jak ochrana hesel funguje, začněme jednoduchou hashovací metodou zvanou SHA-256. Představte si to jako mixér, který vždy míchá ingredience stejným způsobem. Pokud do mixéru vložíte stejné heslo a stisknete tlačítko, vždy dostanete stejný unikátní smoothie — zamotanou směs písmen a čísel. Klíčovou myšlenkou je, že tento proces nelze zpětně obrátit. Stejně jako nemůžete vzít smoothie a rozdělit ho zpět na původní banán a mléko, nemůžete vzít zamotaný hash a obnovit původní heslo.
Příklad SHA-256: Jak ověřit hesla bez jejich znalosti
SHA-256 je jedním z nejběžnějších hashovacích algoritmů. Například heslo "splync1234" se hashuje na “9cdafa20d069ecfb202e5f0bc937c73071cc6cd85634cc2d95d30ddcf2a71d41”. Při každém přihlášení uživatele do aplikace se v milisekundách vždy vytvoří stejný hash hesla. Aplikace jednoduše znovu zahashuje zadané heslo a zkontroluje, zda se shoduje s uloženým hashem. Systém nikdy nezná původní heslo uživatele. Ale co když útočník předem vytvoří seznam běžných hesel a jejich hashů (tzv. útok duhovou tabulkou), aby rychle odhadl hesla uživatelů? Tato obava je velmi reálná. Proto moderní systémy, včetně Splync, nespoléhají na čisté SHA-256.
Splync hashuje hesla pomocí bcryptu — silnější než SHA-256
Bcrypt používá náhodnou sůl pro každého uživatele a zakóduje tuto sůl (a faktor nákladů) přímo do uloženého řetězce hashe. Představte si bcrypt jako mixér s tajným kořením (sůl) a pomalým motorem (pracovní faktor) — dělá každý mix unikátní a obtížněji kopírovatelný. Protože sůl má 128 bitů (≈3×10³⁸ možností), stejné heslo se může mapovat na astronomicky velké množství různých uložených hashů. To činí předem vytvořené duhové tabulky neefektivními v rozsahu. Při přihlášení Splync přečte sůl a náklady z uloženého řetězce bcryptu, znovu spustí bcrypt na zadaném heslu s těmito parametry a porovná výsledek s uloženým hashem. Pokud se shodují, heslo je správné — ale protože bcrypt je záměrně pomalý a soli jsou unikátní, útoky hrubou silou se pro útočníka stávají mnohem nákladnějšími.
Snadný příklad s bcryptem
Podívejme se, jak to vypadá v praxi. Pokud zahashujete heslo "splync1234" pomocí bcryptu (s použitím faktoru nákladů 12), můžete získat řetězec jako tento: `$2b$12$gBeouKYdue9uvvuV0HtGgeVPymnrojMqP/wcRw28HFlGEGIQbyw7O`. V tomto řetězci bcryptu, `$2b` označuje verzi algoritmu, `$12` ukazuje faktor nákladů (kolikrát je heslo zpracováno), `gBeouKYdue9uvvuV0HtGgeV` je unikátní náhodná sůl a `PymnrojMqP/wcRw28HFlGEGIQbyw7O` je konečné zahashované heslo. Protože hash sám obsahuje sůl a náklady, Splync může reprodukovat stejný hashovací proces pro ověření tím, že tyto hodnoty extrahuje z uloženého řetězce a porovná výsledek. Na druhou stranu, pokud útočník nezná sůl a náklady, nemůže vytvořit jedinou duhovou tabulku, která by fungovala pro každého uživatele.
Hashovaná hesla nabízejí dvojnásobnou ochranu
Tento přístup má další důležitou výhodu. Protože Splync nikdy neukládá hesla v čitelném textu, ani pokud by databáze byla uniklá nebo ukradena, uživatelé nejsou okamžitě v ohrožení. Útočníci se nemohou přihlásit přímo s ukradenými daty, protože to, co mají, jsou pouze zamotané řetězce. Tento design poskytuje uživatelům další vrstvu ochrany, nad rámec zabezpečení, které již existuje kolem samotného serveru. Hashování hesel není unikátní pro Splync; je to standard v technologickém průmyslu, používaný giganty jako Google, Apple a Amazon. Splync byl postaven velmi bezpečně a bude ještě bezpečnější, jak budeme pokračovat ve zlepšování bezpečnosti s funkcemi jako ověřování e-mailu, ochrana proti hrubé síle a průběžný monitoring.