Skip to content

Glossary

Memory-hard-Funktion

Eine memory-hard-Funktion erfordert bei jedem Versuch viel RAM und schließt so den GPU/ASIC-Vorteil, der rechenbegrenzte Hashes leicht knackbar macht.

Eine memory-hard-Funktion ist ein Passwort-Hash-Algorithmus, der so entworfen ist, dass jeder Versuch eine große, schwer zu reduzierende Menge an RAM benötigt — nicht nur CPU- oder GPU-Takte. Argon2 ist dafür das aktuelle Referenzbeispiel: Seine Parameter legen einen Speicherkostenwert in Kilobyte fest, den jede Hash-Berechnung reservieren muss, zusätzlich zu einem Zeitkostenwert und einem Parallelitätsfaktor. scrypt hat dieselbe Idee früher mit seinen Parametern N/r/p eingeführt.

Der Zweck ist, den Vorteil zu beseitigen, der einen rein rechenbegrenzten Hash wie MD5 oder SHA-1 so billig angreifbar macht: Eine GPU vereint Tausende Kerne, die diese Hashes nahezu kostenlos parallel berechnen können, doch GPUs haben vergleichsweise wenig Speicher pro Kern. Zwingt man jeden Versuch dazu, zum Beispiel 64 MB im Speicher zu halten, kann ein Angreifer nicht mehr Tausende Versuche gleichzeitig auf derselben Karte laufen lassen — der Speicherbedarf, nicht die Arithmetik, wird zum Flaschenhals, und er lässt sich weit teurer skalieren als reine Rechenleistung.

Memory-Hardness ergänzt einen Kostenfaktor, ersetzt ihn aber nicht: Beide Parameter werden meist gemeinsam abgestimmt. Siehe Argon2 vs bcrypt vs scrypt für das Zusammenspiel von Speicher, Zeit und Parallelität sowie hashcat für echten GPU-Durchsatz einstellen dafür, warum memory-hard-Hashes nur mit einem winzigen Bruchteil der Geschwindigkeit eines rohen Digests geknackt werden.