Zum Inhalt springen
HexaTransfer
Zurück zum Blog
Verschlusselung & Sicherheit

Hash-Funktionen erklärt: Dateiintegrität einfach prüfen

Hash-Funktionen sind wesentlich für die Integritätsprüfung nach dem Transfer. Wie SHA-256 und MD5 sicherstellen, dass Dateien unverändert ankommen.

Eine Hash-Funktion nimmt eine beliebige Eingabe und produziert eine Ausgabe fester Größe — SHA-256 liefert immer exakt 256 Bits (32 Bytes), egal ob die Eingabe ein Tweet oder ein 10-GB-Video ist. Ändern Sie ein einziges Bit der Eingabe, flippen etwa die Hälfte der Ausgabebits. Diese Einwegigkeit und Determiniertheit macht Hashes zum Standardwerkzeug für die Dateiintegritätsprüfung: SHA-256(Datei) vor dem Versenden berechnen, nach dem Empfang erneut berechnen — stimmen die Hashes überein, kam die Datei unverändert an. So verifizieren Linux-Distributionen ISO-Downloads, so identifiziert Git Commits, und so bestätigen Dienste wie HexaTransfer, dass mehrstufige Gigabyte-Uploads ohne Datenverfälschung abgeschlossen wurden.

Was eine Hash-Funktion garantiert

Drei Eigenschaften definieren eine kryptografische Hash-Funktion:

  • Deterministisch. Gleiche Eingabe, immer gleiche Ausgabe. SHA-256("hello") ist stets 2cf24dba5fb0a30e....
  • Pre-Image-Resistenz. Aus einem Hash lässt sich keine Eingabe effizient rekonstruieren.
  • Kollisionsresistenz. Zwei verschiedene Eingaben mit demselben Hash lassen sich nicht effizient finden.

Dazu zwei nützliche Verhaltensweisen:

  • Lawineneffekt. Ein geändertes Eingabebit flippt etwa 50 % der Ausgabebits. Macht Hashes für Suchen unbrauchbar, aber ideal zum Fingerprinting.
  • Feste Ausgabegröße. SHA-256 ist 32 Bytes, SHA-512 ist 64 Bytes, BLAKE2b ist 64 Bytes — unabhängig von der Eingabegröße.

Hashes sind keine Verschlüsselung. Sie sind einweisig — aus der Ausgabe kann die Eingabe nicht rekonstruiert werden. Das ist der Zweck.

Die SHA-Familie

Die Secure-Hash-Algorithm-Familie, von NIST in FIPS 180-4 und FIPS 202 standardisiert:

  • SHA-1 — 160 Bits, durch Googles SHAttered-Angriff 2017 gebrochen. Nicht für sicherheitskritische Zwecke verwenden.
  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512). Das Arbeitspferd moderner Systeme. SHA-256 dominiert.
  • SHA-3 (Keccak). Andere Konstruktion (Schwamm statt Merkle-Damgård), 2015 als Absicherung gegen SHA-2-Schwächen standardisiert, die sich nicht materialisiert haben.

SHA-256 ist das, womit TLS-Zertifikate signiert, Bitcoin gemined, Git identifiziert (mit geplanter SHA-256-Umstellung) und Dateiübertragungsdienste Integritätsprüfungen durchführen. Durchsatz auf modernen CPUs mit SHA-Erweiterungen: 2–4 GB/s pro Kern.

Warum MD5 und SHA-1 für Sicherheit ausgedient haben

MD5 (1991) produziert 128-Bit-Hashes und war Standard, bis 2004 Kollisionen demonstriert wurden. Bis 2012 hatte die Flame-Malware Microsoft Code-Signing-Zertifikate mit einem MD5-Kollisionsangriff gefälscht. Heute lassen sich MD5-Kollisionen in Sekunden auf einem Laptop erzeugen.

SHA-1 hielt länger durch, fiel aber 2017 Googles SHAttered-Angriff zum Opfer, der zwei PDFs mit identischem SHA-1-Hash nach 110 GPU-Jahren Rechenaufwand produzierte — heute für unter 100.000 € auf Cloud-GPUs reproduzierbar.

Beide sind für Nicht-Sicherheitszwecke weiterhin geeignet: Datenverfälschungen erkennen, Speicher deduplizieren, Cache-Schlüssel fingerprinting. Für digitale Signaturen, Passwortprüfung oder alles, bei dem ein Angreifer von einer Fälschung profitiert, sind sie ungeeignet.

