← Zpět na obsah

Kapitola 26: Bezpečné chování a hesla

Síla hesla - slabé vs. silné
Síla hesla - slabé vs. silné

1. Úvod: Cizí lidé na internetu

Představ si, že jsi na hřišti. Víš, že si máš dávat pozor na cizí lidi, kteří ti nabízejí sladkosti nebo tě lákají někam, kam nechceš. Na internetu je to podobné. Jsou tam lidé, kteří se snaží získat tvé osobní údaje, hesla nebo tě přimět k něčemu, co nechceš. Tomu se říká sociální inženýrství. V této kapitole se naučíme, jak se chovat bezpečně online a jak si chránit svá hesla.

2. Sociální inženýrství: Triky, jak tě napálit

Sociální inženýrství je, když se někdo snaží získat tvé důvěrné informace (jako hesla nebo čísla karet) tím, že tě oklame. Nepoužívá k tomu složité počítačové programy, ale spoléhá na to, že jsi důvěřivý, spěcháš nebo se bojíš.

Definice: Sociální inženýrství

Sociální inženýrství je soubor technik, které podvodníci používají k manipulaci s lidmi, aby jim prozradili důvěrné informace nebo provedli nějakou akci, která je pro ně nevýhodná.

Nejčastější triky:

3. Bezpečné chování online: Jak se chránit?

Nejlepší ochranou je být opatrný a vědět, na co si dávat pozor.

3.1. Hesla: Klíče k tvým digitálním pokladům

Heslo je jako klíč k tvému domu. Musí být silné, aby se nikdo nedostal dovnitř.

Definice: Heslo

Heslo je tajná kombinace znaků (písmen, čísel, symbolů), která slouží k ověření tvé identity a k ochraně tvých účtů a dat.

Jak vytvořit silné heslo?

Špatné heslo: "heslo123", "petr1999", "jana"
Dobré heslo: "MojeTajneHesloJeSuper!", "KocickaMickaMa8Zivotu?"

Jak si hesla pamatovat?

Je těžké si pamatovat mnoho silných hesel. Můžeš si je:

Správce hesel - jeden klíč k mnoha zámkům
Správce hesel - jeden klíč k mnoha zámkům

3.2. Podezřelé chování digitálních zařízení: Kdy zbystřit?

Tvůj počítač nebo mobil ti může dát najevo, že se s ním něco děje. Je důležité tato znamení rozpoznat.

Co dělat, když rozpoznáš podezřelé chování?

Pokud si všimneš něčeho podezřelého, nepanikař, ale jednej!

4. Nastavení prostředí: Zabezpečení tvého digitálního prostoru

Můžeš si také nastavit svůj počítač a aplikace tak, aby byly bezpečnější.

Člověk a digitální svět

V digitálním světě je naše bezpečnost a soukromí neustále ohroženo. Schopnost rozpoznat podvodné techniky, jako je sociální inženýrství, a umět se chránit silnými hesly a správným nastavením je klíčová pro bezpečný pohyb online. Učíme se tak zodpovědnosti za vlastní digitální stopu a za ochranu svých osobních údajů.

Otázky k zamyšlení

Úkoly pro praxi

  1. Vytvoř silné heslo: Vymysli si silné heslo, které bys použil/a pro svůj nejdůležitější účet. Mělo by mít alespoň 10 znaků, velká a malá písmena, čísla a symboly. Zapiš si ho na papír a schovej na bezpečné místo.
  2. Kontrola soukromí: Pokud používáš sociální sítě, zkontroluj si nastavení soukromí. Ujisti se, že tvé příspěvky a fotky vidí jen ti, kterým důvěřuješ.
  3. Rozpoznání podvodu: Zkus si na internetu najít příklady phishingových e-mailů nebo podvodných webových stránek. Porovnej je s pravými stránkami a zkus najít rozdíly, které by ti pomohly podvod odhalit.

* Rozšíření pro pokročilé

Správce hesel (Password Manager)

Jak si pamatovat desítky různých silných hesel? Odpovědí je správce hesel – bezpečný trezor pro všechna tvá hesla.

Stačí si pamatovat jedno master password (hlavní heslo), které odemkne trezor. Uvnitř jsou uložena všechna ostatní hesla, zašifrovaná silným šifrováním.

