Správné měření síly hesla
Existuje spousta chybných pravidel, jak volit silná hesla. Také existuje spousta nepřesných nebo nesmyslných postupů, jak měřit jejich sílu. Mám za to, že jediný správný postup vychází ryze z klasické informatiky, jednoduchým výpočtem informační entropie.
Stručná teorie informace
Entropie je míra neurčitosti systému. Charakterizuje počet stavů, ve kterém se systém může nacházet. Pro úplné popsání stavu systému je tedy třeba množství informace shodné s jeho entropií.
V informatice je to stejné. Jeden bajt může nabývat 28 = 256 stavů, jeho informační entropie je tedy 8 bitů. A pro jeho úplné popsání je třeba pochopitelně opět 8 bitů informace.
Entropie jednoho prvku zprávy je rovna součtu entropií všech symbolů, které může obsahovat.
V případě, že je pravděpodobnost P výskytu všech symbolů s stejná (a to v našem případě je), je entropie zprávy o n prvcích a s symbolech rovna binárnímu logaritmu z počtu symbolů vynásobeným délkou zprávy.
Určení entropie hesla
Pokud jste přetrpěli předchozí kapitolu, tak víte, že pro výpočet entropie hesla je třeba znát jeho délku a počet symbolů, které může obsahovat.
Délka je asi jasná. Počet možných symbolů už možná méně. Určitou představu by nám ale mohly dát běžné rozsahy crackovacích Rainbow tabulek.
Rozsah symbolů | Počet symbolů s | Entropie prvku H |
---|---|---|
0 – 9 | 10 | 3,3 |
a – z | 26 | 4,7 |
a – z, 0 – 9 | 36 | 5,1 |
a – z, A – Z | 52 | 5,7 |
a – z, A – Z, 0 – 9, mezera | 63 | 6,0 |
a – z, A – Z, 0 – 9, mezera, á, é, í, ó, ú, ý, č, ď, ě, ň, ř, š, ť, ž, ů |
78 | 6,3 |
a – z, A – Z, 0 – 9, mezera, á, é, í, ó, ú, ý, č, ď, ě, ň, ř, š, ť, ž, ů Á, É, Í, Ó, Ú, Ý, Č, Ď, Ě, Ň, Ř, Š, Ť, Ž, Ů |
93 | 6,5 |
a – z, A – Z, 0 – 9, mezera, á, é, í, ó, ú, ý, č, ď, ě, ň, ř, š, ť, ž, ů Á, É, Í, Ó, Ú, Ý, Č, Ď, Ě, Ň, Ř, Š, Ť, Ž, Ů . , : ; – ? ! @ # & $ ^ _ * |
107 | 6,7 |
Jak už možná vidíte sami, i kdybychom s heslem spáchali takové harakiri, jako v posledním řádku předchozí tabulky, dostaneme se s bídou na dvojnásobek entropie obyčejného prachsprostého číselného hesla. Složitost tedy zdaleka nemá takový význam, jak by se na první pohled zdálo.
Výpočet entropie hesla JavaScriptem
Pomocí jednoduchého regulárního výrazu můžeme snadno určit, do které skupiny heslo patří.
function getPasswordEntropy(password) {
var symbols = {
10: '0-9', 26: 'a-z', 36: 'a-z0-9', 52: 'a-zA-Z', 63: 'a-zA-Z0-9 ',
78: 'a-zA-Z0-9 áéíóúýčďěňřšťžů',
93: 'a-zA-Z0-9 áéíóúýčďěňřšťžůÁÉÍÓÚÝČĎĚŇŘŠŤŽŮ',
107: '^'
};
for (var s in symbols) {
if (password.match(new RegExp('^[' + symbols[s] + ']+$')))
return password.length * Math.log(s) / Math.LN2;
}
return 0;
}
Délka je důležitější než složitost — neserte své uživatele
Jistě to znáte: „heslo musí obsahovat velké písmeno, číslo a jméno ďáblovo v hebrejštině.“ Spousta lidí považuje složitější heslo za bezpečnější. Nic nemůže být dál od pravdy.
Závislost entropie hesla na délce a počtu symbolů
Otázkou zůstává, jakou entropii považovat za dostatečně silnou. Šestnáctiznakové heslo ve tvaru například jednadvehonzajde má entropii cca 75 bitů. Hrubou silou to znamená 275 = 3 × 1022 pokusů. Prostorová náročnost pro případnou Rainbow tabulku tohoto rozsahu by byla 350 000 exabajtů.
Běžné CPU je v tomto případě zcela mimo hru. Ovšem pomenší těžařská Bitcoinová sestava zvládne pomocí trojice grafických karet spočítat 4 miliardy hashů za sekundu. Naše heslo by zlomila za slabých 300 000 let.
60-bitové heslo (to jest třeba jednadvehonza) by už ale zvládla za necelých 9 let, 50-bitové (jednadvetri) už za tři dny. A na první pohled zdánlivě bezpečné heslo w.X;89? (47 bitů) by podlehlo za 9 hodin.
70 bitů bych osobně považoval za hranici „dobrého“ hesla. Uvidíme za pár let.
Pozor na slovníkový útok
Zatím jsme předpokládali, že útočník bude lámat heslo hrubou silou bez jakýchkoliv znalostí nebo předpokladů o jeho struktuře. Proslulý correct horse battery staple ovšem strukturu má. Je složen ze čtyř anglických slov.
Pokud bychom tedy za symbol místo znaku považovali celé slovo, hodnota entropie hesla by se poněkud změnila. S využitím Oxford English Dictionary bychom získali přibližně 170 000 slov k vyzkoušení.
Entropie correct horse battery staple by klesla ze 118 bitů na přibližně 70. To je stále celkem přijatelná hodnota, odebráním jednoho slova už bychom ale spadli na slabých 52 bitů. (Nezapomínejme, že vztah entropie k výpočetní náročnosti je logaritmický.)
Takže co? Nechat projít kočku po klávesnici? Na jména sopek na Islandu to sice funguje, ale tak drastické opatření rozhodně není nutné. Pokud skládáte heslo z běžných slov, vyberte alespoň čtyři. Nebo zvolte strukturu, kterou nebude možné předpokládat. Třeba correct horse+battery staple.
ZDROJ: www.cleverweb.cz