Прозрачное шифрование данных в СУБД Oracle
Секция: Технические науки
XLV Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Прозрачное шифрование данных в СУБД Oracle
Введение
Одним из наиболее распространенных способов обеспечения конфиденциальности данных является шифрование. Долгое время шифрование не использовалось, так как по зашифрованным данным невозможно строить индексы, т. е. организовывать эффективный поиск и процедуры шифрования являются достаточно ресурсоемкими. Таким образом, шифрование стало доступным в последнее время с появлением мощных процессоров.
Основная часть
Самым простым вариантом для пользователя является «прозрачное шифрование данных». Эта технология базируется на управлении ключами системными средствами. Ключевая информация, используемая для шифрования данных, хранится в специальном файле «бумажнике». Пользователь может определить место хранения бумажника, задав значение параметра ENCRYPTION_WALLET_LOCATION в файле SQLNET.ORA. В Oracle предусмотрено значение по умолчанию параметра место хранения бумажника, равное $ORACLE_BASE/admin/$ORACLE_SID/wallet. Для использования этого места хранения бумажника соответствующий каталог должен быть создан вручную. Также ключевую информацию можно хранить на внешнем носителе.
Следующий этап – генерация ключевой информации. Пусть пользователь отображен на предопределенные роли CONNECT и RESOURCE и ему дополнительно предоставлена привилегия ALTER SYSTEM. После выполнения пользователем команды: ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY «walletpsw» на устройстве появляется файл «ewallet» с ключевой информацией.
Бумажник создан, для доступа к нему определен пароль «walletpsw», и можно приступить к прозрачному шифрованию файлов. Для демонстрации возможностей, реализованных в СУБД Oracle, создадим и заполним таблицу. Изменим статус столбца, объявив его зашифрованным, для этого необходимо наличие открытого бумажника. Для того чтобы открыть бумажник, необходимо предъявить файл и указать правильный пароль. Бумажник открывается только один раз любым из пользователей, имеющих право на выполнение операции. Естественно, что после выполнения операций с закрытыми столбцами бумажник рекомендуется закрыть (ALTER SYSTEM). Попытка другим пользователем прочитать информацию из закрытого столбца, а также попытка открыть бумажник, предъявляя неправильный пароль, отвергается системой.
Отложенное шифрование данных таблицы – это когда данные сначала загружаются в таблицу, а затем преобразуются в шифрованный формат с использованием операции ALTER TABLE, что не является хорошей практикой. Сканирование файла табличной области, содержащей таблицу, показывает, что исходные данные в незашифрованном виде не стираются после завершения процесса прозрачного шифрования. Если исходные данные - символьные строки, то, анализируя дамп табличной области, злоумышленник может получить существенную информацию о содержании зашифрованных данных. Перечень зашифрованных столбцов и исходный тип соответствующих данных может определить любой пользователь, имеющий возможность выполнять выборку из представления словаря данных DBA_ENCRYPTED_COLUMNS.
Попытка предъявить бумажник, отличный от того, с использованием которого был зашифрован столбец, отвергается системой. Попытка создать «логическую копию» бумажника не приводит к возможности получить доступ к данным.
Важно отметить, что после того, как законный пользователь открыл бумажник, содержимое таблицы становится доступным всем пользователям, имеющим право доступа к данным таблицы. Отмеченный факт существенно ограничивает область применения технологии прозрачного шифрования для систем с высокими требованиями к информационной безопасности. Кроме того, могут возникнуть проблемы с доступностью данных таблицы, если злоумышленник или неквалифицированный пользователь выполнит команду, для которой не требуется знание пароля, закрытия бумажника ALTER SYSTEM SET ENCRYPTION WALLET CLOSE.
Технология прозрачного шифрования поддерживает возможность изменения ключевой информации. Необходимость в изменении ключа и нового шифрования данных возникает при предположительной или достоверно известной компрометации ключа. Если перешифровать данные, то изменение бумажника не происходит, и данные читаются с использование старого бумажника.
Рассмотрим данный вид шифрования на примере:
1. Определим место хранения бумажника на устройстве C:/ (рисунок 1)
Рисунок 1. Расположение бумажника
2. Создадим бумажник с возможностью доступа к нему по паролю walletpsw:
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "walletpsw"; Убедимся, что бумажник создан (на устройстве появится новый файл с именем «ewallet) (рисунок 2):
Рисунок 2. Созданный бумажник
3. Создадим таблицу с именем ТТТ:
CREATE TABLE TTT(
num1 NUMBER,
num2 NUMBER,
str VARCHAR2(10)
);
Заполним ее:
INSERT INTO TTT VALUES(1,2,'USER');
INSERT INTO TTT VALUES(3,4,'Alex');
INSERT INTO TTT VALUES(5,6,'Lara');
Затем изменим спецификацию одного столбца на шифрованный:
ALTER TABLE TTT MODIFY(str ENCRYPT);
4. Откроем бумажник и проверим возможность чтения открытой информации (вывод таблицы ТТТ рисунок 3):
SELECT * FROM TTT;
Рисунок 3. Вывод таблицы ТТТ
Закроем бумажник командой:
ALTER SYSTEM SET ENCRYPTION WALLET CLOSE AUTHENTICATED BY "walletpsw";
Убедимся, что зашифрованная информация не доступна (см.рисунок 4):
SELECT * FROM TTT;
Рисунок 4. Вывод сообщения об ошибке ORA-28365
Попытаемся открыть бумажник с неверным паролем:
ALTER SYSTEM SET ENCRYPTION WALLET OPEN AUTHENTICATED BY "walletpsw123";
Рисунок 5 демонстрирует нам то, что нельзя открыть бумажник с неверным паролем.
Рисунок 5. Вывод сообщения об ошибке ORA-28353
5. Попытаемся создать «логическую копию» бумажника.
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "walletpsw123";
Рисунок 6 демонстрирует, что данное действие не приводит к возможности получить доступ к данным:
Рисунок 6. Вывод сообщения об ошибке отказа в доступе
Заключение
Технология «Прозрачного шифрования» позволяет нам безотлагательно обеспечить шифрование данных без какого-либо кодирования и сложности управления ключами, что позволяет в кратчайшие сроки обеспечить безопасность баз данных в соответствии с нормативными документами.