Kryentech Logo Elektrotechnik Bericht

Key Derivation Funktionen - Schutz gegen Brute-Force Angriffe

Warum KDFs wie Argon2 zentral für moderne Passwortsicherheit sind

Schema einer Key Derivation Function mit Argon2 und Salt
Argon2-Schema: Passwort + Salt + Kostenparameter ergeben einen robusten Schlüssel.

Einleitung

In modernen Sicherheitssystemen reicht es nicht aus, ein Passwort direkt als kryptographischen Schlüssel zu verwenden. Passwörter besitzen typischerweise eine begrenzte Entropie und sind daher anfällig für systematische Angriffe wie Brute-Force oder Dictionary-Attacken.

Eine Key Derivation Function (KDF) transformiert ein solches Passwort in einen sicheren Schlüssel, indem sie gezielt Rechenzeit und Speicherverbrauch erhöht. Dadurch wird jeder einzelne Angriffsversuch künstlich verteuert.

In Systemen wie VisuKey ist dieser Schritt besonders kritisch: Hier wird aus einem biometrischen oder bildbasierten Input (z. B. Embedding eines Bildes) ein stabiler Schlüssel abgeleitet. Da dieser Input nicht perfekt deterministisch ist, muss die KDF zusätzlich sicherstellen, dass kleine Variationen nicht zu trivially erratbaren Schlüsseln führen.

Die Kombination aus Signalverarbeitung, Fehlerkorrektur und Key Derivation bildet somit die Grundlage für sichere, bildbasierte Authentifizierungssysteme.

Das Problem einfacher Passwörter

Ein Passwort ist aus informationstheoretischer Sicht eine Quelle mit begrenzter Entropie. Selbst bei scheinbar grossen Suchräumen ist die effektive Sicherheit oft deutlich geringer, da Benutzer keine zufälligen Strings wählen.

Ein typisches Beispiel:

62⁸ ≈ 2.18 × 10¹⁴ mögliche Kombinationen

Ein moderner Angreifer kann jedoch mittels GPUs oder spezialisierter Hardware (ASICs) mehrere Milliarden Hash-Berechnungen pro Sekunde durchführen. Damit reduziert sich die effektive Angriffszeit drastisch.

Das grundlegende Problem ist:

  • Passwörter sind nicht gleichverteilt
  • Passwörter besitzen geringe effektive Entropie
  • Passwörter sind offline angreifbar, sobald ein Hash vorliegt

In VisuKey ergibt sich ein ähnliches Problem: Ein Bild oder dessen Embedding ist kein perfekter Zufallswert. Die resultierende Bitstruktur enthält Korrelationen und reduzierte Entropie, die ohne zusätzliche Härtung angreifbar wären.

Grundprinzip der Key Derivation

Formal lässt sich eine Key Derivation Function als deterministische Abbildung beschreiben:

K = KDF(P, S, C)

mit:

  • P: Passwort oder Rohinput (z. B. Embedding)
  • S: Salt (zufälliger, nicht geheimer Wert)
  • C: Kostenparameter (Zeit, Speicher, Parallelität)

Der Salt erfüllt zwei zentrale Aufgaben:

  • Verhindert identische Schlüssel bei gleichen Eingaben
  • Eliminiert vorberechnete Angriffe (Rainbow Tables)

Die KDF selbst ist so konstruiert, dass sie:

  • nicht effizient invertierbar ist
  • keine strukturellen Abkürzungen erlaubt
  • gezielt hardware-unfreundlich ist

Selbst wenn ein Angreifer das Salt kennt (was üblich ist), bleibt der Schlüssel geschützt, da die Sicherheit nicht auf Geheimhaltung, sondern auf der Komplexität der KDF basiert.

In VisuKey wird dieser Schritt nach der Stabilisierung des Signals angewendet, um aus einem korrigierten Bitmuster einen kryptographisch sicheren Schlüssel zu erzeugen.

Beispiel: Von Passwort zum Schlüssel

Betrachten wir ein konkretes Beispiel, um den Ablauf einer Key Derivation Function zu verstehen.

Gegeben:

  • Passwort: meinPasswort123
  • Salt: 0xA7F3C91B (zufällig generiert)
  • Parameter: Argon2id mit m = 64 MB, t = 3, p = 2

Die KDF berechnet daraus:

K = Argon2id("meinPasswort123", Salt, Parameter)

Das Ergebnis ist ein scheinbar zufälliger Bitstring, z. B.:

0x9f3a7c2d...b81e

Wichtige Eigenschaften:

  • Der Output ist deterministisch (gleiche Eingabe → gleicher Schlüssel)
  • Schon kleinste Änderungen im Passwort führen zu komplett anderen Ergebnissen
  • Der Schlüssel ist nicht zurückrechenbar

