Typ hesla, ktoré by ste si mali vytvoriť, má veľa spoločného so spôsobom uloženia hesla.

Pred rokmi boli osemmiestne náhodné heslá pozostávajúce z veľkých a malých písmen, symbolov a číslic naozaj ťažké rozlúštiť. V niektorých prípadoch trvalo prelomenie takéhoto hesla roky.

Vďaka dnešnej meniacej sa technike a prenajímateľným strojom sa tento čas skrátil na hodiny. Ako sa však tieto heslá ukladajú?

Ako sa heslá ukladajú online

Systémy neukladajú heslá používateľov priamo do súborov alebo databáz, pretože útočníci môžu prevziať databázu, v ktorej si heslá uchovávajú. Namiesto toho systémy šifrujú heslá používateľov a útočníci sa stretávajú so zašifrovanou verziou každého hesla.

Existuje niekoľko algoritmov, ktoré systémy používajú na šifrovanie hesiel. Jedným z týchto algoritmov je symetrický algoritmus. Symetrický algoritmus je typ šifrovania kde môžete použiť rovnaký kľúč na šifrovanie aj dešifrovanie. Kľúč, ktorý použijete na šifrovanie údajov, je rovnaký pre šifrovanie aj dešifrovanie. Bezpečnosť symetrických algoritmov prináša určité riziká, pretože na dešifrovanie existuje iba jeden kľúč. Z tohto dôvodu systémy vo všeobecnosti nepoužívajú symetrické algoritmy na šifrovanie hesiel.

instagram viewer

Vo všeobecnosti je metóda, ktorú systémy používajú na šifrovanie, hašovacie algoritmy. Hašovacie algoritmy slúžia na overenie a reprezentáciu integrity údajov, nie na šifrovanie údajov. Hašovacie algoritmy konvertujú údaje na hash s pevnou veľkosťou. Tieto hodnoty hash zvyčajne predstavujú jedinečný hash údajov.

Vďaka hashovaciemu algoritmu, ak útočník prevzal databázu hesiel, útočník odtiaľto nemôže získať prístup k heslu spätne. Tu je veľmi dôležitá nuansa, ktorej by ste mali venovať pozornosť. Teoreticky môže útočník, ktorý kompromituje systém, ktorý používa rovnaký hash algoritmus pre všetky kombinácie hesiel, porovnávať získané výsledky. Ak útočník v dôsledku týchto porovnaní vytvorí rovnakú hodnotu, útočník zistil, aká je otvorená verzia hesla. Táto metóda je o pokuse a omyle a táto forma útoku je všeobecne nazývaný útok hrubou silou.

Na začiatku roku 2000 mohlo trvať stovky rokov, kým sa vyskúšali všetky kombinácie pre 8-znakové heslá zašifrované populárnymi hashovacími algoritmami. Samozrejme, toto nezahŕňa veľmi jednoduché kombinácie ako „123456“ alebo „moje heslo“ v tejto sade. S rozvojom dnešných softvérových a hardvérových technológií sa veľmi zmenil aj spôsob lámania hesiel.

Vplyv vznikajúcich GPU

Možnosti paralelného spracovania dát grafických procesorov (GPU) sa postupom času zlepšili. GPU nie sú schopné vykonávať všestranné operácie ako univerzálne CPU. Takže aj keď existujú toľko jadier a výkon paralelného spracovania, nemá zmysel ich používať na takmer každý problém, ako je CPU.

Napriek tomu je možné na GPU pomerne efektívne vykonávať niektoré hashovacie algoritmy používané pre heslá. Vypočítateľné hodnoty hash za sekundu, ktoré môžete dosiahnuť s tradičnými procesormi, sa s novými platformami GPU ohromne rozrástli.

Ak chcete získať predstavu, v nižšie uvedenej tabuľke preskúmajte hašovacie čísla za sekundu hašovacích algoritmov, ako sú NTLM, MD5 a SHA1. Zatiaľ stačí vedieť, že tieto algoritmy sú len hashovacím algoritmom. Na vytvorenie tejto tabuľky som použil klastrový systém pozostávajúci z 25 GPU AMD Radeon.

Algoritmus

Hašovanie za sekundu

NTLM

350.000.000.000

MD5

180.000.000.000

SHA1

63.000.000.000

Krypta SHA512

364.000

Bcrypt

71.000

Scrypt

33.000

Ako vidíte, s takýmto systémom môžete generovať NTLM hash 350 miliárd krát za sekundu. To znamená, že môžete vyskúšať všetky kombinácie 8-znakového hesla za menej ako 6 hodín. Navyše hardvér v tomto príklade patrí spred rokov. Predstavte si dnešnú silu lámania hesiel.

