Wie speichert Google Chrome Passwörter?

Sind sie auf der Festplatte verschlüsselt? Wie? Sind sie zum Beispiel sicher, wenn jemand von einer Live-CD startet und die Festplatte mountet?

Wie wird der Verschlüsselungsschlüssel generiert? Ist es anders in Windows und Linux?

Author: Óscar, 2010-05-29

5 answers

Sie scheinen speziell neugierig auf den Schlüssel zu sein, der zum Verschlüsseln der Kennwörter in Chrome verwendet wird.

Die Antwort lautet:

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

Und dann wird das verschlüsselte Passwort 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 Data Datei:

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

Sie werden feststellen, dass das Passwort ein verschlüsselter Blob von Daten. Der ungefähre Algorithmus zum Verschlüsseln eines neuen Passworts lautet:

  • generiere 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 Passwort und den MAC

Und Chrome speichert diesen Blob in seinem 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 Master-Schlüssel verwendet, um etwas zu verschlüsseln. Chrome führt die Verschlüsselung nicht durch. Windows tut.

Es gibt eine Windows-Funktion, CryptProtectData, welches ist wird zum Verschlüsseln beliebiger Daten verwendet. Die Details des Anrufs sind weniger wichtig. Aber wenn ich eine Pseudosprache erfinde, die etwas als Programmiersprache entschlüsselbar sein kann, 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 angeben musste. Das ist, weil Windows kümmert sich um all das. Am Ende:

  • eine zufällige das Passwort wird generiert, um das Passwort zu verschlüsseln
  • dieses Passwort wird mit einem zufälligen Passwort verschlüsselt
  • dieses Passwort wird mit Ihrem Windows-Passwort verschlüsselt

So ist die einzige Möglichkeit für jemanden, Ihr Passwort zu kennen, wenn sie Ihr Passwort kennen.

 29
Author: Ian Boyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-10-19 17:32:39

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

Das wichtige Stück hier ist CryptProtectData, eine Windows-API-Funktion zum Verschlüsseln von Daten. Mit dieser Funktion verschlüsselte Daten sind ziemlich solide. Es kann nur auf demselben Computer und von demselben Benutzer entschlüsselt werden, der es überhaupt verschlüsselt hat.

 9
Author: sblair,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-29 18:37:03

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

 4
Author: Pylsa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-05-29 18:35:53

Google Chrome verschlüsselt Passwörter und speichert sie in SQLite DB, aber sie könnten leicht mit den speziellen Password Recovery-Anwendungen wie ChromePass (http://www.nirsoft.net/utils/chromepass.html) oder SecurePassword Kit (http://www.getsecurepassword.com/)

 2
Author: Abricos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-03-16 10:03:24

Auf dem Mac entspricht die CryptProtectData-Funktion in Windows dem Zugriff auf das Kennwort für "Chrome Safe Storage" im Schlüsselbund von OS X.

 1
Author: Fazal Majid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-28 17:32:42