Co je silné heslo rubrika: Programování: Jiné

2 bigboban
položil/-a 7.7.2014

Rád bych možná znovu na tomto místě rozproudil diskusi o síle hesla.

Proč i tento web má naprosto nesmyslně zavednou povinnost na "hnusné" znaky v hesle? Čeho se tím dosáhne? Nikdy jsem tenhle nesmysl nechápal, vždyť přeci přidání pár znaků do sady zvedne složitost hesla jen minimálně. A navíc kdo by se snažil brute-forcem prolomit heslo na web? Copak už někdy někdo takový úrok dělal? A pokud bude dělat brute-force útok tak spíše na od-hashování ukradených hashů a tam je celkem fuk jaká byla sada znaků spíš jde o délku hesla ne?

Opravdu by mě zajímalo jestli mi něco uniká a tato ptákovina má nějaký reálný důvod.

Komentáře

  • David Adamczyk : Pokud jste informatik pravdepodobne jste se ve skole ucil neco o entropii, pokud ne nastudujte si to. Pro ukazku treba http://csrc.nist.gov/archive/pki-twg/y2003/presentations/twg-03-05.pdf 12.7.2014
  • spazef0rze : Samotná entropie k určení síly hesla nestačí. Viz třeba již několikrát zmíněné Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn 12.7.2014
  • David Adamczyk : Proc neuvedes konkretni zdroj kde je to uvedeno? jestlize mam 2 hesla a chci zjistit ktere z nich je silnejsi, tak si to nevycucam z prstu (taky muzu urcit ktere zavazi je tezsi protoze je hodim na vahu a uvidim ze jedno ma 10kg druhe 1kg). Ja teda netvrdim ze IT je alchymie, tady na wiki http://en.wikipedia.org/wiki/Password_strength je obdoba toho co je v prezentaci kterou jsem tady hodil. Takze jak odvodis silu hesla abys mohl porovnat 2 ruzne hesla? chci aspon vzorec, dukaz byt nemusi ale bodl by ;) 13.7.2014
  • spazef0rze : Co třeba tenhle zdroj a vlákno nebo to, co říkám v odpovědi níže v posledním odstavci? Ověřit a spočítat se to dá jednoduše: mám dvě hesla, mají velmi zhruba stejnou entropii, jedno heslo je 3Xk*D,XX#90%wyt.| ZEX~Ppwoc* a druhé je Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn. Které z nich je silnější a proč? Entropie tak jak se běžně počítá ukazuje odolnost proti útokům hrubou silou, ne proti slovníkovým nebo hybridním útokům. Odolnost proti takovým útokům nelze jednoduše a rychle změřit. Odvodit sílu hesla ze samotného hesla tedy nejde. Ale chápu, že lidi pořád potřebují něco porovnávat a entropie se na porovnávání síly hesel na první pohled hodí. Důkaz? Jasně, proč ne: zxcvbn (jinak výborně zpracovanej nástroj) tvrdí, že heslo correcthorsebatterystaple se bude crackovat 65 let. Google si o tom myslí něco jiného. Vzorec na tohle neznám :-( Srovnání entropie s váhou závaží je fajn, ale jestli mi to crackne prsty na noze, když to na ni spadne, tak to bez znalosti bot, který zrovna budu mít, nedokážu přesně říct. 13.7.2014
  • David Adamczyk : Ok, beru asi jsem se v puvodnim prispevku nevyjadril dostatecne jasne, zatim vsechny clanky co jsem na toto tema kdy cetl mely nejaky vyskyt slova entropie, no a z dotazu vyplyvalo ze ten clovek asi vubec netusi o co jde tak jsem ho chtel nasmerovat na nejaky vychozi bod aby potom mohl klidne pokracovat dale. Tech zpusobu vypoctu je docela hodne, pekne to vystihuje tabulka pro porovnavani 3 ruznych hesel https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-esti... co se tyce slovnikovych metod nevim jestli by v dnesni dobe nebylo lepsi resit spise vsude povinne zavedeni dvoufaktorove autentizace tak jak to ma treba GitHub (mimochodem, velmi pekne vyreseno, takhle by se mi to libilo vsude :-) ) 13.7.2014
  • spazef0rze : Já taky neměl nic proti entropii, jen je potřeba pokračovat dál, jak sám říkáš :-) 2FA by bylo moc fajn, jen to má taky svoje mouchy (v případě použití SMS tou mouchou je zákeřná aplikace, která ty SMS čte a posílá útočníkovi) nebo chyba implementace (já vím, už je to blbý odkazovat na svoje slajdy, ale tady o tom píšu). Ale rozhodně to je dobrá doporučeníhodná věc. Btw, dík za ten link na http://csrc.nist.gov/archive/pki-twg/y2003/presentations/twg-03-05.pdf 14.7.2014
  • tkraut : Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn má (podmíněnou) entropii malou, protože je na wikipedii. Takže teoreticky k určení síly hesla stačí. 14.7.2014
  • spazef0rze : Dík za link, tkraut. Ono je víc způsobů, jak entropii spočítat. Liší se třeba i entropie hesla correcthoresebatterystaple tak jak jí spočítal XKCD (44b) a tak jak jí počítá zxcvbn (45.2b). Podmíněná entropie by byla asi hodně malá. 14.7.2014
  • Anonym : Entropie se dá určit jen pro známou (nebo předpokládanou) pravděpodobnost hesla. Pro correcthorsebatterystaple, pokud předpokládám náhodný výběr mezi všemi hesly určité délky, vyjde dejme tomu 120 bitů, pokud předpokládám hesla složená z náhodně výbraných čtyř slov ze slovníku 1024 slov, vyjde 40 bitů. Pokud toto heslo použijete dnes, bude možná na seznamu top 1024 hesel a informace je 10 bitů. Mimochodem password reuse také snižuje entropii hesla, pro ty, kdo již heslo znají a ví, že ho s vysokou pravděpodobností použijete znovu. Zkrátka relevantní entropie hesla je ta, která vychází z pravděpodobnosti, kterou heslu přisoudí útočník. Dobré heslo je takové, které má vysokou entropii (malou pravděpodobnost použití) i pro vás samotné. Pokud střídáte dvě hesla (libovolně dlouhá), mají vaše hesla entropii 1 bit :) Ještě poznámka, entropie je definovaná pro pravděpobonostní systém (jako střední hodnota informace jednotlivých jevů), pro jednotlivá hesla, jde spíše o informaci (self-information). Ale budiž, entropie zní líp. 18.7.2014
