Шифрование данных с явным заданием ключа в СУБД Oracle
Секция: Технические науки
XLVII Студенческая международная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Шифрование данных с явным заданием ключа в СУБД Oracle
Введение
Традиционным способом обеспечения конфиденциальности данных является их шифрование. В течение длительного времени оно мало применялось.
Почему шифрование данных не применялось?
• Сложно организовывать эффективный поиск.
• Процедуры шифрования являются достаточно ресурсоемкими.
Основная причина – сложность поиска (по зашифрованным данным невозможно строить индексы, т. е. организовывать эффективный поиск). Вторая проблема состояла в том, что процедуры шифрования являются достаточно ресурсоемкими. Поэтому шифрование «налету» стало возможным только в последние годы, когда мощность процессоров достигла определенного уровня.
Использование технологии шифрования данных с явным заданием ключа предполагает наличие процедуры управления ключами. Администратор безопасности должен определить технологию генерации и распределения ключей, процедуры распределения и отзыва ключей, процедуры управления резервными копиями ключей. Современные средства криптографии обладают высокой стойкостью, и потеря ключа в большинстве случаев означает потерю данных.
Шифрование в СУБД Oracle
СУБД Oracle, так же как и другие промышленные системы, построена по принципу суперпользователя, который всегда способен прочитать все данные любого пользователя. Суперпользователем в Oracle является SYS. У него есть привилегия «SELECT ANY TABLE», а значит он может прочитать данные всех таблиц в БД. У него есть привилегия «ALTER USER», а значит он может временно подменить любому пользователю пароль, войти в систему под чужим именем и работать неотличимо от оригинала, так что никакой аудит не обнаружит несанкционированный доступ. Тем самым сотрудник, которому предоставлено право работать под именем SYS, должен быть крайне доверенным лицом в организации, где используется БД под Oracle.
Возникает вопрос, можно ли снизить риск утечки собственных данных через суперпользователя?
Ответ лежит вовне Oracle. Если перед помещением данных в БД их зашифровать, суперпользователь, хотя и прочтет, что хранится в БД, но ничего не поймет. Сделать это можно в клиентской программе, однако для сложного приложения организационно удобнее шифровать централизованнно, на сервере.
Для использования методов шифрования и работы с зашифрованными данными в СУБД Oracle существуют два пакета:
• DBMS_OBFUSCATION_TOOLKIT
• DBMS_CRYPTO
Начиная с версии 8.1.6 с Oracle поставляется пакет для шифрования и расшифровки методом DES под названием «DBMS_OBFUSCATION_TOOLKIT».
В данной статье все внимание уделяется второму пакету – «DBMS_CRYPTO». В версии 10 в состав системных пакетов включен (в перспективе - на замену DBMS_OBFUSCATION_TOOLKIT) более функциональный пакет DBMS_CRYPTO, позволяющий шифровать данные других и другими алгоритмами (не только DES, 3DES, но еще и AES, и RC4, и 3DES_2KEY плюс алгоритмы хеширования).
Средства шифрования.
Процедуры шифрования и дешифрования реализованы средствами встроенного пакета DBMS_CRYPTO. Для шифрования данных используется процедура ENCRYPT, для дешифрования – DECRYPT. Конкретный алгоритм шифрования и особенности технологии шифрования указываются параметром процедуры (рис.2). Особенность реализации процедур состоит в том, что тип данных для ключа – RAW, а для преобразуемой строки RAW, CLOB или BLOB.
Тип данных RAW предназначены для хранения данных, которые не подлежат интерпретации средствами Oracle (т. е. не требуют преобразования при переносе из одной системы в другую). Этот тип данных используется для двоичных данных и байтовых строк. Тип данных RAW предназначен для хранения данных переменной длины и аналогичен символьному типу данных VARCHAR2. Когда Oracle автоматически преобразует данные типа RAW или LONG RAW в данные типа CHAR и обратно, двоичные данные представляются в шестнадцатеричном виде, где один шестнадцатеричный символ соответствует четырем последовательным битам данных типа RAW.
11001011 → СВ
Типы данных CLOB позволяет хранить в базе данных до четырех гигабайтов символьных данных. Объекты типа CLOB содержат данные в кодировке базы данных. Если кодировка базы данных содержит символы переменной длины, значение объекта типа CLOB хранится в базе данных с помощью двухбайтной кодировки Unicode с фиксированной длиной символов. Oracle переводит хранимые данные из кодировки Unicode в кодировку, запрашиваемую клиентом или сервером. Эта кодировка может иметь как фиксированную, так и переменную длину. Если в столбец типа CLOB вставляются данные в кодах переменной длины, Oracle преобразует их в Unicode прежде, чем сохранить в базе данных.
BLOB - как столбец типа VARCHAR BINARY. Если длина значения превосходит максимально допустимую длину столбца, то это значение соответствующим образом усекается
В процедурах шифрования и дешифрования могут использоваться криптографические алгоритмы блочного шифрования DES, 3DES, AES и алгоритм потокового шифрования RC4. Алгоритмы блочного шифрования могут использоваться в 4 режимах: ЕСВ, СВС, CFB, OFB.
Режимы шифрования.
· режим электронной кодовой книги (ЕСВ — Electronic Code Book, рис. а);
· режим сцепления блоков (СВС — Cipher Block Chaining, рис. б);
· режим обратной связи по шифртексту (CFB — Cipher Feed Back, рис. в);
· режим обратной связи по выходу (OFB – Output Feed Back, рис. г).
Заключение.
Использование шифрования с явным заданием ключа подразумевает наличие процедуры управления этими ключами. Администратор безопасности БД должен выбрать способ генерации и распределения ключей, их отзыва, выбрать процедуры управления резервными копиями. Отсутствие проверенных технологий или некомпетентность администратора могут привести к очень негативным последствиям.