Prečo by ste sa mali obávať, keď dôjde k úniku databázy hesiel služby
"Včera sme ukradli našu databázu hesiel. Ale nebojte sa: vaše heslá boli zašifrované. "Pravidelne vidíme vyhlásenia, ako je tento online, vrátane včera aj od spoločnosti Yahoo. Ale mali by sme skutočne vziať tieto záruky v nominálnej hodnote?
Realita je kompromisy databázy hesiel sú obavy, bez ohľadu na to, ako sa spoločnosť môže pokúsiť točiť. Existuje však niekoľko vecí, ktoré môžete urobiť, aby ste sa izolovali, bez ohľadu na to, aké zlé sú bezpečnostné postupy spoločnosti.
Ako majú byť uložené heslá
Tu je postup, ako by firmy mali ukladať heslá v ideálnom svete: Vytvorte si účet a zadajte heslo. Namiesto samotného uloženia hesla služba generuje z hesla "hash". Jedná sa o jedinečný odtlačok prsta, ktorý sa nedá zvrátiť. Napríklad heslo "heslo" sa môže zmeniť na niečo, čo vyzerá viac ako "4jfh75to4sud7gh93247g ...". Keď zadáte svoje heslo na prihlásenie, služba generuje hash z neho a skontroluje, či hodnota hash zodpovedá hodnote uloženej v databáze. V žiadnom okamihu služba nikdy neuloží heslo na disk.
Ak chcete určiť svoje skutočné heslo, útočník s prístupom do databázy bude musieť predbežne vypočítať hash pre bežné heslá a potom skontrolovať, či existujú v databáze. Útočníci to robia pomocou vyhľadávacích tabuliek - obrovské zoznamy hash, ktoré zodpovedajú heslám. Háčky je potom možné porovnať s databázou. Napríklad, útočník by poznal hash pre "heslo1" a potom zistiť, či akékoľvek účty v databáze používajú tento hash. Ak sú, útočník vie, že ich heslo je "heslo1".
Aby sa tomu zabránilo, služby by mali "soľovať" ich hash. Namiesto vytvárania hash z samotného hesla pridať náhodný reťazec na frontu alebo na koniec hesla pred jeho zhášaním. Inými slovami, používateľ by zadal heslo "heslo" a služba by pridala soľ a hash heslo, ktoré vyzerá skôr ako "password35s2dg." Každý užívateľský účet by mal mať svoju vlastnú unikátnu soľ a to by zabezpečilo, že každý užívateľský účet by mala inú hodnotu hash pre svoje heslo v databáze. Aj keď viaceré účty používali heslo "heslo1", mali by mať rôzne hash kvôli rôznym hodnotám soli. To by porazilo útočníka, ktorý sa snažil predbežne vypočítať heslá pre heslá. Namiesto toho, aby dokázali generovať hash, ktorý by sa vzťahoval na každý používateľský účet v celej databáze naraz, museli vytvoriť jedinečné hash pre každý používateľský účet a jeho jedinečnú soľ. Toto by vyžadovalo oveľa viac výpočtového času a pamäte.
To je dôvod, prečo sa služby často nemusia obávať. Služba, ktorá používa správne bezpečnostné postupy, by mala povedať, že používajú solené heslá. Ak jednoducho hovoria, že heslá sú "hashed", je to viac znepokojujúce. LinkedIn napríklad obsahovali heslá, ale nekomplikovali ich - takže to bolo veľké riešenie, keď spoločnosť LinkedIn v roku 2012 stratila 6,5 milióna hesiel..
Zlé heslo postupy
Nie je to najťažšia vec, ktorú je možné implementovať, ale mnohé webové stránky ho stále dokážu vyriešiť rôznymi spôsobmi:
- Ukladanie hesiel v bežnom texte: Skôr než sa obťažovať hašovaním, niektorí z najhorších páchateľov môžu jednoducho vyzdvihnúť heslá vo forme obyčajného textu do databázy. Ak je takáto databáza ohrozená, vaše heslá sú zjavne ohrozené. Nezáležalo by na tom, aké silné boli.
- Hashing hesiel bez ich osolovania: Niektoré služby môžu rozoslať heslá a dať sa tam, pričom sa rozhodnú nepoužívať soli. Takéto databázy hesiel by boli veľmi náchylné na vyhľadávacie tabuľky. Útočník by mohol vygenerovať hash pre mnoho hesiel a potom skontrolovať, či existujú v databáze - mohli by to urobiť pre každý účet naraz, ak sa nepoužila soľ.
- Opätovné použitie soli: Niektoré služby môžu používať soľ, ale môžu znova použiť rovnakú soľ pre každé heslo účtu používateľa. To je zbytočné - ak by bola rovnaká soľ použitá pre každého používateľa, dvaja používatelia s rovnakým heslom by mali rovnaký hash.
- Použitie krátkych solí: Ak sa používajú iba soli s niekoľkými číslicami, bolo by možné vytvoriť vyhľadávacie tabuľky, ktoré obsahujú každú možnú soľ. Napríklad, ak bola použitá jediná číslica ako soľ, útočník by mohol ľahko vytvoriť zoznamy hashov, ktoré zahŕňajú každú možnú soľ.
Firmy vám nie vždy povedia celý príbeh, takže aj keď sa hovorí, že heslo bolo rušené (alebo hashed a solené), nemusí používať osvedčené postupy. Vždy sa chyťte na strane opatrnosti.
Ďalšie obavy
Je pravdepodobné, že hodnota soli je tiež prítomná v databáze hesiel. Nie je to tak zlé - ak by sa pre každého používateľa použila jedinečná hodnota soli, útočníci by museli minúť obrovské množstvo výkonu procesora, ktoré by porušilo všetky tieto heslá.
V praxi toľko ľudí používa zrejmé heslá, že by bolo pravdepodobne ľahké určiť heslá mnohých užívateľských účtov. Napríklad, ak útočník pozná vašu hash a pozná vašu soľ, môže ľahko skontrolovať, či používate niektoré z najbežnejších hesiel.
Ak to má útočník za vás a chce si vykrojiť svoje heslo, môžu to robiť s hrubou silou, pokiaľ vedia hodnotu soli - čo pravdepodobne robia. Pri lokálnom, offline prístupu k databázam s heslami môžu útočníci použiť všetky útoky na brutálnu silu, ktoré chcú.
Ostatné osobné údaje tiež pravdepodobne uniknú pri odcudzení databázy hesiel: používateľské mená, e-mailové adresy a ďalšie. V prípade úniku Yahoo sa vyskytli aj bezpečnostné otázky a odpovede - ktoré, ako všetci vieme, uľahčili ukradnutie prístupu k účtu niekoho.
Pomoc, čo mám robiť?
Bez ohľadu na to, čo hovorí služba pri odcudzení databázy hesiel, je najlepšie predpokladať, že každá služba je úplne nekompetentná a koná podľa toho.
Najprv nepoužívajte heslá na viacerých webových stránkach. Použite správcu hesiel, ktorý generuje unikátne heslá pre každú webovú stránku. Ak sa útočník podarí zistiť, že vaše heslo pre službu je "43 ^ tSd% 7uho2 # 3" a používate toto heslo len na jednom konkrétnom webe, nenašli sa nič užitočné. Ak používate rovnaké heslo všade, mohli by mať prístup k vašim ďalším účtom. To je, koľko účtov mnohých ľudí sa stane "napadnutým".
Ak sa služba stane kompromitáciou, nezabudnite zmeniť heslo, ktoré tam používate. Mali by ste tiež zmeniť heslo na iných stránkach, ak ich znovu používate - ale nemali by ste to robiť na prvom mieste.
Mali by ste tiež zvážiť použitie dvojfaktorovej autentifikácie, ktorá vás ochráni, aj keď sa útočník naučí vaše heslo.
Najdôležitejšia vec nie je opätovné používanie hesiel. Kompromisné databázy hesiel nemôžu ublížiť, ak používate všade jedinečné heslo - ak v databáze nie sú uložené niečo iné, ako napríklad číslo vašej kreditnej karty.
Image Credit: Marc Falardeau na Flickr, Wikimedia Commons