====== Diceware-Verfahren ====== Das [[https://de.wikipedia.org/wiki/Diceware|Diceware-Verfahren]] ist ein einfaches Verfahren zur Generierung von Passphrasen (also langen Passwörter), die gleichzeitig sicher und realtive einfach zu merken sind. Weiter unten finden Sie ein Python-Programm, mit dessen Hilfe Sie Diceware-Passphrasen automatisiert erzeugen können. Um das Programm auszuführen, benötigen sie noch eine Diceware-Wortliste, die Sie zum Beispiel hier [[http://world.std.com/~reinhold/diceware_german.txt]] finden können. Weiterhin benötigen Sie natürlich auch noch Python selbst: [[https://www.python.org/]] Das Python-Programm ist [[https://de.wikipedia.org/wiki/Freie_Software|freie Software]]. Das bedeutet, dass die Nutzerin oder der Nutzer das Recht hat, die Funktionsweise des Programms analysieren und verstehen zu können. Technisch wird dies dadurch erreicht, dass der unten abgedruckte Quelltext des Programms veröffenlicht wird. Auch wenn Sie die Programmiersprache Python nicht kennen und deshalb vielleicht nicht jedes Detail verstehen, so lesen sie doch einfach mal den Quelltext quer. Vielleicht bekommen Sie ja dennoch ein Gefühl dafür, ob das Programm tatsächlich nur das Erwartete tut, oder ob es vielleicht im Hintergrund zusätzlich noch heimlich andere Dinge tut, die Sie nicht erwarten und deshalb als betrügerisch empfinden würden? # Lizenz: Freie Software, GPL-3.0, Autorin: selva # URL zur lizenz: https://www.gnu.org/licenses/gpl.html import random # Einlesen der Wortliste aus Datei: file = open("diceware_german.txt", "r") wordlist = {} for line in file: if line[0] != "#": number = line[0:5] word = line[6:len(line)-1] wordlist[number] = word file.close() # Erzeugen der Passphrase: print("Generate Passphrase with Diceware-Method:") print("Press e for exit, any key for one more word:") passphrase = "" entropie = 0 next = True while(next): # 5-malige Würfeln (Pseudozufallszahlen): randomValue = "" for i in range(0,5): randomValue += str( random.randint(1,6) ) # Nachschlagen des Diceware-Wortes und Zusammenbau der Passphrase: passphrase += wordlist[randomValue] + " " entropie += 12.92 print( passphrase ) print(" (Entropie {e:5.2f} Bit)".format(e=entropie) ) if( input() == 'e' ): next = False === Anmerkung === In dem obigen Programm wurde das Modul random zur Erzeugung von Pseudozufallszahlen verwendet. Für kryptographische Zwecke sollte man stattdessen eigentlich besser das Modul secret verwenden, da dann die Qualität der Pseudozufallszahlen besser ist. Allerdings ist dieses Modul erst ab Python Version 3.6 vorhanden. Am Besten ist ohnehin, Sie verwenden einen echten Spielwürfel und würfeln per Hand, dann erzeugen sie echte Zufallszahlen statt lediglich Pseudozufallszahlen. Wer es ganz genau nimmt, kann sich übrigens auch einen echten Casinowürfel bestellen, da normale Spielwürfel aufgrund des Herausfräsens der Punkte nicht völlig symmetisch und damit ganz streng genommmen im mathematischen Sinne nicht fair sind...