SfN

Wie lang sollte ein Kennwort sein? Und wie lange dauert das Knacken eines Kennwortes?

Wer seine Dateien vor den Schergen der Bundesrepublik oder anderer Staaten schützen möchte wird früher oder später vor die Aufforderung gestellt ein möglichst sicheres Kennwort zu verwenden. Die Empfehlungen zu Länge und Sicherheit sind vielfältig. Es kommt nicht selten vor, dass zu kurze und unsichere Kennwörter empfohlen werden. Es passiert jedoch auch, dass zu lange Kennwörter gefordert werden, wie vor kurzem in einem Artikel des III. Weges [1]. Ich möchte dem Autor keinerlei Böswilligkeit unterstellen, wenn er ein mindestens 40 Zeichen langes Kennwort fordert. Doch es ist fachlich unfundiert und kann auch zu viel des Guten sein, wenn Leute sich durch solche Ansprüche abgeschrocken fühlen ihre Dateien zu verschlüsseln. Doch wie lang muss ein Kennwort sein und wie lange dauert es dieses zu knacken?

von Max Mustermann

Um diese Fragen zu beantworten muss man sich anschauen was gute Kennwörter auszeichnet. Das sind zum einen die verwendeten Zeichen und zum anderen die Kennwortlänge. Man kann darüber hinaus noch weitere Anforderungen stellen, wie dass es nicht bei einer Eingabe gleich von einem Dritten lesbar sein sollte usw. Doch beschränken wir uns erst einmal auf die Zeichen und die Länge, da dies die grundlegenden Faktoren sind.
Nehmen wir bspw. an wir verwenden ausschließlich die drei Großbuchstaben A, B und C für unser Kennwort und der Angreifer (in unserem Falle der heutige Staat) weiß dies auch. Bei einer Kennwortlänge von eins ergeben sich folgende Möglichkeiten, welche das Kennwort sein könnten: A, B oder C

Wir haben also drei Möglichkeiten. Wenn wir die Kennwortlänge um ein weiteres Zeichen erhöhen (als auf zwei) erhalten wir neun Möglichkeiten, wie das Kennwort sein kann. AA, BB, CC, AB, AC, BA, BC, CA, CB

Wenn der Angreifer also weiß, dass wir eine Kennwortlänge zwei bei den drei Zeichen A, B und C verwenden, dann muss er 3 * 3 = 9 Möglichkeiten ausprobieren. Oder anders geschrieben 3².

Sollten wir unser Kennwort um eine weitere dritte Stelle erweitern so erhalten wir schon 27 Möglichkeiten: AAA, BBB, CCC, AAB, AAC, ABA, ACA, ABC, ACB, BAC, BBA, BBC, BAB, BCB, BCA, CCA, CCB, CAC, CBC, BAA, CAA, ABB, CBB, ACC, BCC, CAB, CBA

Der Angreifer muss nun also 3³ Möglichkeiten im aufwändigsten Fall durchprobieren, wenn ihm die Kennwortlänge bekannt ist.

Die Anzahl der verwendeten Zeichen stehen also zu der Kennwortlänge in folgendem Verhältnis:

Wenn dem Angreifer hingegen die Kennwortlänge nicht bekannt ist, müssen die vorhergehenden Möglichkeiten noch hinzugerechnet werden. Es ergibt sich daraus folgende Summenformel:

wobei c die Anzahl der verwendeten Zeichen darstellt, n die Kennwortlänge und i der Zähler ist.
Für unsere drei Zeichen A, B und C bei einer Kennwortlänge von drei ergeben sich daraus, bei nicht bekannter Kennwortlänge, 39 Möglichkeiten im aufwändigsten Fall.

Wenn wir nun von dem Fall ausgehen, dass man alle Groß- und Kleinbuchstaben verwendet und zusätzlich noch die Zahlen von 0-9, so ergeben sich 62 mögliche Zeichen. Bei einer Kennwortlänge von sechs Stellen ergeben sich ~5,77 * 10^10 (~57,7 Mrd.) Möglichkeiten.

