Wie speichert ein Webbrowser Passwörter?

8

Wie speichern aktuelle Webbrowser (oder Mobile Mail-Clients und Software im Allgemeinen) Benutzerkennwörter? Alle Antworten zum Speichern von Passwörtern besagen, dass wir nur Hashes speichern sollten, nicht das Passwort selbst. Es fällt mir jedoch schwer, im Internet nach den besten Techniken zum Speichern von Passwörtern zu suchen, wenn wir wissen, dass wir sie später im Klartext benötigen werden - ohne sie im Klartext zu speichern, ohne eine schwache Verschlüsselung (bekannter Schlüssel) und zu verwenden ohne den Benutzer nach einem Master-Passwort zu fragen. Irgendwelche Ideen?

Marcus
quelle
Diese Frage passt wahrscheinlich besser zur IT Security SE-Site.
Bernard
@Bernard Danke, mir war die IT-Sicherheitsseite nicht bekannt ...
Marcus
Seit heute (Chrome 60) speichert Chrome Klartext-Passwörter seit ... nun, je. Es wird heftig diskutiert, wie gut diese Klartextkennwörter vor Benutzerzugriff geschützt werden müssen. Genießen Sie viele gültige Argumente von beiden Seiten hier .
Bers

Antworten:

4

lokal wird es entweder als Klartext gespeichert oder verschlüsselt.

Bei der Verschlüsselung kann der Entschlüsselungs- / Entschlüsselungsschlüssel pro Browser (in der ausführbaren Datei fest codiert), pro Computer (bei der Installation generiert und im Installationsverzeichnis gespeichert) oder pro Benutzer (bei der ersten Verwendung des Kennwortmanagers generiert und im %appdata%) gespeichert werden.

oder sie können kombiniert werden: Der Schlüssel auf Benutzerebene wird mit dem Schlüssel auf Maschinenebene verschlüsselt, sodass Malware, wenn die Datei, in der die Kennwörter gespeichert sind, gespeichert wird, ohne die Schlüssel auf Benutzerebene und auf Maschinenebene unbrauchbar wird

In einigen Browsern können Sie auch ein "Master" -Kennwort verwenden, das mit dem vorhandenen Schlüssel kombiniert wird, um mehr Sicherheit zu bieten

Wenn Sie einen (guten) Synchronisationsdienst verwenden, werden die Kennwörter niemals im Klartext auf dem Server gespeichert und niemals serverseitig entschlüsselt.

Ratschenfreak
quelle
Vielen Dank. Aus allen Antworten geht hervor, dass es keine gute "starke" Lösung gibt, entweder einfachen Text oder eine Verschleierung (dh eine Verschlüsselung, deren Schlüssel von der Maschine selbst bezogen werden kann)
Marcus
12

Die Passwörter werden im Klartext gespeichert, sofern kein Hauptkennwort verwendet wird.

Wenn Leute sagen, dass Sie nur Hashes von Passwörtern speichern müssen, sprechen sie von serverseitigem Speicher, nicht von clientseitigem.

Serverseitig

Wenn Sie eine eigene Website haben, auf der sich die Benutzer mit ihren Passwörtern registrieren / anmelden können, müssen (und dürfen) sie die Passwörter nicht selbst speichern:

  • Sie müssen keine einfachen Kennwörter speichern , da Sie nur überprüfen müssen, ob das bei einer Anmeldung verwendete Kennwort mit dem Kennwort übereinstimmt, das der Benutzer bei der Registrierung angegeben hat. Sie können dies mit Hashes tun, da unterschiedliche Passwörter unterschiedliche Hashes haben würden¹.

  • Sie dürfen keine einfachen Passwörter speichern . Was ist, wenn Ihre Website gehackt wird? Darüber hinaus verwenden viele Menschen immer wieder dieselben Passwörter, sodass Sie praktisch jedem Hacker die Möglichkeit geben, auf das Facebook-Konto, das E-Mail-Konto usw. Ihres Benutzers zuzugreifen.

Client-Seite

Browser sind anders. Sie speichern die Kennwörter auf dem Client-Computer und müssen ein Originalkennwort und keinen Hash haben.

Dies bedeutet, dass diese Passwörter in den meisten Fällen im Klartext gespeichert werden.

  • In Bezug auf die Sicherheit spielt es keine Rolle. Diese Passwörter werden in einem Verzeichnis gespeichert, das zum Benutzerkonto gehört. Dies bedeutet, dass es Sache des Betriebssystems (und des Benutzers) ist, die Berechtigungen für die Benutzerdateien ordnungsgemäß zu konfigurieren und den Zugriff auf die Datei, die die Kennwörter enthält, auf den Benutzer selbst zu beschränken.

  • In Bezug auf die Benutzererfahrung ist dies am einfachsten. Eine andere Möglichkeit besteht darin, diese Kennwörter mit einem Hauptkennwort zu verschlüsseln. In diesem Fall müsste der Benutzer das Hauptkennwort jedes Mal angeben, wenn er den Browser öffnet . Ich bin mir ziemlich sicher, dass die meisten Benutzer das niemals genießen würden.

    Wenn das Master-Passwort irgendwo gespeichert ist, tritt das gleiche Problem auf: Wenn Sie das Master-Passwort im Klartext speichern, worum geht es dann? Wenn Sie es verschlüsseln, müssen Sie ein Master-Master-Passwort haben.

