
На первый взгляд схема шифрования, показанная в общих чертах на скриншоте выше, действительно выглядит надежно. Приватный ключ генерируется на основе пароля пользователя и случайного набора цифр и хранится только на клиенте. Его производные в дальнейшем применяются для шифрования файлов, так что даже сам хостинг, правоохранительные органы или злонамеренный атакующий, получивший доступ к инфраструктуре, не могут увидеть содержимое этих файлов. На практике выяснилось, что пусть обойти систему шифрования и не легко, но есть надежный способ расшифровать файлы. Для этого достаточно, чтобы пользователь авторизовался на сервисе не менее 512 раз.
Как и любая работа по криптографии, данное исследование изобилует сложными терминами. Но базовое объяснение проблемы такое: в Mega позаботились о защите данных, но недостаточно хорошо защитили ключи шифрования. Была смоделирована атака, когда либо администрация хостинга хочет расшифровать файлы, либо контроль над инфраструктурой захватили третьи лица. Теоретически можно представить и атаку типа Man-in-the-Middle. Ключевой ошибкой алгоритма шифрования стало то, что серверное и клиентское ПО Mega принимает данные, зашифрованные неверным ключом, и пытается работать с ними вместо того, чтобы просто отбросить.
В результате появляется возможность провести атаку типа
Оптимизация процесса атаки (в том числе с использованием криптографического
Дальше исследователям удалось доказать, что приватный ключ действительно позволяет сгенерировать производные ключи, которые используются для шифрования файлов, и расшифровать приватную информацию. Можно также «подкинуть» компрометирующие документы в аккаунт пользователя так, что они будут неотличимы от тех, что он загрузил сам. После получения копии исследования представители Mega начали работать над патчем, который также выпустили на прошлой неделе, сопроводив его достаточно подробным
Все закончилось хорошо? Не совсем! Во-первых, исследователи разработали другой способ, никак не зависящий от первого, реализующий так называемую
Почему? Предположим, что все это время в компании Mega был инсайдер, который знал о данной (непростой) уязвимости и мог в течение длительного времени (512 авторизаций!) проводить атаку на конкретных пользователей, в результате чего смог реконструировать приватные ключи. Уязвимость закрыли, но ключ-то не изменился! Это значит, что злоумышленник-инсайдер по-прежнему имеет доступ ко всем существующим и новым файлам, которые скомпрометированный пользователь загружает на сервер.
Принудительно сменить ключ шифрования всем пользователям нельзя: они потеряют доступ к уже загруженным файлам. Получается, требуется масштабная операция, когда все пользователи Mega скачивают свои файлы, генерируются новые ключи, а потом файлы загружаются обратно. При максимальной утилизации всего интернет-канала Mega в 1000 гигабит в секунду на обновление 1000 петабайт файлов (уже сохраненных в Mega) уйдет полгода!
То есть эту конкретную проблему они решили, а что насчет других уязвимостей, которые могут быть найдены в будущем? Нужно реализовать абсолютно иную архитектуру, позволяющую решать проблемы «на лету», эффективно и с сохранением данных пользователям обещаний. Набор таких технологий существует и называется «аутентифицированное шифрование с присоединенными данными», или
Что еще произошло:
Издание TechCrunch
Исследователи «Лаборатории Касперского»
Еще одно исследование «Лаборатории Касперского» подробно
Выпущенный на позапрошлой неделе набор патчей для продуктов Microsoft, как выяснилось, внес ошибки в работу Windows на архитектуре ARM. Для решения проблемы был