Warum sollten Sie sich Sorgen machen, wenn die Kennwortdatenbank eines Dienstes ausläuft
„Unsere Passwort-Datenbank wurde gestern gestohlen. Aber machen Sie sich keine Sorgen: Ihre Passwörter wurden verschlüsselt. “Statements wie dieses finden Sie online, einschließlich gestern, von Yahoo. Aber sollten wir diese Zusicherungen wirklich für bare Münze nehmen??
Die Realität ist, dass die Passwortdatenbank kompromittiert sind ein Anliegen, egal wie ein Unternehmen es zu spinnen versucht. Es gibt jedoch ein paar Dinge, die Sie tun können, um sich selbst zu isolieren, egal wie schlecht die Sicherheitspraktiken eines Unternehmens sind.
Wie Passwörter gespeichert werden sollen
So sollten Unternehmen Passwörter in einer idealen Welt speichern: Sie erstellen ein Konto und geben ein Passwort ein. Anstatt das Passwort selbst zu speichern, generiert der Dienst aus dem Passwort einen "Hash". Dies ist ein eindeutiger Fingerabdruck, der nicht rückgängig gemacht werden kann. Beispielsweise kann das Kennwort "Kennwort" in etwas umgewandelt werden, das eher wie "4jfh75to4sud7gh93247g ..." aussieht. Wenn Sie Ihr Kennwort eingeben, um sich anzumelden, generiert der Dienst einen Hashwert und prüft, ob der Hashwert mit dem in der Datenbank gespeicherten Wert übereinstimmt. Zu keinem Zeitpunkt speichert der Dienst Ihr Passwort selbst auf der Festplatte.
Um Ihr tatsächliches Kennwort zu ermitteln, muss ein Angreifer mit Zugriff auf die Datenbank die Hashes für allgemeine Kennwörter vorberechnen und dann prüfen, ob sie in der Datenbank vorhanden sind. Angreifer tun dies mit Nachschlagetabellen - riesige Listen von Hashes, die mit Passwörtern übereinstimmen. Die Hashes können dann mit der Datenbank verglichen werden. Ein Angreifer würde beispielsweise den Hash für „password1“ kennen und dann prüfen, ob Konten in der Datenbank diesen Hash verwenden. Wenn dies der Fall ist, weiß der Angreifer, dass sein Kennwort "Kennwort1" lautet..
Um dies zu verhindern, sollten die Dienste ihre Hashes "salzen". Anstatt einen Hash aus dem Passwort selbst zu erstellen, fügen sie vor oder am Ende des Passworts eine zufällige Zeichenfolge ein, bevor sie das Hashing ausführen. Mit anderen Worten, ein Benutzer würde das Kennwort "password" eingeben und der Dienst würde das Salt und das Hash ein Kennwort hinzufügen, das eher wie "password35s2dg" aussieht. Jedes Benutzerkonto sollte über ein eigenes Salt verfügen, und dies würde sicherstellen, dass jedes Benutzerkonto sicherstellt hätte einen anderen Hashwert für ihr Passwort in der Datenbank. Selbst wenn mehrere Konten das Kennwort "password1" verwenden, haben sie aufgrund der unterschiedlichen Salt-Werte unterschiedliche Hashwerte. Dies würde einen Angreifer besiegen, der versuchte, Hashes für Kennwörter vorab zu berechnen. Anstatt Hashes generieren zu können, die für jedes Benutzerkonto in der gesamten Datenbank gleichzeitig gelten, müssen sie eindeutige Hashes für jedes Benutzerkonto und seinen eindeutigen Salt erzeugen. Dies würde viel mehr Rechenzeit und Speicher erfordern.
Aus diesem Grund sagen Dienstleistungen oft, sich keine Sorgen zu machen. Ein Dienst, der geeignete Sicherheitsverfahren verwendet, sollte besagen, dass er gesalzene Kennworthashes verwendet. Wenn sie nur sagen, die Passwörter seien "gehasht", ist das besorgniserregender. LinkedIn hat seine Passwörter beispielsweise gehasht, aber nicht gesalzen - es war also eine große Sache, als LinkedIn 6,5 Millionen Hash-Passwörter im Jahr 2012 verloren hat.
Verhaltensweisen für schlechte Kennwörter
Dies ist nicht das Schwierigste, das zu implementieren ist, aber viele Websites schaffen es immer noch, es auf verschiedene Weise durcheinander zu bringen:
- Speichern von Passwörtern im Nur-Text-Format: Anstatt sich mit dem Hashing zu beschäftigen, können einige der schlimmsten Straftäter die Passwörter in Klartext in eine Datenbank schreiben. Wenn eine solche Datenbank gefährdet ist, sind Ihre Kennwörter offensichtlich gefährdet. Es wäre egal, wie stark sie waren.
- Hashing der Passwörter ohne sie zu versalzen: Einige Dienste können die Passwörter verschlüsseln und dort aufgeben, sodass keine Salze verwendet werden. Solche Passwortdatenbanken sind sehr anfällig für Nachschlagetabellen. Ein Angreifer könnte die Hashes für viele Kennwörter generieren und dann prüfen, ob sie in der Datenbank vorhanden sind. Dies kann für jeden Account gleichzeitig erfolgen, wenn kein Salt verwendet wird.
- Salze wiederverwendenHinweis: Einige Dienste verwenden möglicherweise ein Salt, aber sie können das gleiche Salt für jedes Benutzerkontokennwort verwenden. Dies ist sinnlos - wenn für jeden Benutzer das gleiche Salt verwendet würde, hätten zwei Benutzer mit demselben Kennwort denselben Hash.
- Verwendung von kurzen Salzen: Wenn Salze mit wenigen Ziffern verwendet werden, können Nachschlagetabellen erstellt werden, die jedes mögliche Salz enthalten. Wenn zum Beispiel eine einzelne Ziffer als Salt verwendet wird, kann der Angreifer leicht Listen mit Hashwerten erstellen, die jedes mögliche Salt enthalten.
Die Unternehmen erzählen Ihnen nicht immer die ganze Geschichte. Wenn sie also sagen, ein Passwort wurde gehasht (oder gehasht und gesalzen), verwenden sie möglicherweise nicht die bewährten Methoden. Seien Sie immer auf der Seite der Vorsicht.
Andere Bedenken
Es ist wahrscheinlich, dass der Salt-Wert auch in der Kennwortdatenbank vorhanden ist. Das ist nicht so schlimm - wenn für jeden Benutzer ein eindeutiger Salt-Wert verwendet würde, müssten die Angreifer viel CPU-Leistung aufbringen, um all diese Kennwörter zu brechen.
In der Praxis verwenden so viele Leute offensichtliche Passwörter, dass es wahrscheinlich einfach wäre, die Passwörter vieler Benutzerkonten zu ermitteln. Wenn zum Beispiel ein Angreifer Ihren Hash kennt und er Ihren Salt kennt, kann er leicht überprüfen, ob Sie einige der häufigsten Passwörter verwenden.
Wenn ein Angreifer es für Sie will und Ihr Passwort knacken möchte, kann er es mit roher Gewalt tun, solange er den Salzwert kennt - was er wahrscheinlich tut. Mit dem lokalen Offline-Zugriff auf Kennwortdatenbanken können Angreifer alle gewünschten Brute-Force-Angriffe ausführen.
Andere personenbezogene Daten verlieren möglicherweise auch die Gefahr, wenn eine Kennwortdatenbank gestohlen wird: Benutzernamen, E-Mail-Adressen und mehr. Im Falle des Yahoo-Leak wurden auch Sicherheitsfragen und -antworten durchgesickert - was, wie wir alle wissen, den Zugriff auf das Konto einer anderen Person einfacher macht.
Hilfe, was soll ich tun??
Was auch immer ein Dienst sagt, wenn seine Kennwortdatenbank gestohlen wird, ist es am besten anzunehmen, dass jeder Dienst völlig inkompetent ist und entsprechend handeln.
Verwenden Sie zunächst keine Passwörter auf mehreren Websites. Verwenden Sie einen Passwort-Manager, der für jede Website eindeutige Passwörter generiert. Wenn ein Angreifer herausfindet, dass Ihr Kennwort für einen Dienst "43 ^ tSd% 7uho2 # 3" lautet, und Sie dieses Kennwort nur für diese bestimmte Website verwenden, hat er nichts Nützliches gelernt. Wenn Sie überall dasselbe Kennwort verwenden, können sie auf Ihre anderen Konten zugreifen. So werden die Konten vieler Menschen "gehackt".
Wenn ein Dienst gefährdet wird, müssen Sie das dort verwendete Kennwort ändern. Sie sollten das Passwort auch auf anderen Websites ändern, wenn Sie es dort wiederverwenden. Dies sollte jedoch nicht unbedingt der Fall sein.
Sie sollten auch die Zwei-Faktor-Authentifizierung in Betracht ziehen, die Sie auch dann schützt, wenn ein Angreifer Ihr Kennwort erkennt.
Das Wichtigste ist, Kennwörter nicht wiederzuverwenden. Kompromittierte Kennwortdatenbanken können Sie nicht verletzen, wenn Sie überall ein eindeutiges Kennwort verwenden - es sei denn, sie speichern andere wichtige Daten in der Datenbank, beispielsweise Ihre Kreditkartennummer.
Bildnachweis: Marc Falardeau auf Flickr, Wikimedia Commons