Synchronisieren

Beachten Sie, dass die meisten Browser es den Benutzern ermöglichen, ihre Daten auf mehreren Computern zu synchronisieren. Die Synchronisierung verwendet einen Remote-Server zum Speichern der Cookies, des Verlaufs, der Lesezeichen und der Kennwörter. Chrome verwendet beispielsweise Google-Server, um diese Daten zu speichern.

In diesem Fall werden die Kennwörter auf Synchronisierungsservern niemals im Klartext gespeichert , da dies sonst ein Sicherheitsproblem darstellt. In Chrome müssen Sie das Hauptkennwort für die Synchronisierung auswählen (oder das Kennwort aus Ihrem Google-Konto verwenden). Dieses Hauptkennwort wird verwendet, um die Kennwörter (immer) und andere Daten wie den Verlauf oder die Lesezeichen (optional) zu verschlüsseln.


¹ Der Einfachheit halber können Sie sich vorstellen, dass die verschiedenen Passwörter nicht dieselben Hashes haben können. Theoretisch ist dies falsch, da Kollisionen existieren können. In der Praxis können Sie bei Verwendung eines starken Hash-Algorithmus wie SHA-256 das Kollisionsrisiko für eine Website selbst bei Millionen registrierter Benutzer vernachlässigen. Anders sieht es aus, wenn Sie einen veralteten und veralteten Hash-Algorithmus wie MD5 verwenden.

Arseni Mourzenko
quelle
2
Sie scheinen besorgt darüber zu sein, wie das Master-Passwort gespeichert wird, aber wir müssen (oder wollen) es nicht wirklich speichern, oder? Nach meinem Verständnis benötigen wir nur das Hauptkennwort als (Teil des) Schlüssels, um gespeicherte Kennwörter zu entschlüsseln und neue Kennwörter zu verschlüsseln. Wenn das Master-Passwort falsch ist, ist bei der Entschlüsselung (hoffentlich) auch das entschlüsselte spezifische Passwort falsch. Das eigentliche Problem betrifft neue Passwörter, da wir sie nicht mit dem falschen Passwort verschlüsseln möchten, aber nicht überprüfen können, ob der Master-Pass eine Standardzeichenfolge ordnungsgemäß entschlüsselt (daher müssen wir die codierte Zeichenfolge speichern).
SylvainD
Einverstanden. Wenn Sie ein Hauptkennwort haben, befinden Sie sich wieder an der Stelle, an der Sie sich auf der Serverseite befinden: Nur überprüfen. Sie können das Kennwort anhand eines Hashs überprüfen und beim Auschecken die Benutzereingabe verwenden. Es ist nicht erforderlich, es dauerhaft zu speichern. Dies ist auch der Mechanismus, mit dem einige Anwendungen Hashs aktualisieren, wenn sie veraltet sind. Warten Sie, bis sich der Benutzer angemeldet hat, überprüfen Sie den alten Hash, wiederholen Sie die Eingabe, während sie sich noch im Klartext befindet, und speichern Sie den neuen, sichereren Hash.
Matthew Scharley
@Josay: Wir sind besorgt über die Art und Weise, wie das Hauptkennwort gespeichert wird, wenn wir den Benutzer nicht jedes Mal auffordern möchten, es einzugeben, wenn er einen Browser öffnet. Wenn der Benutzer es eingeben muss, wird es technisch sehr einfach, da wir nur seinen Hash speichern.
Arseni Mourzenko
@MainMa Ok, dann bin ich zu 100% bei dir.
SylvainD
Es ist erwähnenswert, dass die meisten Browser jetzt den Schlüsselspeicher des Betriebssystems verwenden, in dem einer vorhanden ist. Wenn ich beispielsweise meinen SO-Benutzernamen und mein Kennwort auf meinem PC (Firefox unter Win 10) speichern würde, würde dies im Schlüsselspeicher gespeichert. Dies ist verschlüsselt, aber beim Anmelden entsperrt. Jemand, der an meinem PC sitzt und sich als ich angemeldet hat, kann darauf zugreifen. Wenn ich jedoch als jemand anderes angemeldet bin, sind meine Passwörter nicht erreichbar.
Baldrickk
0

Diese Programme benötigen das Passwort im Klartext (sie müssen es auf Anfrage senden). Es wird daher als Klartext gespeichert. Viele Browser erlauben es, alle gespeicherten Passwörter mit einem Hauptkennwort zu verschlüsseln (nur einmal gefragt).

Matteo
quelle