Шифрование без мастер-пароля

Этот вариант защиты менее надежен, чем шифрование с мастер-паролем. Хранилище паролей шифруется ключом, который хранится на компьютере и защищается средствами операционной системы. Получив доступ к компьютеру или жесткому диску, хакеры могут украсть и расшифровать пароли.

  1. Процедура шифрования без мастер-пароля
  2. Уязвимости шифрования без мастер-пароля
  3. Синхронизация паролей

Процедура шифрования без мастер-пароля

Если пользователь не создал мастер-пароль, шифрование паролей в браузере проходит следующие этапы:

  1. Браузер генерирует случайный ключ EncKey длиной 256 бит.
  2. С помощью этого ключа браузер зашифровывает пароли от сайтов, используя алгоритм AES-256 в режиме GСM. Режим GSM в ходе шифрования включается для того, чтобы обеспечить целостность данных при последующей синхронизации. Через GCM хешируются и валидируются URL, логин и разметка полей.
  3. Ключ EncKey шифруется встроенной в браузер функцией OSCrypt и в таком виде хранится на компьютере. Функция OSCrypt использует разные алгоритмы шифрования в зависимости от операционной системы (см. таблицу).
Операционная система Шифрование EncKey
Windows Вызывается функция CryptProtectData/CryptUnprotectData, которая шифрует EncKey с помощью алгоритма AES-256 (Windows 7) или 3DES (Windows XP, Vista). Ключ, с помощью которого зашифрован EncKey, хранится в профиле пользователя в ОС.
Mac OS Используется алгоритм шифрования AES-128-CBC. Ключ шифрования хранится в защищенном хранилище Keychain.
Linux Используется алгоритм шифрования AES-128-CBC. Ключ шифрования хранится в защищенном хранилище KeyStorage.
Пример 1. Шифрование ключа EncKey в Windows без мастер-пароля

Исходный ключ шифрования паролей EncKey:

Mh6lu1xRuZFo/qJ2yktfJch2nAzlgY4+OPADyLQYfrkbR0hxae9M5nVdafthJa2QHG18sZbf2VOxveH87naRb3vq3oJykfxlVHX4bllYDCcLISzHZVnxF2yMM0r4BXl8Uq+nuINiWx8kaKtrULrdwnMGU6eOuOLZvv/wLDzQvz74iuQUgoR3NSpOByFnY/BkAmGWbQ5KXTYqqIcrcqkG1xb3EAQGEG8KGPtQsTvLsHL1QdjteMZ9CBBLAWjYd/kdrZsx+MU96XMEA+ViBU0ot35cAPVBeWgAyMZhvM9sYy4zB2HrCg+n14kSc85OjNEqAChQDeHVtcbBfyshnKB0Qg==

Ключ, с помощью которого зашифровывается EncKey, генерируется функцией CryptProtectData и располагается в каталоге:

C:\Пользователи\Имя вашей учетной записи\AppData\Local\Microsoft\Protect

Ключ EncKey*base64), зашифрованный ключом, который сгенерировала функция CryptProtectData:

AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAApRUs2Bmwq0O4LpCRrIGKQAAAAAACAAAAAAADZgAAwAAAABAAAAAttmGwtWQIgR+ugd6cMwB1AAAAAASAAACgAAAAEAAAAKXn3AtX945aXjv2nFEYf6soAAAAFoZEF0y2DY4+JtCPwkZb68tXEHiZHMPRhJIrMzQA+QF6E6iJBGZD+RQAAAAnmL25O/Rbm8JaMS9cwZZAWtjEGA==

Когда пользователь хочет вставить пароль в форму авторизации, браузер расшифровывает EncKey средствами операционной системы, а затем расшифровывает нужный пароль.

Уязвимости шифрования без мастер-пароля

  • В Windows любая программа (в том числе вредоносная) может попросить операционную систему расшифровать EncKey и таким образом получить доступ к паролям.
  • Ключ шифрования хранится на компьютере. Получив доступ к компьютеру или жесткому диску, злоумышленники могут украсть ключ. Если они получат ключ, то легко смогут расшифровать EncKey и ваши пароли.
  • На разных компьютерах используются разные функции шифрования паролей, поэтому в процессе синхронизации пароли отправляются на сервера Яндекса в расшифрованном виде.
  • На серверах Яндекса пароли хранятся, зашифрованные ключом, который так же хранится на сервере Яндекса. Это небезопасно.

Синхронизация паролей

При синхронизации хранилища, не защищенного мастер-паролем, на сервер отправляется хранилище паролей от сайтов в расшифрованном виде. Поскольку ключ EncKey шифруется с помощью разных алгоритмов на различных ОС компьютера, расшифровывать их приходится тоже средствами ОС перед синхронизацией.

На серверах Яндекса все пароли шифруются с помощью ключа, созданного на основе пароля от аккаунта пользователя на Яндексе и в таком виде хранятся на серверах. Поскольку ключ шифрования также хранится на сервере Яндекса, этот способ является менее безопасным, чем синхронизация хранилища, защищенного мастер-паролем.

Перед тем как переслать пароли на другие устройства пользователей, они расшифровываются на сервере, а на самом устройстве шифруются по алгоритму AES-256-GCM с заново сгенерированным ключом EncKey и в таком виде хранятся на устройстве. Ключ EncKey шифруется, используемый алгоритм шифрования и место хранения ключа зависят от ОС устройства.