odkaz
8 spazef0rze
odpověděl/-a 11.7.2014

Silné heslo je takové, které člověk nevymyslí hlavou a ani si ho hlavou nedokáže zapamatovat :-) Hlava totiž není na vymýšlení ani na pamatování hesel dobrý nástroj.

K odpovědi na otázku, co je vlastně silné heslo, budu potřebovat zajít trochu do detailů, ale klidně přeskočte na poslední odstavec.

Dnes se crackují i dlouhá hesla i věty ("passphrase"), některé i během pár desítek vteřin. Jsou to většinou offline útoky, tedy když někdo zkouší crackovat databázi hashovaných hesel, kterou nějak získal. O výsledcích online útoků, když se někdo snaží hesla opravdu zadávat do formuláře, se moc často bohužel nedozvídáme, z pochopitelných důvodů - je to tak trochu za hranicí. Kromě toho online útoky se dají více či méně úspěšně blokovat, ať už umělým prodloužením času po X pokusech o přihlášení, captchou nebo zablokováním (ani jedno není dobré dělat po 3 špatných pokusech, třikrát špatně napsat kvalitní heslo se povede celkem často, lépe to dělat po desítkách pokusů, to je pořád dostatečně málo na online útok).

Podívejte se, jaká cracknutá hesla a "passphrase" postují Twitter účty CrackTheHash a UNIQPASS. Crackeři mají ve slovnících všechno. Jak již bylo zmíněno, bylo crackuto i heslo "Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn", někdo ho měl ve slovníku, protože je uvedeno v tomhle článku na Wikipedii. Jsou crackeři, kteří stahují IMDB a dělají z toho slovník, který má po zabalení 190 MB v .7z. Hmm, IMDB a co takhle slovník postavený z Wikipedie (po zabalení 700 MB .7z)? Nebo snad geografické názvy (po zabalení přes 700MB .7z)? Nebo chcete slovník, ve kterým je toho fakt hodně (po zabalení gzipem to má 4.2G)? Co není ve slovníku, tak se dopočítá hybridním útokem, tedy takovým, který bere základ ze slovníku, ale hrubou silou k němu přidává různé další kombinace znaků apod. Takže i kdyby heslo opravdu nebylo v žádném slovníku, tak o něm nelze říct, že je silné. Pokud chcete vědět jak a proč vytvářet silná hesla, podívejte se na moji přednášku o zapomínání hesel :-)

