Криптография в серверах баз данных

Лекция 3. Криптографические методы защиты баз данных

План:

Введение

Криптография в серверах баз данных

Введение

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

К основным средствам защиты информации относят следующие:

· парольная защита;

· защита полей и записей таблиц БД.

· установление прав доступа к объектам БД;

· шифрование данных и программ;

Защита БД производится на двух уровнях:

· на уровне пароля;

· на уровне пользователя (защита учетных записей пользователей и идентифицированных объектов).

Безопасная система авторизации и регистрации является одним из важнейших элементов при создании проекта. Один из возможных способов — это создание системы регистрации с помощью PHP и MySQL.

РhpMyAdmin — это программа написанная на PHP и предназначенная для управления сервером MySQL через всемирную сеть. phpMyAdmin поддерживает широкий набор операций над MySQL. Наиболее часто используемые операции поддерживаются с помощью пользовательского интерфейса (управление базами данных, таблицами, полями, связями, индексами, пользователями, правами, и т. д.), одновременно вы можете

Обеспечение информационной безопасности разрабатываемого проекта осуществляется на нескольких уровнях. На первом уровне защиту информации обеспечивает сама система «phpMyAdmin» начиная со входа в панель управления где панель требуется ввести логин и пароль.

Рисунок 1. Авторизация в системе «phpMyAdmin»

Следующий уровень защиты обеспечивает СУБД MySQL, разграничивая также права доступа.

Рисунок 2. Обзор учетных записей

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

Таблица 1. Криптографические функции СУБД

Функция Назначение
1 AES_ENCRYPT() Зашифрование данных алгоритмом AES.
2 AES_DECRYPT() Расшифрование данных алгоритмом AES.
3 DES_ENCRYPT() Зашифрование данных алгоритмом DES.
4 DES_DECRYPT() Расшифрование данных алгоритмом DES.
5 ENCRYPT() Зашифрование данных функцией crypt().
6 MD5() Хэширование данных алгоритмом MD5.
7 SHA1() или SHA() Хэширование данных алгоритмом SHA-1.

Функции шифрования данных алгоритмом AES используют 128-битный ключ шифрования, т. е. шифрование ключами размером 192 и 256 бит, предусмотренными стандартом AES, в MySQL не реализовано. Ключ шифрования задается явным образом как один из параметров функции. В отличие от них, функции DES_ENCRYPT() и DES_DECRYPT(), которые шифруют алгоритмом TripleDES, помимо явного задания ключа шифрования, допускают простейший вариант управления ключами в виде ключевого файла, содержащего пронумерованные значения ключей. Однако, данные функции по умолчанию выключены, для их использования необходимо включить поддержку протокола SSL в конфигурации СУБД.