Das Passwort wird dabei nicht „verschlüsselt“, sondern durch eine einseitige, absichtlich teure Transformation verarbeitet.

Zeitbasierte Kosten

Eine zentrale Eigenschaft moderner KDFs ist die kontrollierte Erhöhung der Rechenzeit. Dies wird typischerweise über Iterationen oder sequentielle Abhängigkeiten erreicht.

Der Gesamtaufwand eines Brute-Force-Angriffs lässt sich approximieren durch:

T ≈ N × tKDF

mit:

  • N: Anzahl möglicher Kandidaten
  • tKDF: Zeit pro KDF-Auswertung

Beispiel:

  • tKDF = 100 ms
  • N = 10⁹

→ T ≈ 3 Jahre

Für legitime Benutzer ist diese Verzögerung kaum spürbar, für Angreifer jedoch exponentiell kostspielig.

Speicherbasierte Kosten

Ein entscheidender Fortschritt moderner KDFs ist die Einführung von memory hardness. Dabei wird der Algorithmus so konstruiert, dass grosse Speicherbereiche benötigt werden.

Dies führt zu zwei Effekten:

  • Reduzierte Parallelisierung auf GPUs
  • Erhöhter Hardwareaufwand für spezialisierte Angriffe

Während CPUs über grossen, flexiblen Speicher verfügen, ist der Speicher pro GPU-Thread stark begrenzt.

Eine speicherintensive KDF zwingt den Angreifer daher, entweder:

  • weniger Threads parallel auszuführen
  • oder massiv mehr Hardware einzusetzen

Genau dieser Mechanismus macht Argon2 besonders effektiv.

Argon2 – moderner Standard

Argon2 basiert auf einem speicherintensiven Konstrukt, bei dem grosse Speicherblöcke iterativ gefüllt und miteinander verknüpft werden.

Die Berechnung erfolgt in mehreren Phasen:

  • Initialisierung des Speichers mit Passwort und Salt
  • mehrfache Durchläufe über den Speicher
  • datenabhängige oder datenunabhängige Zugriffsmuster

Die Varianten unterscheiden sich dabei im Zugriff:

  • Argon2d: datenabhängig → schnell, aber anfällig für Side-Channel
  • Argon2i: datenunabhängig → sicherer gegen Side-Channel
  • Argon2id: hybride Variante → empfohlen

Parameter von Argon2

Die Sicherheit von Argon2 wird vollständig durch seine Parameter bestimmt:

  • Memory Cost (m): Grösse des verwendeten Speichers
  • Time Cost (t): Anzahl der Iterationen
  • Parallelism (p): Anzahl paralleler Threads

Diese Parameter definieren den Ressourcenverbrauch pro Hash und damit direkt die Angriffskosten.

In sicherheitskritischen Anwendungen werden typischerweise:

  • m = 64–256 MB
  • t = 2–4
  • p = 2–4

Die optimale Wahl ist jedoch stark systemabhängig und sollte empirisch bestimmt werden.

Anwendung in VisuKey

In VisuKey wird eine KDF nicht direkt auf ein Passwort angewendet, sondern auf einen aus einem Bild abgeleiteten Feature-Vektor.

Der Ablauf ist typischerweise:

  1. Bild → Embedding (z. B. neuronales Netzwerk)
  2. Binarisierung des Embeddings
  3. Fehlerkorrektur (z. B. BCH-Code)
  4. KDF (Argon2) → finaler Schlüssel

Die KDF erfüllt hier mehrere Aufgaben gleichzeitig:

  • Erhöhung der Entropie des resultierenden Schlüssels
  • Verhinderung von strukturellen Angriffen auf das Embedding
  • Absicherung gegen brute-force Rekonstruktion ähnlicher Bilder

Besonders wichtig ist dabei die Kombination mit Fehlerkorrektur, da kleine Variationen im Eingangssignal vor der KDF stabilisiert werden müssen.

Fazit

Key Derivation Functions sind ein zentraler Bestandteil moderner kryptographischer Systeme. Sie transformieren Eingaben mit geringer Entropie in robuste Schlüssel und erhöhen gezielt die Kosten für Angreifer.

Mit Argon2 steht heute ein Verfahren zur Verfügung, das sowohl zeit- als auch speicherbasierte Härtung kombiniert und damit gegen moderne Hardwareangriffe optimiert ist.

In Systemen wie VisuKey ist die KDF ein entscheidendes Bindeglied zwischen Signalverarbeitung und Kryptographie und ermöglicht sichere Schlüsselableitung aus nicht-perfekten, realen Daten.

Autor: Ruedi von Kryentech

Erstellt am: 06.04.2026 · Zuletzt aktualisiert: 06.04.2026

Fachlicher Stand zum Zeitpunkt der letzten Aktualisierung.