Doporučené správce hesel

Důležité: Prohlížečové správce hesel (Chrome, Firefox) jsou pohodlné, ale méně bezpečné – jsou častějším cílem útoků.

Dvoufaktorová autentizace (2FA)

2FA přidává druhou vrstvu ochrany. I když někdo zjistí tvé heslo, bez druhého faktoru se nepřihlásí.

Princip je jednoduchý: kombinuješ "něco, co víš" (heslo) s "něco, co máš" (telefon) nebo "něco, co jsi" (otisk prstu).

Typy 2FA

Pokročilé hrozby

Útočníci neustále vymýšlejí nové metody:

Dvoufaktorové ověření - něco víš + něco máš
Dvoufaktorové ověření - něco víš + něco máš

* Úkoly pro pokročilé

  1. Správce hesel: Nainstaluj si bezplatný správce hesel (např. Bitwarden). Ulož do něj 3 hesla. Vyzkoušej generátor hesel – vytvoř heslo s 20+ znaky.
  2. 2FA: Nastav dvoufaktorovou autentizaci na svůj Google nebo Microsoft účet. Použij autentizační aplikaci. Zapiš si záložní kódy na bezpečné místo.
  3. Excel – Audit hesel: Vytvoř (anonymizovanou!) tabulku pro audit hesel: Služba, Délka hesla, Obsahuje velká/malá/čísla/symboly, Unikátní (ano/ne), 2FA aktivní. Ohodnoť sílu svých hesel.
  4. Word – Bezpečnostní politika: Napiš "Politiku hesel" pro fiktivní firmu: minimální délka, požadavky na složitost, nutnost 2FA, frekvence změny, zakázaná hesla.

** Rozšíření pro maturitní obory

Podrobně: Jak fungují útoky na hesla

Útočníci mají různé metody pro získání hesel. Pochopení těchto metod ti pomůže lépe se bránit:

Brute force (hrubá síla)

Nejprimitivnější metoda – počítač zkouší všechny možné kombinace. Pro 8znakové heslo (jen malá písmena) existuje 26⁸ = 208 miliard kombinací. Moderní GPU to zvládne za minuty. Ale pro 12znakové heslo se smíšenými znaky je to triliony kombinací – trvalo by to roky.

Dictionary attack (slovníkový útok)

Místo všech kombinací se zkoušejí slova ze slovníku a jejich variace (heslo123, Heslo!, h3sl0). Mnohem rychlejší než brute force, protože lidé často používají předvídatelná hesla.

Rainbow tables

Předpočítané tabulky s hashy běžných hesel. Místo počítání hashe pro každý pokus se hash ukradený z databáze jen porovná s tabulkou. Proto se používá salt – náhodný řetězec přidaný k heslu před hashováním, který tabulky zneplatní.

Credential stuffing

Používání hesel uniklých z jiných služeb. Když uniknou data z jednoho webu, útočníci zkoušejí stejné kombinace email+heslo na jiných službách. Proto je důležité mít unikátní heslo pro každou službu!

Bezpečné ukládání hesel (pro vývojáře)

Pokud budeš programovat aplikace s uživatelskými účty, musíš vědět, jak správně ukládat hesla:

  1. NIKDY neukládej hesla v čitelné podobě!
  2. Použij hashování – jednosměrnou funkci, ze které nelze získat původní heslo.
  3. Použij salt – náhodný řetězec unikátní pro každého uživatele.
  4. Použij pomalý hash (bcrypt, Argon2) – záměrně pomalý, aby brute force trval déle.
# Špatně:
uložené_heslo = "tajné123"  # Kdokoli s přístupem k DB vidí heslo!

# Správně:
import bcrypt
hash = bcrypt.hashpw(b"tajné123", bcrypt.gensalt())
# Výsledek: $2b$12$vI8aWBnW3fID.ZQ4/zo1G.q1... (nečitelné)
        

Passkeys – budoucnost bez hesel

Passkeys jsou nová technologie, která má zcela nahradit hesla. Místo zadávání hesla se autentizuješ pomocí zařízení (telefon, počítač) a biometrie (otisk, obličej).

