28

Они зашифрованы на диске? Как? Безопасны ли они, например, в случае, если кто-то загружается с Live CD и монтирует жесткий диск?

Как генерируется ключ шифрования? Отличается ли это в Windows и Linux?

5 ответов5

23

Вы, кажется, любопытно, особенно о ключе, используемом для шифрования паролей в 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

Вы заметите, что пароль - это зашифрованный набор данных. Примерный алгоритм шифрования нового пароля:

  • генерировать новый случайный ключ сеанса
  • зашифровать пароль с помощью ключа сеанса
  • зашифруйте сеансовый ключ открытым ключом RSA пользователя
  • генерировать код аутентификации сообщения (HMAC) для зашифрованных данных
  • объединить зашифрованный сеансовый ключ, зашифрованный пароль и MAC

И 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. В конце:

  • случайный пароль генерируется для шифрования пароля
  • этот пароль зашифрован случайным паролем
  • этот пароль зашифрован вашим паролем Windows

Таким образом, единственный способ узнать ваш пароль, если он знает ваш пароль.

8

Пароли зашифрованы и хранятся в базе данных SQLite:

Важной частью здесь является CryptProtectData , которая является функцией Windows API для шифрования данных. Данные, зашифрованные с помощью этой функции, довольно надежные. Он может быть дешифрован только на той же машине и тем же пользователем, который его зашифровал.

4

Они "зашифрованы", но это обратимое шифрование. Chrome должен отправить необработанный пароль на сайт, для которого он был сохранен, поэтому, если Chrome может расшифровать и использовать его, то же самое могут сделать и другие люди. Хранение паролей никогда не является безопасным на 100%.

2

Google Chrome шифрует пароли и сохраняет их в БД SQLite, но их можно легко просмотреть с помощью специальных приложений для восстановления паролей, таких как ChromePass (http://www.nirsoft.net/utils/chromepass.html) или SecurePassword Kit (http://www.getsecurepassword.com/)

1

На Mac эквивалентом функции CryptProtectData в Windows является доступ к паролю для "Chrome Safe Storage" в связке ключей OS X.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .