Früher bekannt als Sensitive Data Exposure. Schlechte Kryptografie führt zu Lecks von Passwörtern, Zahlungsdaten und persönlichen Daten.
Häufige Fehler¶
- Passwörter im Klartext oder mit MD5/SHA1 speichern
- HTTP statt HTTPS verwenden
- Hartcodierte Verschlüsselungsschlüssel im Code
- Schwache Algorithmen (DES, RC4, SHA1 für Signaturen)
- Unzureichende Schlüssellänge (RSA < 2048 Bit)
Korrektes Passwort-Hashing¶
import bcrypt password = b”tajne_heslo” hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12)) bcrypt.checkpw(password, hashed) # True
Argon2 (von OWASP empfohlen)¶
from argon2 import PasswordHasher ph = PasswordHasher(time_cost=3, memory_cost=65536, parallelism=4) hash = ph.hash(“tajne_heslo”) ph.verify(hash, “tajne_heslo”)
Datenverschlüsselung — AES-256-GCM¶
from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = os.urandom(32) # 256-Bit-Schlüssel nonce = os.urandom(12) aesgcm = AESGCM(key) ct = aesgcm.encrypt(nonce, b”citliva data”, b”aad”) pt = aesgcm.decrypt(nonce, ct, b”aad”)
Checkliste¶
- Daten nach Sensibilität klassifizieren
- Alles Sensible at rest und in transit verschlüsseln
- AES-256, RSA-2048+, SHA-256+ verwenden
- Passwörter mit Argon2id oder bcrypt hashen
- Schlüssel im Key Vault speichern (Azure KV, AWS KMS, Vault)
- Schlüssel regelmäßig rotieren
- HTTPS mit HSTS-Header erzwingen
Wichtigste Erkenntnis¶
Alles Sensible verschlüsseln, moderne Algorithmen verwenden und Schlüssel niemals im Code speichern. Kryptografie ist ein Bereich, in dem „fast richtig” „völlig falsch” bedeutet.