Сегментирование (базы данных)
- 1 year ago
- 0
- 0
Шифрование базы данных — использование технологии шифрования для преобразования информации, хранящейся в базе данных (БД), в шифротекст , что делает её прочтение невозможным для лиц, не обладающих ключами шифрования .
Основные подходы можно классифицировать по тому, на каком уровне происходит шифрование :
Также называемое «прозрачным» ( англ. Transparent Database Encryption , TDE). Данная технология, применяется, например, в продуктах Microsoft и Oracle для шифрования и дешифрования ввода-вывода файлов БД . Данные шифруются перед записью на диск и дешифруются во время чтения в память, что решает проблему защиты «неактивных» данных, но не обеспечивает сохранность информации при передаче по каналам связи или во время использования. Преимуществом TDE является то, что шифрование и дешифрование выполняются прозрачно для приложений, то есть их модификация не требуется .
TDE применяется для файлов БД и журнала транзакций на уровне страниц. Страницы шифруются с помощью специального симметричного ключа шифрования базы данных ( англ. Database Encryption Key ), защищённого сертификатом, который хранится в БД master и шифруется её главным ключом, или асимметричным ключом, защищённым модулем расширенного управления ключами ( англ. Extensible Key Manager , EKM). Применение TDE не увеличивает размер зашифрованной БД, а влияние на производительность незначительно .
TDE применяется для файлов БД на уровне столбцов. Для таблицы, содержащей выбранные к шифрованию столбцы, создаётся симметричный ключ шифрования, защищённый главным ключом, который хранится в безопасном месте за пределами БД, называемом бумажником ( англ. Wallet ). Зашифрованные ключи таблиц содержатся в словаре данных ( англ. Data Dictionary ) .
Важно отметить, что традиционные методы шифрования баз данных обычно шифруют и дешифруют содержимое БД, администрирование которой обеспечивается системой управления базами данных , работающей поверх операционной системы . Это уменьшает защищённость информации, так как зашифрованная БД может быть запущена на открытой или потенциально уязвимой операционной системе . Например, Microsoft использует технологию шифрования файловой системы ( англ. Encrypting File System , EFS), которая обеспечивает шифрование на уровне файлов. Каждый объект шифруется с помощью уникального ключа шифрования файлов ( англ. File Encryption Key ), защищённого сертификатом пользователя. Этот сертификат может быть составным, что даёт возможность получить доступ к файлу больше чем одному пользователю. Из-за расширения сферы шифрования, использование EFS может снизить производительность и усложнить администрирование, так как системному администратору требуется доступ к операционной системе для использования EFS .
Одним из примеров шифрования на уровне базы данных является шифрование на уровне столбцов ( англ. Column-Level Encryption ), которое записывает в базу данных уже зашифрованные данные, а саму базу данных — без дальнейшего шифрования — в хранилище. Особенностью шифрования на уровне столбцов является использование единого ключа при обработке данных одного столбца. Ключи могут быть назначены пользователям и защищены паролем для предотвращения автоматической расшифровки, однако это усложняет администрирование БД. При использовании шифрования на уровне столбцов необходимо внесение изменений в клиентские приложения. Помимо этого уменьшается производительность БД .
В шифровании на уровне приложений процесс шифрования осуществляется приложением, которое создаёт или изменяет данные, то есть он происходит перед записью в базу данных. Этот подход является более гибким, так как приложению известны роли или права доступа пользователей, а также информация о том, какие данные являются конфиденциальными .
Одним из главных преимуществ шифрования, встроенного в приложение, является то, что нет необходимости использовать дополнительное решение для защиты данных при передаче по каналам связи, так как они отправляются уже зашифрованными. Ещё один плюс такого метода — это то, что кража конфиденциальной информации становится сложнее, так как злоумышленник должен иметь доступ к приложению для того, чтобы расшифровать данные, хранящиеся в БД .
Для реализации шифрования на уровне приложений необходимо внесение изменений не только в само приложение, но и в базу данных. Также могут возникнуть проблемы с производительностью БД, у которой, например, пропадает возможность индексирования и поиска. Ещё одним минусом является управление ключами в системе с таким шифрованием. Так как несколько приложений могут использовать БД, то ключи хранятся во многих местах, поэтому неправильное управление ими может привести к краже информации или невозможности её использования. В добавление к этому, если возникает необходимость изменения ключа, то для начала потребуется расшифровать все данные со старым ключом, и потом снова зашифровать, используя новый ключ .
Является одним из примеров шифрования на уровне приложения. В архитектуре можно выделить
:
прокси-сервер
, к которому есть защищённый доступ с приложения, сервер с
SQL
базой данных, в которой зашифрованы столбцы. Запросы с прокси-сервера идут на этот сервер с базой данных (англ. DBMS server) по каналу, который предполагается незащищённым. Отличие от вышеупомянутого шифрования на уровне столбцов состоит в следующем: сервер не расшифровывает данные столбцов, более того, прокси-сервер не посылает ключи или иную информацию, позволяющую серверу расшифровать столбцы. С точки зрения сервера с базой данных запросы с прокси-сервера выглядят, как обыкновенные команды работы с SQL базой данных. Поэтому на сервере может стоять готовое решение, например, в виде использованной авторами CryptDB
MySQL
. Поскольку DBMS сервер может выполнять функции только над зашифрованными данными, то задачей прокси-сервера является трансляция запросов пользователя в эквивалентные запросы и операции, действующие над шифрованными данными. Эта задача решается при помощи различных классов шифров, общая черта которых — сохранение некоторого свойства открытых текстов. Некоторые из них перечислены далее.
Детерминированные шифры, с английского deterministic encryption. Его составляют все шифры, обладающие следующим свойством: при одинаковом ключе одинаковые открытые тексты шифруются также одинаково.
Следовательно, если все данные в столбце зашифрованы таким шифром, то операции над столбцом открытых данных, требующие сравнения двух значений, эквивалентны таковым над столбцом зашифрованных данных. Например, если пользователь хочет посчитать количество строк с значением в столбце Имя, равным «Алиса», то прокси-сервер заменяет в запросе пользователя только параметры, но не операторы. «Алиса» — на соответствующий шифротекст. Этот класс шифров позволяет выполнять запросы, содержащие среди прочих: COUNT, GROUP BY, DISTINCT и SELECT с предикатом равенства или неравенства. Примером детерминированного шифра может служить блочный шифр с фиксированным вектором начального состояния (англ. IV, initialization vector) .
Гомоморфные шифры, с английского homomorphic encryption. Этот класс состоит из шифров, которые преобразуют значения в столбцах так, чтобы операции над ними однозначно соответствовала, возможно другая, операция над шифротекстами. В архитектуре CryptDB используется криптографическая система Пэйе , которая позволяет вычислить шифротекст суммы значений, если известен шифротекст каждого из них, именно:
Стало быть, если столбец зашифрован гомоморфным шифрованием, сумму выбранных значений, можно посчитать, если расшифровать произведение соответствующих шифротекстов. Поэтому, прокси-сервер транслирует запрос SUM пользователя в произведение (выражается через EXP, LOG), а потом, имея ответ от сервера базы данных, расшифровывает его и выдаёт пользователю.
Сохраняющие упорядоченность шифры, с английского order preserving encryption. Шифр из этого класса действует на данные в столбце так, что .
Поэтому, если столбец зашифрован шифром класса OPE, то обращение ORDER BY выполненное над открытым текстом столбца эквивалентно такому над зашифрованным столбцом. Для таких данных доступны операции над диапазоном значений, BETWEEN, a также MIN, MAX, RANK. Примером такого шифрования может быть отображение целого числа p в число с, которое есть сумма p псевдослучайных положительных чисел .
К недостаткам выше описанных классов шифров и архитектуры в частности следует отнести уязвимость для некоторых известных типов атак. В работе рассматривается атакующая сторона, которой доступны шифротексты и некоторое априорное знание о распределение открытого текста. Предположение имеет соответствие в реальной жизни, например, в базе данных может содержаться информация медицинского характера, а атакующая сторона, помимо непосредственно доступа к зашифрованной базе данных, может владеть информацией из переписи населения или из аналогичных учреждений. То есть, знать распределение, например, групп крови. Основываясь на предположении, что именно доступно атакующей стороне, авторы предлагают несколько методов восстановления данных в столбцах, зашифрованных, как DET шифром, так OPE шифром. Поскольку детерминированный шифр одному и тому же значению в столбце сопоставит одинаковый шифротекст, то частотное распределение данных в зашифрованном столбце будет совпадать с таковым открытого текста. Классический частотный анализ имеет сложность , где N — размер всего множества открытых текстов. Значит, такая атака эффективна, если N невелико. К столбцу с шифрованием, сохраняющим упорядоченность, применима атака, похожая на частотный анализ, но вместо конкретных значений частот сопоставляются ранг в множестве шифротекстов столбца и ранг слова в множестве открытых текстов. Атака, как отмечается, наиболее эффективна для столбцов, где множество возможных открытых текстов представлено наиболее полно .
Также разработаны метод атаки на основе эмпирической функции распределения (англ. ECDF), более подходящий для атаки на столбец с неравномерно представленными шифротекстами, и метод, который рассматривает информацию из нескольких столбцов, а также их корреляцию . Помимо этого в работе представлена схема частичного восстановления данных в OPE столбце, при наличии информации единственно о всех запросах. Алгоритм, в отличие от предыдущих предложенных, масштабируется, поскольку в оценке его сложности не входит N .
Кроме того, ни DET, ни OPE шифры, как и все детерминированные шифры, не обладают свойством неразличимости. Действительно, чтобы понять, является ли данный шифротекст зашифрованным сообщением или атакующей стороне достаточно запросить шифротексты для обоих сообщений — что реализуемо, если используется открытое шифрование, и сравнить с данным шифротекстом H .
Существует два основных способа шифрования информации: симметричный и асимметричный. Главным принципом в них является то, что передатчик и приёмник заранее знают алгоритм шифрования и ключ к сообщению, без знания которых информация представляет собой бессмысленный набор символов .
Симметричное шифрование (шифрование с закрытым ключом) является самым старым и известным методом. В контексте баз данных он включает в себя закрытый ключ, применяемый для шифрования и дешифрования информации, хранящейся в БД и вызываемой из неё. Этот ключ изменяет данные таким образом, что их прочтение без расшифровки становится невозможным. Явным недостатком этого метода является то, что может произойти утечка конфиденциальной информации, если ключ окажется у лиц, которые не должны иметь доступ к данным. Однако использование всего лишь одного ключа в процессе шифрования даёт преимущество в виде скорости и простоты применения данной технологии .
Проблема попадания секретного ключа в чужие руки при передаче по каналам связи, которой обладает шифрование с закрытым ключом, решена в асимметричном шифровании (шифровании с открытым ключом), в котором есть два связанных между собой ключа — это пара ключей. Открытый ключ известен всем и может передаваться по незащищённому каналу связи. В то время как второй, закрытый ключ, хранится в секрете и является уникальным для каждого пользователя. Открытый ключ используется для шифрования данных, а закрытый — для расшифрования. Асимметричное шифрование является более безопасным, по сравнению с симметричным, но в то же время оно существенно медленнее . Из прочих недостатков можно отметить то, что детерминированное асимметричное шифрование, которое используется в базах данных, в которых шифрование происходит на уровне приложений (см. ), уязвимо для атаки на основе подобранного открытого текста .