Шифрование базы данныхШифрование базы данных — использование технологии шифрования для преобразования информации, хранящейся в базе данных (БД), в шифротекст, что делает её прочтение невозможным для лиц, не обладающих ключами шифрования[1]. Основные подходы можно классифицировать по тому, на каком уровне происходит шифрование[1][2]:
Шифрование на уровне хранилищаТакже называемое «прозрачным» (англ. Transparent Database Encryption, TDE). Данная технология, применяется, например, в продуктах Microsoft и Oracle для шифрования и дешифрования ввода-вывода файлов БД. Данные шифруются перед записью на диск и дешифруются во время чтения в память, что решает проблему защиты «неактивных» данных, но не обеспечивает сохранность информации при передаче по каналам связи или во время использования. Преимуществом TDE является то, что шифрование и дешифрование выполняются прозрачно для приложений, то есть их модификация не требуется[3][4][5]. Реализация MicrosoftTDE применяется для файлов БД и журнала транзакций на уровне страниц. Страницы шифруются с помощью специального симметричного ключа шифрования базы данных (англ. Database Encryption Key), защищённого сертификатом, который хранится в БД master и шифруется её главным ключом, или асимметричным ключом, защищённым модулем расширенного управления ключами (англ. Extensible Key Manager, EKM). Применение TDE не увеличивает размер зашифрованной БД, а влияние на производительность незначительно[3]. Реализация OracleTDE применяется для файлов БД на уровне столбцов. Для таблицы, содержащей выбранные к шифрованию столбцы, создаётся симметричный ключ шифрования, защищённый главным ключом, который хранится в безопасном месте за пределами БД, называемом бумажником (англ. Wallet). Зашифрованные ключи таблиц содержатся в словаре данных (англ. Data Dictionary)[4]. Шифрование файловой системыВажно отметить, что традиционные методы шифрования баз данных обычно шифруют и дешифруют содержимое БД, администрирование которой обеспечивается системой управления базами данных, работающей поверх операционной системы[6]. Это уменьшает защищённость информации, так как зашифрованная БД может быть запущена на открытой или потенциально уязвимой операционной системе. Например, Microsoft использует технологию шифрования файловой системы (англ. Encrypting File System, EFS), которая обеспечивает шифрование на уровне файлов. Каждый объект шифруется с помощью уникального ключа шифрования файлов (англ. File Encryption Key), защищённого сертификатом пользователя. Этот сертификат может быть составным, что даёт возможность получить доступ к файлу больше чем одному пользователю. Из-за расширения сферы шифрования, использование EFS может снизить производительность и усложнить администрирование, так как системному администратору требуется доступ к операционной системе для использования EFS[7][8]. Шифрование на уровне базы данныхОдним из примеров шифрования на уровне базы данных является шифрование на уровне столбцов (англ. Column-Level Encryption), которое записывает в базу данных уже зашифрованные данные, а саму базу данных — без дальнейшего шифрования — в хранилище. Особенностью шифрования на уровне столбцов является использование единого ключа при обработке данных одного столбца. Ключи могут быть назначены пользователям и защищены паролем для предотвращения автоматической расшифровки, однако это усложняет администрирование БД. При использовании шифрования на уровне столбцов необходимо внесение изменений в клиентские приложения. Помимо этого уменьшается производительность БД[4][7]. Шифрование на уровне приложенийВ шифровании на уровне приложений процесс шифрования осуществляется приложением, которое создаёт или изменяет данные, то есть он происходит перед записью в базу данных. Этот подход является более гибким, так как приложению известны роли или права доступа пользователей, а также информация о том, какие данные являются конфиденциальными[8][9]. ПреимуществаОдним из главных преимуществ шифрования, встроенного в приложение, является то, что нет необходимости использовать дополнительное решение для защиты данных при передаче по каналам связи, так как они отправляются уже зашифрованными. Ещё один плюс такого метода — это то, что кража конфиденциальной информации становится сложнее, так как злоумышленник должен иметь доступ к приложению для того, чтобы расшифровать данные, хранящиеся в БД[8][9]. НедостаткиДля реализации шифрования на уровне приложений необходимо внесение изменений не только в само приложение, но и в базу данных. Также могут возникнуть проблемы с производительностью БД, у которой, например, пропадает возможность индексирования и поиска. Ещё одним минусом является управление ключами в системе с таким шифрованием. Так как несколько приложений могут использовать БД, то ключи хранятся во многих местах, поэтому неправильное управление ими может привести к краже информации или невозможности её использования. В добавление к этому, если возникает необходимость изменения ключа, то для начала потребуется расшифровать все данные со старым ключом, и потом снова зашифровать, используя новый ключ[8][9]. CryptDB
Класс DETДетерминированные шифры, с английского deterministic encryption. Его составляют все шифры, обладающие следующим свойством: при одинаковом ключе одинаковые открытые тексты шифруются также одинаково.
Следовательно, если все данные в столбце зашифрованы таким шифром, то операции над столбцом открытых данных, требующие сравнения двух значений, эквивалентны таковым над столбцом зашифрованных данных. Например, если пользователь хочет посчитать количество строк с значением в столбце Имя, равным «Алиса», то прокси-сервер заменяет в запросе пользователя только параметры, но не операторы. «Алиса» — на соответствующий шифротекст. Этот класс шифров позволяет выполнять запросы, содержащие среди прочих: COUNT, GROUP BY, DISTINCT и SELECT с предикатом равенства или неравенства. Примером детерминированного шифра может служить блочный шифр с фиксированным вектором начального состояния (англ. IV, initialization vector)[11]. Класс HOMГомоморфные шифры, с английского homomorphic encryption. Этот класс состоит из шифров, которые[12] преобразуют значения в столбцах так, чтобы операции над ними однозначно соответствовала, возможно другая, операция над шифротекстами. В архитектуре CryptDB используется криптографическая система Пэйе, которая позволяет вычислить шифротекст суммы значений, если известен шифротекст каждого из них, именно:
Стало быть, если столбец зашифрован гомоморфным шифрованием, сумму выбранных значений, можно посчитать, если расшифровать произведение соответствующих шифротекстов. Поэтому, прокси-сервер транслирует запрос SUM пользователя в произведение (выражается через EXP, LOG), а потом, имея ответ от сервера базы данных, расшифровывает его и выдаёт пользователю. Класс OPEСохраняющие упорядоченность шифры, с английского order preserving encryption. Шифр из этого класса действует на данные в столбце так, что . Поэтому, если столбец зашифрован шифром класса OPE, то обращение ORDER BY выполненное над открытым текстом столбца эквивалентно такому над зашифрованным столбцом. Для таких данных доступны операции над диапазоном значений, BETWEEN, a также MIN, MAX, RANK. Примером такого шифрования может быть отображение целого числа p в число с, которое есть сумма p псевдослучайных положительных чисел[13].
Устойчивость к криптоатакамК недостаткам выше описанных классов шифров и архитектуры в частности следует отнести уязвимость для некоторых известных типов атак. В работе Naveed, 2015 рассматривается атакующая сторона, которой доступны шифротексты и некоторое априорное знание о распределение открытого текста. Предположение имеет соответствие в реальной жизни, например, в базе данных может содержаться информация медицинского характера, а атакующая сторона, помимо непосредственно доступа к зашифрованной базе данных, может владеть информацией из переписи населения или из аналогичных учреждений. То есть, знать распределение, например, групп крови. Основываясь на предположении, что именно доступно атакующей стороне, авторы предлагают несколько методов восстановления данных в столбцах, зашифрованных, как DET шифром, так OPE шифром. Поскольку детерминированный шифр одному и тому же значению в столбце сопоставит одинаковый шифротекст, то частотное распределение данных в зашифрованном столбце будет совпадать с таковым открытого текста. Классический частотный анализ имеет сложность , где N — размер всего множества открытых текстов. Значит, такая атака эффективна, если N невелико. К столбцу с шифрованием, сохраняющим упорядоченность, применима атака, похожая на частотный анализ, но вместо конкретных значений частот сопоставляются ранг в множестве шифротекстов столбца и ранг слова в множестве открытых текстов. Атака, как отмечается, наиболее эффективна для столбцов, где множество возможных открытых текстов представлено наиболее полно[14]. Также разработаны метод атаки на основе эмпирической функции распределения (англ. ECDF), более подходящий для атаки на столбец с неравномерно представленными шифротекстами, и метод, который рассматривает информацию из нескольких столбцов, а также их корреляцию[15]. Помимо этого в работе Minaud, 2019 представлена схема частичного восстановления данных в OPE столбце, при наличии информации единственно о всех запросах. Алгоритм, в отличие от предыдущих предложенных, масштабируется, поскольку в оценке его сложности не входит N[14]. Кроме того, ни DET, ни OPE шифры, как и все детерминированные шифры, не обладают свойством неразличимости. Действительно, чтобы понять, является ли данный шифротекст зашифрованным сообщением или атакующей стороне достаточно запросить шифротексты для обоих сообщений — что реализуемо, если используется открытое шифрование, и сравнить с данным шифротекстом H[14]. Симметричное и асимметричное шифрование базы данныхСуществует два основных способа шифрования информации: симметричный и асимметричный. Главным принципом в них является то, что передатчик и приёмник заранее знают алгоритм шифрования и ключ к сообщению, без знания которых информация представляет собой бессмысленный набор символов[8][16]. Симметричное шифрованиеСимметричное шифрование (шифрование с закрытым ключом) является самым старым и известным методом. В контексте баз данных он включает в себя закрытый ключ, применяемый для шифрования и дешифрования информации, хранящейся в БД и вызываемой из неё. Этот ключ изменяет данные таким образом, что их прочтение без расшифровки становится невозможным. Явным недостатком этого метода является то, что может произойти утечка конфиденциальной информации, если ключ окажется у лиц, которые не должны иметь доступ к данным. Однако использование всего лишь одного ключа в процессе шифрования даёт преимущество в виде скорости и простоты применения данной технологии[8][16][17]. Асимметричное шифрованиеПроблема попадания секретного ключа в чужие руки при передаче по каналам связи, которой обладает шифрование с закрытым ключом, решена в асимметричном шифровании (шифровании с открытым ключом), в котором есть два связанных между собой ключа — это пара ключей. Открытый ключ известен всем и может передаваться по незащищённому каналу связи. В то время как второй, закрытый ключ, хранится в секрете и является уникальным для каждого пользователя. Открытый ключ используется для шифрования данных, а закрытый — для расшифрования. Асимметричное шифрование является более безопасным, по сравнению с симметричным, но в то же время оно существенно медленнее[8][16]. Из прочих недостатков можно отметить то, что детерминированное асимметричное шифрование, которое используется в базах данных, в которых шифрование происходит на уровне приложений (см. CryptDB), уязвимо для атаки на основе подобранного открытого текста[18]. См. такжеПримечания
Литература
Ссылки
|