To main content

SuperGenPass: Einfach sichere Passwörter

Veröffentlicht von Benjamin Marwell am

SuperGenPass ist eine Website, die ein freies Bookmarklet anbietet. Dieses erzeugt beim Aufruf auf einer Website zusammen mit einem Masterpasswort ein Kennwort, welches seitenspezifisch ist. Damit soll die Sicherheit des Benutzers erhöht werden. Aber kann das funktionieren? Ein SuperGenPasswort-Review.

Was ist SuperGenPass?

SuperGenPass ist ein Passwortgenerator und eine Passwortdatenbank, die keine Passwörter speichert. Das funktioniert, weil die Passwörter durch einen wiederholbaren Algorithmus erstellt werden. Als Eingabe nutzt man sein Masterpasswort und die Domain des Logins, daraus wird das Passwort für die Zielseite erstellt.

[caption id="attachment_5615" align="aligncenter" width="1440"]Goldener Schlüssel mit blau  - RainerSturm  / pixelio.deGoldener Schlüssel mit blau - RainerSturm / pixelio.de[/caption]

SuperGenPass ist dabei besonders bequem, da es die Domain automatisch in das entsprechende Eingabefeld einfügt. Dadurch ist außerdem gewährleistet, dass die Domain immer mit der gleichen Schreibweise eingegeben wird. Der Benutzer muss daher lediglich sein Masterpasswort eintippen, um das Login-Passwort für die Zielseite zu erhalten.

Gelöste Probleme

Warum also der ganze Aufwand? Ganz einfach:
  • Jedes Login erhält ein eigenes Passwort. Grüner Haken
  • Der Benutzer muss sich trotzdem nur ein Passwort merken (das sog. Masterpasswort). Grüner Haken
  • Man schickt sein Hauptkennwort (das Masterpasswort) nicht über das Internet zu fremden Seiten. Grüner Haken
  • Keine Passwortdatenbanken. Grüner Haken
  • Keine zusätzliche Software. Grüner Haken
  • Keine Daten, die verloren gehen können. Grüner Haken
  • Unabhängig vom Login (Benutzername, E-Mail, etc.). Grüner Haken

Vorteile der Technik

Ohne Passwortdatenbank kann natürlich auch kein Passwort verloren gehen - das ist praktisch, wenn man mal unterwegs ist. Es entfällt dabei aber auch die Synchronisation von Passwortdatenbanken, wie etwa dem PC und dem I-Phone bzw. vom Android-Gerät. Da die Passwörter einfach nacherstellt werden können, ist keine Speicherung von Daten notwendig.

Die Funktionsweise von SuperGenPass

Das Bookmarklet

SuperGenPass bietet ein sog. Bookmarklet. Dabei handelt es sich um ein Lesezeichen, welches keine Website aufruft, sondern ein Script. Eine Installation erfolgt nicht, man zieht den Link lediglich mit seiner Maus in die Lesezeichenleiste seines Browsers.

Dieses Bookmarklet-Skript erstellt ein kleines Overlay, d. h. ein Fenster, welches über der Webseite liegt. In dem zweiten Feld ist die Domain bereits eingefügt, in das erste Feld gibt man sein Masterpasswort ein. In der Ausgabe erscheint nun das Login-Passwort für die Webseite, welches man bequem in das Login-Formular der Website kopieren kann.

Mobile Seite für Android und iOS

Da Bookmarklets auf Mobilgeräten in der Regel nicht funktionieren, gibt es auch eine mobile Version. Es handelt sich dabei um eine einzelne Seite, die nach Eingabe von Masterpasswort und Domain (dankenswerter Weise per Auto-Vervollständigung) das Passwort generiert und auch gleich in die Zwischenablage kopiert.

Da man diese Funktion ggf. häufig braucht, bietet es sich an, diese Seite etwa als Startseite des Browsers festzulegen, oder alternativ einen Link bzw. ein Lesezeichen auf dem Android-Homescreen abzulegen.

Die Android-App

Die offizielle Android-App ist auf Google Play zu finden. Sie ist komplett kostenfrei und frei erhältlich. Der Quelltext findet sich auf der Homepage staticfree.info. Der Link zum Android-Playstore ist via Klick oder QR-Scan über die folgende Box zu erreichen.

SuperGenPass
SuperGenPass
Developer: staticfree.info
Price: Free

Die Vorteile der App liegen auf der Hand: Durch die lokale App können einige Daten, wie etwa Domains, schneller geladen und gespeichert werden. Das generierte Passwort kann auch für einige Zeit im Speicher gehalten werden. Insgesamt hat die App noch Potential, sich besser als die mobile Webseite in das System zu integrieren. Überdies ist sie durch das Android-Rechtesystem geschützt und etwa nicht über Cross-Site-Scripting-Angriffe verwundbar.

Die Sicherheit von SuperGenPass

Der Algorithmus im Detail