Technicky používají asymetrickou kryptografii: tvé zařízení má soukromý klíč, web má veřejný klíč. Při přihlášení zařízení digitálně podepíše výzvu. Soukromý klíč nikdy neopustí zařízení – nelze ho ukrást phishingem!

Hashování hesel - jednosměrná transformace
Hashování hesel - jednosměrná transformace

** Úkoly pro maturitní obory

  1. Analýza uniklých hesel: Navštiv haveibeenpwned.com. Zkontroluj svůj email. Pokud byl v úniku, změň heslo na všech dotčených službách.
  2. Excel – Čas prolomení hesla: Vytvoř tabulku: Délka hesla (6-20), Znaky (jen malá / malá+velká / +čísla / +symboly), Počet kombinací, Čas prolomení (při 1 miliardě pokusů/s).
  3. Word – Průvodce 2FA: Napiš návod "Jak nastavit 2FA" (3-4 strany). Zahrň: proč, typy, nastavení pro Google/Microsoft/Facebook, záložní kódy.
  4. PowerPoint – Social Engineering: Vytvoř prezentaci "Social engineering útoky" (10-12 snímků). Typy, příklady, jak se bránit.
  5. Canva – Infografika: Vytvoř infografiku "Anatomie silného hesla" s vizuálními příklady.

*** Rozšíření pro IT obory

Jako IT specialista budeš implementovat autentizační systémy a řešit bezpečnostní incidenty. Tato sekce tě naučí praktické dovednosti.

Implementace přihlašovacího systému

Základní přihlašovací systém v Pythonu:

import bcrypt
import sqlite3

class AuthSystem:
    def __init__(self, db_path='users.db'):
        self.conn = sqlite3.connect(db_path)
        self.vytvor_tabulku()

    def vytvor_tabulku(self):
        self.conn.execute('''
            CREATE TABLE IF NOT EXISTS uzivatele (
                id INTEGER PRIMARY KEY,
                username TEXT UNIQUE NOT NULL,
                password_hash TEXT NOT NULL,
                created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
            )
        ''')
        self.conn.commit()

    def registrace(self, username, password):
        """Zaregistruje nového uživatele."""
        # Hashování hesla
        password_hash = bcrypt.hashpw(
            password.encode(),
            bcrypt.gensalt()
        ).decode()

        try:
            self.conn.execute(
                "INSERT INTO uzivatele (username, password_hash) VALUES (?, ?)",
                (username, password_hash)
            )
            self.conn.commit()
            return True
        except sqlite3.IntegrityError:
            return False  # Uživatel už existuje

    def prihlaseni(self, username, password):
        """Ověří přihlašovací údaje."""
        cursor = self.conn.execute(
            "SELECT password_hash FROM uzivatele WHERE username = ?",
            (username,)
        )
        row = cursor.fetchone()

        if row is None:
            return False

        return bcrypt.checkpw(password.encode(), row[0].encode())

# Použití
auth = AuthSystem()
auth.registrace("jan", "silne_heslo_123!")
print(auth.prihlaseni("jan", "silne_heslo_123!"))  # True
print(auth.prihlaseni("jan", "spatne_heslo"))      # False
        

Implementace TOTP (2FA)

TOTP (Time-based One-Time Password) je základ pro autentizační aplikace:

# pip install pyotp
import pyotp

# Generování tajného klíče pro uživatele
tajny_klic = pyotp.random_base32()
print(f"Tajný klíč (ulož bezpečně): {tajny_klic}")

# Vytvoření TOTP objektu
totp = pyotp.TOTP(tajny_klic)

# Vygenerování URL pro QR kód (pro Google Authenticator)
uri = totp.provisioning_uri(name="jan@example.com", issuer_name="MojeAplikace")
print(f"URI pro QR: {uri}")

# Ověření kódu zadaného uživatelem
zadany_kod = input("Zadej kód z aplikace: ")
if totp.verify(zadany_kod):
    print("Kód je správný!")
else:
    print("Neplatný kód!")

# Aktuální kód (mění se každých 30 sekund)
print(f"Aktuální kód: {totp.now()}")
        

Detekce podezřelých přihlášení

from datetime import datetime, timedelta
from collections import defaultdict

