Взлом инфраструктуры Opera привёл к утечке синхронизированных паролей
Компания Opera Software сообщила об инциденте, в результате которого атакующие могли получить доступ к серверам, используемым для хранения данных, синхронизируемых между устройствами пользователей, активировавших функцию Opera Sync. В том числе в руки атакующих могли попасть логины и пароли доступа к различным сайтам, сохранённые для автоматического заполнения форм входа. По предварительной оценке проблема затронула около 1.7 млн пользователей, применяющих сервис Opera Sync.
Утверждается, что синхронизированные данные хранились в зашифрованном виде, а пароли к учётным записям в Opera Sync хранились в виде хэшей с солью. В качестве упреждающей меры защиты, компания Opera Software приняла решение о блокировании всех учётных записей Opera Sync и инициировании операции смены паролей. Так как в случае успешного подбора пароля Opera Sync атакующие могут получить доступ к синхронизированным данным, пользователям также рекомендуется поменять пароли к сайтам, сохранённые в браузере. Пользователи браузера Opera не использующие функцию Opera Sync проблеме не подвержены.
Компания Opera Software не раскрывает информацию о методе шифрования синхронизированных паролей, но с большой долей вероятности в Opera применяется та же схема, что и в Google Chrome. В Chrome используется схема шифрования Nigori, которая использует PBKDF2 (Password-Based Key Derivation Function 2) для формирования ключей на основе заданного пользователем логина и пароля. На основе логина и пароля генерируется три ключа - для аутентификации клиента на сервере, для шифрования данных и для создания цифровой подписи. Ключи самодостаточны - получив один из ключей невозможно определить другие, т.е. на основе ключа аутентификации клиента невозможно подобрать ключ, применяемый для шифрования данных. Данные шифруются при помощи алгоритма AES-128 в режиме CBC с 16-байтовым вектором инициализации.
В Firefox Sync применяется схема, обеспечивающая хранение ключа на стороне пользователя и применения "end-to-end"-шифрования, подразумевающего вовлечение в процесс шифрования только конечных клиентских систем, без хранения расшифрованных данных или ключей на внешнем сервере. Ключ для шифрования задаётся на основе указанного для аккаунта пароля, сам аккаунт применяется только для транзитного хранения уже зашифрованных данных.