PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Unsichere Passwörter zurück gesetzt



Bernd Glasstetter
31.08.2008, 09:27
Wir waren etwas erstaunt. Immerhin 1,2 % unserer Benutzer hatten dann doch genau das gemacht, was jetzt mit Version 3.7.3 nicht mehr erlaubt ist: Ihren Benutzernamen als Passwort verwendet.

Wir haben allen diesen Usern - es sind genau 443 - ein neues Passwort per E-Mail zukommen lassen. Sollte es dabei Probleme gegeben haben, bitten wir diese User sich bei uns im Support zu melden.

Ja, diese Massnahme ist notwendig. Angreifbare Passwörter sind in vielerlei Hinsicht eine Gefahr. Am Anfang steht jeweils die Übernahme Eures Benutzers. Denn diejenigen können sich ja mit Eurem Passwort einloggen. Und dann kann Vieles passieren:


Jemand postet in Eurem Namen Unsinn oder sogar illegale Beiträge (Verbreitung rechtlich geschützten Materials oder Verleumdungen usw.)
Jemand postet unter Eurem Namen Spam
Beides geht natürlich dann auch per Privater Nachricht

Das kann im Extremfall sogar zur Anzeige führen. Wenn Ihr dann nicht nachweisen könnt, dass Ihr das nicht wart, sieht es sehr übel aus. In weniger schlimmen Fällen ist "nur" Euer Ruf ruiniert.

Das Comicforum kann in bestimmten Fällen durchaus auch über die Mitstörerhaftung verantwortlich gemacht werden, so dass wir auch keine andere Wahl hatten und die Passwörter ändern mussten.

Sobald Ihr Euch mit dem Passwort, das wir Euch zugeschick haben, eingeloggt haben, ändert es wieder. Aber diesmal bitte in ein sicheres Passwort. Wir werden in regelmässigen Abständen die Passwörter überprüfen und wieder zurücksetzen, wenn es notwendig ist.

Sichere Passwörter sind eine Kombination aus Zahlen, Buchstaben und Sonderzeichen. Etwas, das nicht durch eine Suche in Lexikas herausgefunden werden kann. Je länger, desto besser.

Fr4nk
03.09.2008, 13:26
Wir werden in regelmässigen Abständen die Passwörter überprüfen und wieder zurücksetzen, wenn es notwendig ist.

Rein Interesse halber: wie genau macht ihr das? Ich höre sonst immer von Forenbetreibern, das selbst Admins keinen Zugriff auf Passworte habe, da diese veschlüsselt gespeichert werden. Sprich so eine Überpüfung sollte eigentlich nicht möglich sein.

