Эта статья является кандидатом в добротные статьи

Шифрование базы данных: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 51: Строка 51:


==== Класс HOM ====
==== Класс HOM ====
Гомоморфные шифры, с английского homomorphic encryption. Этот класс состоит из шифров, которые преобразуют значения в столбцах так, чтобы операции над ними однозначно соответствовала, возможно другая, операция над шифротекстами. В архитектуре CryptDB используется криптографическая система [[Криптосистема Пэйе|Пэйэ]], которая позволяет вычислить шифротекст суммы значений, если известен шифротекст каждого из них, именно:
Гомоморфные шифры, с английского homomorphic encryption. Этот класс состоит из шифров, которые<ref>{{Книга|автор=Yi, Xun (College teacher),|isbn=978-3-319-12229-8, 3-319-12229-0|страниц=1 online resource (xii, 126 pages)|место=Cham|заглавие=Homomorphic encryption and applications|ссылка=https://www.worldcat.org/oclc/894893412|ответственный=|издание=|издательство=|год=|страницы=|часть=Chapter 2}}</ref> преобразуют значения в столбцах так, чтобы операции над ними однозначно соответствовала, возможно другая, операция над шифротекстами. В архитектуре CryptDB используется криптографическая система [[Криптосистема Пэйе|Пэйэ]], которая позволяет вычислить шифротекст суммы значений, если известен шифротекст каждого из них, именно:


<math>H_K(m_1)H_K(m_2) = H_K(m_1 + m_2)</math>
<math>H_K(m_1)H_K(m_2) = H_K(m_1 + m_2)</math>

Версия от 22:22, 18 декабря 2019

Шифрование базы данных — использование технологии шифрования для преобразования информации, хранящейся в базе данных (БД), в шифротекст, что делает её прочтение невозможным для лиц, не обладающих ключами шифрования[1].

Прозрачное шифрование базы данных

Прозрачное шифрование базы данных (англ. Transparent Database Encryption, TDE) — технология, применяемая, например, в продуктах Microsoft и Oracle для шифрования и дешифрования ввода-вывода файлов БД. Данные шифруются перед записью на диск и дешифруются во время чтения в память, что решает проблему защиты «неактивных» данных, но не обеспечивает сохранность информации при передаче по каналам связи или во время использования. Преимуществом TDE является то, что шифрование и дешифрование выполняются прозрачно для приложений, то есть их модификация не требуется[2][3][4].

Реализация Microsoft

TDE применяется для файлов БД и журнала транзакций на уровне страниц. Страницы шифруются с помощью специального симметричного ключа шифрования базы данных (англ. Database Encryption Key), защищённого сертификатом, который хранится в БД master и шифруется её главным ключом, или асимметричным ключом, защищённым модулем расширенного управления ключами (англ. Extensible Key Manager, EKM). Применение TDE не увеличивает размер зашифрованной БД, а влияние на производительность незначительно[2].

Реализация Oracle

TDE применяется для файлов БД на уровне столбцов. Для таблицы, содержащей выбранные к шифрованию столбцы, создаётся симметричный ключ шифрования, защищённый главным ключом, который хранится в безопасном месте за пределами БД, называемом бумажником (англ. Wallet). Зашифрованные ключи таблиц содержатся в словаре данных (англ. Data Dictionary)[3].

Шифрование на уровне столбцов

Шифрование на уровне столбцов (англ. Column-Level Encryption) в отличие от TDE, шифрующего БД полностью в реализации Microsoft и отдельные столбцы, но с одинаковым ключом для всей таблицы в реализации Oracle, этот метод позволяет шифровать отдельные столбцы с различными ключами, что обеспечивает дополнительную гибкость при защите данных. Ключи могут быть назначены пользователям и защищены паролем для предотвращения автоматической расшифровки, однако это усложняет администрирование БД. При использовании шифрования на уровне столбцов необходимо внесение изменений в клиентские приложения. Помимо этого уменьшается производительность БД[3][5].

Шифрование файловой системы

Важно отметить, что традиционные методы шифрования баз данных обычно шифруют и дешифруют содержимое БД, администрирование которой обеспечивается системой управления базами данных, работающей поверх операционной системы[6]. Это уменьшает защищённость информации, так как зашифрованная БД может быть запущена на открытой или потенциально уязвимой операционной системе. Например, Microsoft использует технологию шифрования файловой системы (англ. Encrypting File System, EFS), которая обеспечивает шифрование на уровне файлов. Каждый объект шифруется с помощью уникального ключа шифрования файлов (англ. File Encryption Key), защищённого сертификатом пользователя. Этот сертификат может быть составным, что даёт возможность получить доступ к файлу больше чем одному пользователю. Из-за расширения сферы шифрования, использование EFS может снизить производительность и усложнить администрирование, так как системному администратору требуется доступ к операционной системе для использования EFS[5][7].

Симметричное и асимметричное шифрование базы данных

Существует два основных способа шифрования информации: симметричный и асимметричный. Главным принципом в них является то, что передатчик и приёмник заранее знают алгоритм шифрования и ключ к сообщению, без знания которых информация представляет собой бессмысленный набор символов[7][8].

Симметричное шифрование

Симметричное шифрование (шифрование с закрытым ключом) является самым старым и известным методом. В контексте баз данных он включает в себя закрытый ключ, применяемый для шифрования и дешифрования информации, хранящейся в БД и вызываемой из неё. Этот ключ изменяет данные таким образом, что их прочтение без расшифровки становится невозможным. Явным недостатком этого метода является то, что может произойти утечка конфиденциальной информации, если ключ окажется у лиц, которые не должны иметь доступ к данным. Однако использование всего лишь одного ключа в процессе шифрования даёт преимущество в виде скорости и простоты применения данной технологии[7][8][9].

Асимметричное шифрование

Проблема попадания секретного ключа в чужие руки при передаче по каналам связи, которой обладает шифрование с закрытым ключом, решена в асимметричном шифровании (шифровании с открытым ключом), в котором есть два связанных между собой ключа — это пара ключей. Открытый ключ известен всем и может передаваться по незащищённому каналу связи. В то время как второй, закрытый ключ, хранится в секрете и является уникальным для каждого пользователя. Открытый ключ используется для шифрования данных, а закрытый — для расшифрования. Асимметричное шифрование является более безопасным, по сравнению с симметричным, но в то же время оно существенно медленнее[7][8]. Из прочих недостатков можно отметить то, что детерминированное асимметричное шифрование, которое используется в базах данных, в которых шифрование происходит на уровне приложений (см. CryptDB), уязвимо к атаке на основе подобранного открытого текста.[источник не указан 1612 дней]

Хеширование

Хеширование (англ. hashing) используется в качестве метода защиты информации. Алгоритм хеширования генерирует строку определённой длины, называемую хешем, на основе введённых данных или сообщения. Хеширование отличается от шифрования тем, что алгоритм необратим, то есть не существует преобразования, позволяющего получить сообщение из его хеша[10][11].

Шифрование на уровне приложений

В шифровании на уровне приложений процесс шифрования осуществляется приложением, которое создаёт или изменяет данные, то есть он происходит перед записью в базу данных. Этот подход является более гибким, так как приложению известны роли или права доступа пользователей, а также информация о том, какие данные являются конфиденциальными[7][12].

Преимущества

Одним из главных преимуществ шифрования, встроенного в приложение, является то, что нет необходимости использовать дополнительное решение для защиты данных при передаче по каналам связи, так как они отправляются уже зашифрованными. Ещё один плюс такого метода — это то, что кража конфиденциальной информации становится сложнее, так как злоумышленник должен иметь доступ к приложению для того, чтобы расшифровать данные, хранящиеся в БД[7][12].

Недостатки

Для реализации шифрования на уровне приложений необходимо внесение изменений не только в само приложение, но и в базу данных. Также могут возникнуть проблемы с производительностью БД, у которой, например, пропадает возможность индексирования и поиска. Ещё одним минусом является управление ключами в системе с таким шифрованием. Так как несколько приложений могут использовать БД, то ключи хранятся во многих местах, поэтому неправильное управление ими может привести к краже информации или невозможности её использования. В добавление к этому, если возникает необходимость изменения ключа, то для начала потребуется расшифровать все данные со старым ключом, и потом снова зашифровать, используя новый ключ[7][12].

CryptDB

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

Является одним из примеров шифрования на уровне приложения. В архитектуре можно выделить[13]: прокси-сервер, к которому есть защищённый доступ с приложения, сервер с SQL базой данных, в которой зашифрованы столбцы. Запросы с прокси-сервера идут на этот сервер с базой данных (англ. DBMS server) по каналу, который предполагается незащищённым. Отличие от вышеупомянутого шифрования на уровне столбцов состоит в следующем: сервер не расшифровывает данные столбцов, более того, прокси-сервер не посылает ключи или иную информацию, позволяющую серверу расшифровать столбцы. С точки зрения сервера с базой данных запросы с прокси-сервера выглядят, как обыкновенные команды работы с SQL базой данных. Поэтому на сервере может стоять готовое решение, например, в виде использованной авторами CryptDB MySQL. Поскольку DBMS сервер может выполнять функции только над зашифрованными данными, то задачей прокси-сервера является трансляция запросов пользователя в эквивалентные запросы и операции, действующие над шифрованными данными. Эта задача решается при помощи различных классов шифров. Некоторые из них перечислены далее.[источник не указан 1612 дней]

Пример действия DET шифра на столбец имен.

Класс DET

Детерминированные шифры, с английского deterministic encryption. Его составляют все шифры, обладающие следующим свойством: при одинаковом ключе одинаковые открытые тексты шифруются также одинаково.

Следовательно, если все данные в столбце зашифрованы таким шифром, то операции над столбцом открытых данных, требующие сравнения двух значений, эквивалентны таковым над столбцом зашифрованных данных. Например, если пользователь хочет посчитать количество строк с значением в столбце Имя, равным «Алиса», то прокси-сервер заменяет в запросе пользователя только параметры, но не операторы. «Алиса» — на соответствующий шифротекст. Этот класс шифров позволяет выполнять запросы, содержащие среди прочих: COUNT, GROUP BY, DISTINCT и SELECT с предикатом равенства или неравенства. Примером детерминированного шифра может служить блочный шифр с фиксированным вектором начального состояния (англ. IV, initialization vector)[14].

Класс HOM

Гомоморфные шифры, с английского homomorphic encryption. Этот класс состоит из шифров, которые[15] преобразуют значения в столбцах так, чтобы операции над ними однозначно соответствовала, возможно другая, операция над шифротекстами. В архитектуре CryptDB используется криптографическая система Пэйэ, которая позволяет вычислить шифротекст суммы значений, если известен шифротекст каждого из них, именно:

Стало быть, если столбец зашифрован гомоморфным шифрованием, сумму выбранных значений, можно посчитать, если расшифровать произведение соответствующих шифротекстов. Поэтому, прокси-сервер транслирует запрос SUM пользователя в произведение (выражается через EXP, LOG), а потом, имея ответ от сервера базы данных, расшифровывает его и выдаёт пользователю.

Пример действия OPE шифра на столбец возрастов

Класс OPE

Сохраняющие упорядоченность шифры, с английского order preserving encryption. Шифр из этого класса действует на данные в столбце так, что .

Поэтому, если столбец зашифрован шифром класса OPE, то обращение ORDER BY выполненное над открытым текстом столбца эквивалентно такому над зашифрованным столбцом. Для таких данных доступны операции над диапазоном значений, BETWEEN, a также MIN, MAX, RANK. Примером такого шифрования может быть отображение целого числа p в число с, которое есть сумма p псевдослучайных положительных чисел[16].

Устойчивость к криптоатакам

К недостаткам выше описанных классов шифров и архитектуры в частности следует отнести уязвимость перед некоторыми известными типами атак. В работе[17] рассматривается атакующая сторона, которой доступны шифротексты и некоторое априорное знание о распределение открытого текста. Предположение имеет соответствие в реальной жизни, например, в базе данных может содержаться информация медицинского характера, а атакующая сторона, помимо непосредственно доступа к зашифрованной базе данных, может владеть информацией из переписи населения или из аналогичных учреждений. То есть, знать распределение, например, групп крови. Основываясь на предположении, что именно доступно атакующей стороне, авторы предлагают несколько методов восстановления данных в столбцах, зашифрованных, как DET шифром, так OPE шифром. Поскольку детерминированный шифр одному и тому же значению в столбце сопоставит одинаковый шифротекст, то частотное распределение данных в зашифрованном столбце будет совпадать с таковым открытого текста. Классический частотный анализ имеет сложность , где N — размер всего множества открытых текстов. Значит, такая атака эффективна, если N невелико. К столбцу с шифрованием, сохраняющим упорядоченность, применима атака, похожая на частотный анализ, но вместо конкретных значений частот сопоставляются ранг в множестве шифротекстов столбца и ранг слова в множестве открытых текстов. Атака, как отмечают авторы, наиболее эффективна для столбцов, где множество возможных открытых текстов представлено наиболее полно[18].

Также разработаны метод атаки на основе эмпирической функции распределения (англ. ECDF), более подходящий для атаки на столбец с неравномерно представленными шифротекстами, и метод, который рассматривает информацию из нескольких столбцов, а также их корреляцию[19]. Помимо этого в[20] представлена схема частичного восстановления данных в OPE столбце, при наличии информации единственно о всех запросах. Алгоритм, в отличие от предыдущих предложенных, масштабируется, поскольку в оценке его сложности не входит N[18].

Кроме того, ни DET, ни OPE шифры, как и все детерминированные шифры, не обладают свойством неразличимости. Действительно, чтобы понять, является ли данный шифротекст зашифрованным сообщением или атакующей стороне достаточно запросить шифротексты для обоих сообщений — что реализуемо, если используется открытое шифрование, и сравнить с данным шифротекстом H[18].

См. также

Примечания

  1. Luc Bouganim, Yanli GUO. Database Encryption. www-smis.inria.fr.
  2. 1 2 Прозрачное шифрование данных (TDE). microsoft.com.
  3. 1 2 3 Transparent Data Encryption. oracle.com.
  4. Postgres and Transparent Data Encryption (TDE). enterprisedb.com.
  5. 1 2 Database Encryption in SQL Server 2008 Enterprise Edition. microsoft.com.
  6. Дейт, 2005.
  7. 1 2 3 4 5 6 7 Baccam, Tanya Transparent Data Encryption: New Technologies and Best Practices for Database Encryption. Sans.org. SANS Institute (апрель 2010). Дата обращения: 25 октября 2015.
  8. 1 2 3 Description of Symmetric and Asymmetric Encryption. microsoft.com.
  9. Коробейников, 2004, с. 56.
  10. Passwords Technical Overview. microsoft.com.
  11. Security Glossary — «H». microsoft.com.
  12. 1 2 3 Шифрование на уровне приложений. thales-esecurity.com.
  13. Raluca Ada Popa, Catherine M. S. Redfield, Nickolai Zeldovich, Hari Balakrishnan. CryptDB: processing queries on an encrypted database (англ.) // Communications of the ACM. — 2012-09-01. — Vol. 55, iss. 9. — P. 103. — doi:10.1145/2330667.2330691.
  14. Linda A. Bertram, Gunther van Dooble. Nomenclatura - Encyclopedia of modern Cryptography and Internet Security: From AutoCrypt and Exponential Encryption to Zero-Knowledge-Proof Keys. — ISBN 3749461686.
  15. Yi, Xun (College teacher),. Chapter 2 // Homomorphic encryption and applications. — Cham. — 1 online resource (xii, 126 pages) с. — ISBN 978-3-319-12229-8, 3-319-12229-0.
  16. Rakesh Agrawal, Jerry Kiernan, Ramakrishnan Srikant, Yirong Xu. Order preserving encryption for numeric data (англ.) // Proceedings of the 2004 ACM SIGMOD international conference on Management of data - SIGMOD '04. — Paris, France: ACM Press, 2004. — P. 563. — ISBN 978-1-58113-859-7. — doi:10.1145/1007568.1007632.
  17. Muhammad Naveed, Seny Kamara, Charles V. Wright. Inference Attacks on Property-Preserving Encrypted Databases (англ.) // Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security - CCS '15. — Denver, Colorado, USA: ACM Press, 2015. — P. 644—655. — ISBN 978-1-4503-3832-5. — doi:10.1145/2810103.2813651.
  18. 1 2 3 Attack of the week: searchable encryption and the ever-expanding leakage function.
  19. F. Betül Durak, Thomas M. DuBuisson, David Cash. What Else is Revealed by Order-Revealing Encryption? (англ.) // Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security - CCS'16. — Vienna, Austria: ACM Press, 2016. — P. 1155—1166. — ISBN 978-1-4503-4139-4. — doi:10.1145/2976749.2978379.
  20. Paul Grubbs, Marie-Sarah Lacharite, Brice Minaud, Kenneth G. Paterson. Learning to Reconstruct: Statistical Learning Theory and Encrypted Database Attacks // 2019 IEEE Symposium on Security and Privacy (SP). — San Francisco, CA, USA: IEEE, 2019-05. — С. 1067—1083. — ISBN 978-1-5386-6660-9. — doi:10.1109/SP.2019.00030.

Литература

Ссылки

  • Robert Morris, Ken Thompson. Password security: a case history (англ.) // Communications of the ACM : журнал. — ACM New York, NY, USA, 1979. — Vol. 22, no. 11. — P. 594—597.