Wenn wir die Kennwortlänge auf zwölf Zeichen verdoppeln, erhalten wir schon ~3,279 * 10^21 (~3,279 Trillarden) Möglichkeiten. Die Möglichkeiten haben sich also nicht nur verdoppelt, sondern sind exponentiell gewachsen. Dieses exponentielle Wachstum setzt sich mit jeden weiteren Zeichen fort.

Bei der von VeraCrypt empfohlenen Mindestlänge von 20 Zeichen erhalten wir ~7,16 * 10^35 Möglichkeiten, bei der vom III. Weg empfohlenen Mindestlänge von 40 Zeichen sind es ~5,04 * 10^71 Möglichkeiten.

Nun stellt sich natürlich die Frage, wie schnell werden die Kennwörter durchprobiert?

Um diese Frage zu beantworten muss man sich vor Augen führen, wie Kennwörter gehandhabt werden. Standard ist es, ein Kennwort nicht im Klartext zu speichern (z.B. FuerDeutschland), sondern das Kennwort in einen sog. Streuwert (oft auch als Hashwert bezeichnet) umzuwandeln und diesen zu speichern. Die Streuwertfunktionen sind Einbahnstraßen. Man kann aus einer Eingabe auf schnelle Weise einen Streuwert bilden. Aus einem Streuwert ist es jedoch nicht möglich auf das Kennwort zu schließen. Ausnahmen bilden Streuwertfunktionen, welche durch Wissenschaftler erfolgreich angegriffen wurden, wie z.B. MD5 oder mittlerweile auch SHA-1.

Sollte sich bei der Eingabe nur ein einziges Zeichen ändern, so entsteht bereits ein völlig anderer Streuwert. Zur Veranschaulichung seien zwei Beispielkennwörter mit ihren SHA-512-Werten genannt:

  • FuerDeutschland → 2ecd59d1b6b139c29bcf86ae6ae838cbab856c043cafd66049fbd5fb7df81d740a00c0c515dad93be11df1fe0e5f4193fd136279e5c3afcf06ec52f2e038555a
  • FuerDeutschland! → 8db980317d1f45774de088003f7236ceb6869e5a959399f9f6213c24a9385ab1b0a16b59343cc7b4bbdaf18e3990459066616bf38e133463ede26285b87624ef

Um nun ein Kennwort zu knacken wird vom Angreifer der gewünschte Streuwert entnommen. Anschließend erzeugt ein Programm im Bruteforce-Modus nacheinander alle möglichen Zeichenkombinationen unter Beachtung der Zeichenreihenfolge und erzeugt für jede Zeichenkombinationen einen Streuwert. Dieser Streuwert wird nun mit dem vorhandenen verglichen. Sollte er nicht übereinstimmen wird der nächste Streuwert erzeugt und abgeglichen usw. Die bereits vorhandenen Streuwerte, zu denen man das Kennwort herausfinden möchte, finden die Angreifer bspw. im Kopf (engl. Header) von VeraCrypt-Containern und -Partitionen oder bspw. bei Internetforen in einer Datenbank, welche einem Hackangriff zum Opfer gefallen ist.

Doch wie schnell werden solche Streuwerte erzeugt?