Čo by mali robiť vývojári softvéru?

Spôsob, akým by sa programátori mali uberať, je pomerne jednoduchý: mali by uprednostňovať algoritmy, ktorým pri šifrovaní hesiel trvá výpočet hash hodnôt dlhšie. Vývojári sa musia dozvedieť nielen o výkone algoritmu, ktorý používajú na CPU, ale aj o tom, ako odolný je voči svetu GPU.

Ak vývojári pracujú so softvérovým rámcom, ktorý rieši aj procesy šifrovania hesiel, ako napríklad Django, Ruby on Rails a Spring Security by mali skontrolovať, či boli v rámci tohto rámca prijaté správne rozhodnutia bezpečnosť.

Napríklad, Vymyslieť, jedna z najpoužívanejších knižníc na používateľské operácie v Ruby on Rails, používa Bcrypt ako predvolený hašovací algoritmus. Umožňuje vám tiež použiť inú metódu ako hashovací algoritmus. Algoritmus Bcrypt je spoľahlivý, pretože stále trvá veľmi dlho, kým sa GPU zlomí.

Stručne povedané, čím dlhšie výpočet hash hodnoty trvá, tým ste bezpečnejší.

Koľko znakov by malo mať vaše heslo?

Každý ďalší znak, ktorý použijete, geometricky zvýši počet pokusov a omylov potrebných na prelomenie vášho hesla a zvýši bezpečnosť vášho hesla.

Pozrime sa na túto situáciu prostredníctvom dvoch rôznych scenárov. Zvážte hodnoty v tabuľke vyššie pre hashovací algoritmus NTLM a predstavte si, že sa pokúsite prelomiť heslo. Predstavte si zacielenie na heslá s ôsmimi alebo viac znakmi.

Počet znakov

Veľké/malé písmená a čísla

Veľké/malé písmená, čísla a špeciálne symboly

8

menej ako 1 minútu

2 minúty

9

2 minúty

2 hodiny

10

2 hodiny

1 týždeň

11

6 dní

2 roky

12

1 rok

200 rokov

13

viac ako 100 rokov

viac ako 1000 rokov

Keď si prezriete tabuľku, uvidíte, že použitie minimálne 12-miestneho hesla je bezpečné, keď použijete všetky kombinácie veľkých/malých písmen, číslic a špeciálnych symbolov. Ak nepoužívate špeciálne symboly, ukázalo sa, že ako bezpečnú dĺžku hesla musíte použiť 13 znakov. Ak by ste v tomto systéme použili namiesto NTLM hash metódu Bcrypt, stačilo by 8 znakov. Nemáte však možnosť vedieť, akou metódou hash si systém, do ktorého zadáte cez web, uchováva vaše heslo. Preto by ste mali zvážiť všetky možnosti.

Hlavným problémom vývojárov softvéru je, že je takmer nemožné presvedčiť používateľov, aby mali minimálne 12-znakové heslo. Dnes je možné povedať, že miera používania hesla tejto dĺžky je nízka. Preto podľa scenára používania vyvinutého systému bude potrebné nájsť strednú cestu, ktorá bude akceptovaná používateľmi na zlepšenie zabezpečenia ich hesiel.

posledným návrhom pre vývojárov je skontrolovať nielen minimálnu dĺžku, ale aj maximálnu dĺžku vstupov prichádzajúcich cez formuláre, ktoré ste predložili používateľovi. Najmä ak povolíte používanie pomaly vypočítateľného hashového algoritmu, ako je napríklad Bcrypt na zabezpečenie Ak neovládate maximálnu dĺžku zadávaného hesla, môžete sa stretnúť s určitými rizikami používateľ. Útočníci môžu napríklad vykonávať útoky skúšaním desiatok hesiel s dĺžkou 100 tisíc znakov súčasne s niektorými špeciálne pripravenými požiadavkami. V takom prípade je vysoko pravdepodobné, že váš systém prestane reagovať na ostatných používateľov.

Rady pre koncových používateľov

Nastavte dĺžku hesla na minimálne 12 znakov a uistite sa, že obsahuje kombinácie veľkých a malých písmen, čísla a symboly. Nikdy nezabudnite, že systémy, ktoré uchovávajú vaše heslo, môžu byť napadnuté a vaše informácie môžu byť zneužité. Nemôžete vedieť, ktoré algoritmy systém používa na šifrovanie vášho hesla, takže je úplne na vás, aby ste prijali preventívne opatrenia a vytvorili silné heslá.