BLAKE2 und BLAKE3: Geschwindigkeit trifft Sicherheit

BLAKE2 (2012) und BLAKE3 (2020) bieten SHA-3-Sicherheit bei 2–10-facher Geschwindigkeit von SHA-256. BLAKE3 erreicht etwa 6 GB/s im Single-Thread-Betrieb und skaliert linear über Kerne — ein 16-Kern-Rechner kann 100+ GB/s erreichen.

Die Verbreitung wächst: WireGuard nutzt BLAKE2s für Authentifizierung, Zcash nutzt BLAKE2b, und b3sum wird als gängiger Ersatz für sha256sum in Entwickler-Toolchains. Dateiübertragungsdienste, die mehrstufige Gigabyte-Uploads verarbeiten, setzen zunehmend auf BLAKE3, um die Hash-Berechnung nicht zum Engpass werden zu lassen.

Browser stellen BLAKE3 noch nicht über die Web Crypto API bereit, daher nutzen JavaScript-Implementierungen WASM-kompilierten Referenzcode mit etwa 500 MB/s im Browser.

Hashes im Dateiübertragungsworkflow

Mehrere Stellen, an denen Hashes ihren Wert beweisen:

  • Integritätsprüfung nach dem Upload. Client berechnet SHA-256 während des Uploads, Server berechnet ihn beim Empfang — Abweichungen lösen einen erneuten Upload aus. S3 nutzt MD5 hierfür, da Geschwindigkeit wichtiger ist als Kollisionsresistenz gegen passive Datenverfälschung.
  • Chunk-Upload-Verifizierung. Große Dateien werden in 4-MB- oder 5-MB-Blöcke aufgeteilt; jeder Block erhält einen Hash, und ein Baum von Hashes (Merkle-Baum) produziert einen einzelnen Root-Hash für die gesamte Datei.
  • Deduplizierung. Wenn zwei Nutzer dieselbe Datei hochladen, stimmen die Hashes überein, und der Speicher hält nur eine Kopie. Genutzt von Dropboxs blockweiser Deduplizierung und CDN-Caching.
  • Download-Verifizierung. Einige Dienste zeigen den SHA-256 auf der Download-Seite an, damit Empfänger prüfen können.
  • Versionsidentifikation. Git nutzt SHA-1 (Umstellung auf SHA-256 in Arbeit) für Commit-IDs — der Inhalt einer Datei bestimmt ihre Identität.

Die HMAC-Erweiterung

Einfache Hashes können Integrität prüfen, aber keine Authentizität — jeder kann SHA-256(Datei) berechnen. Das Hinzufügen eines geheimen Schlüssels macht aus einem Hash einen Message Authentication Code (MAC): Nur jemand mit dem Schlüssel kann den MAC erzeugen oder prüfen.

HMAC (RFC 2104) ist die Standardkonstruktion: HMAC(Schlüssel, Nachricht) = SHA-256(Schlüssel' ⊕ opad || SHA-256(Schlüssel' ⊕ ipad || Nachricht)). Genutzt in TLS 1.2, JWTs mit HS256, AWS-Anfrage-Signierung und vielen Session-Cookie-Verfahren.

Bei Dateiübertragungen erscheint HMAC im Authentifizierungs-Tag von AES-GCM (das GHASH, nicht HMAC nutzt, aber dieselbe Aufgabe erfüllt) und in einigen Dienste-API-Anfrage-Signierungen.

Merkle-Bäume: Hashing im großen Maßstab

Für sehr große Dateien oder Dateisammlungen ist das vollständige Hashing jedes Mal aufwändig. Ein Merkle-Baum ordnet Hashes in einem binären Baum an: Blätter sind Block-Hashes, innere Knoten sind Hashes ihrer Kinder, der Root-Hash repräsentiert den gesamten Datensatz.

Vorteile:

  • Effiziente Updates. Eine Änderung in einem Block erfordert nur das Neu-Hashen von log(n) Knoten.
  • Inklusionsnachweise. Sie können beweisen, dass ein bestimmter Block Teil des Root ist — mit nur log(n) Geschwister-Hashes.
  • Parallele Berechnung. Äste werden unabhängig gehasht.