mschweiz
03.09.2008, 13:40
Ich gehe davon aus, dass die Passwörter selbst nicht abgespeichert werden, sondern ihr sogenannter Hash-Wert (http://de.wikipedia.org/wiki/Hash). Das heißt, das Passwert wird einem nicht umkehrbaren Verfahren (es gibt mehrere) unterworfen, mit dem sein Hash berechnet wird. Nun kann man ein Wörterbuch oder eben auch die Usernamen nehmen, deren Hash-Werte berechnen und diese mit dem Hashwert des Passwortes (dieses kennt der Administrator) vergleichen. Sind zwei Hashwerte identisch sind es in aller Regel auch die Passwörter - und falls sie es je nicht sind kann man sich trotzdem mit dem zu dem Hashwert passenden Wort aus dem Wörterbuch einloggen.

Angreifer haben diese Passwort-Hashliste der Nutzer nicht, können aber trotzdem einen sogenannten Wörterbuch-Angriff fahren, indem automatisiert die Wörter als Passwörter durchprobiert werden. Am einfachsten ist es natürlich, es erst einmal mit Passwort = Usernamen zu probieren, was ja bei immerhin 1,2% oder 443 Usern funktioniert hat.

Bernd Glasstetter
03.09.2008, 15:26
mschweiz hat es sehr schön beschrieben und genauso funktioniert es.

Mick Baxter
04.09.2008, 00:16
Mit der Hash-Wert-Liste können sich die Administratoren aber auch passende Passwörter generieren lassen und sich so als Mitglieder einloggen. Da könnte man ihnen auch gleich die Passwörter geben ...

Bernd Glasstetter
04.09.2008, 00:34
Also zunächst einmal könnten wir sowieso jedem Benutzer ein neues Passwort geben. Das ist nun einmal eingebaut, ist ja auch sinnvoll, denn manche Benutzer vergessen ihre Passwörter und bekommen aus irgendeinem Grund die entsprechende Mail nicht oder kapieren nicht wie sie das machen können. Wir können uns dann mit dem Passwort natürlich auch Zugang verschaffen. So, das ist mal das Eine.

Was Du aber schreibst ist vollkommener und hanebüchener Unsinn:

Mit der Hash-Wert-Liste können sich die Administratoren aber auch passende Passwörter generieren lassen und sich so als Mitglieder einloggen. Da könnte man ihnen auch gleich die Passwörter geben ...
Hash-Werte sind verschlüsselte Daten, die man NICHT mehr rückwärts entschlüsseln kann. mschweiz hat das doch auch schon geschrieben. Wie sollen wir also bitte daraus passende Passwörter generieren? Wenn Du solche Dinge nicht verstehst, dann poste doch bitte nicht irgendwelche Behauptungen. Du kannst ja gerne nachfragen und wir versuchen es Dir dann genauer zu erklären. Aber nicht solch einen Unsinn verbreiten.

Mick Baxter
04.09.2008, 00:55
So wie mschweiz das geschildert hat, muß man "nur" (die entsprechenden Computerkenntnisse vorausgesetzt) ein Wort generieren, das den gleich Hashwert hat. Wenn man also den Hashwert von genügend Wörtern und Buchstabenkombinationen ermittelt, wird man auf Dubletten stoßen (die ja dann auch funktionieren, wie mschweiz behauptet).

Bernd Glasstetter
04.09.2008, 07:38
Dieses "nur" bedeutet für jedes einzelne Passwort eine Rechenleistung von mehreren Wochen bis Monaten und zwar mit den stärksten Computern der Welt. Mit handelsüblichen Rechnern kann das sogar Jahre dauern.

Fr4nk
04.09.2008, 07:39
Interessant, besten Dank für den Exkurs!

Mick Baxter
04.09.2008, 15:05
Das heißt, das Passwert wird einem nicht umkehrbaren Verfahren (es gibt mehrere) unterworfen, mit dem sein Hash berechnet wird. Nun kann man ein Wörterbuch oder eben auch die Usernamen nehmen, deren Hash-Werte berechnen und diese mit dem Hashwert des Passwortes (dieses kennt der Administrator) vergleichen. Sind zwei Hashwerte identisch sind es in aller Regel auch die Passwörter - und falls sie es je nicht sind kann man sich trotzdem mit dem zu dem Hashwert passenden Wort aus dem Wörterbuch einloggen.


Dieses "nur" bedeutet für jedes einzelne Passwort eine Rechenleistung von mehreren Wochen bis Monaten und zwar mit den stärksten Computern der Welt. Mit handelsüblichen Rechnern kann das sogar Jahre dauern.
Dann kann Marcus aber nicht das Verfahren beschrieben haben, mit ihr festgestellt habt, daß jemand den Benutzernamen als Passwort benutzt.
Ja, wie denn nun?

scribble
04.09.2008, 16:07
Das sind zwei unterschiedliche Verfahren mit unterschiedlichem Aufwand und unterschiedlichem Zweck ;)

Was Marcus und Bernd beschrieben haben, ist vereinfacht gesagt das Aufstellen einer Liste, die alle denkbaren Passwörter und die dazugehörigen Hash-Werte enthält. Wenn man, aus welcher Quelle auch immer, den Hash-Wert eines Benutzers kennt, kann man in dieser Liste quasi rückwärts ein mögliches Passwort nachschlagen.

