Wie speichert Google Chrome Passwörter?

28

Sind sie auf der Festplatte verschlüsselt? Wie? Sind sie beispielsweise sicher, wenn jemand von einer Live-CD bootet und die Festplatte einbindet?

Wie wird der Verschlüsselungsschlüssel generiert? Unterscheidet es sich in Windows und Linux?

Óscar
quelle
Beachten Sie, dass Google sich geweigert hat, ein Hauptkennwort zu implementieren (wie es Firefox getan hat), da dies zu einem falschen Sicherheitsgefühl führen würde. Außerdem gibt es Tools wie Chromepass , mit denen die Kennwortdatenbank entschlüsselt werden kann, sofern der Benutzer angemeldet ist.
Dan Dascalescu
Siehe auch
dskrvk

Antworten:

25

Sie scheinen besonders neugierig auf den Schlüssel zu sein, mit dem die Passwörter in Chrome verschlüsselt werden.

Die Antwort ist:

Jedes Passwort wird mit einem anderen zufälligen Schlüssel verschlüsselt.

Anschließend wird das verschlüsselte Kennwort in der SQLite-Datenbankdatei gespeichert:

%LocalAppData%\Google\Chrome\User Data\Default\Login Data

Sie können etwas wie SQLite Database Browser oder SQLite Maestro verwenden , um es anzuzeigen. Hier ist ein Ausschnitt aus meiner Login DataDatei:

origin_url                                username_value               password_value
========================================  ==============               ========================
http://thepiratebay.org/register          [email protected]  01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

Sie werden feststellen, dass das Kennwort ein verschlüsselter Datenblock ist. Der ungefähre Algorithmus zum Verschlüsseln eines neuen Passworts lautet:

  • Erzeugen Sie einen neuen zufälligen Sitzungsschlüssel
  • verschlüsseln Sie das Passwort mit dem Sitzungsschlüssel
  • verschlüsseln Sie den Sitzungsschlüssel mit dem öffentlichen RSA-Schlüssel des Benutzers
  • Generieren Sie einen Message Authentication Code (HMAC) für die verschlüsselten Daten
  • Verketten Sie den verschlüsselten Sitzungsschlüssel, das verschlüsselte Kennwort und den MAC

Und Chrome speichert diesen Blob in seiner SQLite-Datenbank.

Aber um Ihre Frage zu beantworten: Woher kommt der Verschlüsselungsschlüssel?

Jedes Passwort wird mit einem anderen zufällig generierten Schlüssel verschlüsselt

Die technischen Details

Natürlich habe ich die technischen Details ausgelassen. Chrome verschlüsselt Ihre Passwörter nicht selbst. Chrome verfügt nicht über einen Hauptschlüssel, mit dem etwas verschlüsselt werden kann. Chrome führt die Verschlüsselung nicht durch. Windows macht.

Es gibt eine Windows-Funktion, CryptProtectDatamit der Sie beliebige Daten verschlüsseln können. Die Details des Aufrufs sind weniger wichtig. Aber wenn ich eine Pseudo-Sprache erfinde, die wie jede Programmiersprache leicht zu entziffern ist, ruft Chrome auf:

CryptProtectData(
      { cbData: 28, pbData: "correct battery horse staple" },
      "The password for superuser.com and all the glee therein",
      null, //optional entropy
      null, //reserved
      null, //prompt options
      0, //flags
      { cbData:   pbData:  }); //where the encrypted data will go

Also das Passwort:

  • Klartext :correct battery horse staple
  • Verschlüsselt :01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA

Sie werden feststellen, dass ich nie ein Passwort eingeben musste. Das liegt daran, dass Windows sich darum kümmert. Schlussendlich:

  • Ein zufälliges Passwort wird generiert, um das Passwort zu verschlüsseln
  • Dieses Passwort ist mit einem zufälligen Passwort verschlüsselt
  • Dieses Kennwort wird mit Ihrem Windows-Kennwort verschlüsselt

Der einzige Weg für jemanden, Ihr Passwort zu kennen, ist, wenn er Ihr Passwort kennt.

