StartseiteKryptografieHash-Funktionen — Lawineneffekt & Kollisionen

#️⃣ Hash-Funktionen — Lawineneffekt & Kollisionen

Entdecken Sie, was einen kryptografischen Hash stark macht: Ändern Sie ein Eingabebit und beobachten Sie, wie sich etwa die Hälfte der Ausgabebits ändert (der Lawineneffekt), und sehen Sie, wie die Geburtstagsschranke Kollisionen wahrscheinlicher macht als die Intuition vermuten lässt.

Kryptografie3DMittel60 FPS
sha-hashing ↗ Eigenständig öffnen

Über diese Simulation

Diese Simulation demonstriert zwei zentrale Eigenschaften eines kryptografischen Hashes mit einem kleinen, schnellen FNV-1a-Hash (ein nicht-kryptografischer Mischalgorithmus, benannt nach Fowler, Noll und Vo), der mit einem Xorshift-Schritt abgeschlossen wird und einen 32-Bit-Digest (einen Fingerabdruck fester Länge der Eingabe) erzeugt. Im Lawinen-Modus wird Ihr Text live gehasht und als Bit-Raster dargestellt; das Ändern eines Eingabebits berechnet den Hash neu und hebt jedes Ausgabebit hervor, das sich geändert hat — den Lawineneffekt. Im Geburtstags-Modus werden zufällige Stichproben in einen b-Bit-Raum mit B = 2b Buckets gehasht und auf Kollisionen geprüft, wobei die beobachtete Kollisionsrate gegen die theoretische Geburtstagsschranke 1 − e−n²/2B aufgetragen wird.

🔬 Was gezeigt wird

Ein 32-Bit-Hash, dargestellt als 4×8-Raster von 0/1-Zellen im Lawinen-Modus, wobei jedes Bit, das zwischen Eingabe A und Eingabe B umgekippt ist, rot hervorgehoben wird; und für den Geburtstags-Modus ein Live-Diagramm der Kollisionswahrscheinlichkeit gegenüber der Anzahl gezogener Stichproben, das eine bernsteinfarbene theoretische Kurve mit einem grünen beobachteten Datenpunkt vergleicht.

🎮 So wird's benutzt

Wechseln Sie mit den zwei Modus-Schaltflächen zwischen der Lawinen- und der Geburtstags-Ansicht. Geben Sie im Lawinen-Modus beliebigen Text in das Eingabefeld ein und drücken Sie „Ein Bit ändern“, um ein zufälliges Zeichen um ein einzelnes Bit zu verändern, oder „Zurücksetzen“, um zu „hello world“ zurückzukehren. Ziehen Sie im Geburtstags-Modus den Regler „Hash-Bits b“ (4–16), um den Bucket-Raum anzupassen, und „Gezogene Stichproben“ (1–120), um zu ändern, wie viele Werte pro Durchlauf gehasht werden, und drücken Sie dann „1 Durchlauf ausführen“ oder „200 Durchläufe ausführen“, um eine beobachtete Kollisionsrate zu sammeln.

💡 Wussten Sie schon?

Die Geburtstagsschranke ist der Grund, warum echte Hash-Funktionen etwa die doppelte Bitlänge ihres angestrebten Sicherheitsniveaus benötigen: SHA-256 erzeugt einen 256-Bit-Digest, aber weil Kollisionen bereits nach etwa √B Versuchen wahrscheinlich werden, liegt seine tatsächliche Kollisionsresistenz näher bei 128 Bit — genau der Wurzeleffekt, den Sie mit dem Regler dieser Simulation direkt sehen können.

Häufig gestellte Fragen

Welcher Algorithmus berechnet den Hash in dieser Simulation?

