Они зашифрованы на диске? Как? Безопасны ли они, например, в случае, если кто-то загружается с 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 сохраняет этот BLOB-объект в своей базе данных 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 Keyring и KDE Wallet.
Они «зашифрованы», но это обратимое шифрование. Chrome должен отправить необработанный пароль на сайт, для которого он был сохранен, так что, если Chrome может расшифровать и использовать его, то могут и другие люди. Хранение паролей никогда не является безопасным на 100%.
CryptProtectData
Windows API, Windows фактически выполняет все шифрование и поиск, ключ шифрования зависит от вашей учетной записи пользователя и системы.
Google Chrome шифрует пароли и сохраняет их в БД SQLite, но их можно легко просмотреть с помощью специальных приложений для восстановления паролей, таких как ChromePass ( http://www.nirsoft.net/utils/chromepass.html ) или SecurePassword Kit ( http: // www.getsecurepassword.com/ )
На Mac эквивалентом функции CryptProtectData в Windows является доступ к паролю для «Chrome Safe Storage» в связке ключей OS X.