"Wendelin Uez" <
wu...@online.de>:
>> Weiter sei angenommen, dass ich auf irgendeine Weise an den
>> Hashwert deines Passworts herangekommen bin. Dann kann ich auf
>> meinem Rechner (oder besser einem leistungsfähigeren anderen)
>> mittels brute force ein Passwort suchen, das denselben Hashwert
>> wie dein Passwort hat. (Das muss strenggenommen nicht einmal
>> dasselbe Passwort wie deines sein; es genügt, dass es denselben
>> Hashwert hat.) Dieses Suchen geht auf dem von mir dafür
>> verwendeten Rechner schnell, und der Server, auf dem du dein
>> Passwort verwendest, ist dabei nicht beteiligt.
>
>Das setzt aber voraus, daß der Algorithmus zur Berechnung des
>Hashwerts bekannt ist.
Ja, genau, und das ist in der Regel der Fall:
>Es gibt sicher publizierte Algorithmen dafür, aber ich würde doch
>annehmen, daß die Server-Programmierer da ein bißchen Abwechslung
>hinein bringen.
Das eher nicht: An Hash‐Algorithmen werden – damit sie ihren Zweck
erfüllen – bestimmte mathematische Anforderungen gestellt. Da
erfindet man nicht mal so einfach einen neuen. Eine dieser
Anforderungen wäre beispielsweise, dass Rückwärtsrechnen, also aus
einem gegebenen Hashwert das Original (häufig eigentlich: eines von
mehreren Originalen) zu berechnen, nicht möglich ist – sonst
bräuchte man ja im Fall des bekannten Hashwertes eines gesuchten
Passworts keine Brute‐Force‐Methode, sondern könnte einfach ein zum
Hashwert passendes Passwort berechnen. Siehe auch das
Wikipedia‐Lemma «Hashfunktion»
(<
https://de.wikipedia.org/wiki/Hashfunktion#top>), dort besonders
<
https://de.wikipedia.org/wiki/Hashfunktion#Kriterien> und
<
https://de.wikipedia.org/wiki/Hashfunktion#Kryptologie>, sowie das
Lemma «Kryptographische Hashfunktion»
(<
https://de.wikipedia.org/wiki/Kryptographische_Hashfunktion#top>).
>Und Algorithmus-Änderungen dürften anders als
>brute-force-Passwortprobiererei schwieriger durchzuprobieren sein.
Das mag einerseits sein; andererseits könnte es sein, dass ein
geänderter Algorithmus im Gegensatz zum Original angreifbar ist,
weil er eine der Anforderungen nicht mehr erfüllt.
>Die Menge der potentiellen Passörter kann man relativ leicht
>abarbeiten, weil man die zu testenden Paßwörter problemlos
>generieren kann - es ist ja nur eine Frage der Quantität.
Genau: nur eine Frage der Quantität. Deswegen ist es ja so wichtig,
die Länge der Passwörter so groß zu wählen, dass die riesige Anzahl
möglicher Passwörter die Brute‐Force‐Methode vereitelt.
>Aber Algorithmen, deren Konstrujtionsregeln man ja nicht kennt (bei
>Paßwörtern kennt man sie), dürften deutlich schwerer
>durchzuprobieren sein.
>
>Ansonsten, selbst wenn ich den Algorithmus kenne und alle denkbaren
>Paßwörter durchprobieren kann, ist der Hashwert ja normalerweise
>unabhängig von der Paßwortlänge, was wiederum bedeutet, daß der
>Hashcode eines langen Paßworts auch identisch sein kann mit dem
>eines kürzeren.
Genau. Trotzdem sind kurze Passwörter keine so gute Idee:
Wenn ich als Angreifer irgendwo her erfahre, dass du ein kurzes
Passwort verwendest, dann probiere ich bei der Brute‐Force‐Methode
(zuerst) kurze Passwörter aus. Wenn ich als Angreifer irgendwo her
erfahre, dass du ein langes Passwort verwendest, dann probiere ich
bei der Brute‐Force‐Methode (zuerst) lange Passwörter aus.
Ein Beispiel soll zeigen, warum lange Passwörter besser sind: Nimm
um des einfachen Rechnens willen an, Passwörter dürften nur aus
Folgen der Ziffern von 0 bis 9 bestehen, und es dürften maximal 4
Ziffern sein. Dann gibt es zu jeder Passwortlänge eine genau
bestimmte Anzahl von Passwörtern:
Passwortlänge | Anzahl | Beispiele
--------------+--------+-----------------------------
1 | 10 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2 | 100 | 00, 01, …, 10, 11, …, 98, 99
3 | 1000 | 000, 001, …, 998, 999
4 | 10000 | 0000, 0001, …, 9998, 9999
Die Anzahl der Passwörter bestehend aus mindestens 1 und höchstens 3
Ziffern ist demnach 1110. Die Anzahl der Passwörter bestehend aus 4
Ziffern ist 10000.
Ein Passwort welcher Länge wirst du also wählen, wenn du es einem
Brute‐Force‐Angriff möglichst schwer machen willst?
Wenn der Angreifer nicht weiß, ob du lange oder kurze Passwörter
bevorzugst, ist er nach spätestens 11110 Hashwertberechnungen am
Ziel.
Falls der Angreifer irgendwo her erfahren hat, dass du ein möglichst
langes Passwort wählst, muss er immer noch bis zu 10000 Hashwerte
berechnen, ehe er ein passendes Passwort gefunden hat. Das sind
etwa 90 % der Passwörter des Falls, wo der Angreifer nichts über
dich weiß.
Wenn er hingegen weiß, dass du kürzere Passwörter bevorzugst, wird
er der Reihe nach die Passwörter der Längen 1, 2 und 3 probieren und
ist bei spätestens 1110 Versuchen am Ziel. Das sind etwa 10 % der
Passwörter des Falls, wo er nichts über dich weiß, und etwa 11 % der
Passwörter des Falls, wo er weiß, dass du ein möglichst langes
Passwort wählst.
=> Willst du ein möglichst sicheres Passwort, nimm eines mit der
maximal erlaubten Anzahl an Zeichen, dann verlierst du im Fall, dass
der Angreifer irgendwo her erfährt, wie lang dein Passwort ist, am
wenigsten (im Beispiel: etwa 10 %).