Sichere (deutsche) Passwörter mit Python und xkcdpass
Menschen sind schlecht darin, sich gute lange Passwörter zu merken. Computer sind dafür prädestiniert, schlechte (weil kurze) Passwörter zu knacken. Randall Munroe hat das in einem recht bekannten XKCD Comic dargestellt.
Mit xkcdpass
(Link) gibt es ein Python-Modul zur Erstellung von Passwörtern nach dem „xkcd-Schema“, das sich mittels pip install xkcdpass
einfach installieren lässt.
Startet man xkcdpass ohne weitere Parameter, so spuckt es einfach eine Reihe englischer Wörter aus:
C:\Users\Uwe>xkcdpass tackle tonsorial satisfied gecko fission decor
Um xkcdpass
die Ausgabe deutscher Passwörter beizubringen, geht man wie folgt vor.
1) Mittels --help
Parameter kommt man an die Liste aller Optionen, hier ist besonders -w
für die Angabe der Wortdatei spannend.
C:\Users\Uwe>xkcdpass --help usage: xkcdpass [-h] [-w WORDFILE] [--min MIN_LENGTH] [--max MAX_LENGTH] [-n NUM_WORDS] [-i] [-v VALID_CHARS] [-V] [-a ACROSTIC] [-c COUNT] [-d DELIM] [--allow-weak-rng] optional arguments: -h, --help show this help message and exit -w WORDFILE, --wordfile WORDFILE Specify that the file WORDFILE contains the list of valid words from which to generate passphrases. --min MIN_LENGTH Generate passphrases containing at least MIN_LENGTH words. --max MAX_LENGTH Generate passphrases containing at most MAX_LENGTH words. -n NUM_WORDS, --numwords NUM_WORDS Generate passphrases containing exactly NUM_WORDS words. -i, --interactive Generate and output a passphrase, query the user to accept it, and loop until one is accepted. -v VALID_CHARS, --valid-chars VALID_CHARS Limit passphrases to only include words matching the regex pattern VALID_CHARS (e.g. '[a-z]'). -V, --verbose Report various metrics for given options. -a ACROSTIC, --acrostic ACROSTIC Generate passphrases with an acrostic matching ACROSTIC. -c COUNT, --count COUNT Generate COUNT passphrases. -d DELIM, --delimiter DELIM Separate words within a passphrase with DELIM. --allow-weak-rng Allow fallback to weak RNG if the system does not support cryptographically secure RNG. Only use this if you know what you are doing.
2) Man besorgt sich eine Datei mit dem deutschen Wortschatz, per Google bin ich auf die folgende Seite der Uni Leipzig gestoßen: http://wortschatz.uni-leipzig.de/html/wliste.html. Hier gibt es Listen für die häufigsten 100, 1000 und 10’000 Wörter der deutschen Sprache (sowie auch für französisch, englisch und niederländisch). Die Liste mit den 10’000 häufigsten Wörtern speichern wir ab.
Ein Hinweis noch zur sprachlichen Einschätzung der 10000 Wörter: Der Duden geht davon aus, dass ein durchschnittlicher Deutsch-Sprecher zwischen 12’000 und 16’000 Wörter spricht, aber rund 50’000 deutsche Worte versteht.
3) Mit der Wortschatzdatei auf der Festplatte können wir jetzt einfach wieder xkcdpass aufrufen und nutzen gleich noch -c 10
für die Erzeugung von 10 Zeilen mit jeweils sechs Passwörtern:
C:\Users\Uwe>xkcdpass -c 10 -w e:\top10000de.txt Munition Alexander Bernhard Wissen Erstmals geraumer wissen genießt wenigen Verlierer wunderbar Teufel Wiesen Hartmut länger römische älter Stimme irgendwie Monitor operative läuft Vertrieb Optionen Stahl Brust Polizei Hoffnung Verlauf runden Ärzte Mafia Dieter Pakistan Systems Areal trieb hinweg Kanzlers unterlag zweimal zuviel vollzogen Sparen zwölf verlieren Dutzende Länge Infotyp beliebten gewisser Malerei gefunden Blätter Peking äußerten fährt Einblick Interesse schwach