Борьба с утечками с помощью шифрования баз данных

Внедрение «шифрования с возможностью запросов» в системе управления базами данных MongoDB, и как оно может улучшить защиту данных.

Как работает технология Queryable Encryption в MongoDB и чем она поможет в деле защиты от утечек.

Утечки информации в последнее время происходят с завидной регулярностью. Злоумышленники тем или иным способом добираются до баз данных (БД) и получают доступ к хранящимся внутри записям. Для сохранности баз логичнее всего было бы использовать шифрование, но это далеко не всегда возможно. Ведь чем чаще сервису нужно обращаться к базе данных, тем медленнее она будет отвечать. А если она еще и зашифрована, то время отклика может увеличиться в несколько раз. И это далеко не все — в научном исследовании 2009 года собраны основные проблемы шифрования БД. Но в начале июня разработчики одной из систем управления базами данных (СУБД), MongoDB, объявили о прорыве: в очередном релизе СУБД они внедрили поддержку Queryable Encryption. Это способ хранения данных в зашифрованном виде, к которым тем не менее возможны запросы, а информация предоставляется с адекватной скоростью.

Соответствие системы шифрования реальным задачам

«Мозгом» новой технологии MongoDB стал Сени Камара, профессор Брауновского университета, в послужном списке которого много работ, где он пытается применить надежные системы шифрования для практических приложений. Его стартап был приобретен разработчиком MongoDB, и занимался он в основном поиском надежного способа защиты баз данных без ущерба для производительности.

Дело в том, что у разработчиков и операторов БД в приоритете всегда была скорость и надежность, но не защита. У специалистов по шифрованию, наоборот, в приоритете абсолютная невозможность расшифровать данные, а удобство не столь важно. Из-за этого ранее получались странные решения, в которых данные либо шифруются быстро, но ненадежно, либо надежно, но крайне медленно. Сени Камара соединяет научный подход с нуждами реального заказчика, то есть надежное шифрование — с высокой скоростью запросов. Вот так это выглядит по версии MongoDB:

Система обращения к зашифрованной базе данных.

Система обращения к зашифрованной базе данных. Источник.

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

Светлое будущее (но это не точно)

Вы спросите: а если это такая серьезная проблема, неужели раньше не было решений по шифрованию баз данных? Конечно же, другие решения есть, и существуют они уже давно. Но делались они скорее с оглядкой на производительность и шифрование применялось часто просто для галочки — чтобы показать, например, регуляторам, что какая-то защита есть. По факту существующие решения имеют ряд уязвимостей. В частности, было обнаружено, что в случае кражи всей базы данных, зашифрованной с использованием метода CryptDB, возможно расшифровать большую часть информации. То есть доступ к данным в результате взлома сервера немного затрудняется, не более того. Это решение, как и некоторые другие, никогда не проходило формальный аудит, определяющий стойкость примененных средств шифрования.

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

Функциональность Queryable Encryption в MongoDB сделана на стыке науки и бизнеса, и это, судя по всему, происходит впервые. Новая схема шифрования должна пройти формальный аудит безопасности, чтобы точно доказать защищенность данных (предварительные отзывы — исключительно позитивные). Должны дать свой отзыв и реальные пользователи: не мешает ли шифрование достигать необходимого уровня производительности. Желательно, чтобы появилась конкурирующая система защиты данных на схожих принципах — это всегда идет на пользу прогрессу. И тогда…

А что произойдет? В компании, уделяющей внимание защите клиентских данных, и так зашифровано почти все — бэкапы, электронная почта, коммуникации между устройствами и корпоративной сетью. И базы данных, возможно, остаются последним оплотом, где важная информация лежит «открытым текстом». Да, такие БД максимально защищены от проникновения извне, но они все равно уязвимы. Мы можем надеяться, что успешное внедрение систем управления защифрованными базами данных максимально затруднит кражу пользовательской информации «оптом». Да, можно будет атаковать индивидуальных пользователей. Или «собирать» открытые данные, которые по определению доступны из Сети. Но вот так, чтобы украсть сто миллионов учеток?! Прогресс в области шифрования баз данных может сделать такие инциденты крайне маловероятными.

Советы