Das Open Source Programm oclHashcat ist eine gute Referenz auf diesem Gebiet. Dieses Programm erzeugt mit Hilfe von einer oder mehreren leistungsfähigen Grafikkarten extrem viele Streuwerte. Es gibt im Internet verschiedene Vergleichstests (engl. Benchmark tests). Wir betrachten hierbei einen Test aus dem Jahre 2017 [2], bei welchem mit Hilfe von vier NVIDIA GeForce GTX 1080 Ti und 1070 Streuwerte für verschiedene Streuwertfunktionen erzeugt wurden.
Für SHA-512 wurden etwa 1.500 MH/s erzeugt, wobei hier M für Mega = Millionen und H für Hashwerte/Streuwerte steht. Es wurden also 1,5 Mrd. Streuwerte pro Sekunde von einer einzigen Grafikkarte erzeugt.
Wenn man diesen Wert auf einen Monat hochrechnet 1.500.000.000 * 60 * 60 * 24 * 30 (Minute, Stunde, Tag, Monat) erhalten wir 3,88 * 10^15 Streuwerte, also berechnete Kennwörter. Wenn wir diesen Wert nun mit den Möglichkeiten von unserem sechsstelligen Kennwort von weiter oben vergleichen (~5,77 * 10^10 Möglichkeiten), kann man sagen, dass das Kennwort locker geknackt wurde. Dies wäre sogar der Fall gewesen, wenn wir nur eine Stunde gerechnet hätten: 1.500.000.000 * 60 * 60 = 5,4 * 10^12.

Unser zwölfstelliges Kennwort wäre nach einem Monat allerdings noch lange nicht geknackt, außer ein ungünstiger Zufall hätte dem Staat in die Hände gespielt. Diese Art von Zufällen spielt jedoch praktisch keine Rolle, da sie enorm unwahrscheinlich sind.

Unser zwölfstelliges Kennwort (~3,279 * 10^21 Möglichkeiten) wäre sogar bei acht ebenso leistungsfähigen Grafikkarten nach einem Monat noch lange nicht geknackt: 3,88 * 10^15 * 8 = 3,104 * 10^16.

Doch es gibt Möglichkeiten die Erzeugung von Streuwerten zu beeinflussen und nicht jede Streuwertfunktion lässt sich gleich schnell berechnen. Daher schadet ein Blick auf konkret genutzte Verfahren nicht.
In dem angeführten Vergleichstest [2] werden auch folgende Funktionen und Werte genannt (pro Grafikkarte):
Samsung Android Password/PIN: knappe 4000 kH/s (k = Kilo = Tausend)
TrueCrypt PBKDF2-HMAC-SHA512 + XTS 512 bit: knappe 300 kH/s
VeraCrypt PBKDF2-HMAC-SHA512 + XTS 512 bit: gute 600 H/s

Vor allem beim Anblick der VeraCrypt-Werte fragt man sich, warum diese Werte im Vergleich zum reinen SHA-512 so gering sind. Dies liegt vor allem an der sogenannten PIM (Personal Iterations Multiplier), welche mit VeraCrypt 1.12 eingeführt wurde [3]. Wenn man bei VeraCrypt ein Kennwort eingibt werden bei der Umwandlung in den Streuwert noch zusätzliche Wiederholungen fällig. Diese erhöhen die Zeit, wie schnell ein Streuwert erzeugt wird.

Mit solch einer geringen Anzahl von erzeugten Streuwerten pro Sekunde ist es praktisch ausgeschlossen das richtige Kennwort in einer praktikablen Zeit zu finden.

Für weniger kritische Anwendungsfälle, wie bspw. ein normales Internetforum o.ä. ist man mit zwölf Zeichen auf der sichere Seite. Die von Veracrypt empfohlene Mindestkennwortlänge ist eine gute Referenz für sehr wichtige und kritische Dateien. Wer mehr Kennwortstellen verwenden möchte dem sei dies freigestellt. Die Empfehlung von dem III. Weg mindestens 40 Stellen zu verwenden zwar sicher, aber als Mindestlänge deutlich übertrieben. Viel eher sollte weiterhin darauf geachtet werden, dass man ausreichend viele verschiedene Zeichen zu verwendet, also Groß- und Kleinbuchstaben, Zahlen und eben auch Sonderzeichen. Zudem sollte man es diesem Staat nicht zu einfach machen und leicht zu erratene Kennwörter nutzen. Das Kennwort IchLiebeDichMeinSchatz1! Erfüllt zwar formal alle Anforderungen, ist aber dennoch als unsicher anzusehen, da es eben auch ohne Bruteforce-Methode erraten werden kann.

