Шифрование без мастер-пароля
Этот вариант защиты менее надежен, чем шифрование с мастер-паролем. Хранилище паролей шифруется ключом, который хранится на компьютере и защищается средствами операционной системы. Получив доступ к компьютеру или жесткому диску, хакеры могут украсть и расшифровать пароли.
Процедура шифрования без мастер-пароля
Если пользователь не создал мастер-пароль, шифрование паролей в браузере проходит следующие этапы:
- Браузер генерирует случайный ключ EncKey длиной 256 бит.
- С помощью этого ключа браузер зашифровывает пароли от сайтов, используя алгоритм AES-256 в режиме GСM. Режим GCM в ходе шифрования включается для того, чтобы обеспечить целостность данных при последующей синхронизации. Через GCM хешируются и валидируются URL, логин и разметка полей.
- Ключ EncKey шифруется встроенной в браузер функцией OSCrypt и в таком виде хранится на компьютере. Функция OSCrypt использует разные алгоритмы шифрования в зависимости от операционной системы (см. таблицу).
Операционная система |
Шифрование EncKey |
Windows |
Вызывается функция |
macOS |
Используется алгоритм шифрования 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\Roaming\Microsoft\Protect
Ключ EncKey* (в base64), зашифрованный ключом, который сгенерировала функция CryptProtectData
:
AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAApRUs2Bmwq0O4LpCRrIGKQAAAAAACAAAAAAADZgAAwAAAABAAAAAttmGwtWQIgR+ugd6cMwB1AAAAAASAAACgAAAAEAAAAKXn3AtX945aXjv2nFEYf6soAAAAFoZEF0y2DY4+JtCPwkZb68tXEHiZHMPRhJIrMzQA+QF6E6iJBGZD+RQAAAAnmL25O/Rbm8JaMS9cwZZAWtjEGA==
Когда пользователь хочет вставить пароль в форму авторизации, браузер расшифровывает EncKey средствами операционной системы, а затем расшифровывает нужный пароль.
Уязвимости шифрования без мастер-пароля
- В Windows любая программа (в том числе вредоносная) может попросить операционную систему расшифровать EncKey и таким образом получить доступ к паролям.
- Ключ шифрования хранится на компьютере. Получив доступ к компьютеру или жесткому диску, злоумышленники могут украсть ключ. Если они получат ключ, то легко смогут расшифровать EncKey и ваши пароли.
- На разных компьютерах используются разные функции шифрования паролей, поэтому в процессе синхронизации пароли отправляются на сервера Яндекса в расшифрованном виде.
- На серверах Яндекса пароли хранятся, зашифрованные ключом, который так же хранится на сервере Яндекса. Это небезопасно.
Синхронизация паролей
При синхронизации хранилища, не защищенного мастер-паролем, на сервер отправляется хранилище паролей от сайтов в расшифрованном виде. Поскольку ключ EncKey шифруется с помощью разных алгоритмов на различных ОС компьютера, расшифровывать их приходится тоже средствами ОС перед синхронизацией.
На серверах Яндекса все пароли шифруются с помощью ключа, созданного на основе пароля от Яндекс ID пользователя и в таком виде хранятся на серверах. Поскольку ключ шифрования также хранится на сервере Яндекса, этот способ является менее безопасным, чем синхронизация хранилища, защищенного мастер-паролем.
Перед тем как переслать пароли на другие устройства пользователей, они расшифровываются на сервере, а на самом устройстве шифруются по алгоритму AES-256-GCM с заново сгенерированным ключом EncKey и в таком виде хранятся на устройстве. Ключ EncKey шифруется, используемый алгоритм шифрования и место хранения ключа зависят от ОС устройства.
Ключ, зашифровывающий хранилище паролей.