Logo Dennis' Tech Blog

SuperGenPass

Dennis Schwerdel  Security  Web
Post Image

SuperGenPass ist ein Bookmarklet das für jede Webseite unterschiedliche Passwörter generiert.

Als moderner Mensch mit Erstwohnsitz im Internet hat man auf Hunderten von Webseiten Accounts. Damit die auch sicher sind braucht man für jeden einzelenen ein Passwort und genau hier fängt das Problem an: Kein Mensch kann sich sichere Passwörter zu Hunderten von Websites merken.

Zu diesem Problem gibt es zahlreiche Lösungsansätze die alle ihre eigenen Probleme haben:

SuperGenPass geht hier einen ganz anderen Weg: Das Passwort wird für jede Seite speziell aus der Domain und einem Master-Passwort generiert. Dann muss man sich nur noch dieses Master-Passwort merken, keine Passwörter werden gespeichert und trotzdem hat jede Seite ein völlig anderes Passwort.

Damit das ganze auch sinnvoll benutzbar ist, gibt es SuperGenPass als Bookmarklet. D. h. man legt sich ein Lesezeichen mit dem Javascript-Code von SuperGenPass als Adresse an und wenn man dann ein Passwort auf einer Webseite benötigt, klickt man darauf und ein Popup von SuperGenPass generiert dann das Passwort.

Passwort-Generierung

Das Verfahren mit dem die Passwörter generiert werden ist etwas kompliziert:

Hier kurz die Berechnung in Python, wenn die Domain bereits gekürzt wurde:

def superGenPass(masterPassword, domainShort, length=10):
    import hashlib, re, base64
    h = masterPassword + ":" + domainShort
    i = 0
    while i < 10 or not (re.search("^[a-z]", h) and re.search("[A-Z]", h) and re.search("[0-9]", h)):
        h = hashlib.md5(h).digest()
        h = base64.b64encode(h).replace("+", "9").replace("/", "8").replace("=","A")
        i += 1
    return h[:length]

Sicherheit

Aus Sicherheitssicht ist das verwendete Hashverfahren MD5 ausreichend. Es gibt zwar besser geeignete Verfahren wie z.B. bcrypt aber auch bei MD5 ist das Master-Passwort relativ sicher, insbesondere weil das Verfahren mindestens 10 mal hintereinander angewendet wird. Das abgewandelte Base64 erzeugt Passwörter mit Ziffern, Klein- und Großbuchstaben aber leider ohne Sonderzeichen. Durch den Verzicht auf Sonderzeichen werden die Passwörter von fast allen Webseiten akzeptiert (manche fordern mittlerweile schon Sonderzeichen).

Durch die Implementierung als Bookmarklet läuft der Javascript-Code der das Passwort generiert im Kontext der Webseite ab, auf der man das Passwort eingeben will. Dadurch könnte diese Webseite das Master-Passwort bei der Eingabe oder während der Berechnung auslesen (Demo). Dieses Problem kann man umgehen wenn man SuperGenPass auf einer sicheren oder leeren Seite startet und die Domain manuell ändert, das ist natürlich etwas umständlich. Zu diesem Zweck gibt es SuperGenPass-Extensions für einige Browser: EnigmaPass für Chrome, Hash Password Generator für Firefox und SuperGenPass für Opera.

Software Info

Autor:
Chris Zarate
Lizenz:
GPL 2+
Programmiersprache:
JavaScript
Betriebssystem:
Browser
Beschriebene Version:
1.0.21