Alle Artikel

Scrypt: warum der Algorithmus so viel Speicher braucht

Zwischen 2013 und 2015 richtete das Password Hashing Competition-Konsortium einen offenen Wettbewerb aus, um scrypt einen modernen Nachfolger zur Seite zu stellen — Gewinner war Argon2, mitentwickelt von Kryptografen der Universität Luxemburg. Das BSI listet in TR-02102-1 heute beide Algorithmen als geeignete memory-hard-Verfahren, empfiehlt aber für neue Systeme in der Regel Argon2id wegen seiner feineren Kontrolle über Speicher- und Zeitkosten.

Was eine memory-hard Funktion ist

Ein memory-hard Algorithmus ist absichtlich so gestaltet, dass die Berechnung eines einzelnen Hashes das Halten einer großen Menge Zwischendaten im Speicher erfordert. Der Versuch, Speicher auf Kosten einer Neuberechnung der Werte zu sparen, erhöht stattdessen die Rechenzeit drastisch — der Angreifer muss also entweder Speicher oder Geschwindigkeit opfern.

Warum das Angriffe auf spezialisierter Hardware erschwert

ASIC-Chips und GPUs sind sehr effizient bei massiv paralleler Ausführung einfacher Rechenoperationen, aber jedem parallelen Rechenstrang Speicher hinzuzufügen, kostet deutlich mehr und skaliert schlechter. Scrypt macht einen Brute-Force-Angriff auf solcher Hardware wirtschaftlich weniger attraktiv im Vergleich zu klassischen Hash-Funktionen.

Wofür man das braucht

  • Einen Passwort-Hashing-Algorithmus wählen, der gegen Angriffe mit GPU-Farmen resistent ist.
  • Das Konzept memory-hard Funktionen im Kontext der Kryptografie verstehen.
  • Die Kompromisse von scrypt gegenüber bcrypt und Argon2 für ein bestimmtes System vergleichen.

Wie viel Speicher wirklich gebraucht wird

Der Speicherbedarf für eine einzelne scrypt-Berechnung entspricht näherungsweise 128 × N × r Byte. Bei typischen Parametern (N=16384, r=8) sind das etwa 16 Megabyte pro Hash — unbedeutend für einen einzelnen Login, aber wenn ein Server Tausende gleichzeitiger Authentifizierungen verarbeiten muss, wird der gesamte Speicherbedarf bei der Parameterwahl schnell zu einer realen Einschränkung, nicht nur zu einer abstrakten Sicherheitsanforderung.

Tool ausprobieren