CryptDB

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 00:44, 28 мая 2018.
CryptDB
CryptDB.PNG
Выпущена: 27 November 2013 года; 6 years ago (2013-11-27)
Написана на: C++
Операционная система: Linux
Веб-сайт css.csail.mit.edu/cryptdb/

CryptDB - проект исследователей из Массачусетского технологического института, в рамках которого предпринята попытка решения проблемы безопасного хранения данных в БД, обслуживаемых в облачных сервисах и других неподконтрольных системах.

Особенности

При использовании CryptDB, в процессе выполнения SQL-запросов все действия производятся только с зашифрованными данными. Подход, с помощью которого производятся эти операции называется полным гоморфным шифрованием. Он состоит в том, что для обеспечения сохранения конфиденциальности информации используется многоуровневая система шифрования. При этом разные типы данных размещаются на разных вложенных криптографических уровнях. Для каждого из уровней используется свой метод гоморфного шифрования. Данные при этом непременно искажаются, но сохраняется возможность выполнения определённых математических операций, которые дадут аналогичные результаты, что и операции над исходными данными (decrypt(crypt(A) + crypt(B)) = A + B).

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

Ограничения

Поддерживаемые операции и схемы шифрования

В связи с производимыми с данными манипуляциями накладываются некоторые ограничения на возможность выполнения вычислений внутри запроса[Источник 1]:

  • невозможны операции сравнения для вычисляемых значений
  • невозможна операция вычисления квадратного корня
  • расшифровка верхних слоёв выдаёт потенциальному злоумышленнику некоторые атрибуты записей БД

Однако при публикации научной работы разработчиками была опубликована информация о том, что при тестовом использовании CryptDB на двух тестовых приложениях покрытие необходимых операций с БД составило 99,5%.

Производительность

Сравнение скорости CryptDB и MySQL

В отличие от других подобных проектов, разработчикам CryptDB удалось обеспечить минимальную потерю в производительности: по сравнению с обычным MySQL использование CryptDB уменьшает скорость выполнения операций на 15-26%. При работе phpBB скорость выполнения операций замедлилась на 14.5%, при выполнении тестового набора TPC-C скорость замедлилось на 26%. Размер хранимых на диске данных при этом вырос примерно на 20%.

Установка

Системные требования

Для корректной работы CryptDB необходима операционная система Ubuntu Linux LTS 12.04.x 64bit.

Ручная сборка[Источник 2]

Перед установкой обновим пакеты apt-get:

sudo apt-get update

Установим все необходимые зависимости:

sudo apt-get install automake bison bzr cmake flex g++ git gtk-doc-tools libaio-dev libbsd-dev libevent-dev libglib2.0-dev libgmp-dev liblua5.1-0-dev libmysqlclient-dev libncurses5-dev libntl-dev libssl-dev

Создадим директорию и загрузим программное обеспечение:

mkdir $HOME/cryptdb-inst
cd $HOME/cryptdb-inst
git clone -b public git://g.csail.mit.edu/cryptdb
wget http://es.csail.mit.edu/mysql-5.5.14.tar.gz
bzr branch lp:mysql-proxy

Соберём mysql-proxy:

cd mysql-proxy
sh ./autogen.sh
./configure --enable-maintainer-mode --with-lua=lua5.1
make
sudo make install

Соберём CryptDB для MySQL:

tar zxf mysql-5.5.14.tar.gz
cp -R .../cryptdb/parser/mysql_mods/* mysql-5.5.14/
rm mysql-5.5.14/sql/sql_yacc.{cc,h}
cd mysql-5.5.14
mkdir build
cd build
cmake -DWITH_EMBEDDED_SERVER=ON ..
make
make install

Настроим конфигурацию CryptDB:

cd $HOME/cryptdb-inst/cryptdb
cp conf/config.mk.sample conf/config.mk
sed -i'' -e"1s%/home/osboxes/build%$HOME/cryptdb-inst%" conf/config.mk

Соберем CryptDB:

make
sudo make install

Автоматическая сборка[Источник 3]

Перед установкой обновим пакеты apt-get

sudo apt-get update

Установим Ruby для выполнения скрипта установки:

sudo apt-get install git ruby

Загрузим исходные коды из репозитория:

git clone -b public git://g.csail.mit.edu/cryptdb

Запустим скрипт установки:

cd cryptdb
sudo ./scripts/install.rb .

Во время работы скрипта необходимо ввести пароль letmein для пользователя root базы данных (данный пароль встроен в исходные коды скрипта установки и CryptDB).

После установки

По завершению процесса установки необходимо добавить путь к CryptDB в переменные среды:

pwd
export EDBDIR=/full/path/to/cryptdb/

Пример полной установки на видео:

Использование

CryptDB работает в режиме прокси сервера между приложением и базой данных.

Для запуска необходимо выполнить следующие команды:

$EDBDIR/bins/proxy-bin/bin/mysql-proxy                               \
	--plugins=proxy --event-threads=4                                \
	--proxy-lua-script=$EDBDIR/mysqlproxy/wrapper.lua                \
	--proxy-address=127.0.0.1:3307                                   \
	--proxy-backend-addresses=localhost:3306

Далее в другом окне терминала подключаемся к прокси:

mysql -u root -pletmein -h 127.0.0.1 -P 3307

Последующее взаимодействие с базой данных осуществляется в том же окне.

Видео пример использования CryptDB:

Вывод

CryptDB решает сразу несколько проблем утечки данных из БД:

Во-первых, решение защищает от пассивных атак на сервера баз данных.

Во-вторых, защищает от произвольных атак.

Так-же CryptDB обеспечивает полную конфиденциальность для большинства запросов.

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

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

Источники

  1. OpenNews : CryptDB - проект по обеспечению надежного шифрования данных в СУБД. // OppenNews URL: https://opennet.ru/opennews/art.shtml?num=32610 (дата обращения: 27.05.2018).
  2. Research Diary: How-to-Build-CryptDB // Research Diary URL:https://research-diary-for-cryptdb.blogspot.ru/2012/09/how-to-build-cryptdb.html (дата обращения: 27.05.2018).
  3. #CryptDB : HOWTO Compile on Ubuntu Linux // whitehatty. URL: https://whitehatty.com/2012/09/30/cryptdb-howto-compile-on-ubuntu-linux-12-04/ (дата обращения: 27.05.2018).

Ссылки/Литература

  1. Репозиторий GitHub разработчика CryptDB // GitHub CryptDB: сайт. URL: https://github.com/CryptDB/cryptdb/blob/master/README.md (дата обращения 27.05.2018).
  2. Официальный сайт CryptDB // CryptDB: сайт. URL: https://css.csail.mit.edu/cryptdb/ (дата обращения 27.05.2018).