Bevor man darin etwas nachschlagen kann, muss man diese Liste aber erst mal erstellen. Und da es sehr, sehr viele Zeichenkombinationen gibt, die als Passwort dienen könnten, dauert das sehr, sehr lange. Nehmen wir an, ein Passwort kann Groß- und Kleinbuchstaben, Ziffern und eine Handvoll Sonderzeichen enthalten. Dann sind wir schon mal bei um die 70 Zeichen. Für ein Passwort, das aus einem Zeichen besteht, gibt es also 70 Möglichkeiten, für eines aus zwei Zeichen 70*70 = 4.900 Möglichkeiten, bei drei Zeichen 343.000 Möglichkeiten und so weiter. Für sichere Passwörter geht man meist von mindestens 8 bis 10 Stellen aus, das entspricht 576.480.100.000.000 bis 2.824.752.490.000.000.000 möglichen Kombinationen, für die ein böser Mensch erstmal eine Liste der dazugehörigen Hash-Werte erstellen muss.

Für die Überprüfung "Passwort = Benutzername" muss ich aber eben nur feststellen, ob der Hash des Benutzernamens mit dem in der Datenbank hinterlegten Hash identisch ist. Ich muss also genau einen Hash berechnen. Wie das Passwort lautet, wenn es nicht der Benutzername ist, interessiert mich ja in diesem Fall nicht. Also muss ich auch keine riesige Liste berechnen.

Soweit verständlich? :)

Bis dann,

scribble

Fr4nk
10.09.2008, 09:13
Für die Überprüfung "Passwort = Benutzername" muss ich aber eben nur feststellen, ob der Hash des Benutzernamens mit dem in der Datenbank hinterlegten Hash identisch ist.


Ich würde sagen um "Passwort = Benutzername" zu überprüfen braucht man einfach nur mal vesuchen sich entsprechend einzuloggen. Was sich ja auch automatisieren läßt... ;)

scribble
10.09.2008, 09:42
Dieses "nur" wäre aber technisch viel aufwändiger ;) Mit Datenbanken "unterhält" man sich üblicherweise in der Abfragesprache SQL, und die kennt das praktische SELECT-Statement. Damit kann ich im Prinzip sagen, "such mir alle Datensätze raus, für die gilt...". Ich muss also nur einmal meine Bedingung formulieren, um eine Liste der betroffenen User zu bekommen, und nicht 35.000 mal einen Login simulieren :)

Bis dann,

scribble

Fr4nk
10.09.2008, 10:18
Jo Scribble, für die Guten. Aber die "bösen Jungs" brauchen bei so einfach Passworten nichtmal irgendwelche Prüfsummen (nur weil es oben um diese Hashwerte ging).

scribble
10.09.2008, 11:09
Richtig, darum lässt die Forumssoftware Passwörter, die dem Benutzernamen entsprechen, nicht mehr zu :)

Bis dann,

scribble

Mick Baxter
10.09.2008, 16:10
Aber noch mal nachgehakt: Kann man sich wirklich mit einem Passwort einloggen, daß nicht identisch ist, aber den gleichen Hash-Wert wie das korrekte Passwort hat?
Das wäre doch kontraproduktiv für die Sicherheit, denn Hash-Werte sind nach mschweiz’s Link zwar 40 Stellen lang, haben aber nur Zahlen und Großbuchstaben, was zwar immer noch eine Menge Kombinationsmöglichkeiten läßt, aber doch wohl weniger als es Passwörter mit Sonderzeichen, Groß/Kleinschreibung und unterchiedlicher Länge gibt. Oder hab ich mich da verrechnet?

scribble
11.09.2008, 01:33
Prinzipiell hast Du Recht, unterschiedliche Passwörter können theoretisch den gleichen Hash ergeben, und das Forum könnte in diesem Fall nicht unterscheiden, welches davon den hinterlegten Hash ergeben hat. Aber dieses Risiko ist vergleichsweise gering in Relation zu allen Alternativen.

