EMZETT.
Login

Prüfsummen, Parität und CRC: Fehler in Daten erkennen

Kurz: Prüfwerte wie Paritätsbit, Prüfsumme und CRC werden mit den Daten gespeichert oder gesendet; stimmen sie beim Empfänger nicht, ist beim Übertragen oder Speichern etwas schiefgelaufen.

Genauer: Beim Funken, Kabeln, Speichern und Kopieren können einzelne Bits kippen (Rauschen, Defekte, Strahlung). Damit man das bemerkt, hängt man redundante Information an die Daten an. Diese Verfahren erkennen (und manche korrigieren) zufällige Fehler, schützen aber nicht vor Manipulation: Dafür braucht man kryptografische Hashes und Signaturen.

Im Detail

Paritätsbit

Ein zusätzliches Bit macht die Anzahl der Einsen gerade (gerade Parität) oder ungerade:

Daten 1011001  → Anzahl Einsen 4 → Paritätsbit 0 → 10110010
Daten 1011011  → Anzahl Einsen 5 → Paritätsbit 1 → 10110111

Erkennt jeden Einzelbitfehler, aber keine Fehler in gerader Anzahl von Bits und lokalisiert nichts. Genutzt in einfachen seriellen Verbindungen und Speichern. Zweidimensionale Parität (Zeilen und Spalten) kann einen einzelnen Fehler orten.

Prüfsumme (Checksum)

Die Datenwörter werden addiert (oft modulo 2^n) und das Ergebnis mit gesendet. Beispiele: Internet-Prüfsumme in IP/TCP/UDP-Headern (16-Bit-Einerkomplement-Summe), ISBN- und IBAN-Prüfziffern (Modulo 11/97 erkennen Tippfehler), Luhn-Algorithmus bei Kreditkartennummern. Einfach und schnell, aber schwächer (Vertauschungen werden nicht immer bemerkt).

CRC (Cyclic Redundancy Check)

Die Daten werden als großes Polynom über GF(2) betrachtet und durch ein Generatorpolynom geteilt; der Rest ist der CRC-Wert (zum Beispiel CRC-32).

import zlib
print(hex(zlib.crc32(b"Hallo Welt")))

CRC erkennt Einzelbit-, Doppelbit- und alle Burst-Fehler bis zur Länge des Werts mit hoher Sicherheit, ist in Hardware leicht umzusetzen und deshalb Standard in Ethernet, WLAN, USB, SATA, ZIP, PNG, Bluetooth. Er ist kein Schutz gegen Angriffe (leicht zu fälschen).

Einordnung und Praxis

  • Hashes (SHA-256) als Download-Prüfwerte: schützen auch vor absichtlicher Veränderung (wenn die Quelle des Hashes vertrauenswürdig ist).
  • Fehlerkorrektur (ECC-RAM, Hamming-Code, Reed-Solomon bei CDs/QR-Codes, RAID-Parität) repariert Fehler zusätzlich.
  • Schicht-Modell: Bitübertragung → Sicherung (Ethernet-CRC) → Transport (TCP-Prüfsumme) → Anwendung (Hash); jede Ebene prüft für sich.
  • Beim Kopieren großer Daten hilft sha256sum/rsync --checksum gegen stille Fehler (Bit Rot).

Siehe auch: Hashing, SHA-256