MD5 vs SHA: Welchen Hash-Algorithmus verwenden?

Die Wahl des richtigen Hash-Algorithmus hängt von Ihrem Anwendungsfall ab. Diese Anleitung vergleicht die gängigen Optionen und hilft Ihnen, die richtige Wahl zu treffen.

Sicherheitsvergleich

MD5 gilt seit 2004 als kryptografisch gebrochen, als Forscher praktische Kollisionsangriffe demonstrierten. Ein Angreifer kann zwei verschiedene Eingaben erstellen, die den gleichen MD5-Hash produzieren. Das ist verheerend für Sicherheitsanwendungen – gefälschte Zertifikate können erstellt werden und die Dateiintegrität kann gefälscht werden. SHA-1 wurde 2017 offiziell gebrochen, als Google eine Kollision zwischen zwei verschiedenen PDF-Dateien demonstrierte. Der Angriff erforderte enormen Rechenaufwand (6.500 Jahre CPU-Zeit), wird aber weiterhin praktischer. Die meisten Browser und Zertifizierungsstellen akzeptieren SHA-1-Zertifikate nicht mehr. SHA-256 bleibt sicher ohne praktische Angriffe. Als Teil der SHA-2-Familie, entworfen von der NSA und veröffentlicht vom NIST, ist es seit 2001 öffentlicher Überprüfung unterzogen worden, ohne signifikante Schwächen. Es ist der aktuelle Standard für die meisten kryptografischen Anwendungen. SHA-512 bietet eine größere Sicherheitsmarge als SHA-256. Obwohl beide derzeit sicher sind, bietet SHA-512 zusätzlichen Puffer gegen zukünftige kryptanalytische Fortschritte. Einige Protokolle erfordern es speziell.

Leistungsunterschiede

MD5 ist am schnellsten der gängigen Hash-Algorithmen. Seine 128-Bit-Ausgabe erfordert weniger Berechnung. Für Nicht-Sicherheits-Anwendungsfälle wie Prüfsummen oder Hash-Tabellen kann diese Geschwindigkeit relevant sein. SHA-1 ist etwas langsamer als MD5, aber immer noch schnell. Der 160-Bit-Digest erfordert zusätzliche Berechnungsrunden. In den meisten Anwendungen ist der Leistungsunterschied vernachlässigbar. SHA-256 erfordert mehr Berechnungen als MD5 oder SHA-1. Allerdings verarbeiten moderne CPUs es immer noch mit mehreren Hundert Megabytes pro Sekunde. Für die allermeisten Anwendungen ist die Leistung kein Problem. SHA-512 kann auf 64-Bit-Prozessoren überraschenderweise schneller sein als SHA-256. Sein Design nutzt 64-Bit-Operationen, während SHA-256 für 32-Bit optimiert ist. Auf 64-Bit-Systemen übertrifft SHA-512 oft SHA-256. In der Praxis sind alle diese Algorithmen schnell genug für typische Anwendungsfälle. Wählen Sie basierend auf Sicherheitsanforderungen, nicht auf Leistung, es sei denn, Sie verarbeiten riesige Datenmengen.

Anwendungsfall-Empfehlungen

Für die Passwort-Speicherung verwenden Sie keinen von diesen direkt. Verwenden Sie bcrypt, scrypt oder Argon2, die speziell für die Passwort-Speicherung mit absichtlicher Langsamkeit und eingebautem Salting entwickelt wurden. Diese Algorithmen machen Brute-Force-Angriffe unpraktisch. Für Datei-Integrität verwenden Sie SHA-256. Verifizieren Sie Downloads gegen veröffentlichte SHA-256-Prüfsummen. SHA-256 bietet starke Garantie, dass die Datei nicht manipuliert oder beschädigt wurde. Für digitale Signaturen verwenden Sie SHA-256 oder SHA-512. Moderne Signaturstandards erfordern SHA-2-Familie-Algorithmen. Ältere Signaturen mit MD5 oder SHA-1 sollten migriert werden. Für Git-Commits und nicht-kritische Identifier ist SHA-1 akzeptabel. Git migriert zu SHA-256, aber für Commit-Identifier, bei denen Kollisionen auffallen würden, ist SHA-1 praktisch sicher. Für Prüfsummen und Deduplizierung, bei denen Sicherheit nicht kritisch ist, ist selbst MD5 akzeptabel. Wenn Sie bekannte, gutartige Dateien auf Duplikate vergleichen, ist MD5s Geschwindigkeit und kurze Hash-Länge praktisch. Für alles andere ist SHA-256 die sichere Standardwahl. Es ist überall unterstützt, bewährt sicher und effizient genug für jede Anwendung.

Tool ausprobieren

Hash-Generator

Hash-Generator

Verwandte Artikel