Sont-ils chiffrés sur disque? Comment? Sont-ils sûrs, par exemple, si quelqu'un démarre à partir d'un Live CD et monte le disque dur?
Comment la clé de cryptage est-elle générée? Est-ce différent sous Windows et Linux?
Sont-ils chiffrés sur disque? Comment? Sont-ils sûrs, par exemple, si quelqu'un démarre à partir d'un Live CD et monte le disque dur?
Comment la clé de cryptage est-elle générée? Est-ce différent sous Windows et Linux?
Réponses:
Vous semblez être curieux de savoir spécifiquement la clé utilisée pour crypter les mots de passe dans Chrome.
La réponse est:
Chaque mot de passe est crypté avec une clé aléatoire différente.
Et puis le mot de passe chiffré est stocké dans le fichier de base de données SQLite:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Vous pouvez utiliser quelque chose comme SQLite Database Browser ou SQLite Maestro pour l'afficher. Voici un extrait de mon Login Data
fichier:
origin_url username_value password_value
======================================== ============== ========================
http://thepiratebay.org/register JolineBlomqvist@example.com 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Vous remarquerez que le mot de passe est une goutte de données chiffrée. L'algorithme approximatif pour crypter un nouveau mot de passe est:
Et Chrome enregistre ce blob dans sa base de données SQLite.
Mais pour répondre à votre question: d'où vient la clé de chiffrement?
Chaque mot de passe est crypté avec une clé différente générée aléatoirement
Bien sûr, j'ai omis les détails techniques. Chrome ne chiffre pas lui-même vos mots de passe. Chrome n'a pas de clé principale utilisée pour chiffrer quoi que ce soit. Chrome ne fait pas le cryptage. Windows le fait.
Il existe une fonction Windows CryptProtectData
, qui est utilisée pour crypter toutes les données arbitraires que vous aimez. Les détails de l'appel sont moins importants. Mais si j'invente un pseudo-langage qui peut être déchiffrable comme n'importe quelle langue de programmation, Chrome appelle:
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
Donc le mot de passe:
correct battery horse staple
01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Vous remarquerez que je n'ai jamais eu besoin de fournir un mot de passe. C'est parce que Windows s'occupe de tout cela. À la fin:
Donc, la seule façon pour quelqu'un de connaître votre mot de passe est de connaître votre mot de passe.
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Les mots de passe sont cryptés et stockés dans une base de données SQLite:
L'élément important ici est
CryptProtectData
, qui est une fonction API Windows pour crypter les données. Les données chiffrées avec cette fonction sont assez solides. Il ne peut être décrypté que sur la même machine et par le même utilisateur qui l'a crypté en premier lieu.
CryptProtectData
utilise vos informations d'identification Windows (pas le mot de passe, mais d'autres données) comme clé. AFAIK, c'est la même fonction utilisée pour protéger vos certificats, vos informations d'identification réseau et tout ça.
Encryptor::EncryptString
ne fait rien . Il semble y avoir du code pour utiliser le porte-clés GNOME et le portefeuille KDE.
Ils sont "cryptés" mais c'est un cryptage réversible. Chrome doit envoyer le mot de passe brut au site pour lequel il a été stocké, donc si Chrome peut le décrypter et l'utiliser, les autres personnes aussi. Le stockage des mots de passe n'est jamais sûr à 100%.
CryptProtectData
est une API Windows, Windows fait tout le cryptage et la récupération, la clé de cryptage dépend de votre compte utilisateur et de votre système.
Google Chrome crypte les mots de passe et les stocke dans SQLite DB, mais ils peuvent être facilement visualisés avec les applications spéciales de récupération de mot de passe telles que ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) ou SecurePassword Kit ( http: // www.getsecurepassword.com/ )
Sur le Mac, l'équivalent de la fonction CryptProtectData dans Windows est d'accéder au mot de passe pour "Chrome Safe Storage" dans le trousseau d'OS X.