Hash-Algorithmen
Deterministische Funktionen zur Erzeugung fester Prüfsummen aus beliebigen Eingaben, genutzt für Integrität, Indizierung und kryptografische Primitive.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypArchitektur
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
Use Cases & Szenarien
Kompromisse
- Verwendung gebrochener Algorithmen (z. B. MD5, SHA-1) führt zu Integritätsverletzungen.
- Falsche Implementierung kann Timing-Angriffe oder Side-Channel-Lecks verursachen.
- Unbeachtete Kompatibilitätsanforderungen erschweren Migration auf stärkere Algorithmen.
- Verwende zeitgemäße, empfohlene Algorithmen (z. B. SHA-2/3, BLAKE2, Argon2 für KDF).
- Verwende geprüfte Bibliotheken statt eigener Kryptografie-Implementationen.
- Speichere Metadaten (Algorithmus, Parameter, Salt) zusammen mit dem Hash für zukünftige Verifikation.
I/O & Ressourcen
- Eingabedaten (Bytes) oder Streams zum Hashen
- Sicherheitsanforderungen (z. B. Kollisionsresistenz)
- Performance- und Kompatibilitätsanforderungen
- Fester Digest/Hashwert
- Metainformationen (Algorithmusversion, Salt, KDF-Parameter)
- Integritäts- oder Konsistenzindikatoren für nachfolgende Prozesse
Beschreibung
Hash-Algorithmen sind deterministische Funktionen, die beliebige Eingaben auf feste Ausgabelängen abbilden; sie dienen Integritätsprüfungen, Prüfsummen, Indexierung und kryptografischen Anwendungen. Wichtige Eigenschaften sind Kollisions- und Preimage-Resistenz sowie Geschwindigkeit. Die Auswahl erfordert Abwägungen zwischen Sicherheit, Leistung und Kompatibilität; veraltete Algorithmen (MD5, SHA-1) sollten vermieden werden.
✔Vorteile
- Effiziente Integritätsüberprüfung und Vergleich großer Datenmengen.
- Ermöglicht Content-Addressing und einfache Indexierung.
- Grundbaustein für viele kryptografische Protokolle und Signaturverfahren.
✖Limitationen
- Keine Geheimhaltung: Hashes sind nicht reversibel, aber nicht geheim.
- Anfällig bei veralteten Algorithmen gegenüber Kollisionen und Angriffen.
- Allein für Passwortspeicherung unzureichend ohne Salt und KDF-Parameter.
Trade-offs
Metriken
- Kollisionswahrscheinlichkeit
Wahrscheinlichkeit, dass zwei unterschiedliche Eingaben denselben Digest erzeugen; wichtig zur Einschätzung Sicherheit.
- Durchsatz (MB/s)
Verarbeitete Datenmenge pro Sekunde bei gegebener Implementierung/Hardware.
- Latenz pro Hash
Zeitdauer zur Berechnung eines einzelnen Hashwerts; relevant für Echtzeitanwendungen.
Beispiele & Implementierungen
Git Objekt-Hashes (historisch SHA-1)
Git verwendet Hashes zur inhaltsbasierten Identifikation von Commits und Objekten; Migrationen auf sicherere Algorithmen sind aktiv.
SHA-256 in TLS und Zertifikaten
SHA-256 wird weit verbreitet zur Signatur- und Integritätsprüfung in TLS-Zertifikaten und Signaturketten eingesetzt.
BLAKE2 für schnelle Integritätsprüfungen
BLAKE2 bietet hohe Geschwindigkeit und gute kryptografische Eigenschaften; beliebt in Performance-kritischen Systemen.
Implementierungsschritte
Bewertung der Sicherheits- und Performance-Anforderungen sowie bestehender Abhängigkeiten.
Auswahl eines geeigneten, aktuellen Algorithmus und geprüfter Bibliotheken.
Implementierung mit korrekter Handhabung von Salt/KDF-Parametern, Tests und Planung einer Migrationsstrategie.
⚠️ Technische Schulden & Engpässe
Tech Debt
- Alte Datenbanken mit MD5-/SHA-1-Hashes erfordern Migrationsaufwand.
- Fehlende Dokumentation zu verwendeten Hash-Parametern in Systemen.
- Monolithische Komponenten, die Algorithmen hartkodieren und Migration blockieren.
Bekannte Engpässe
Beispiele für Missbrauch
- MD5 zur Passwortspeicherung in einer Webanwendung verwenden.
- Nur Hashes ohne Salt in Multi-Tenant-Systemen verwenden.
- Hashes als alleinige Maßnahme zur Zugriffskontrolle einsetzen.
Typische Fallen
- Übersehen von notwendigen Metadaten (Algorithmusversion, Salt) verhindert spätere Verifikation.
- Falsche Annahme, dass ein langer Hash automatisch sicher ist.
- Unzureichende Prüfung von Bibliotheken auf Side-Channel-Verhalten.
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Vorhandene Protokolle können bestimmte Hash-Algorithmen erzwingen.
- • Regulatorische Vorgaben können Mindeststärken vorschreiben.
- • Ressourcenbegrenzungen auf eingebetteten Systemen schränken Auswahl ein.