Криптохостинг Mega открылся с феерическим успехом: за первые сутки было зарегистрировано более миллиона пользователей и полностью забиты каналы передачи данных к дата-центрам, которые Mega использует для хостинга.
Хотя пользователи в восторге от сервиса, некоторые эксперты весьма критически оценивают техническую платформу Mega, в том числе систему шифрования прямо в браузере через Javascript.
Например, вот что говорит Надим Кобейсси (Nadim Kobeissi), 22-летний криптограф, автор известной программы Cryptocat для защищённых от прослушивания OTR-чатов: «Сайт симпатичный, но если говорить о криптографии, похоже, у них нет опыта. Если честно, у меня чувство, что этот код я сам написал в 2011 году, будучи пьяным».
Надим Кобейсси критикует авторов Mega за то, что они реализовали шифрование файлов прямо в браузере, на основе 2048-битного ключа, который браузер только что получил от сервера. Это принципиально небезопасная схема, тем более что некоторые серверы Mega находятся в США. Фактически, в такой схеме пользователь ничего не контролирует: он не знает, какой ключ шифрования пришлёт сервер, каким образом зашифрован файл и зашифрован ли он вообще. Серверы могут отключить шифрование незаметно для пользователя или контролировать раздаваемые ключи. В общем, здесь всё основано на доверии пользователя к серверу Mega.
Относительно «кода, который я написал пьяным», молодой криптолог Надим Кобейсси знает, о чём говорит. В 2011 году именно по такому же принципу шифрования в браузере работала его собственная программа Cryptocat. После множественной критики со стороны независимых экспертов, Кобейсси отказался от такого подхода в пользу более безопасного способа с установкой расширения к браузеру.
Другие криптографы тоже говорят, что в случае шифрования должен быть некий доверенный объект на стороне пользователя, которым и нужно подписывать шифр. Если это делает Javascript-библиотека в браузере, полученная с сервера Mega, то здесь нет фундамента для доверия. Выглядит словно некая надуманная схема, которую реализовали только для того, чтобы владельцы сервера Mega избежали юридической ответственности за размещаемый пользователями контент, но совсем не для безопасности пользователей.
На сайте Mega найдено также несколько других уязвимостей и просто странностей. Например, странно выглядит сама генерация ключа, которая основана на пароле пользователя (кстати, по этой причине пароли на сайте Mega пока нельзя менять), а также на случайных битах от движения мыши и нажатий на клавиши. Используемый для ГСЧ код можно посмотреть здесь: mouse.js.
Ещё несколько найденных багов перечислены ниже.
- Один из серверов (eu.static.mega.co.nz) использует слабый 1024-битный ключ RSA для генерации сертификатов SSL. В схеме шифрования внутри браузера слабость сертификата SSL можно использовать для перехвата 2048-битного ключа пользователя.
- Программа MegaCracker подбирает пароли от сайта Mega по хэшу, присланному в ссылке подтверждения регистрации по электронной почте (https://mega.co.nz/#confirm). Таблицу с предвычисленными хэшами автор выложил на том же сайте Mega.
- Несколько XSS-уязвимостей, позволяющих перехватить пользовательские cookies и получить доступ к его аккаунту.
- Странная фраза в условиях обслуживания, что с хостинга будут удаляться дубликаты файлов.
Остаётся надеяться, что разработчики Mega исправят выявленные баги и улучшат криптографическую защиту сервиса. Тогда эти издержки можно будет списать на недостатки бета-версии, а не на пренебрежение к пользователям, когда важна только собственная безопасность.