Nedávno jsem potřeboval vytvořit pár uživatelských účtu a hesel. Chvilku jsem googloval a potom jsem naznal, že si něco takového snadno napíšu sám.
Po tom jsem to udělal, tak mi kolega prozradil, že si můžu nainstalovat program pwgen, a nemusím nic programovat (-;
Mně osobně přísná pravidla na to co heslo musí obsahovat dohání k šílenství. V XKCD 936 vysvětlili, že silné nemusí být nutně obsahovat speciální symboly. Navíc takové heslo může být i zapamatovatelné.
# aspell -d cs dump master | aspell -l cs expand > my.dict
<?php
setlocale(LC_CTYPE, ‘cs_CZ’); // nastaveni jazyku kvuli iconv
$dict = preg_split(“/[n| ]/”, file_get_contents(‘my.dict’)); // precteni slovniku
function randomWord() {
global $dict;
return $dict[rand(0, sizeof($dict))]; // vrati nahodnou polozku z pole
}
$heslo = randomWord().rand(0,9).randomWord().randomWord();
$heslo = iconv(“UTF-8”, “ASCII//TRANSLIT”, $heslo); // odstrani diakritiku
echo $heslo;
?>
I když jsem si myslel, že jsem pro zapamatovatelnost hesla udělal všechno co jsem mohl, tak mi druhý den volal kolega s tím, že to heslo co jsem mu dal je moc složité, a že by radši chtěl heslo stejné jako login (-;
Na to jsem mu samozřejmě řekl, že si může nastavit heslo jaké chce. Jinak je to samozřejmě jedno, protože se to stejně uloží do prohlížeče..
Pokud by někdo chtěl posoudit kvalitu vygenerovaných hesel, tak je můj generátor k dispozici online.
Zvoleny slovnik je nejaky divny. Vetsinu slov jsem ani nepoznal. XKCD pouziva slovnik s 2048 slovy (opravdu common words). I tak se tremi mas asi 8*10^9 moznosti. To si myslim bohate staci. Kazdy normalni system by mel ucet locknout nebo aspon tyto pokusy zpomalit. To cislo je tam zbytecne, zvysuje slozitost jen o jeden rad. To uz je lepsi pridat slovo.
openssl rand -base64 32 mi bohatě stačí :-)
Kvalitni generator, tohle mi vygeneroval
seru0OkaliKlasem
No, nevim, co je presne cilem, ale podle mych zkusenosti, jsou moc dlouha. Ja preferuju hesla, ktera se skladaji ze slabik, takze jdou vyslovit.
Zrovna vcera jsem v jedne hloupe databazi videl pekne heslo – ponozkyVsandalech.
Jste si vědom toho, že to dává jen 324155^3×10 kombinací, heslo je tedy zhruba stejně silné, jako devítiznakové heslo z malých a velkých písmen, číslic a symbolů? Pro běžné uživatelské účty to stačí, ale třeba pro administrátorské účty bych to za dost silné heslo nepovažoval. Navíc když odstraňujete diakritika, bude unikátních slov ve slovníku ve skutečnosti ještě méně.
Samozřejmě to předpokládá, že by útočník ten slovník dokázal získat – ale když je generátor volně přístupný na webu, není problém slovník získat. Navíc jste slovník získal z všeobecně dostupného slovníku, takže je možné použít rovnou ten.
Imho jsou hesla, které si člověk:
a) potřebuje pamatovat, protože je používá aspoň jednou týdně
b) chce uložit do password manageru, používá je méně než jednou týdně.
Heslo může vypadat takto:
a) SkaPes06PreOve
(zapamatuju si Skákal pes přes oves + narodil jsem se v červnu)
b) 0458xYzRESDwdft#$%14
Na hesla jsou podle mého názoru nejlepší různé básničky a věty. Když taková věta má třeba patnáct nebo dvacet slov, sepíší se první písmena, kde je potřeba se napíše tečka či výkřičník, číslovky se napíší čísly a vznikne krásné pseudonáhodné heslo. Z této věty v délce osmi slov například: “Ztvvd8sn:” A zapamatovat si jednu větu dokáže snad každý.
[4] 9 znaku je slabe heslo pro admina? Nastesti nejsem tak paranoidni jako Vy (-; Predpokladam, ze kdyz admin pouzije heslo “Administrator” (tedy 13 znaku), tak uz je to snad v poradku. Protoze to ve skutecnosti ti uzivatele pak delaji..
No jo, ale co pak dělat s příliš “inteligentníma” validátorama?
Např. http://www.galactanet.com/comic/view.php?strip=284
[8] Pak jsme vsichni v pr*.
Nejvic mne dostalo, kdyz mi podobny validator nejdriv nadaval, ze heslo neobsahuje to a ono a kdyz jsem pridal vsechny ty specialni znaky a jine blbosti, tak mi oznamil, ze moje heslo je prilis dlouhe ..
Já teď narazil na úžasný validátor s regexpem w{5,10} .. autora by jsem opravdu zabil.
[10] Zabij svoji cestinarku. Co je spatneho na tom regexpu?
Co je platné mít silné heslo, když to nakonec prostřelí nějaký snaživý správec… Kamarád po anabázi “generuji heslo, které systém uzná za dostatečně silné” zvolil poněkud expresivní výraz v mírné modifikaci. Odměnou mu byla hláška “Toto heslo již bylo použito uživatelem ***, prosím zvolte jiné.”
Já pro hesla používám běžná slova z japonštiny, která zadávám v romanji (latince) a občas použiji místo některých znaků čísla a díky tomu mohu mít hesla vytištěná (v kaně) na papírku u monitoru a moc nehrozí, že by to někdo přečetl.
– Zadajte užívateľské meno!
– admin
– zadajte heslo!
– jablko
– ľutujem, heslo musí obsahovať minimálne 8 znakov!
– cervenejablko
– ľutujem, heslo musí obsahovať min. 1 číslicu!
– 1cervenejablko
– ľutujem, heslo musí obsahovať min. jedno veľké písmeno!
– 1VYJEBANEcervenejablko
– ľutujem, heslo nemôže obsahovať za sebou nasledujúce veľké písmená!
– 1VyjebaneCerveneJablko,kurva!
– ľutujem, heslo nemôže obsahovať diakritické znaky!
– 1VyjebaneCerveneJablkoKurvaFixDoPice
– ľutujem, toto heslo je už obsadené!
Problém je, že bezpečné heslo bude tak dlouhé, že si jej stejně nikdo nezapamatuje. Dle Nistu se doporučuje entropie min 112b, což při rozumné množině znaků dává heslo dlouhé 24 znaků. A to se nebavíme o způsobu zabezpečení kanálu, přes který tohle heslo má putovat. Mnohem raději bych viděl rozšíření přihlašování pomocí klíčů.
[15] Muzes to nejak rozvest? Pri 24 znacich to vychazi 4.7 bitu na znak. To je anglicka abeceda lower-case only. Za rozumnou abecedu pokladam anglictina+uppercase+10 cisel+par specialnich znaku.
[16] Ano, je to tak, počítal jsem to pro malé znaky anglické abecedy.
Proč, protože čísla se mohou plést s některými znaky malé abecedy, a speciální znaky se za určitých okolností dost špatně píšou. Prostě praxe. Proto jen malé znaky. Ovšem pokud si někdo stejnou entropii poskládá z jiné množiny znaků, nic to na bezpečnosti nemění. Jen se mu to možná bude špatně psát (samozřejmně v té nejhorší možné chvíli).