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.
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íš.
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á.
Dostaneš e-mail, který vypadá, jako by byl od banky, od kamaráda nebo od nějaké známé firmy. Zpráva tě vyzývá, abys klikl na odkaz a zadal své heslo nebo osobní údaje. Ale odkaz vede na falešnou stránku, která vypadá jako ta pravá!
Stránka vypadá jako tvůj oblíbený e-shop nebo sociální síť, ale adresa v prohlížeči je trochu jiná. Když tam zadáš své heslo, podvodníci ho získají.
Někdo ti zavolá a vydává se za bankéře nebo policistu a snaží se z tebe dostat citlivé informace.
Nejlepší ochranou je být opatrný a vědět, na co si dávat pozor.
Heslo je jako klíč k tvému domu. Musí být silné, aby se nikdo nedostal dovnitř.
Heslo je tajná kombinace znaků (písmen, čísel, symbolů), která slouží k ověření tvé identity a k ochraně tvých účtů a dat.
Je těžké si pamatovat mnoho silných hesel. Můžeš si je:
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.
Pokud si všimneš něčeho podezřelého, nepanikař, ale jednej!
Můžeš si také nastavit svůj počítač a aplikace tak, aby byly bezpečnější.
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ů.
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.
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ů.
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).
Útočníci neustále vymýšlejí nové metody:
Útočníci mají různé metody pro získání hesel. Pochopení těchto metod ti pomůže lépe se bránit:
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.
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.
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í.
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!
Pokud budeš programovat aplikace s uživatelskými účty, musíš vědět, jak správně ukládat hesla:
# Š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 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!
Jako IT specialista budeš implementovat autentizační systémy a řešit bezpečnostní incidenty. Tato sekce tě naučí praktické dovednosti.
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
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()}")
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)
Jako IT specialista musíš vědět, kam bezpečně ukládat hesla a tajemství v produkčních aplikacích.
# ❌ Š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)
| 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 |
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/