Es wird FNV-1a verwendet, ein schneller nicht-kryptografischer Hash: Er startet von einer festen Offset-Basis, verknüpft dann für jedes Eingabezeichen den laufenden Wert per XOR mit dem Zeichencode und multipliziert mit einer festen Primzahl (0x01000193). Das Ergebnis durchläuft anschließend einen Xorshift-Abschlussschritt (drei XOR-Shift-Operationen), um die Bits gründlicher zu verteilen, wodurch eine 32-Bit-Ausgabe entsteht. Es ist nicht SHA-256, zeigt aber dennoch dasselbe Lawinen- und Kollisionsverhalten, um das echte kryptografische Hashes herum entworfen sind.

Warum ändert das Umkippen eines Bits so viele Ausgabebits?

Weil FNV-1as Multiplikations-und-XOR-Kette jedes Eingabebyte durch jeden späteren Schritt mischt und weil der Xorshift-Abschluss jede einzelne Bitdifferenz über das gesamte 32-Bit-Wort verteilt, kaskadiert das Ändern eines Eingabebits im Schnitt in etwa der Hälfte der 32 Ausgabebits, die umkippen. Diese Eigenschaft ist der Lawineneffekt, und genau das zeigen Ihnen die rot hervorgehobenen Zellen im Lawinen-Modus Bit für Bit.

Was steuern die Regler „Hash-Bits“ und „Gezogene Stichproben“ im Geburtstags-Modus?

„Hash-Bits b“ legt die Breite des Hash-Raums fest: Mit b Bits gibt es B = 2b mögliche Ausgabe-Buckets (von 16 Buckets bei b=4 bis 65.536 bei b=16). „Gezogene Stichproben“ legt fest, wie viele zufällige Werte in einem einzelnen Durchlauf in diesen Raum gehasht werden, bevor die Simulation prüft, ob zwei im selben Bucket gelandet sind. Beide Regler setzen die laufenden Versuchsstatistiken zurück, damit die beobachtete Rate stets die aktuellen Einstellungen widerspiegelt.

Warum stimmt die beobachtete Kollisionsrate nicht genau mit der vorhergesagten Kurve überein?

Die bernsteinfarbene Kurve zeigt die geschlossene Geburtstagsschranke 1 − e−n²/2B, eine Näherung, die nur im Grenzfall vieler Durchläufe exakt ist. Der grüne Punkt ist ein echter empirischer Durchschnitt über die tatsächlich ausgeführten Durchläufe (angezeigt als „Durchgeführte Versuche“ im Statistikfeld); bei nur wenigen Durchläufen kann der Zufall dazu führen, dass der beobachtete Anteil merklich über oder unter der theoretischen Linie liegt. Drücken Sie wiederholt „200 Durchläufe ausführen“, um diese Lücke zu verkleinern.

Ist die Hash-Funktion dieser Simulation sicher genug für echte Kryptografie?

Nein — FNV-1a mit einem Xorshift-Abschluss ist schnell und zeigt das richtige statistische Verhalten zu Lehrzwecken, aber es fehlt das kryptografische Design (feste Rundenzahlen, Schlüsselpläne, bewiesene Diffusionsschranken), die Funktionen wie SHA-256 resistent gegen gezielte Angriffe machen. Echte Systeme müssen einen geprüften kryptografischen Hash verwenden; diese Simulation greift nur dieselben zwei Eigenschaften auf — Lawineneffekt und Geburtstagsschranke —, um sie sichtbar und interaktiv zu machen.

⚙ Unter der Haube

Entdecken Sie, was einen kryptografischen Hash stark macht: Ändern Sie ein Eingabebit und beobachten Sie, wie sich etwa die Hälfte der Ausgabebits ändert (der Lawineneffekt), und sehen Sie, wie die Geburtstagsschranke Kollisionen wahrscheinlicher macht als die Intuition vermuten lässt.

hash functionavalanche effectcollisiondiffusionCanvas 2D

3D · Three.js / WebGL-Renderer · 60 FPS Ziel · läuft vollständig clientseitig, keine Installation nötig

Was haben Sie gefunden?

Schritte zur Reproduktion hinzufügen (optional)