Na počtu kombinací pro brute-force útok už taky tolik nezáleží, díky únikům milionů hesel v plaintextu víme, jak uživatelé hesla vytvářejí. Když pravidla pro tvorbu hesla zní: "Min. 6 znaků, musí obsahovat jedno velké písmeno a číslici", uživatelé většinou vytvoří heslo s prvním písmenem velkým a číslicí na konci, např. Heslo2. Pro získání většiny hashů není třeba procházet všechny kombinace a lze použít hybridní útoky, o kterých píšu v předchozím odstavci.

Crackují se všechny algoritmy, jen u některých to jde rychleji, u některých pomaleji, koukněte třeba na benchmark stroje s 8x R9 290X GPU (PDF). Některé algoritmy se crackují i na něčem jiném, než jsou GPU, viz Energy-efficient bcrypt cracking (PDF).

Hesla v l33t sp34ku taky nejsou problém, crackují se. Jsou nástroje, jako třeba hashcat, kterým jde říct, že se A zapisuje jako A nebo @ nebo 4, takové konverzní tabulky jsou pak přímo v distribučním balíku hashcatu.

Správně zvolený algoritmus pro ukládání hesel je základ, ale útoky hrubou silou, slovníkové i hybridní útoky se dají dělat proti jakémukoliv algoritmu použitému k ukládání hesel. Jen v případě použití některých algoritmů to trvá příliš dlouho. Dá se to "pojistit" např. tak. že výsledné hashe zašifrujeme symetrickou šifrou (šifrujeme hashe, ne hesla), útočník pak kromě samotné databáze musí získat i šifrovací klíč a to nebývá tak obvyklé. A když se mu to podaří a hashe rozšifruje, tak pořád má před sebou správně zahashovaná hesla, třeba bcryptem. Takto jsme to vyřešili na Slevomatu, moje heslo tak, jak je uloženo v produkční databázi Slevomatu najdete na jednom z mých slajdů z přednášky Jak jsme zlepšili zabezpečení Slevomatu.

Sorry, už je toho textu hodně, ale chtěl jsem napsat všechno, co mě přivede k odpovědi na otázku, co je vlastně silné heslo. Je to tedy heslo, které je dostatečně dlouhé (12 a více znaků), má všechny možné znaky včetně mezer, není napsáno nikde na webu, ani v žádné knížce a není použito ani v žádném filmu, není ani podobné takovým heslům a není z něj ani odvozeno, není použito k žádnému jinému uživatelskému účtu a je správně uloženo v databázi aplikace a uživatel ho nevymyslel hlavou ani si ho nepamatuje (a to vlastně plyne z předchozích požadavků). Napsat validátor pro hesla podle takových pravidel je nemožné, takže se to autoři aplikací snaží aspoň trochu suplovat nějakými pravidly, ta se ale mohou otočit proti nim. Počítat samotnou entropii hesla také nestačí, do ní se nepočítají všechny uvedené faktory, které dělají silné heslo silným. Heslo "H3sl0" je tedy silnější, než "heslo", a slabší, než "omni-directional antenna", ale všechna stojí za stejně silný prd.

Komentáře

  • pepa.lobotka : whoa! díky Spazi ;) 12.7.2014
  • Anonym : Jen k GPU po úpravě biosu a vylazení taktů (ne přetaktování ale poměru mezi core x mem) jde získat zrychlení i kolem 20% (otestováno pro scrypt). Samozřejmě to záleží na algoritmu a vylazené biosy se objevují s určitým odstupem od vydání gpu ale je to v řádů měsíců :). 18.7.2014
  • spazef0rze : mishak: Pěkné! Měl bys pro mě link na nějaký info, prosím? Dík! 19.7.2014

Pro zobrazení všech 7 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.