Über die Variante, die Passwörter unverschlüsselt, also im Klartext zu speichern, muss ich wohl nicht viele Worte verlieren. Wer in diesem Fall, gewollt oder ungewollt, Zugang zur Datenbank erhält, kann frei zugreifen. Also keine akzeptable Lösung.

Eine Verschlüsselungsfunktion muss, wie schon erwähnt, eine Einwegfunktion sein. Das heißt, die Funktion selbst kann berechnet werden, ihre Umkehrfunktion aber nicht (oder nicht mit vernünftigem Aufwand). In unserem Fall, ich kann leicht aus einem Passwort den Hash berechnen, aber nicht umgekehrt.

Außerdem muss die Funktion individuell anpassbar sein. Sehr häufig wird md5 als Hashalgorithmus verwendet. Da könnte es sich schon wieder lohnen, die oben erwähnte gigantische Tabelle zu berechnen, wenn man sie gleich an vielen Stellen einsetzen kann. Als Gegenmaßnahme fügt man vielen Hash-Algorithmen etwas Salz hinzu. Dieses salt ist eine feste, aber geheime Zeichenkette, die zusätzlich zum Passwort in die Berechnung des Hash einbezogen wird. Entsprechend ergibt dasselbe Passwort im Comicforum einen anderen Hash als sonstwo, wo ein anderes salt verwendet wird. Und schon ist die Tabelle der bösen Buben wieder unpraktikabel ;)

Hinzu kommen Dinge wie eine umfangreiche Eingabemenge (möchtest Du Dich mit einer 128stelligen Primzahl einloggen, oder ist Dir ein Passwort aus Buchstaben, Ziffern und Sonderzeichen nicht doch lieber? ;) ) oder Ergebnisse in einem einheitlichen Format (md5-Hashs sind immer 32 Zeichen lang, das lässt sich mit einer Datenbank effizient handhaben).

Da ist einfach die Chance, sich mit einem anderen Passwort, das den gleichen Hash ergibt, auch einloggen zu können, hinreichend klein, um sie in Kauf zu nehmen. Dieses "Doublettenpasswort" müsste ein Angreifer ja auch erst mal identifizieren.

Wenn es um Sicherheit geht, hast Du es fast immer mit trade offs, also mit Kompromissen und Abwägungen zu tun. Das sind häufig Kompromisse zwischen Benutzbarkeit/Bequemlichkeit der User und Sicherheit, aber eben auch Abwägungen, welche Nachteile eines Verfahrens noch akzetabel sind, wenn man die Vorteile genießen möchte.

Bis dann,

scribble

Susumu
12.09.2008, 09:06
Wäre es nicht sinnvoll, um solche computersimulierte Piratenlogins zu vermeiden (hätte nicht gedacht, dass dieses Risiko bei einem Onlineforum wie hier besonders groß ist, aber wenn das schon so groß diskutiert wird), nach vielleicht drei Fehlversuchen eine zeitweise Sperre (vielleicht 1/2 Stunde) über den Usernamen zu legen? Das dürfte systematisches DUrchprobieren doch komplett zum Erliegen bringen und dem einzelnen User auch nicht groß stören, wenn er/sie mal wirklich die Caps Look Taste nicht gelöst hat.

Schwarze Katze
12.09.2008, 15:54
Wenn ich mich recht erinnere, ist ein solcher Mechanismus bereits implementiert. Nach 5 falschen Eingaben wird der Account gesperrt. Automatisierte Angriffe werden durch zeitbegrenzte Sperren jedoch nur verzögert.

scribble
12.09.2008, 17:17
Richtig, gibt es. Außerdem setzen wir Sicherheitsgrafiken (Captchas) ein. Allerdings werden die Ausleseprogramme immer besser, und Captchas bieten nur noch begrenzt Schutz. Vor einiger Zeit, als wir noch ein schwächeres Captcha hatten, durfte ich jeden Morgen erst mal ein Dutzend automatisch erstellte Spam-Accounts löschen. Bessere Captchas oder Alternativen sind eines der großen Themen im Moment.

Bis dann,

scribble