Функция ENCRYPT() может быть использована только в операционных системах семейства Unix, поскольку она шифрует данные с помощью системного вызова crypt(). Что касается используемых функций хэширования, то в документации на MySQL содержится предупреждение о том, что лежащие в их основе алгоритмы взломаны (подробно об этом написано, в частности, в, поэтому использовать их следует с осторожностью. Однако, MySQL пока не предлагает более стойких функций хэширования взамен существующих. Перечисленные выше криптографические функции также весьма просты в использовании. Например, следующий запрос помещает в таблицу table значение “text”, зашифрованное на ключе “password”: INSERT INTO table VALUES (1, AES_ENCRYPT('text', 'password')); Отметим, что формат поля, в которое записывается зашифрованное значение, должен соответствовать ограничениям, накладываемым используемым криптоалгоритмом — в данном случае, оно должно быть двоичным (например, типа VARBINARY) и предполагать выравнивание в соответствии со 128-битным размером блока алгоритма AES.

Система защиты БД играет важнейшую роль в автоматизации контроля над действиями пользователей, работающими с базами данных, защите от внешних и внутренних угроз и повышении надежности функционирования баз данных.

 

Криптография в серверах баз данных

Обсуждается использование криптографических методов в серверах баз данных для аутентификации пользователей, невозможности отказа от совершенного действия (non-repudiation), шифрования пользовательских данных для защиты от несанкционированного просмотра. Обсуждаются механизмы шифрования: специальные функции шифрования, асимметричные ключи, симметричные ключи, сертификаты, прозрачное шифрование данных – TDE. Рассматривается пример использования специальных функций шифрования Transact-SQL в сервере баз данных MS SQL Server для шифрования данных при вставке строк в таблицы. Приводится технология использования TDE для обеспечения надежного сокрытия ключей шифрования на примере MS SQL Server.

Серверы баз данных являются обязательным компонентом информационных систем (ИС), так как базы данных (БД) являются информационным ядром ИС. Постановление Правительства №2280 от 30 декабря 2009г. «Об утверждении Правил проведения аттестации государственных информационных систем и негосударственных информационных систем, интегрируемых с государственными информационными системами, на соответствие их требованиям информационной безопасности», обусловлено спецификой и особой ролью компьютерных технологий в жизнеобеспечении всей инфраструктуры общества.

Согласно законодательству компьютерным базам данных предоставляется такая же правовая охрана, как и имущественным и личным неимущественным правам. Так, право на защиту нераскрытой информации от незаконного пользователя предусмотрено статьями 1017-1019 Гражданского кодекса. Уголовная же ответственность за такого рода правонарушения наступает в соответствие со статьей 184 УК.

Высокий государственный уровень мер правовой защиты информации, меры правовой защиты баз данных обусловливают и актуальность разработки современных технологий хранения и пользования информацией.

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

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

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

Криптография представляет собой лишь часть такой комплексной защиты. В многоуровневой системе безопасности – это последний внутренний уровень защиты. Она используется для аутентификации пользователей, невозможности отказа от совершенного действия (non-repudiation), шифрования пользовательских данных для защиты от несанкционированного просмотра.

Шифрование в криптографии представляет собой способ скрытия данных с помощью ключа или пароля, т.е. хранение и передачу особо важных данных в зашифрованном виде. Исходные данные невозможно получить из зашифрованных без знания соответствующего ключа или пароля для дешифрования. Могут использоваться как симметричные (одноключевые), так и асимметричные (двухключевые) криптосистемы.

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

Наиболее общий способ идентификации и аутентификации – использование имени и пароля.

Эта информация оценивается системой для определения, является ли субъект допустимым пользователем. В серверах БД пароли хранятся в зашифрованном виде. Применяется шифрование на основе алгоритма MD5, который использует необратимую хэш-функцию. Требование необратимости обязательно, иначе пароли можно будет получить, используя обратимое шифрование данных. Алгоритм MD5 является усовершенствованным алгоритмом MD4. Алгоритм используется для проверки подлинности данных, когда происходит их передача в зашифрованном виде. Следует отметить, что алгоритм MD5 уязвим к некоторым атакам, например, возможно создание двух сообщений с одинаковой хэш-суммой.

С широким распространением в современном мире электронных форм документов (в том числе и конфиденциальных) и средств их обработки особо актуальной стала проблема установления подлинности и авторства безбумажной документации. Реализация требования невозможности отказа не позволяет, кому бы то ни было отрицать, что он отправил или получил определенный файл или данные.

В конце обычного письма или документа исполнитель или ответственное лицо ставит свою подпись. В конце электронного документа ставится электронная цифровая подпись, которую получают, используя алгоритм цифровой подписи, основанный на использовании асимметричных криптоалгоритмов.

Например, в основу алгоритма цифровой подписи DSA (Digital Signature Algorithm) в стандарте DSS (Digital Signature Standard), положены асимметричные криптоалгоритмы Эль-Гамаля и RSA. При возникновении споров отказаться от подписи невозможно в силу ее неподделываемости, проверить подлинность подписи может любой абонент, знающий открытый ключ.

Что касается шифрования пользовательских данных, то процесс шифрования данных в серверах БД претерпел значительные изменения. Ранее использовалась концепция API, который позволяет обращаться к провайдерам службы шифрования – Cryptographic Service Provider (CSP), реализующим тот или иной алгоритм шифрования. Процедура шифрования была достаточно сложной. Например, в MS SQL Server (до 2005 версии) шифрование реализовывалось с помощью команд API, которые вызывались специальными командами из библиотек MSSQLCryptography.dll.

Сложность так же заключалась в объеме кода, который необходимо было прописать для подключения библиотек, обработки ошибок и включения самого шифрования. В него входило объявление библиотек, передача дескриптора, указатели начала и конца текста, размер входных данных и буфера и др. Кроме того при переполнении буфера вызывалась ошибка, которая позволяла исключить возможность извлечения секретных данных путем заполнения буфера лишней информацией.

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

Обычно сервер БД поддерживает несколько встроенных механизмов шифрования: специальные функции шифрования, асимметричные ключи, симметричные ключи, сертификаты, прозрачное шифрование данных – TDE.

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

Для их вызова удобнее всего использовать хранимые процедуры и триггеры сервера БД.

Асимметричные ключи. Асимметричный ключ состоит из закрытого ключа и соответствующего открытого ключа. Отправитель шифрует данные при помощи открытого ключа получателя, который свободно может получить любой человек или программа. Когда пользователь получает данные, он расшифровывает их при помощи своего закрытого ключа. Открытый ключ в этом случае расшифровать данные не может. На выполнение асимметричных операций шифрования и дешифрования требуется сравнительно много ресурсов, но они обеспечивают более надежную защиту, чем симметричное шифрование. Асимметричный ключ можно использовать для шифрования симметричного ключа перед его сохранением в базе данных. Использование в асимметричном шифровании пары ключей (в сравнении с симметричным шифрованием, у которого используется только один ключ) повышает сложность криптоанализа для злоумышленника. Обычно в серверах БД встроена реализация асимметричного алгоритма RSA с ключами длиной 512, 1024 и 2048 бит. Чем длиннее ключ, тем сложнее осуществить его вскрытие, но и тем дольше будут выполняться операции шифрования и дешифрования.

При использовании асимметричных криптоалгоритмов возникает проблема распространения множества открытых ключей, которая решается с помощью построения Инфраструктуры Открытых Ключей (Public Key Infrastructure – PKI), на основе базы данных цифровых сертификатов.

Симметричные ключи используются как для шифрования данных, так и для шифрования других ключей. При шифровании симметричными ключами отправитель и получатель имеют один и тот же ключ. Главное преимущество такого подхода состоит в том, что производительность шифрования и дешифрования гораздо выше, чем при использовании асимметричных ключей. Данные при использовании симметричного ключа шифруются и дешифруются быстро, и он вполне подходит для повседневной защиты конфиденциальных данных, хранящихся в базе данных. Обычно в серверах БД встроена реализация нескольких наиболее распространенных и надежных симметричных алгоритмов, как блочных, так и поточных: DES, Triple_DES, Triple_DES_3KEY, DESX, RC2, RC4, RC4_128, AES с ключами длиной 128 (Rijndael), 192 и 256 бит.

Сертификаты - это по существу асимметричные ключи, которые содержат дополнительные метаданные. Эти метаданные включают в себя такую информацию, как время окончания и центр сертификации, выдавший данный сертификат. В случае если необходимо удостовериться в том, что отправитель или получатель данных является тем за кого себя выдает, сертификаты помогают решить эту проблему. Центры сертификации создают сертификат со своей подписью, который отправляется тому пользователю, который его заказал. Когда он будет использовать этот сертификат для отправки данных, получатель сможет проверить его в центре сертификации и удостовериться в подлинности отправителя. Отличие сертификатов от ключей состоит в задании промежутка времени, в течение которых они действуют и уникальных метаданных, указывающих на владельца сертификата.

Существуют самозаверительные сертификаты. Например, в своих последних версиях MS SQL Server автоматически создает самозаверительный сертификат при своем первом запуске. Этот сертификат используется для шифрования подключения при выполнении аутентификации MS SQL Server.

TDE (Transparent Data Encryption) - прозрачное шифрование данных. Прозрачное шифрование данных (TDE) является особым случаем шифрования с использованием симметричного ключа. TDE шифрует базу данных, используя симметричный ключ, который называется ключом шифрования базы данных. Ключ шифрования базы данных защищен другими ключами или сертификатами, которые, в свою очередь, защищаются главным ключом базы данных или асимметричным ключом, хранящимся в модуле расширенного управления ключами. Когда данные записывается из оперативной памяти на диск, они шифруются. Когда данные загружаются обратно в оперативную память, они расшифровываются. Таким образом, данные на диске оказываются зашифрованными, а в оперативной памяти – нет. Основным преимуществом TDE является то, что шифрование и дешифрование выполняются абсолютно прозрачно для приложений. Шифрование и дешифрование файлов данных и журналов транзакций в операциях ввода-вывода выполняется в реальном времени.

Перечисленные методы шифрования можно применять на различных уровнях организации данных. Можно шифровать базу данных целиком, отдельные таблицы (сущности) или же применять шифрование к отдельным столбцам (атрибутам).

Правила, которыми удобно руководствоваться при использовании криптографической защиты в серверах БД:

- для получения наиболее сложной или длинной цепочки бинарного кода шифрованного текста следует использовать длинные ключи шифрования;

- использование в ассиметричном шифровании пары ключей (в сравнении с симметричным шифрованием, у которого используется только один ключ) повышает сложность криптоанализа для злоумышленника;

- блочные шифры надежнее поточных шифров;

- зашифровать можно сжатые данные, но невозможно сжать зашифрованные данные. Такая особенность шифровального процесса требует от пользователя в случае работы с большим объемом данных производить их архивацию до применения шифрования;

- ассиметричное шифрование замедляет работу системы, поэтому для шифрования большого количества данных его лучше не использовать. Для этой цели хорошо подходит симметричное шифрование;

- длинные сложные пароли надежнее, чем короткие пароли.

Рассмотрим пример использования специальных функций шифрования Transact-SQL в сервере баз данных MS SQL Server для шифрования столбцов таблицы (атрибутов сущности) при вставке новых строк в таблицу.

Согласно сформулированным выше правилам выбираем симметричное шифрование AES для шифрования самих данных. Поэтому нужно создать симметричный ключ, который будет использоваться для шифрования. Но для повышения криптостойкости шифра, зашифруем симметричный ключ ассиметричным ключом. Для этого создаем асимметричный ключ AKey1 (используем RSA_2048 и пароль '12(EVG3abc') следующей командой:

CREATE ASYMMETRIC KEY AKey1  WITH ALGORITHM =RSA_2048

 ENCRYPTION BY PASSWORD='12(EVG3abc'

Выбираем симметричный алгоритм шифрования из существующих в базе - это алгоритм Triple_DES и создаем симметричный ключ для шифрования данных, зашифрованный асимметричным ключом AKey1:

CREATE SYMMETRIC KEY SKey1 WITH ALGORITHM=TRIPLE_DES  

 ENCRYPTION BY ASYMMETRIC KEY AKey1

Теперь в базе данных имеется ключ SKey1, который можно использовать для непосредственного шифрования данных. Чтобы шифрование символьного значения атрибута Atr1 происходило автоматически при каждой вставке новой строки в таблицу TAB1, создадим триггер типа INSERT (триггер INS1):

CREATE TRIGGER INS1 ON TAB1 WITH ENCRYPTION FOR INSERT

AS  

BEGIN

-- ключ открывается

OPEN SYMMETRIC KEY SKey1

DECRYPTION BY ASYMMETRIC KEY AKey1

WITH PASSWORD = '12(EVG3abc'

DECLARE @krypt1 varbinary(MAX),

@var1 varchar(30),

@order_id numeric(6,0)

--вводимые данные идентифицируются и шифруются 

SELECT @krypt1 = ENCRYPTBYKEY(KEY_GUID (' SKey1'), Atr1),  

 @order_id = OrderID FROM inserted

SET @ var1 = CAST(@krypt1 as varchar(30))

--данные в столбце Atr1 таблицы TAB1 заменяются на полученный код

UPDATE TAB1 SET Atr1 = @var1 WHERE OrderID = @order_id

--ключ закрывается  

CLOSE SYMMETRIC KEY SKey1

END

В триггере функция ENCRYPTBYKEY шифрует вставляемое значение Atr1 и выдает результат в виде бинарного кода, который преобразуется в символьный тип и вставляется в столбец Atr1.

Временная переменная @order_id используется для идентификации вставляемой строки. Код ключа в явном виде указывается в тексте триггера, что делает процедуру уязвимой. Исключить эту уязвимость можно, зашифровав сам триггер. Функция WITH ENCRYPTION шифрует код самого триггера. Теперь код триггера будет недоступен.

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

Например, в MS SQL Server она строится следующим образом: для каждой базы данных, которая шифруется с помощью TDE, создается специальный ключ

- Database Encryption Key (DEK). Этот ключ используется для шифрования данных;

- Database Encryption Key (DEK) шифруется сертификатом, который должен быть заранее создан в БД master;

- этот сертификат шифруется главным ключом БД master;

- главный ключ БД master (Data Master Key - DMK) шифруется главным ключом службы (Service Master Key или SMK);

- главный ключ службы (SMK) шифруется с помощью DPAPI (Datа Protection API).

Такая схема позволяет MS SQL Server в любой момент времени получить доступ к ключу, которым зашифрована БД, а, следовательно, и к зашифрованным данным. Самым слабым звеном тут является главный ключ службы (SMK), который находится на вершине иерархии ключей и который защищается с помощью DPAPI. Он создается автоматически при первой необходимости, но его можно изменять, резервировать и восстанавливать. Все остальные ключи и сертификаты должны создаваться.

В других серверах БД иерархия ключей технологии прозрачного шифрования имеет некоторые отличия.

Рассмотренные встроенные криптографические средства взаимно дополняют друг друга и являются неотъемлемой частью комплексной защиты баз данных, без которых невозможно организовать надежную защиту данных.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: