Чи зашифровані вони на диску? Як? Чи безпечні вони, наприклад, якщо хтось завантажиться з Live CD і встановить жорсткий диск?
Як генерується ключ шифрування? Чи відрізняється він у Windows та Linux?
Чи зашифровані вони на диску? Як? Чи безпечні вони, наприклад, якщо хтось завантажиться з Live CD і встановить жорсткий диск?
Як генерується ключ шифрування? Чи відрізняється він у Windows та Linux?
Відповіді:
Вам здається цікавим саме ключ, який використовується для шифрування паролів у Chrome.
Відповідь:
Кожен пароль шифрується різним випадковим ключем.
Потім зашифрований пароль зберігається у файлі бази даних SQLite:
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Ви можете використовувати щось на зразок браузера SQLite Database Browser або SQLite Maestro для його перегляду. Ось фрагмент з мого Login Data
файлу:
origin_url username_value password_value
======================================== ============== ========================
http://thepiratebay.org/register JolineBlomqvist@example.com 01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Ви помітите, що пароль - це зашифрований фрагмент даних. Приблизний алгоритм для шифрування нового пароля:
І Chrome зберігає цю крапку у своїй базі даних SQLite.
Але щоб відповісти на ваше запитання: звідки береться ключ шифрування?
Кожен пароль шифрується різним випадковим чином створеним ключем
Звичайно, я залишив технічні деталі. Chrome не шифрує ваші паролі сам. У Chrome немає головного ключа, який використовується для шифрування чого-небудь. Chrome не робить шифрування. Windows робить.
Існує функція Windows CryptProtectData
, яка використовується для шифрування будь-яких довільних даних, які вам подобаються. Деталі його дзвінка менш важливі. Але якщо я вигадаю псевдо-мову, яка дещо може бути розшифрованою, як і будь-який мов програмування, Chrome закликає:
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
Отже, пароль:
correct battery horse staple
01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BB0E1F4548ADC84A82EC0873552BCB460000000002000000000003660000C0000000100000006811169334524F33D880DE0C842B9BBB0000000004800000A00000001000000043C8E23979F5CC5499D73610B969A92A08000000EE07953DEC9F7CA01400000098B5F0F01E35B0DC6BBAFC53A9B1254AC999F4FA
Ви помітите, що мені ніколи не потрібно було вводити пароль. Це тому, що Windows опікується усім цим. Наприкінці:
Тож єдиний спосіб, коли хтось дізнається ваш пароль, це якщо він знає ваш пароль.
%LocalAppData%\Google\Chrome\User Data\Default\Login Data
Паролі шифруються і зберігаються в базі даних SQLite:
Тут важлива деталь
CryptProtectData
- це функція Windows API для шифрування даних. Дані, зашифровані за допомогою цієї функції, досить солідні. Його можна розшифрувати лише на тій самій машині і тим самим користувачем, який шифрував її в першу чергу.
CryptProtectData
в якості ключа використовується ваші облікові дані Windows (не пароль, а деякі інші дані). AFAIK, це та сама функція, яка використовується для захисту ваших сертифікатів, мережевих облікових даних та всього іншого.
Encryptor::EncryptString
нічого не робить . Здається, існує код для використання ключів GNOME та гаманця KDE.
Вони "зашифровані", але це зворотне шифрування. Chrome повинен надсилати необроблений пароль на той веб-сайт, на якому він зберігався, тож якщо Chrome може розшифрувати та використовувати його, це може зробити і інші люди. Збереження паролів ніколи не є 100% безпечним.
CryptProtectData
це API Windows, Windows насправді здійснює все шифрування та пошук, ключ шифрування залежить від вашого облікового запису користувача та системи.
Google Chrome шифрує паролі та зберігає їх у БД SQLite, але їх можна легко переглядати за допомогою спеціальних програм для відновлення паролів, таких як ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) або SecurePassword Kit ( http: // www.getsecurepassword.com/ )
На Mac, еквівалент функції CryptProtectData в Windows, є доступ до пароля для "Безпечного зберігання Chrome" в брелоку OS X.