Heslo je prvá línia obrany tvojich online účtov. Napriek tomu milióny ľudí stále používajú heslá ako „123456" alebo „heslo" — a práve preto sa stávajú obeťami hackerov. Naučíme sa, čo robí heslo skutočne silným.
Prečo záleží na sile hesla?
Útočníci využívajú niekoľko metód na prelomenie hesiel:
Útok hrubou silou (Brute force)
Program systematicky vyskúša všetky možné kombinácie znakov, kým nájde správne heslo.
Príklady časov prelomenia:
| Heslo | Čas na prelomenie |
|---|---|
abc | Okamžite |
heslo123 | Niekoľko sekúnd |
HeSlo@123! | Týždne |
xK9#mP2$nQ7&wL | Milióny rokov |
Slovníkový útok (Dictionary attack)
Útočník vyskúša všetky slová zo slovníka a bežné heslá. Preto „slovenčina" je slabé heslo, aj keď je dlhé.
Phishing
Útočník ťa oklame, aby si heslo zadal sám na falošnej stránke.
Podľa štatistík je „123456" stále jedno z najpoužívanejších hesiel na svete. Ak používaš takéto heslo, útočník ho uhádne doslova za sekundu.
Čo robí heslo silným?
Silné heslo má tieto vlastnosti:
- Dĺžka — aspoň 12 znakov (ideálne 16+)
- Rôzne typy znakov — veľké písmená, malé písmená, číslice, špeciálne znaky (@, #, !, ?)
- Bez slov zo slovníka — žiadne bežné slová ani mená
- Jedinečnosť — iné heslo pre každý účet
import secrets
import string
def generuj_heslo(dlzka=16):
"""Vygeneruje kryptograficky bezpečné heslo."""
znaky = (
string.ascii_uppercase + # A-Z
string.ascii_lowercase + # a-z
string.digits + # 0-9
"!@#$%^&*" # špeciálne znaky
)
heslo = ''.join(secrets.choice(znaky) for _ in range(dlzka))
return heslo
# Generovanie bezpečného hesla
print(generuj_heslo(16)) # Napr. xK9#mP2$nQ7&wL!Z
def sila_hesla(heslo):
"""Ohodnotí silu hesla."""
skore = 0
if len(heslo) >= 12: skore += 1
if any(c.isupper() for c in heslo): skore += 1
if any(c.islower() for c in heslo): skore += 1
if any(c.isdigit() for c in heslo): skore += 1
if any(c in "!@#$%^&*" for c in heslo): skore += 1
urovne = ["Veľmi slabé", "Slabé", "Stredné", "Dobré", "Silné"]
return urovne[skore - 1] if skore > 0 else "Veľmi slabé"
print(sila_hesla("123456")) # Veľmi slabé
print(sila_hesla("Heslo@2024")) # Dobré
print(sila_hesla("xK9#mP2$nQ7&wL")) # Silné
Namiesto náhodných znakov, ktoré si ťažko pamätáš, môžeš použiť dlhú passphrase — vetu zloženú z náhodných slov: modrý-slon-letí-nad-školou. Je ľahko zapamätateľná a zároveň veľmi ťažko prelomiteľná.
Prečo iné heslo pre každý účet?
Ak použiješ to isté heslo všade a útočník ho uhádne (alebo ho získa z úniku dát), dostane prístup ku všetkým tvojim účtom naraz. Toto sa nazýva credential stuffing — útočník skúša ukradnuté heslá na iných weboch.
Správca hesiel (Password Manager)
Zapamätať si desiatky silných, jedinečných hesiel je nemožné. Riešenie: správca hesiel (password manager).
Ako funguje:
- Uloží všetky heslá v šifrovanej databáze
- Ty si pamätáš len jedno silné hlavné heslo (master password)
- Automaticky vyplní heslá na weboch
Populárne správcovanie hesiel: Bitwarden (zadarmo, open-source), 1Password, KeePass
Dvojfaktorová autentizácia (2FA)
Aj silné heslo môže byť odcudzené. 2FA pridáva druhú vrstvu ochrany — okrem hesla potrebuješ aj kód z telefónu (SMS alebo autentizátor).
Zapni si 2FA aspoň na najdôležitejších účtoch: e-mail, internet banking, sociálne siete. Aj keď útočník získa tvoje heslo, bez prístupu k telefónu sa neprihlási.
Cvičné príklady
Prečo je heslo 'Slovensko2024' slabé, aj keď má viac ako 12 znakov a obsahuje číslo?
Zobraziť odpoveď
Prečo je nebezpečné používať to isté heslo na viacerých weboch? Čo môže útočník urobiť, keď ho získa?