Ian Boyd
quelle
Woher weiß Chrome, mit welchem ​​Schlüssel das gespeicherte Passwort entschlüsselt werden kann?
Brunoais
1
@brunoais Chrome kennt den zum Verschlüsseln von Passwörtern verwendeten Schlüssel nicht. Chrome entschlüsselt sie nicht - Windows tut es.
Ian Boyd
Ach ja ok Wenn also ein bösartiges Programm auf den Computer gelangt, sind die Passwörter für dieses Programm vollständig verfügbar, oder?
Brunoais
1
@brunoais Nur wenn Sie Ihr Passwort eingegeben haben. Leider ist dies eine grundlegende Einschränkung der Verschlüsselung: Sobald Daten entschlüsselt sind, werden sie entschlüsselt.
Ian Boyd
Vielen Dank. Chrome hat das Speichern meiner Passwörter abgebrochen (es wurde weiterhin angeboten, diese zu speichern, aber nie zurückgerufen). Ich stellte fest, dass die Passwortdatenbank beschädigt war. Durch Löschen %LocalAppData%\Google\Chrome\User Data\Default\Login Data
Colonel Panic
8

Die Passwörter werden verschlüsselt und in einer SQLite-Datenbank gespeichert:

Das Wichtige hierbei ist CryptProtectData, dass es sich um eine Windows-API-Funktion zum Verschlüsseln von Daten handelt. Mit dieser Funktion verschlüsselte Daten sind ziemlich solide. Es kann nur auf demselben Computer und von demselben Benutzer entschlüsselt werden, der es ursprünglich verschlüsselt hat.

sblair
quelle
Aber wie wird der Verschlüsselungsschlüssel generiert? Abhängig davon würde ich das Schema für mehr oder weniger sicher halten. Und was ist mit Linux?
Óscar,
@ Óscar: CryptProtectDataVerwendet unter Windows Ihre Windows-Anmeldeinformationen (nicht das Kennwort, sondern einige andere Daten) als Schlüssel. AFAIK, es ist die gleiche Funktion, die zum Schutz Ihrer Zertifikate, Netzwerkanmeldeinformationen und all dieser Dinge verwendet wird.
Grawity
3
@ Óscar: Unter Linux Encryptor::EncryptString macht das nichts . Es scheint Code für die Verwendung von GNOME Keyring und KDE Wallet zu geben.
Grawity
Richtig. Unter Linux wird stattdessen KDE Wallet, GNOME Keyring oder ein anderer unterstützter nativer Passwortspeicher (den ich spontan vergesse) verwendet.
Michael Hampton
1
Also ... scheint es möglich zu sein, eine andere separate App zu haben, die im Grunde genommen Ihre Chrome-Passwörter durchsucht, vorausgesetzt, Sie sind bereits angemeldet und sie läuft so, wie Sie es tun?
Rogerdpack
4

Sie sind "verschlüsselt", aber es ist eine umkehrbare Verschlüsselung. Chrome muss das Raw-Passwort an die Site senden, für die es gespeichert wurde. Wenn Chrome es also entschlüsseln und verwenden kann, können es auch andere Personen. Das Speichern von Passwörtern ist niemals 100% sicher.

BloodPhilia
quelle
Aber welcher ist der Verschlüsselungsschlüssel?
Óscar
2
Überprüfen Sie die Antwort von sblair. Beachten Sie, dass unabhängig von der Speicherung eine Entschlüsselungsmöglichkeit besteht. Mit der richtigen Software könnte jeder es entschlüsseln. Wenn Sie sich bis zum Abmelden bei Ihrem Windows-Konto angemeldet haben, sind Ihre Kennwörter vollständig verwendbar und können vollständig angezeigt werden. Nur darauf hinweisen, dass es keine 100% sichere Lösung zum Speichern von Browser-Passwörtern gibt.
BloodPhilia
1
Nein, aber wenn Ihr Computer entführt / infiziert ist, können Browserkennwörter leicht wiederhergestellt werden, ohne dass Sie es bemerken. Ich weise noch einmal darauf hin, dass es keinen 100% ausfallsicheren Kennwortspeicher für Browser gibt ... Beantworten Sie einfach Ihre Frage zu deren Sicherheit.
BloodPhilia
1
Es gibt kein "Master-Passwort". CryptProtectDataist eine Windows-API, Windows übernimmt die Verschlüsselung und das Abrufen aller Daten. Der Verschlüsselungsschlüssel hängt von Ihrem Benutzerkonto und Ihrem System ab.
BloodPhilia
1
Dies sollte Ihnen eine Erklärung der Funktionsweise geben: msdn.microsoft.com/en-us/library/ms995355.aspx
BloodPhilia
1

Auf dem Mac besteht das Äquivalent zur CryptProtectData-Funktion in Windows darin, auf das Kennwort für "Chrome Safe Storage" im Schlüsselbund von OS X zuzugreifen.

Fazal Majid
quelle