"Aplikace ukládá hesla zašifrovaná" slyšíš často, ale u přihlašovacího hesla (na rozdíl od obsahu trezoru) jde technicky o něco jiného — hashování, ne šifrování. Rozdíl je důležitý, i když to zvenku vypadá podobně.
Hash: jednosměrná cesta
Šifrování se dá odšifrovat zpátky, pokud máš klíč. Hash ne — je to jednosměrná matematická funkce, která z hesla udělá nesmyslný řetězec znaků, ze kterého se původní heslo nedá zpátky vypočítat. Aplikace při přihlášení jen znovu spočítá hash z toho, co zadáš, a porovná ho s uloženým — nikdy heslo samotné neporovnává.
K čemu je salt
Kdyby dva lidi měli stejné heslo, měli by (bez saltu) i stejný hash — a útočník s předpočítanou tabulkou běžných hashů by uhodl obě hesla najednou. Salt je náhodná hodnota přidaná ke každému heslu zvlášť, než se spočítá hash, takže i identická hesla dají různý výsledek. Aplikace navíc do saltu zamíchá i tvůj email, takže hash je unikátní i mezi aplikacemi.
Proč tohle chrání i tebe, ne jen aplikaci
Kdyby se útočník někdy dostal k databázi aplikace (u kohokoliv, ne jen u nás), hashovaná a solená hesla mu k ničemu nejsou — nemá cestu zpátky k původnímu heslu. Je to poslední obranná linie, i kdyby všechno ostatní selhalo.