Открыт код шифрованной СУБД ZeroDB
8 декабря 2015 года
Опубликованы исходные тексты СУБД ZeroDB, предоставляющей средства для end-to-end шифрования хранимых данных. При использовании ZeroDB данные шифруются на стороне клиента и не могут быть раскрыты в случае компрометации сервера, что даёт возможность запускать серверы ZeroDB даже в не заслуживающих доверия окружениях. Код системы написан на языке Python и опубликован под лицензией AGPLv3 ( клиент, сервер). В ближайшее время также планируется опубликовать реализацию клиента ZeroDB на языке JavaScript.
ZeroDB может быть использован в облачных системах, на которых на одном физическом сервере функционирует группа различных виртуальных гостевых систем. В случае нарушения изоляции из-за эксплуатации новых уязвимостей, в результате деятельности спецслужб или вследствие диверсии сотрудников оператора облачной инфраструктуры данные в ZeroDB останутся защищены и недоступны для расшифровки, так как ключ для шифрования хранится на стороне клиента и не передаётся на сервер. Для администраторов сервера содержимое СУБД ZeroDB является черным ящиком, доступ к которому имеется только у клиента.
Особенностью ZeroDB является то, что выборка, в том числе операции поиска и сортировки, выполняется над зашифрованными данными. При том, что логика формирования БД реализуется на стороне клиента и сервер не имеет сведений о структуре и порядке размещения данных. При выполнении запросов к СУБД end-to-end шифрование не требует загрузки всех данных на сторону клиента, не требует использования перешифрующих прокси и не приводит к провалам в производительности из-за применения ресурсоёмких методов шифрования по открытым ключам.
При выполнении запроса клиент взаимодействует с сервером через серию обращений к индексу. Индекс хранится на сервере в зашифрованном виде в формате B-Tree. Клиент имеет возможность обходить узлы индекса, получая только требуемые для выполнения запроса зашифрованные записи. На стороне клиента поддерживается настраиваемый кэш, хранящий наиболее часто используемые части структур данных и позволяющий значительно ускорить выполнение запросов даже при небольшом размере такого кэша (около мегабайта).
Для доступа к данным ZeroDB предоставляет объектно-ориентированный интерфейс на основе ZODB (Zope Object Database), позволяющий сохранять Python-объекты. Запросы также могут формироваться в формате JSON. Из операций над данными поддерживаются Contains, Eq, NotEq, Gt, Lt, Ge, Le, DoesNotContain, Any, NotAny, All, InRange и NotInRange. Система демонстрирует достаточно неплохую производительность, например, операция полнотекстового поиска над зашифрованной базой, содержащией 250-мегабайтный архив списка рассылки разработчиков ядра Linux, занимает 0.5 сек. Время сохранения данных в БД изменяется логарифмически и для вышеуказанного архива запрос на добавление занимает примерно 0.5 сек.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.