id: Гость   вход   регистрация
текущее время 14:05 19/04/2024
создать
просмотр
редакции
ссылки

27.03 // Mylar: обмен данными и запуск приложений через недоверяемый сервер


Использование веб-приложений требует доверия к серверу, который хранит данные, а также загружаемый в браузер код самого приложения. Могут ли такие приложения быть безопасными, если сервер полностью недоверяем и подконтролен противнику?


Группа исследователей Raluca Ada Popa, Emily Stark, Jonas Helfer, Steven Valdez, Nickolai Zeldovich, M. Frans Kaashoek, Hari Balakrishnan предложила проект Mylar, призванный решить проблему доверия к серверу достаточно эффективным способом.


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


Во-перых, злонамеренный сервер мог встроить враждебный код, который мог похитить ключ для расшифрования данных на стороне клиента. Предотвратить это непросто из-за достаточно сложной структуры веб-страниц: HTML, CSS, Javascript, картинки и другие элементы, которые могли быть использованы для доставки и выполнения вредоносного кода, часто генерируются динамически, что делает сложной проверку доверия к их целостности. Попытки ограничить сложность веб-страниц не позволяют создавать эффективные веб-приложения, такие как чаты, форумы, фотохостинги.


Во-вторых, было неясно, как можно эффективно организовать совместное использование данных между пользователями. Конечно, каждый документ мог бы быть зашифрован различными ключами, которые бы распространялись среди пользователей, но для распространения этих ключей нельзя было бы использовать сам сервер, т.к. он не является доверяемым.


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


Проект Mylar позволяет эффективно использовать JavaScript для повышения безопасности работы с данными: весь JS-код исполняется только на стороне клиента под контролем целостности специального плагина, а через сеть передаются не HTML-файлы, а данные для их формирования в шифрованном виде.


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


Поиск в многоключевом шифровании (Multi-Key Searchable Encryption) позволяет пользователю отправить серверу запрос, содержащий шифрованное слово. Сервер не может определить, что это за слово, но выдаёт пользователю корректный список шифрованных документов, содержащих данное слово. При этом такая схема работает эффективнее гомоморфного шифрования и авторы приводят доказательства её достаточности и безопасности для заявленной задачи.


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


Практическое исследование велось на разработке приложения для обработки данных исследовательского центра гинекологических патологий хирургического госпиталя Массачусетского Технологического Института, связанного с медицинской школой Гарварда. Кроме этого, авторам удалось перенести в среду Mylar как готовые приложения, так и разработать ряд своих собственных: kChat, веб-форум, календарь, фотохостинг. Для адаптации готового веб-приложения в нём достаточно изменить около 36 строк кода, путём встраивания кодовых API для связи с Mylar. Данные на стороне сервера хранятся и обрабатываются в шифрованном виде, также как и передаются в каналах связи.


Принципиальная схема Mylar (39 Кб)


Разделение данных между пользователями основано на многоключевом шифровании (используется криптография на билинейных отображениях эллиптических кривых и иерархия ключей).


Разделение доступа по ключам в чатах Mylar (13 Кб)


Любая попытка подмены данных недоверенной стороной приводит к индикации смены адреса сертификата.


Проверка подмены данных (17 Кб)


Криптографическая нагрузка на сервер невелика: по сравнению с обычным приложением невелики как задержки в работе, так и снижение максимального количества одновременно обслуживаемых сервером пользователей.


Потребление ресурсов по сравнению с обычным сервером (40 Кб)


Создание проекта Mylar проведено на гранты национального фонда научных исследований, программы по созданию защищённого хостинга агентства перспективных оборонных исследований, при содействии компаний Quanta и Google на базе проекта Meteor Development Group.


Проект будет представлен на NSDI'14 (Одиннадцатом симпозиуме по разработке и реализации сетевых систем USENIX), 2-4 апреля 2014 года в Сиэттле (США).


Источник: Группа безопасности компьютерных систем, кафедра компьютерных наук и искусственного интеллекта Массачусетского Технологического Института