Sont-ils cryptés dans un disque? Comment? Sont-ils sûrs, par exemple, dans le cas où 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 dans Windows et Linux?
Vous semblez être particulièrement intéressé par la clé utilisée pour chiffrer les mots de passe dans Chrome.
La réponse est:
Chaque mot de passe est crypté avec une touche aléatoire différente.
Ensuite, le mot de passe crypté 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 le visualiser. Voici un extrait de mon fichier de Login Data
:
origin_url username_value password_value ======================================== ============== ======================== http://thepiratebay.org/register [email protected] 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Vous remarquerez que le mot de passe est un bloc de données chiffré. L'algorithme approximatif pour chiffrer 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 cryptage?
Chaque mot de passe est chiffré avec une autre touche générée au hasard
Bien sûr, j'ai laissé de côté les détails techniques. Chrome ne crypte pas vos mots de passe lui-même. Chrome n'a pas de clé principale pour crypter tout. Chrome ne fait pas le cryptage. Windows fait.
Il existe une fonction Windows, CryptProtectData
, qui est utilisée pour chiffrer toutes les données arbitraires que vous aimez. Les détails de l'appeler sont moins importants. Mais si j'invente un pseudo-langage qui peut être déchiffrable comme n'importe quel langage 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 savoir si vous connaissez votre mot de passe.
Les mots de passe sont cryptés et stockés dans une base de données SQLite:
La pièce importante ici est
CryptProtectData
, qui est une fonction API Windows pour le cryptage des données. Les données chiffrées avec cette fonction sont assez solides. Il ne peut être décrypté sur la même machine et par le même utilisateur qui l'a chiffré en premier lieu.
Ils sont "chiffré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, d'autres personnes peuvent également l'utiliser. Le stockage des mots de passe n'est jamais 100% sûr.
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: // http://Www.getsecurepassword.com/ )
Sur Mac, l'équivalent de la fonction CryptProtectData dans Windows est d'accéder au mot de passe pour "Chrome Safe Storage" dans le porte-clés de OS X.