Der Algorithmus ist zwangsweise in allen Implementierungen gleich, damit diese Art des Passwortmanagers auf allen Systemen gleichermaßen funktioniert. Den Algorithmus habe ich von Dennis Schwerdel übernommen und zur Übersichtlichkeit in eine Tabelle gesteckt.
Algorithmus zum Erstellen von SuperGenKey-PasswörternBeispiel
Frage nach dem Masterpasswort.Ohjei6bi$e
Frage nach der Domain.http://login.uberspace.de/entry.php
Setze kurzdomain = Kürze die Domain um alle Pfade und Subdomains,  wobei spezielle Domains wie ".co.uk" als eine Topleveldomain gelten.uberspace.de
Setze hash = Masterpasswort : kurzdomainOhjei6bi$e:uberspace.de
wiederhole bis min. 10 Durchläufe erreicht sind und der hash mit einem Kleinbuchstaben anfängt und mindestens eine Ziffer und einen Großbuchstaben enthält.9. Durchlauf: nochmal. hash[0] not in [a-z]: nochmal [A-Z] not in hash: nochmal [0-9] not in hash: nochmal.
   |hash = md5(hash)0x812187fb1d4093ff6e2aeb0e03b1f60e
   |hash = Base64(hash)ODEyMTg3ZmIxZDQwOTNmZjZlMmFlYjBlMDNiMWY2MGU=
   |hash = Ersetze in hash: + durch 9, / durch 8 und = durch A.ODEyMTg3ZmIxZDQwOTNmZjZlMmFlYjBlMDNiMWY2MGUA
Kürze den Hash auf die ersten 10 stellen.dC3Q0gUR2F
asd

Anforderungen an das Passwort

Das Masterpasswort kann eine beliebige Stärke aufweisen. Da man sich aber nur ein Passwort merken muss, sollte dieses nun umso stärker sein. Als Länge würde ich aus dem Bauch heraus 10 bis 12 Zeichen empfehlen, mindestens ein bis zwei Sonderzeichen, Zahlen und Großbuchstaben. Das Passwort selbst wird zu keinem Zeitpunkt an Fremdserver übertragen. Es wird aber gehasht und mit Base64 enkodiert.

Das bedeutet aber, dass SuperGenPass niemals ein Sonderzeichen ausgibt. Das MD5-Verfahren gibt nur Zeichen im Bereich a bis f und 0-9 aus. Das von Base64 generierte Ergebnis ist daher ähnlich beschränkt. Anzumerken ist allerdings, dass Base64 nicht auf die oben genannten Zeichen angewendet wird, sondern auf den entsprechenden Bytecode.

Behobene Sicherheitslücke: DOM-Angriff

In einer früheren Version konnte das Bookmarklet von SuperGenPass angegriffen werden. Das war dadurch möglich, dass ein Bookmarklet immer im Kontext der unterliegenden Website läuft - diese hat dadurch auch Zugriff auf die Daten im Formular.

<script>
	$(document).ready(function () {
		$("#gp2_master").live("keyup", function() {
			$('#password').html(($(this).val()));
		});
	});
</script>

Diese Sicherheitslücke wurde aber behoben, indem SuperGenPass nun in einem I-Frame läuft; nach derzeitigem Kenntnisstand können keine Webseiten die Formularinhalte von SuperGenPass lesen.

Sicherheit im Vergleich zu LastPass

LastPass nutzt vollständig zufällig generierte Passwörter und kann die Sicherheitsanforderungen je nach Seite herauf- oder herabsetzen. Zudem lässt sich das Passwort (Master- sowie Seitenpasswort) auch jederzeit ohne weitere Auswirkungen ändern. Das ist definitiv ein Vorteil. Allerdings werden die Daten -- wenn auch verschlüsselt -- in der Cloud gespeichert. Alleine das spricht gegen LastPass. Zudem gab es bereits negative Presse zu LastPass: Ist der Dienst nicht verfügbar, wo muss man wieder auf lokale Datenbanken zugreifen. Das ist kein wünschenswertes Szenario. Alleine aus diesem Aspekt heraus würde ich LastPass nicht nutzen.

Mögliche Probleme mit SuperGenPass

Die folgenden Probleme mit SuperGenPass beziehen sich alle auf den Umstand, dass das generierte Kennwort nicht -- oder nicht mehr -- den Anforderungen der besuchten Website genügt. Der Ausweg heißt Meta-Daten. Das bedeutet, dass man sich -- wie mit allen anderen Verfahren -- zusätzliche Informationen zur Webseite merken muss. Das war genau das Problem, welches man mit SuperGenPass ursprünglich umgehen wollte.

Passwort-Anforderungen erfordern Aufwand

Wie oben beschrieben, gibt es Seiten, die etwa Sonderzeichen fordern (ärgerlich), kürzere Passwörter (ziemlich dämlich) oder längere Passwörter (nicht unbedingt dämlich). Bei diesen Seiten ist es also notwendig, sich ein eigenes Kennwort auszudenken, oder das generierte Kennwort um ein Sonderzeichen zu erweitern. Somit muss man sich hier wieder Meta-Daten merken.

