Proč byste se měli obávat, kdykoli dochází k úniku databáze hesel služby
"Včera jsme ukradli databázi hesel. Ale nebojte se: vaše hesla byla zašifrována. "Pravidelně vidíme prohlášení, jako je tento, online, včetně včera, od společnosti Yahoo. Ale měli bychom tyto ujištění skutečně vzít v nominální hodnotě?
Realita je kompromisy v databázi hesel jsou obavy, bez ohledu na to, jak se společnost může pokusit točit. Existuje však několik věcí, které můžete udělat, abyste se izolovali, bez ohledu na to, jak jsou špatné bezpečnostní postupy společnosti.
Jak mají být uloženy hesla
Zde je postup, jakým by firmy měly ukládat hesla v ideálním světě: Vytvoření účtu a zadání hesla. Místo samotného uložení hesla služba generuje z hesla "hash". Jedná se o jedinečný otisk, který nelze obrátit. Například heslo "heslo" se může změnit na něco, co vypadá více jako "4jfh75to4sud7gh93247g ...". Po zadání hesla k přihlášení služba generuje hash z ní a zkontroluje, zda hodnota hash odpovídá hodnotě uložené v databázi. V žádném okamžiku služba nikdy neukládá heslo na disk.
K určení skutečného hesla by útočník s přístupem k databázi musel předběžně vypočítat hash pro běžné hesla a pak zkontrolovat, zda existují v databázi. Útočníci to dělají pomocí vyhledávacích tabulek - obrovských seznamů hashů, které odpovídají heslům. Hash lze pak porovnat s databází. Například by útočník znal "hash" pro "password1" a pak zjistit, zda nějaké účty v databázi používají tento hash. Pokud ano, útočník ví, že heslo je "heslo1".
Aby tomu zabránilo, služby by měly "sůl" své hash. Namísto vytváření hash z hesla samotného přidá náhodný řetězec na přední nebo konec hesla před tím, než je spustí. Jinými slovy, uživatel by zadal heslo "heslo" a služba by přidala sůl a hash heslo, které vypadá spíše jako "password35s2dg." Každý uživatelský účet by měl mít své vlastní jedinečné soli a to by zajistilo, že každý uživatelský účet by měl mít jinou hodnotu hash pro své heslo v databázi. Dokonce i v případě, že více hesel používal heslo "heslo1", měly by různé hashy kvůli různým hodnotám soli. To by porazilo útočníka, který se pokusil předběžně vypočítat hesla pro hesla. Namísto toho, aby dokázali generovat hash, který by se vztahoval na každý uživatelský účet v celé databázi najednou, museli generovat unikátní hash pro každý uživatelský účet a jeho jedinečnou sůl. To by vyžadovalo mnohem větší výpočetní dobu a paměť.
To je důvod, proč služby často říkají, že se nemusíte obávat. Služba využívající správné bezpečnostní postupy by měla říci, že používá slané heslo hash. Pokud prostě říkají, že hesla jsou "hashed", je to více znepokojující. LinkedIn například šetřil hesla, ale nechtěli je sladit - tak to bylo velké řešení, když LinkedIn v roce 2012 ztratil 6,5 milionu hesel..
Špatné heslo
Není to nejtěžší věc, kterou je třeba implementovat, ale mnoho webových stránek se jí stále může dostat různými způsoby:
- Ukládání hesel v běžném textu: Spíše než obtěžovat hašováním, někteří z nejhorších pachatelů mohou jen vynechat hesla ve formátu prostého textu do databáze. Pokud je taková databáze ohrožena, vaše hesla jsou zřejmě ohrožena. Nezáleželo by na tom, jak silné jsou.
- Hashing hesla, aniž by je osedlal: Některé služby mohou mít hesla a tam se vzdát, přičemž se rozhodly nepoužívat soli. Takové databáze hesel by byly velmi vyhledávací tabulky velmi zranitelné. Útočník by mohl generovat hash pro mnoho hesel a pak zkontrolovat, zda existují v databázi - mohli by to udělat pro každý účet najednou, pokud nebyla použita žádná sůl.
- Opětovné použití soli: Některé služby mohou používat sůl, ale mohou znovu použít stejnou sůl pro každé heslo účtu uživatele. To je zbytečné - pokud by byla stejná sůl použita pro každého uživatele, dva uživatelé se stejným heslem by měli stejný hash.
- Použití krátkých solí: Pokud se používají soli jen několika číslic, bylo by možné vytvořit vyhledávací tabulky, které obsahují všechny možné soli. Například pokud byla jako sůl použita jedna číslice, útočník mohl snadno generovat seznamy hashů, které obsahovaly všechny možné soli.
Firmy vám vždy neřeknou celý příběh, takže i když říkají, že heslo bylo šachováno (nebo hashováno a osolené), nemusí používat nejlepší postupy. Vždy se mýlíte opatrně.
Další obavy
Je pravděpodobné, že hodnota soli je také obsažena v databázi hesel. To není tak špatné - kdyby byla pro každého uživatele použita jedinečná hodnota soli, útočníci by museli utrácet obrovské množství výkonu procesoru, který by porušil všechna tato hesla.
V praxi tolik lidí používá zřejmé hesla, že by bylo snadné určit mnoho hesel uživatelů účtů. Například, pokud útočník zná vaše hash a zná svou sůl, mohou snadno zkontrolovat, zda používáte některé z nejběžnějších hesel.
Pokud vás útočník vyhraje a chce své heslo vyškrábat, mohou to udělat s hrubou silou, pokud budou znát hodnotu soli - což pravděpodobně dělají. S lokálním, offline přístupem k databázím hesel mohou útočníci využívat všechny útoky na hrubou sílu, které chtějí.
Jiné osobní údaje také pravděpodobně úniku při odcizení databáze hesel: uživatelské jména, e-mailové adresy a další. V případě výskytu úniku Yahoo došlo také k úniku bezpečnostních otázek a odpovědí - což, jak všichni víme, ulehčuje ukrást přístup k něčímu účtu.
Nápověda, co mám dělat?
Bez ohledu na to, co služba říká, když je její databáze hesel ukradena, je nejlepší předpokládat, že každá služba je zcela nekompetentní a jedná podle toho.
Nejprve nepoužívejte hesla na více webových stránkách. Používejte správce hesel, který generuje pro každé webové stránky jedinečná hesla. Pokud se útočník podaří zjistit, že vaše heslo pro službu je "43 ^ tSd% 7uho2 # 3" a použijete toto heslo pouze na jednom konkrétním webu, nenašli jste nic užitečného. Používáte-li všude stejné heslo, mohli se dostat do vašich ostatních účtů. To je, jak mnoho účtů lidí se stává "napadeno".
Pokud dojde k narušení služby, nezapomeňte změnit heslo, které zde používáte. Měli byste také změnit heslo na jiných webech, pokud jej znovu použijete - ale neměli byste to dělat na prvním místě.
Měli byste také zvážit použití dvoufaktorového ověřování, které vás ochrání, i když se útočník dozví vaše heslo.
Nejdůležitější věc není opětovné použití hesel. Databáze kompromitovaných hesel vám nemohou ublížit, pokud používáte všude jedinečné heslo - pokud v databázi nejsou uložena něco jiného, jako je číslo vaší kreditní karty.
Image Credit: Marc Falardeau na Flickru, Wikimedia Commons