CryptDB: обработка информации в БД без её дешифрования

    Исследователи из МТИ представили СУБД CryptDB, которая способна эффективно обслуживать запросы к БД SQL — поиск, сортировка, математические функции и др. — без расшифровки записей базы. Хотя это не первая разработка подобного рода, но благодаря беспрецедентной производительности эксперты считают CryptDB первой, реально пригодной для практического использования. Предполагается, что подобные разработки могут найти применения в системах облачного хранения данных, которые особенно нуждаются в криптографической защите.


    Архитектура CryptDB

    Подход, реализованный в CryptDB, называется полным гомоморфным шифрованием. Первую полностью гомоморфную модель для СУБД предложил в 2009 году криптограф из IBM Research Крейг Джентри (Craig Gentry), она является гомоморфной для операций умножения и сложения одновременно, что даёт возможность выразить любую математическую функцию. Правда, была одна проблема: скорость операций по сравнению с обычной СУБД возрастала примерно в триллион раз.

    С другой стороны, CryptDB уменьшает скорость большинства операций в базе данных БД SQL всего на 15-26% по сравнению с MySQL.



    Исследователи МТИ поставили производительность в качестве главного приоритета, поэтому в своём проекте они применили разные алгоритмы, каждый из которых лучше всего справляется с определённой задачей. Например, для операций умножения зашифрованных данных используется RSA, а для сложения — Paillier. Для операций сравнения и сортировки используются другие схемы.

    Собственно, самой инновационной частью CryptDB является именно способность переключаться на лету между различными криптографическими схемами, в зависимости от типа выполняемой операции. Это реализовано за счёт «луковичного» многоступенчатого шифрования, когда данные зашифрованы в несколько слоёв разными алгоритмами. У каждого слоя — свой ключ и свой список поддерживаемых операций. На нижнем слое используются самые надёжные алгоритмы, а операции в верхних слоях возможны без расшифровки нижних слоёв.



    К сожалению, у CryptDB есть определённые ограничения. Например, эта система не способна вычислять квадратный корень и не поддерживает некоторые другие нужные операции с записями. Кроме того, при расшифровке верхних слоёв система выдаёт потенциальному злоумышленнику некоторые атрибуты записей БД. Но это скорее теоретические, чем практические недостатки. В опубликованной научной работе разработчики оценили систему на простых вариантах использования: БД для форума phpBB и БД для учебного веб-приложения в университете. По их оценке, в этих случаях CryptDB выполняет около 99,5% необходимых операций и не выдаёт никакой приватной информации.


    Схема передачи приватного сообщения на форуме phpBB с использованием CryptDB гарантирует, что сообщение могут увидеть только отправитель и получатель. Если потенциальный злоумышленник получит контроль над форумом, то увидит приватные сообщения лишь пользователей с открытыми сессиями.

    CryptDB: Protecting Confidentiality with Encrypted Query Processing. Raluca Ada Popa, Catherine M. S. Redfield, Nickolai Zeldovich, Hari Balakrishnan MIT CSAIL

    via Forbes
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну, и что?
    Реклама
    Комментарии 17
    • 0
      Я правильно понял основную фичу — администратор ресурса при всём желании не может получить доступ к данным, только клиенты, обладающие соответствующими ключами? Или всё же происходит полная расшифровка и в какой-то момент времени в памяти будут расшифрованные данные, а дальше дело техники?

      Просто заморозили один SaaS проект из-за персональных данных третьих лиц. Хранить в открытом виде недопустимо вообще, расшифровывать на сервере для выборки и сортировки нежелательно, выдавать таблицу клиенту, чтоб он сам расшифровывал нереально.
      • 0
        >>Это реализовано за счёт «луковичного» многоступенчатого шифрования, когда данные зашифрованы в несколько слоёв разными алгоритмами.
        >>На нижнем слое используются самые надёжные алгоритмы, а операции в верхних слоях возможны без расшифровки нижних слоёв.


        Расшифровывается только столько, сколько нужно для выполнения конкретных действий (операции проводятся над частично шифрованными данными).
        А чтобы получить исходные данные — нужно поломать все уровни шифрования.
        • 0
          На рисунках не очень понятно для JOIN или текстового поиска нужно расшифровывать или нет.
          • 0
            Судя по картинкам, для JOIN нужно выполнить три стадии декодирования.
      • +12
        … скорость операций по сравнению с обычной СУБД возрастала примерно в триллион раз.
        Может всё же падала?
        • +1
          Нет, возрастала. Но инженеры приложили неимоверные интеллектуальные усилия, и все-таки смогли побороть и эту проблему:

          sleep(42)

          :)
        • +1
          Сочуствую разработчикам, которым прийдется применять эту БД в крупном проекте. Скорость отладки упадет раза в 2, даже если написать какой-то класс для дебага.
          • 0
            Профессионализм разработчиков определит успех, сочувствовать не нужно ;-)
            • +1
              Сделают зеркало в виде обычной БД или зеркалирование открытых данных в ней же для отладки.
              • 0
                А зачем вообще что-то шифровать если рядом обычная БД MySQL или колонки с незашифрованными данными?
              • 0
                Будет отладочный режим, чтобы разработчик мог посмотреть на сырые данные. На бою зеркала не будет естественно.
            • –3
              Подход, реализованный в CryptDB, называется полным гомоморфным шифрованием. Первую полностью гомоморфную модель для СУБД предложил в 2009 году криптограф из IBM Research Крейг Джентри (Craig Gentry), она является гомоморфной для операций умножения и сложения одновременно, что даёт возможность выразить любую математическую функцию. Правда, была одна проблема: скорость операций по сравнению с обычной СУБД возрастала примерно в триллион раз.

              С другой стороны, CryptDB уменьшает скорость большинства операций в базе данных БД SQL всего на 15-26% по сравнению с MySQL.

              wtf
              • 0
                Предположим у нас есть два сервера, первый стоит у меня под боком, второй в далеком облаке какого-нибудь Микрогугла. На втором сервере работает CryptDB, к которой идут запросы с первого сервера. Позволяет CryptDB делать так, что данные на втором сервере будут всегда в зашифрованном виде, во время запросов с первого? Но при передачи зашифрованного результата на первый сервер, он сможет расшифровать их.

                Возможно такая схема работы с CryptDB?
                • 0
                  >На втором сервере работает CryptDB, к которой идут запросы с первого сервера
                  При этом запросы с первого сервера также идут в зашифрованном виде
                  • 0
                    Или для каких операций это возможно, пока пробежался по научной работе, вижу, что для like операции такое можно сделать.
                  • 0
                    Можете привести простой пример как вы сделали сравнение на гомоморфной крипте. Ведь для банальной сортировки нужно сравнивать данные. Больше меньше например.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое