stuXnet Israelsolidarisch. Nerd. Zivildiener.

25Jun/120

Die Wahl eines sicheren Passworts

Zu Beginn einmal: Ich find die Verwendung des Begriffs "Passphrase" besser.

Warum?
Weil Phrasen besser (also sicherer) als ein Wort sind, klar.

Ich denke, ich kann keinen Artikel über Passwörter schreiben, ohne xkcds zu verwenden - das muss einfach sein 🙂

 

Mit sicheren Passphrasen lassen sich prinzipiell sichere Verschlüsselung erst in der Praxis auch sicher umsetzen.
Der unknackbarste Algorithmus bringt nichts, wenn die Passphrase aus einem Zeichen besteht.
Leider bringt die beste Passphrase nichts, wenn der Angriff nicht an dieser ansetzt, sondern direkt an der Person mit dem Wissen über den Schlüssel.
Dazu braucht es nichtmal zwingend einen Schraubenschlüssel - in England  stehen bis zu 5 Jahre Gefängnis an, falls eine Passphrase zur Entschlüsselung von Informationen nicht verraten wird (seit Oktober 2007, geregelt im Regulation of Investigatory Powers Act 2000 (RIPA), Part III, Section 49)

Anyway, wir dürfen hier bei uns noch Verschlüsseln, und es sind noch keine Fälle bekannt, wo zum Zwang zur Entschlüsselung auch nur Gewalt angedroht wurde.

 

Brute Force vs. Dictionary Attacken

Wenn man ohne Anhaltspunkte eine Passphrase rausfinden will, gibt es im generellen zwei Möglichkeiten.

  • Brute Force - probieren ALLER Möglichkeiten eines bestimmten Zeichensatzes
  • Dictionary Attacken - durchprobieren aller Wörter (und teilweise deren Mutationen) eines Wörterbuches

Brute Force ist theoretisch in der Lage, JEDE Passphrase zu erraten - da jede Kombination probiert werden muss, dauert dies jedoch unter Umständen viel (VIEL!) zu lang.
Begonnen wird zum Beispiel mit 'a', danach weiter mit 'b', bis man bei 'z' angelangt ist - dann geht es mit 'aa' weiter, bis zu 'az', dann 'ba', etc...
Wenn die angreifende Person weiß (oder annehmen kann), dass lediglich Kleinbuchstaben (oder gar nur Zahlen) verwendet werden, ist dieser Angriff auf normalen Maschinen relativ schnell durchgeführt.

Eine schnellere Methode, da weniger Möglichkeiten, ist das probieren von lediglich "ein paar" 100.000 Wörter.
Dies können die kompletten Wörter aller Sprachen auf der Welt sein, oder speziell an die zu knackende Person angepasste Wörterbücher.
Zum Beispiel werden bei einem deutschen Scene-Forum wahrscheinlich andere Passphrasen benutzt als bei einem französischen Haustiertreff-Forum.
Dadurch lassen sich die wahrscheinlichen Wörter im Wörterbuch stark eingrenzen. Zusätzlich gibt es dann noch Tools, die auch Mutationen von jedem Wort probieren - also nicht nur password, wie es ein Wort im Wörterbuch sein könnte, sondern auch noch passw0rd, p4ssword, p4ssw0rd, p455w0rd, etc...
Geht man von  durchschnittlich 10 möglichen Mutationen bei jedem Wort aus, erhöht sich die maximal zu probierende Zahl der Wörter lediglich um den Faktor 10.
Damit braucht man zwar statt 3 Tagen einen Monat. Irgendwie doch lang, jedoch absolut möglich.
Und viele Passwörter nach dem geläufigen 4ust4usch-Schema sind dadurch abgedeckt.
Stellt sich nach den 3 Tagen (oder eben 30 Tagen) jedoch heraus, dass das Passwort kein Wort im verwendeten Wörterbuch war, kann man die Attacke mit einem anderen Wörterbuch wiederholen, mehr Mutationen probieren oder komplett auf Brute Force zurückfallen.

Aber wie soll der Schlüssel nun aussehen?

Vor allem möglichst lang.

Die Anzahl der möglichen Kombinationen berechtet sich wie folgt:
Max. Kombinationen = ZeichensatzAnzahl Stellen

Um unsere Sicherheit zu erhöhen, können wir auf beide Faktoren Einfluss nehmen:

  • Erhöhung des Zeichensatzes: Also nicht nur Kleinbuchstaben, sondern bunt gemischt: Alle Buchstaben, groß und klein, Zahlen und Sonderzeichen
  • Länge der Passphrase: Jedes Zeichen erhöht die Anzahl der maximalen Kombinationen um den Faktor der Höhe des Zeichensatzes.

 

