Dialog Schlüssel aus Passwort generieren
Dieser Dialog ist erreichbar über den Eintrag Schlüssel aus Passwort generieren (PKCS #5) im Menü Einzelverfahren \ Hashverfahren.
Selbst wenn der kryptographische Teil sicher ist, so ist bei einer passwortbasierten Anwendung die praxisrelevante Benutzersicherheit von einem geheimen Text - dem "Passwort" - abhängig. Das Passwort selbst ist in der Regel für solche Kryptosysteme nicht direkt anwendbar, sondern man berechnet aus dem Passwort einen Schlüssel (Hexwert). Im Dialog Schlüssel aus Passwort generieren kann man kryptographisch sichere Schlüssel aus Passwörtern produzieren. Die Implementierung richtet sich dabei nach dem Standard PKCS #5.
Der hergeleitete Schlüssel ist neben dem geheimen Passwort auch von anderen Parametern abhängig: dem Salz, der Hashfunktion und der Anzahl der Iterationen, für die jeweils die Hashfunktion angewendet wird:
Der zusätzliche Initialisierungswert, das "Salz", bietet die Möglichkeit, dass aus ein und demselben Passwort unterschiedliche (abhängig von der Salz-Initialisierung) Schlüssel generiert werden.
Mit Hilfe von Hashfunktionen wird aus dem Passwort und dem Salz ein sicherer Schlüssel berechnet.
Sie können entsprechend dem PKCS #5-Standard zur Schlüsselerzeugung eine der folgenden Hashfunktionen wählen (die anderen von CrypTool angebotenen Funktionen sind (noch) nicht in den PKCS #5-Standard eingeflossen):
Je nach dem, welche Hashfunktion Sie wählen, ist die Ausgabelänge des Schlüssels 16 oder 20 Bytes lang (128 Bit oder 160 Bit).
Das Passwort wird dann durch die wiederholte Anwendung der Hashfunktion berechnet. Die Anzahl der Hash-Iterationen erhöht erheblich den Aufwand für den Angriff. Mindestens eine und höchstens 10.000 Hash-Iterationen können ausgeführt werden. Empfohlen sind 1000 Hash-Iterationen.
Salz-Werte und Iterationszähler sind im PKCS #5-Standard optionale Parameter: Um Wörterbuchangriffe zu erschweren sind diese beiden Parameter unabdingbar.
In dem nachfolgenden Beispiel erzeugt man aus dem (schlecht gewählten) Passwort HUND
einen 8 Byte Schlüssel, der z.B. für die Verschlüsselung mit DES benutzt werden kann (dafür kopiert man den erzeugten Schlüssel einfach in die Zwischenablage):