Genutzt von BitTorrent (ab v2), IPFS-Content-Addressing, Gits Tree-Objekten, Certificate-Transparency-Logs und Blockchain-Transaktions-Roots. Dateiübertragungsdienste nutzen Merkle-Bäume für wiederaufnehmbare Uploads, bei denen Teiluploads gegen das Original verifiziert werden müssen.

Passwörter und Hashes

Eine Anwendung von Hashes: Passwörter in speichersichere Werte umwandeln. Einfaches SHA-256(Passwort) reicht nicht — GPU-Farmen berechnen Milliarden SHA-256 pro Sekunde, sodass jedes gängige Passwort sofort fällt.

Passwort-spezifische Hashes fügen Rechenkosten hinzu:

  • PBKDF2-HMAC-SHA-256 mit 600.000 Iterationen (OWASP 2023).
  • bcrypt mit Kostenfaktor 12 (etwa 250 ms pro Hash).
  • scrypt mit Speicher-Hardness gegen GPUs.
  • Argon2id — aktuelle Best Practice, speicher- und parallelitätsresistent.

Das Ziel ist nicht Sicherheit durch den Hash selbst — es geht darum, jeden Rateversuch teuer genug zu machen, um Offline-Brute-Force für alles außer schwachen Passwörtern unpraktikabel zu machen.

Einen Download manuell verifizieren

Jede wichtige Datei lässt sich mit Kommandozeilen-Tools prüfen. Unter macOS oder Linux:

shasum -a 256 ubuntu-24.04.iso

Unter Windows PowerShell:

Get-FileHash ubuntu-24.04.iso -Algorithm SHA256

Vergleichen Sie die Ausgabe mit dem veröffentlichten Hash auf ubuntu.com. Stimmen sie überein, kam die Datei unverändert an und entspricht dem, was Canonical signiert hat. Weichen sie ab, wurde der Download entweder beschädigt oder jemand hat die Datei ausgetauscht.

Für maximales Vertrauen: Prüfen Sie die Signatur der Hash-Datei selbst mit GPG und Canonicals Signaturschlüssel. Die mehrstufige Kette — signierte Hash-Datei → Datei-Hash → Datei — ist der Weg, auf dem Linux-Distributionen seit Jahrzehnten Vertrauen aufrechterhalten.

Die Integritätsprüfung eines Dateiübertragungsdienstes bewerten

Vier sinnvolle Fragen an jeden Dateiübertragungsanbieter:

  • Welchen Hash-Algorithmus nutzen Sie zur Upload-Verifizierung? (SHA-256 oder BLAKE3 sind in Ordnung; MD5 ist tolerierbar für reine Datenverfälschungsprüfungen; Schweigen ist ein Warnsignal.)
  • Zeigen Sie den Hash dem Empfänger? (Nicht alle tun das, aber es ist nützlich.)
  • Wird bei Chunk-Uploads ein Merkle-Baum verifiziert?
  • Gibt es eine Möglichkeit, Hashes zwischen Endpunkten zu vergleichen?

SwissTransfer, Tresorit, Proton Drive und HexaTransfer berechnen alle SHA-256 während der Übertragung und verifizieren beim Empfang. Integritätsfehler lösen einen automatischen Re-Upload der betroffenen Blöcke aus, anstatt die gesamte Übertragung scheitern zu lassen.

In der Praxis anwenden

Für Ihre nächste sensible Übertragung: Berechnen Sie shasum -a 256 datei.pdf vor dem Upload, notieren Sie den Hash, und bitten Sie den Empfänger, dasselbe nach dem Download zu tun. Übereinstimmende Hashes beweisen Byte-für-Byte-Integrität. Das ist 30 Sekunden Aufwand, der Datenverfälschungen, Manipulation und gelegentlich fehlkonfigurierte CDNs aufdeckt.

Auf hexatransfer.com testen — kostenlos, ohne Konto, bis 10 GB.

Große Dateien sicher mit Ende-zu-Ende-Verschlüsselung senden

Übertragen Sie Dateien bis zu 10 GB kostenlos mit Ende-zu-Ende-Verschlüsselung. Kein Konto erforderlich. Ihre Dateien werden in Ihrem Browser verschlüsselt, bevor sie hochgeladen werden — niemand sonst kann sie lesen.

Datei senden