Schlüsselstreckung

Schlüsselstreckung ist eine kryptographische Schlüsselableitungsoperation, die einen schwachen Schlüssel, üblicherweise ein Passwort, sicherer machen soll, indem sie dafür sorgt, dass zum Durchprobieren aller Möglichkeiten mehr Mittel (Zeit, Speicher) benötigt werden. Stand der Technik ist Argon2. Den anerkannten Regeln der Technik genügen auch noch PBKDF2, bcrypt oder scrypt, die jedoch bekannte Nachteile aufweisen.

Strecktechniken arbeiten im Allgemeinen wie folgt: Der Anfangsschlüssel wird in einen Algorithmus eingegeben, der einen verbesserten Schlüssel erzeugt. Der erweiterte Schlüssel muss groß genug sein, damit er nicht durch einen Brute-Force-Angriff herausgefunden werden kann (er muss beispielsweise mindestens 128 Bit lang sein). Der Streckungsalgorithmus muss sicher sein, das heißt, es darf keine bekannten Mittel zum Berechnen des verbesserten Schlüssels mit einem Algorithmus geben, der weniger Aufwand als seine Erzeugung benötigt.

Der Angreifer, der einen gestreckten Schlüssel herausfinden möchte, hat zwei Möglichkeiten: entweder alle möglichen Kombinationen des erweiterten Schlüssels auszuprobieren (praktisch unmöglich, wenn der Schlüssel lang genug ist), oder alle möglichen Kombinationen von Zeichen des ursprünglichen Schlüssels auszuprobieren, indem er sie vor dem Ausprobieren streckt. Wenn in diesem zweiten Ansatz der Anfangsschlüssel ein Passwort ist, wird der Angreifer üblicherweise wie folgt vorgehen: zuerst wird er jedes Wort einer Liste von häufigen Passwörtern ausprobieren, dann jedes Wort im Wörterbuch, und schließlich alle möglichen Kombinationen von Zeichen des Passworts. Das Dehnen der Schlüssel verhindert diese Vorgehensweise nicht, aber der Angreifer wird viel Zeit benötigen, da er jedes mögliche Passwort strecken muss und jeder komplette Streckunglauf Zeit benötigt.

Wenn der Angreifer dieselbe Hardwareklasse wie der Benutzer verwendet, nimmt jeder Versuch die gleiche Zeit in Anspruch, die der Benutzer zum Strecken des Schlüssels benötigt hat (diese Zeit liegt normalerweise in der Größenordnung von einer Sekunde). Selbst wenn der Angreifer viel größere Rechenressourcen hat, verlangsamt die Schlüsselstreckung den Angriff erheblich, da der Computer des Benutzers die Streckungsfunktion nur einmal berechnen muss, um ein Kennwort zu verarbeiten, während der Angreifer sie für jeden Angriffsversuch neu berechnen muss.

Es gibt mehrere Möglichkeiten, die Schlüsselstreckung durchzuführen, zum Beispiel kann eine Kryptographische Hashfunktion oder Blockchiffre wiederholt angewendet werden.