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: | Beispiel | Erfolg | Aufwand |
|---|---|---|---|
| Wissensbasierter Angriff | Name des Haustiers, der Ehefrau, Geburtstage... | ? | gering |
| Wörterbuch-Anrgiffe | nicht mehr als 10..20 Mio Wörter,sehr effizient | ? | gering |
| Brute Force | Alle Kombinationen von Zeichen ausprobieren | SICHER | sehr hoch |
Abwehrmassnahme des Benutzers
Aufwand zum Erraten hoch treiben. Es gibt dazu folgende Parameter:
- Zeichenraum (Zeichenumfang)
- Wortlänge
- Hashmethode*
Zeichenraum
| Raum | Grösse | ||
|---|---|---|---|
| a-z | 26 | ||
| a-z,A-Z | 52 | ||
| a-z,A-Z,0-9 | 64 | ||
| a-z,A-Z,0-9,$%&/()=... | 88* |
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 der möglichen Passwörter X berechnet sich aus Länge N und Zeichenraum K : Das bedeutet: Die Anzahl steigt linear mit der Zeichenraum K, aber exponetiell mit der Länge N !
Beispiel: Wortlänge N = 12 Zeichen mit dem Zeichenraum K = 64 (a-z,A-Z,0-9) Wird der Zeichenraum K vergrössert (übliche Sonderzeichen dazu) erhöht sich die Anzahl auf:
Wird die Länge N nur um eins erhöht, erhöht sich die Anzahl auf: Also: Mit Länge gewinnt man mehr Sicherheit als mit Sonderzeichen.
Was kostet es den Angreifer?
Nichts ist Umsonst. Der Aufwand für einen Passwortbruch kostet Geld. Angenommen der Angreifer arbeitet mit einem PC mit einer GPU. Und dieser dreht dann bei Vollast mit 500 W am Stromzähler. So kostet das incl. der Anschaffung über 5 Jahre Nutzungsdauer ca 4,– EUR pro Tag. Die Rechenleistung liegt dan in der Grössenordnung von 50 Millionen Hashes / s (MD5). Supercomputer kommen in die Grössenordnung von 50 Billiarden (50×1015) Hashes/s, damit wird es aber nicht günstiger, nur schneller.
Ein konkretes Beispiel
Passwort X2 erfordert 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 in sehr viel kürzerer Zeit 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:
- Namen
- simple Zeichenfolgen (123456)
- Tastaturmuster (asdfghjkl)
- Namen, evtl Kombiniert mit Geburtsjahr oder Telefonnummer
- Wörter oder Kombinationen aus solchen
- Filmtitel
- Filmzitate (I'll be back)
- Bibelzitate
- Gedicht-Auszüge
- Sprichwörter
Fazit
- Keinesfalls Wörter verwenden die in irgendwelchen Wörterbüchern oder Namenslisten vorkommen, auch nicht Klingonisch!
- Lieber ein längeres Passwort als exotische Sonderzeichen
- Keine auch noch so langen Zitate oder Gedichte verwenden, auch wenn diese leicht merkbar sind
- die üblichen Ersetzungschemen (O->0 oder E->3) bringen nichts, die sind in guten Wörterlisten schon eingearbeitet
- Sonderzeichen sind nicht auf allen Gerätetastaturen vorhanden und sind somit evtl. einschränkend
- Bei der Softwareauswahl darauf achten dass zum Speichern von Passwörtern möglichst sichere Hashalgorithmen verwendet werden. Keinesfalls so etwas wie MD5 oder NTLM.
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}