Beispiel: Das Registrierungsformular auf der Webseite myservice.example lässt keine Sonderzeichen zu. Zu dem oben generierten Passwort »dC3Q0gUR2F« muss man noch ein Sonderzeichen anhängen, etwa das Dollar-Zeichen ($). Es ergibt sich also das Passwort »dC3Q0gUR2F$«. Diese zusätzliche Information wird aber nur auf dieser Seite benötigt, welches einen ärgerlichen Umstand darstellt.

Heartbleed: Passwortwechsel

Möchte oder muss man auf einer Website das Passwort ändern, so muss man muss sich wieder Meta-Daten merken. Das kann etwa erforderlich sein, wenn ein Dienst beschließt, aus Sicherheitsgründen (etwa auf Grundlage des Heartbleed-Angriffs) eine Passwortänderung  zu erzwingen. Die Frage lautet daher also: Wie bringe ich SuperGenPass dazu, ein neues Passwort für die gleiche Domain zu generieren?

Ein neues Passwort kann nur entstehen, wenn man das Masterpasswort ändert. Hier kann man etwa einen Zähler anhängen. Lautet das Masterpasswort wie im obrigen Beispiel »Ohjei6bi$e«, so könnte man etwa die Jahreszahl anhängen: »Ohjei6bi$e14«. Auch hierbei handelt es sich wieder um eine Meta-Information, die man ursprünglich durch den Einsatz von SuperGenPass vermeiden wollte. Denn auch diese Information gilt nur für diese eine Domain.

Mehrere Dienste auf einer Domain

Nun gesellt sich leider noch ein weiteres Problemchen zu den genannten hinzu: Nicht jede Seite nutzt für Ihr Login auch ihre eigene Domain. Beispiel Audible: Die Hörbuchseite gehört zu Amazon. Als Domain wird daher amazon.com verwendet - nicht schön, aber funktioniert, wenn auch mit dem gleichen Passwort.

Ärgerlicher wird es, wenn man seine eigene Domain hostet. Nutzt man etwa wie ich TinyTinyRSS, Wordpress und einige andere Systeme auf verschiedenen Subdomains, erhalten diese alle auch das gleiche Passwort.

Anders herum ist es genau so: Hat man mehrere Accounts bei dem selben Dienst, wird für jedes Benutzerkonto das gleiche Passwort verwendet. Das ist ganz besonders ärgerlich, weil es hier keinen einfach zu merkenden Workaround gibt.

Man kann dieses Problem von SuperGenPass umgehen, indem man Subdomains nutzt. Damit hat man aber auch wieder Meta-Daten, die man sich nicht merken möchte.

Komfort: SupeGenPass als Erweiterung

Wer einem Bookmarklet weniger traut als einer Extension (einem Add-On), kann auch SuperGenPass für Firefox oder SuperGenPass für Chrome als Erweiterung installieren. Der Vorteil liegt in der Tatsache, dass der Algorithmus komplett außerhalb der Website läuft und daher mit an Sicherheit grenzender Wahrscheinlichkeit nicht abgehört werden kann. Da der gleiche Algorithmus verwendet wird, kann natürlich dennoch vom Handy die oben genannte App oder das Bookmarklet verwendet werden.

SuperGenPass für Firefox

SuperGenPassword für Google Chrome und Chromium

Für Google Chrome bzw. Chromium gibt es gleich drei Erweiterungen, die die selbe Aufgabe übernehmen und den Algorithmus von SuperGenPass implementieren. Einen Test habe ich nicht durchgeführt, auflisten möchte ich sie aber dennoch einmal.

SuperGenPass für die Shell & Vim: Python-Script

Wer lieber den Quelltext selbst auf sein System bringt, kann dieses kleine Shellskript nutzen. Es ist in Python geschrieben und kann auch etwa vom Firefox-Addon Vimperator genutzt werden.

Für Entwickler

Die SuperGenPass-Beta findet man auf http://supergenpass.com/beta.html. Derzeit ist diese Seite aber nicht erreichbar, und daher nicht verlinkt. Alternativ lässt sich über das Git-Repository (unten in den Weblinks) die aktuelle Version ziehen.

Fazit

 Ist SuperGenPass unsicher? Nein, nach derzeitigem Stand nicht. Ist es Bequem? Ja, solange man seine Passwörter nicht ändern muss. Das ist aber auch bei jedem anderen Passwortsystem der Fall: Ob nun der zu synchronisierende Eintrag in der Passwortdatenbank oder ein neues Masterpasswort oder ein Anhängsel/Suffix: Probleme dieser Art gibt es mit jedem System. Insofern ist SuperGenPass ein guter Vertreter, der mit einem plattformunabhängigen Algorithmus und guter Integration glänzt, und keine sensiblen Daten speichert. Dieser Vorteil ist so wertvoll, dass ich mir einen Systemwechsel gut vorstellen kann.

Alternativen

Da LastPass keine Alternative ist, bleiben noch die folgenden Möglichkeiten:

  • Ein kompliziertes Suffix nutzen, wie bereits hier beschrieben.
  • Passwortdatenbanken mit Synchronisation verwenden, etwa KeePassX und KeePass2Android.
  • Eine Passwortkarte nutzen. Bei Passwortwechsel aber auch nicht ganz einfach, dafür komplett offline.

 Weblinks