Sehen wir uns dazu mal ein paar Beispiele an - zur Einschätzung der Dauer zum Erraten verwende ich howsecureismypassword [1]:

Viele Ratschläge zur Passwortwahl empfehlen, einen beliebigen Satz als Basis zu verwenden.
Ich nehm als Anschauungsobjekt einmal einen Merksatz, der auf Grund seiner Bekanntheit als echte Passphrase eher ungeeignet wäre.

"Mein Vater erklärt mir jeden Sonntag unsere neun Planeten"

Der nächste Schritt sieht vor, von jedem Wort den Anfangsbuchstaben zu verwenden.

"MVemjSunP" - Dauer: 128 Tage

Bereits jetzt haben wir ein Wort, dass mit großer Wahrscheinlichkeit in keinem Wörterbuch der Welt stehen wird - ohne dem Wissen über den Ausgangssatz erscheint die Passphrase zufällig.
Um den Zeichensatz trotzdem noch zu erhöhen, können jetzt noch Zahlen eingefügt/ausgetauscht werden, sowie Sonderzeichen ergänzt.

"*MVemjSu9P*" - Dauer: 71.000 Jahre

Das ist schon ziemlich sicher!
Die Berechnung geht jedoch von einem einzelnen Standard-PC aus.
Regierungen oder darauf spezialisierte Unternehmen können die Rechenleistung auf mehrere Großrechner oder komplett in die Cloud auslagern.
Und wer keine Regierung ist, Mietet sich eventuell ein relativ kleines Botnetz mit 100.000 PCs für ein paar Tage - und schon ist das Erraten der Passphrase wieder in erreichbare Nähe gerückt.

Um auf einen weiteren Kritikpunkt einzugehen möchte ich wieder einen xkcd hier verlinken:

 

Wenn ich die Passphrase nicht täglich verwende, hab ich in ein paar Monaten vlt. schon wieder vergessen, welchen Buchstaben ich wie mit einer Zahl ersetzt hab, wo Sonderzeichen eingebaut wurden, etc...

Vielleicht ist es hier wem aufgefallen - wie lang dauert es eigentlich, um unseren Ausgangssatz für "*MVemjSu9P* zu knacken?

"Mein Vater erklärt mir jeden Sonntag unsere neun Planeten" - Dauer: 315 Quinquatrigintillion Jahre.

Ich glaub, es liegt nicht ausschließlich an der englischen Bezeichnung dieser Zahl, dass ich noch nie was davon gehört habe.
Keine Ahnung wieviele Nullen da dran sind - sie klingt jedenfalls verdammt groß.

(Edit: Hab im Source von howsecureismypassword nachgesehen, die gerade genannte Zahl besitzt 108 Nullen - also 315 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 Jahre zum Knacken des Merkspruches. Muhaha)

Zusätzlich haben wir eine Passphrase verwendet, an die wir uns leicht erinnern können, und sogar auf irgendeine Substitution verzichtet.
Damit wird eine Dictionary Attacke jedoch wieder interessanter für potentielle Angreifer_innen.

Ein Wörterbuch mit 100.000 Wörtern würde jedoch auch hier 100000000000000000000000000000 Jahre benötigen (bei der von howsecureismypassword verwendeten Raterate von 250000000 in der Sekunde!)
Schneller als Brute Force, aber nicht realistisch.

 

Fazit

Verwendet leicht zu merkende, möglichst lange Passphrasen und pappt ein beliebiges Sonderzeichen irgendwo rein (vorne, hinten, vorne & hinten, statt jedem zweiten Space, ...)
Vermeidet Passphrasen, die ihr in spätestens einem Jahr selbst vergessen habt.
Verknüpft eventuell all eure jemals verwendeten Passwörter zu einer langen Passphrase.
Und variiert sie bei möglichst jedem Dienst, den ihr verwendet! (mehr hab ich hier dazu geschrieben)

 

[1] Natürlich sollte man Bedenken haben, seine Passphrase in ein Textfeld einzugeben, dass nichts mit einer Loginseite zu tun hat - erst Recht dann nicht, wenn die Übertragung nicht verschlüsselt wird.
howsecureismypassword benutzt jedoch JavaScript - die Sicherheit der Passphrase wird also lokal am PC bestimmt.
Wer ganz sicher gehen will, trennt die Netzwerkverbindung (Kabel ziehen, etc...) und gibt nur eine ähnliche Passphrase ein.
Zu "ab4cd!" wäre zum Beispiel "js1bt?" ähnlich - als Ergebnis müsste auf Grund des selben Zeichensatzes das selbe herauskommen.

Kommentare (0) Trackbacks (0)

Zu diesem Artikel wurden noch keine Kommentare geschrieben.


Leave a comment

Noch keine Trackbacks.