Passwortsicherheit, Länge, Komplexität

Die Sicherheit von Passwörten = Aufwand für Angreifer um das Passwort herauszufinden.

Angriffsmethoden auf Passworthashes im Vergleich

Methoden zum Herausfinden:BeispielErfolgAufwand
Wissensbasierter AngriffName des Haustiers, der Ehefrau, Geburtstage...?gering
Wörterbuch-Anrgiffenicht mehr als 10..20 Mio Wörter,sehr effizient?gering
Brute ForceAlle Kombinationen von Zeichen ausprobierenSICHERsehr hoch
Beim Erraten mit Brute Force ist Erfolg sicher. Wörterbuchangriffe funktionieren nur bei Passwörtern die man in Wörterbüchern findet, sind aber äusserst schnell durchführbar.

Abwehrmassnahme des Benutzers

Aufwand zum Erraten hoch treiben. Es gibt dazu folgende Parameter:

*kann der Benutzer meist nicht wählen.

Zeichenraum

RaumGrösse
a-z 26
a-z,A-Z 52
a-z,A-Z,0-9 64
a-z,A-Z,0-9,$%&/()=... 88*
* Der Raum ist theretisch sehr gross wenn man alle UTF-8 Zeichen voraussetzen würde. Es lassen sich aber rein praktisch nur Zeichen verwenden die man an der jeweiligen Tastatur direkt eingeben kann. Übliche Sonderzeichen sind ! $ % ( ) * + , - . / : ; = ? @ [ \ ] _ { | } also 24 an der Zahl.

Brute-Force Aufwand

Die mögliche Kombination aus gegebenem Zeichenraum und Wortlänge muss möglichst so gross sein, dass das ausprobieren länger dauert als die geschützte Information von Wert ist. Die Anzahl X der möglichen Passwörter ( Länge N, Zeichenraum K ) X = KN Beispiel: Wortlänge N = 12 Zeichen mit dem Zeichenraum K = 64 (a-z,A-Z,0-9) X1 = 6412 = 4,7×1021 Zeichenraum K vergrössert (übliche Sonderzeichen dazu): X2 = 8812 = 215×1021 = X1 ×

Länge N um eins erhöht: X3 = 6413 =302×1021 = X1 × Statt die teilweise umständlich zu schreibenden Sonderzeichen zu verwenden bringt es mehr Sicherheit die Wortlänge um eins zu erhöhen.

Trugschluss

Die Verwendung landesspezifischer Sonderzeichen erhöht die Sicherheit nur, wenn der Angreifer die Sprache NICHT weiss, ansonsten kann er sofort alle anderen landesspezifischen Sonderzeichen ausschliessen, was den Zeichenraum verkleinert.

Wie sicher ist Sicher?

Das hängt ab von der Rechenleistung mit der der Angreifer die Kombinationen durchprobieren kann. Das ändert sich ständig, denn ständig wird schnellere Computer-Hardware verfügbar.

Was kostet es den Angreifer?

Der Aufwand für einen Passwortbruch lässt sich auch in Form von Kosten darstellen, die für das Ausprobieren anfallen. Dabei ist angenommen, dass mit einem PC mit einer GPU gearbeitet wird das dann bei Vollast 500 W Leistung verbraucht und so einschliesslich Abschreibung der Anschaffung über 5 Jahre ca 4,– EUR Kosten pro Tag anfallen. Die Rechenleistung eines solchen PC+GPU Kombination liegt heute in der Grössenordnung von 50 Millionen Hashes / s (MD5). Supercomputer können heute in der Grössenordnung von 50 Billiarden (50×1015) Hash-Berechnungen pro Sekunde ausführen. Damit wird es aber nicht günstiger, nur schneller.

Beispiel

Passwort X2 benötigt 215×1021 Hashberechnungen. o.g. PC benötig dafür 4,3×1015 s. also 136 Mio Jahre und es kostet 199 Mrd EUR. Mit einem Supercomputer geht das 1 Mio mal schneller, also 136 Jahre, aber wie erwähnt nicht günstiger. Daran sieht man, dass sich Brute-Force nur für kurze Passwörter eignet. Es sind schon sehr viel längere Passwörter geknackt worden, aber mit Wörterbuch-Angriffen.

Bitcoin-Netzwerk wird mit einer Leistung von 69×1018 SHA256 Hashes/s (2019) angegeben. Das kann man zwar nicht einfach mal so zum Passwortknacken umfunktionieren, aber wenn man das könnte, wäre dieses Passwort in einer Stunde geknackt.

Stolperfallen, Angriffspunkte

Bequemlichkeit: häufigster Schwachpunkt der meisten Menschen, nicht nur wenn es um Sicherheit geht. Schwache Passwörter:

Aufwand zum Knacken: beängstigend gering! Als Beispiel sind hier die Daten bei Verwendung einer Liste aus dem OpenWall Projekt aufgetragen. Diese enthält 40 Mio Wörter und dazu Namenslisten aus mehr als 20 Sprachen und gängige Passwörter und Tastaturmuster (QWERTZUIO). Diese Methode wird immer bevorzugt verwendet, damit sind schon schwache Passwörter mit mehr als 40 Zeichen in kurzer Zeit geknackt worden.

Fazit

Wenn möglich ist die Verwendung eines Passwormanagers sinnvoll, zum Beispiel KeePassXC Damit ist die Verwendung sehr langer Passwörter handhabbar selbst wenn diese nicht-mnemonische Zufallsfolgen sind. Solche kann man übrigens auch sehr gut mit openssl selber erzeugen:


openssl rand -base64 32
Base64 bedeutet also einen Zeichenraum von 64, aber wie gesagt man kann ja dafür ein paar Zeichen mehr nehmen. Oder man eliminiert konsequent Sonderzeichen (+/)wobei sich der Zeichenraum auf 62 vermindert:

LAENGE=32; openssl rand -base64 $((LAENGE*2)) |sed -e 's/[^[:alnum:]]//g' |cut -c -${LAENGE}