Quellen:
[1] „VeryCrypt Verschlüsselung bei Windows 10 – Anleitung | DER III. WEG“, Nationale Partei – DER III. WEG, März 14, 2020. https://der-dritte-weg.info/2020/03/anleitung-festplattenvollverschluesselung-mit-veracrypt-unter-windows-10/ (zugegriffen Juni 11, 2020).
[2] K. R. Ickler, „Hashcat Benchmarks for Nvidia GTX 1080TI & GTX 1070 Hashcat Benchmarks“, Black Hills Information Security, Juni 20, 2017. https://www.blackhillsinfosec.com/hashcat-benchmarks-nvidia-gtx-1080ti-gtx-1070-hashcat-benchmarks/ (zugegriffen Juni 11, 2020).
[3] M. Idrassi, „PIM – VeraCrypt – Free Open source disk encryption with strong security for the Paranoid“. https://www.veracrypt.fr/en/Personal%20Iterations%20Multiplier%20(PIM).html (zugegriffen Juni 11, 2020).

1 Kommentar

Schreibe einen Kommentar zu Max Mustermann Cancel reply

  • Es gibt ein paar neue Zahlen, wie viele Streuwerte mit einer GeForce RTX 4090 erzeugt werden können:
    https://gist.github.com/Chick3nman/32e662a5bb63bc4f51b847bb422222fd
    https://www.golem.de/news/nvidia-ada-lovelace-die-geforce-rtx-4090-knackt-passwoerter-doppelt-so-schnell-2210-169021.html

    SHA2-512: 7483.4 MH/s (bei GTX 1070: 1511.9 MH/s)
    Samsung Android Password/PIN: 32340.4 kH/s (bei GTX 1070: 3999.3 kH/s)
    TrueCrypt SHA512 + XTS 512 bit: 2821.6 kH/s (bei GTX 1070: 299.3 kH/s)
    VeraCrypt SHA512 + XTS 512 bit: 6432 H/s (bei GTX 1070: 643 H/s)

    Man kann sagen, dass sich die Anzahl der erzeugbaren Streuwerte, mit der RTX 4090, im Schnitt um knapp eine Zehnerpotenz erhöht haben.

    Wenn man den SHA-512-Wert auf einen Monat hochrechnet 7.483.400.000 * 60 * 60 * 24 * 30 (Minute, Stunde, Tag, Monat) erhalten wir 1,93969728 * 10^16 Streuwerte, also berechnete Kennwörter (bei GTX 1070: 3,88 * 10^15 Streuwerte).
    Ein zwölfstelliges Kennwort wäre nach einem Monat allerdings noch lange nicht geknackt (~3,279 * 10^21 Möglichkeiten). Selbst bei 100 RTX 4090 würden nach einem Monat 1,93969728 * 10^18 Streuwerte erzeugt werden und es wäre noch Luft nach oben, wenngleich man eine deutliche Steigerung feststellen kann.
    Wenn das Kennwort allerdings kleiner als zwölf Zeichen ist, ist das Knacken des Kennwortes für den Staat in greifbare Nähe gekommen. Ein elf Zeichen langes Kennwort besitzt nur noch 5,288961906 * 10^19 Möglichkeiten. Ein zehn Zeichen langes Kennwort kann innerhalb eines Monats bereits mit 100 RTX 4090 geknackt werden, da es nur 8,530583719*10^17 Möglichkeiten besitzt, welche deutlich weniger als die errechneten 1,93969728 * 10^18 Streuwerte sind.

    0

    0

Inhalte melden

Beiträge, Kommentare und sonstige Veröffentlichungen in dem SfN Informationsblog werden vor dem Hintergrund der gültigen Gesetzgebung in der BRD überprüft. Sollte dennoch der Verdacht bestehen, dass ein Beitrag gegen Gesetze verstoßen könnte und / oder Beschwerden sonstiger Art vorliegen, wird gebeten, die Redaktion zu kontaktieren, um den bedenklichen Inhalt zu überprüfen bzw. entfernen.




Es liegt an dir selbst, was du für dich und deine Sicherheit übernimmst.