Dříve známé jako Sensitive Data Exposure. Špatná kryptografie znamená úniky hesel, platebních údajů a osobních dat.
Nejčastější chyby¶
- Ukládání hesel v plaintextu nebo s MD5/SHA1
- Použití HTTP místo HTTPS
- Hardcodované šifrovací klíče v kódu
- Slabé algoritmy (DES, RC4, SHA1 pro podpisy)
- Nedostatečná délka klíčů (RSA < 2048 bit)
Správné hashování hesel¶
import bcrypt password = b”tajne_heslo” hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12)) bcrypt.checkpw(password, hashed) # True
Argon2 (doporučeno OWASP)¶
from argon2 import PasswordHasher ph = PasswordHasher(time_cost=3, memory_cost=65536, parallelism=4) hash = ph.hash(“tajne_heslo”) ph.verify(hash, “tajne_heslo”)
Šifrování dat — AES-256-GCM¶
from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = os.urandom(32) # 256-bit klíč nonce = os.urandom(12) aesgcm = AESGCM(key) ct = aesgcm.encrypt(nonce, b”citliva data”, b”aad”) pt = aesgcm.decrypt(nonce, ct, b”aad”)
Checklist¶
- Klasifikujte data podle citlivosti
- Šifrujte vše citlivé at rest i in transit
- Používejte AES-256, RSA-2048+, SHA-256+
- Hesla hashujte s Argon2id nebo bcrypt
- Klíče ukládejte v key vault (Azure KV, AWS KMS, Vault)
- Pravidelně rotujte klíče
- Vynutte HTTPS s HSTS hlavičkou
Klíčový takeaway¶
Šifrujte vše citlivé, používejte moderní algoritmy a nikdy neukládejte klíče v kódu. Kryptografie je obor, kde ‘skoro správně’ znamená ‘úplně špatně’.