class LoginMonitor:
    def __init__(self):
        self.neuspesne_pokusy = defaultdict(list)
        self.max_pokusu = 5
        self.casovy_limit = timedelta(minutes=15)

    def zaznam_pokusu(self, ip_adresa, uspech):
        """Zaznamená pokus o přihlášení."""
        ted = datetime.now()

        if not uspech:
            self.neuspesne_pokusy[ip_adresa].append(ted)

            # Vyčisti staré záznamy
            self.neuspesne_pokusy[ip_adresa] = [
                cas for cas in self.neuspesne_pokusy[ip_adresa]
                if ted - cas < self.casovy_limit
            ]

    def je_zablokovana(self, ip_adresa):
        """Zkontroluje, zda je IP zablokovaná."""
        ted = datetime.now()
        nedavne_pokusy = [
            cas for cas in self.neuspesne_pokusy[ip_adresa]
            if ted - cas < self.casovy_limit
        ]
        return len(nedavne_pokusy) >= self.max_pokusu

    def zbyvajici_cas_blokace(self, ip_adresa):
        """Vrátí zbývající čas blokace."""
        if not self.neuspesne_pokusy[ip_adresa]:
            return timedelta(0)

        nejstarsi = min(self.neuspesne_pokusy[ip_adresa])
        return self.casovy_limit - (datetime.now() - nejstarsi)
        

*** Praktické úkoly pro IT obory

  1. Auth systém: Rozšiř přihlašovací systém o: reset hesla přes email, historie přihlášení, změna hesla.
  2. 2FA: Implementuj 2FA pomocí pyotp. Vygeneruj QR kód, který lze naskenovat do Google Authenticator.
  3. Brute force ochrana: Implementuj systém, který blokuje IP adresu po 5 neúspěšných pokusech na 15 minut.
  4. Síla hesla: Napiš funkci, která ohodnotí sílu hesla (délka, typy znaků, slovníkové slovo) a vrátí skóre 0-100.

*** Rozšíření pro IT obory: Bezpečné ukládání credentials

Jako IT specialista musíš vědět, kam bezpečně ukládat hesla a tajemství v produkčních aplikacích.

Kde NIKDY neukládat hesla

Bezpečné hashování hesel

# ❌ ŠPATNĚ - MD5, SHA1 nejsou pro hesla!
import hashlib
hash_spatne = hashlib.md5("heslo".encode()).hexdigest()

# ✅ SPRÁVNĚ - bcrypt, argon2, scrypt
import bcrypt

# Hashování
heslo = "moje_tajne_heslo"
salt = bcrypt.gensalt(rounds=12)  # 12 iterací
hash_hesla = bcrypt.hashpw(heslo.encode(), salt)

# Ověření
je_spravne = bcrypt.checkpw("moje_tajne_heslo".encode(), hash_hesla)

# Proč bcrypt?
# - Pomalý (úmyslně!) - odolný proti brute force
# - Automatický salt
# - Nastavitelná obtížnost (rounds)
        

Správa API klíčů v různých prostředích

Prostředí Nástroj Jak to funguje
Lokální vývoj .env + dotenv Soubor mimo Git
CI/CD GitHub/GitLab Secrets Zašifrované úložiště
Docker Docker Secrets Šifrované secrets
Kubernetes K8s Secrets Base64 + RBAC
Enterprise HashiCorp Vault Centrální správa, audit

Ignore soubory pro AI agenty

Kromě .gitignore existují ignore soubory pro AI coding asistenty:

# .github/copilot-instructions.md nebo .copilotignore
# Některé AI nástroje podporují:
# .aiexclude, .cursorignore, .continue/ignore

# Příklad obsahu - soubory, které AI NESMÍ vidět:
.env
.env.*
secrets/
config/credentials.yml
*.pem
*.key
private/
        

Rotace tajemství

*** Další úkoly pro IT obory

  1. Secret scanner: Nainstaluj GitLeaks nebo TruffleHog. Proskenuj svůj repozitář na úniky.
  2. Vault setup: Nainstaluj HashiCorp Vault lokálně. Ulož a načti tajemství.
  3. Password hash: Porovnej rychlost MD5 vs bcrypt pro 1000 hashů. Proč je bcrypt pomalejší?
← Zpět na obsah