Už jste se někdy ptali, jak generátory hesel vytváří ty zdánlivě náhodné řetězce znaků? Pojďme prozkoumat vědu a technologii za generováním hesel.
Základy náhodnosti
Skutečná náhodnost je v počítačích obtížná. Většina generátorů hesel používá 'pseudonáhodné generátory čísel' (PRNG), které vytvářejí dostatečně nepředvídatelné výstupy pro bezpečné hesla.
Typy generátorů hesel
Existují tři hlavní typy generátorů hesel:
- Zcela náhodné: Vytváří kompletně náhodné řetězce znaků. Nejbezpečnější, ale obtížné k zapamatování.
- Vyslovovatelné: Generuje hesla sledující vzory výslovnosti. Snazší k zapamatování, ale potenciálně méně bezpečné.
- Passphrase: Kombinuje náhodná slova do zapamatovatelné fráze. Dobrá rovnováha mezi bezpečností a použitelností.
Porozumění entropii hesla
Entropie je matematická míra nepředvídatelnosti hesla. Čím vyšší entropie, tím obtížnější je heslo prolomit. Pochopení entropie vám pomůže činit informovaná rozhodnutí o bezpečnosti vašich hesel.
Vzorec pro entropii
Entropie hesla se počítá podle vzorce: E = L × log₂(R), kde E je entropie v bitech, L je délka hesla a R je velikost množiny znaků. Každý další bit entropie zdvojnásobuje počet možných kombinací.
Velikosti množin znaků
Množina znaků určuje, kolik možných znaků může být na každé pozici:
- Pouze malá písmena (a-z): 26 znaků = 4,7 bitů na znak
- Přidání velkých písmen (A-Z): 52 znaků = 5,7 bitů na znak
- Přidání čísel (0-9): 62 znaků = 5,95 bitů na znak
- Přidání symbolů (!@#$%^&*...): 94+ znaků = 6,5+ bitů na znak
Příklady entropie
Zde je, jak se entropie promítá do skutečné síly hesla:
| Heslo | Entropie | Čas k prolomení |
|---|---|---|
password |
~0 bitů (slovníkové slovo) | Okamžitě |
abc123 |
~10 bitů | < 1 sekunda |
Tr0ub4dor |
~28 bitů | ~3 hodiny |
X9#mK2$pQw8@ |
~78 bitů | Staletí |
correct-horse-battery-staple |
~44 bitů (passphrase) | ~550 let |
Doporučené úrovně entropie
Bezpečnostní experti doporučují různé úrovně entropie podle důležitosti účtu:
- Základní účty (fóra, newslettery): minimálně 40+ bitů
- Důležité účty (sociální sítě, e-shopy): 60+ bitů
- Kritické účty (e-mail, bankovnictví, práce): 80+ bitů
- Maximální zabezpečení (kryptoměny, admin účty): 100+ bitů
Rychlý kalkulátor entropie
Pro dosažení 80+ bitů entropie potřebujete buď: 12znakové heslo používající všechny typy znaků (malá, velká písmena, čísla, symboly), nebo 17znakové heslo používající pouze malá písmena, nebo 5slovnou passphrase ze slovníku 7 776 slov (jako Diceware).
Praktické důsledky
Moderní hardware pro prolamování hesel dokáže otestovat miliardy kombinací za sekundu. Heslu s 80 bity entropie by i těm nejvýkonnějším superpočítačům trvalo déle než stáří vesmíru prolomit ho hrubou silou. Nicméně výpočty entropie předpokládají skutečně náhodný výběr znaků - vzory, slovníková slova a osobní informace dramaticky snižují efektivní entropii.
Srovnání algoritmů: Jak fungují různé generátory
Ne všechny generátory hesel jsou stejné. Použitý algoritmus určuje úroveň bezpečnosti, rychlost a vhodnost pro různé aplikace. Zde je podrobné srovnání nejběžnějších přístupů.
Standardní PRNG (Pseudonáhodný generátor čísel)
Standardní PRNG jako Math.random() v JavaScriptu vytvářejí sekvence, které vypadají náhodně, ale ve skutečnosti jsou deterministické. Používají matematický vzorec a počáteční seed hodnotu k generování čísel.
Výhody:
- Velmi rychlé generování - miliony hodnot za sekundu
- Jednoduchá implementace, dostupné všude
Nevýhody:
- Předvídatelné, pokud je seed znám
- NEVHODNÉ pro bezpečnostně kritické aplikace
CSPRNG (Kryptograficky bezpečný PRNG)
CSPRNG jako Web Crypto API (používané RndPass), /dev/urandom na Linuxu nebo CryptGenRandom na Windows používají entropii ze systémových zdrojů (pohyb myši, časování klávesnice, hardwarová přerušení) kombinovanou s kryptografickými algoritmy.
Výhody:
- Kryptograficky bezpečný - nepředvídatelný výstup
- Odolný vůči reverznímu inženýrství
- Průběžně sbírá entropii ze systému
Nevýhody:
- Mírně pomalejší než standardní PRNG (stále velmi rychlý)
Hardwarový generátor náhodných čísel (HRNG)
Skutečné generátory náhodných čísel používají fyzikální jevy jako tepelný šum, radioaktivní rozpad nebo kvantové efekty k vytváření náhodnosti. Příklady zahrnují instrukci Intel RDRAND a specializovaná hardwarová zařízení.
Výhody:
- Skutečná náhodnost z fyzikálních procesů
- Nelze předpovědět ani s neomezeným výpočetním výkonem
Nevýhody:
- Vyžaduje specializovaný hardware
- Pomalejší než softwarová řešení
Metoda Diceware
Diceware používá fyzické hody kostkou mapované na seznam 7 776 slov. Každé slovo je vybráno hodem pěti kostek, což je zcela nezávislé na počítačem generované náhodnosti.
Výhody:
- Ověřitelně náhodné - kdokoli může auditovat proces
- Vytváří zapamatovatelné passphrase
Nevýhody:
- Manuální proces - pomalý a zdlouhavý
- Vyžaduje fyzické kostky a seznam slov
Přímé srovnání
| Algoritmus | Úroveň bezpečnosti | Rychlost | Nejlepší pro |
|---|---|---|---|
| PRNG | Nízká (předvídatelné) | Velmi rychlé | Hry, simulace |
| CSPRNG | Vysoká (kryptografická) | Rychlé | Hesla, tokeny, klíče |
| HRNG | Nejvyšší (skutečně náhodné) | Střední | Kryptografické klíče, HSM |
| Diceware | Vysoká (auditovatelná) | Velmi pomalé | Hlavní hesla |
Kterému algoritmu věřit?
Pro běžné generování hesel je CSPRNG zlatým standardem. Poskytuje vynikající rovnováhu bezpečnosti, rychlosti a dostupnosti. Hardwarové RNG jsou pro většinu uživatelů přehnané, zatímco standardní PRNG by nikdy neměly být používány pro hesla. Diceware je vynikající pro hlavní hesla, kde potřebujete maximální důvěru ve zdroj náhodnosti.
Co používá RndPass
RndPass používá Web Crypto API, implementaci CSPRNG vestavěnou do moderních prohlížečů. Toto API je standardizované, auditované výrobci prohlížečů a splňuje bezpečnostní požadavky pro generování hesel, šifrovacích klíčů a dalších kryptografických materiálů. Vaše hesla jsou generována se stejnou úrovní náhodnosti, jakou používají banky a vládní agentury.
Příklady generování: Krok za krokem
Pojďme si projít praktické příklady ukazující, jak generátory hesel vytvářejí hesla s různými nastaveními. Pochopení těchto příkladů vám pomůže zvolit správné parametry pro vaše potřeby.
Příklad 1: Základní 12znakové heslo
Nastavení: Délka 12, malá písmena + velká písmena + čísla
Množina znaků: a-z, A-Z, 0-9 (62 znaků celkem)
Proces generování:
- Znak 1: Náhodný výběr → 'K'
- Znak 2: Náhodný výběr → '7'
- Znak 3: Náhodný výběr → 'm'
- ... pokračuje pro všech 12 pozic ...
Konečný výsledek: K7mPn3xQw9Lb
Entropie: 12 × 5,95 = ~71 bitů
Prolomení tohoto hesla by s moderním hardwarem trvalo přibližně 100 milionů let.
Příklad 2: Maximálně bezpečné 20znakové heslo
Nastavení: Délka 20, všechny typy znaků (malá + velká písmena + čísla + symboly)
Množina znaků: a-z, A-Z, 0-9, !@#$%^&*()_+-= (94 znaků celkem)
Konečný výsledek: X9#mK2$pQw8@nL5j!Yz&
Entropie: 20 × 6,55 = ~131 bitů
Toto převyšuje bezpečnost většiny šifrovacích klíčů. I kdyby všechny počítače na Zemi pracovaly společně, prolomení tohoto hesla by trvalo déle než stáří vesmíru.
Příklad 3: Generování passphrase (metoda Diceware)
Nastavení: 5slovná passphrase ze slovníku 7 776 slov
Proces generování:
- Slovo 1: Náhodný výběr ze slovníku → 'correct'
- Slovo 2: Náhodný výběr ze slovníku → 'horse'
- Slovo 3: Náhodný výběr ze slovníku → 'battery'
- Slovo 4: Náhodný výběr ze slovníku → 'staple'
- Slovo 5: Náhodný výběr ze slovníku → 'moon'
Konečný výsledek: correct-horse-battery-staple-moon
Entropie: 5 × 12,9 = ~64 bitů
Snazší k zapamatování než náhodné znaky a přitom stále poskytuje vynikající zabezpečení pro většinu účelů.
Příklad 4: Číselné heslo typu PIN
Nastavení: Délka 8, pouze čísla
Množina znaků: 0-9 (10 znaků)
Konečný výsledek: 47829163
Entropie: 8 × 3,32 = ~26 bitů
Upozornění: Čistě číselná hesla mají nízkou entropii. Používejte je pouze tehdy, když to služba vyžaduje (PIN bankomatu, zámek telefonu). Pokud je to možné, přidejte více číslic.
Srovnání metod generování
Zde vidíte, jak různá nastavení ovlivňují výslednou bezpečnost hesla:
| Typ hesla | Příklad výsledku | Entropie | Nejlepší pro |
|---|---|---|---|
| 12 znaků (písmena+čísla) | K7mPn3xQw9Lb |
~71 bitů | Běžné účty |
| 20 znaků (všechny typy) | X9#m$pQw@nL5!Yz& |
~131 bitů | Kritické účty |
| 5slovná passphrase | correct-horse-battery-staple |
~64 bitů | Hlavní hesla |
| 8místný PIN | 47829163 |
~26 bitů | Pouze pokud vyžadováno |
Tipy pro volbu nastavení hesla
- Pro e-mail a bankovnictví: Používejte 16+ znaků se všemi typy znaků
- Pro hlavní heslo správce hesel: Zvažte 5+ slovnou passphrase
- Pro pracovní účty: Dodržujte politiku vaší organizace, obvykle 12-16 znaků
- Vyhněte se čistě číselným heslům, pokud to není absolutně nutné
- Když je povoleno 'Odstranit podobné znaky', jsou vyloučeny matoucí páry jako 0/O a 1/l
Jak náš generátor funguje
RndPass používá kryptograficky bezpečný generátor náhodných čísel ve vašem prohlížeči. Zde je proces:
- Zadáte své požadavky (délka, typy znaků)
- Generátor vytvoří sadu povolených znaků na základě vašeho výběru
- Bezpečná náhodná funkce vybírá znaky z této sady
- Proces se opakuje, dokud není dosaženo požadované délky
Bezpečnostní důležitosti
Ne všechny generátory hesel jsou stejné. Zde je to, co hledat:
- Generování na straně klienta - hesla by se neměla posílat na server
- Kryptograficky bezpečná náhodnost - ne jen Math.random()
- Open source - komunita může auditovat kód bezpečnosti
Nejlepší postupy
Pro maximální bezpečnost používejte hesla s alespoň 16 znaky zahrnujícími všechny typy znaků. Ukládejte generovaná hesla ve správci hesel a nikdy je nesdílejte nezabezpečeně.