#database #oracle #security #cryptography #utl-file
#База данных #Oracle #Безопасность #криптография #utl-файл
Вопрос:
Мне нужна помощь от экспертов Oracle / Security.
Я собираюсь создать функции для шифрования / дешифрования в нашей базе данных Oracle. Я намерен использовать dbms_crypto
with AES256
. Я понимаю, что я должен сохранить файл ключа в O / S и прочитать его с помощью utl_file
.
Это хорошая идея? Есть ли какие-либо проблемы с этим подходом? Например. Могут ли возникнуть проблемы с utl_file, если файл ключа одновременно считывается 10 вызывающими функцию? Что-нибудь еще рекомендуется вместо этого?
Я уверен, что это очень распространенное явление. Кто-нибудь знает, где я могу найти хороший образец, который делает это?
Поскольку это связано с безопасностью, я бы предпочел следовать некоторым стандартам, которым следуют другие.
Ответ №1:
Если в вашей версии Oracle Database Enterprise установлена Oracle Advanced Security, у вас уже есть прозрачное шифрование данных (TDE) данных, хранящихся в базе данных.Взгляните:
http://download.oracle.com/docs/cd/B19306_01/network.102/b14268/asotrans.htm
Вы также можете проверить эту ссылку:
http://www.oracle-base.com/articles/10g/TransparentDataEncryption_10gR2.php
Подведение итогов последней страницы:
-
Настройка: создание файла базы данных и пользователя.
CONN sys / password КАК SYSDBA
СОЗДАЙТЕ ФАЙЛ ДАННЫХ tde_test В ТАБЛИЧНОМ ПРОСТРАНСТВЕ ‘/u01/oradata/DB10G/ tde_test.dbf’ РАЗМЕРОМ 128 КБ, КОТОРЫЙ АВТОМАТИЧЕСКИ РАСШИРЯЕТСЯ НА СЛЕДУЮЩИЕ 64 КБ;
СОЗДАЙТЕ ПОЛЬЗОВАТЕЛЬСКИЙ тест, ИДЕНТИФИЦИРУЕМЫЙ ТАБЛИЧНЫМ ПРОСТРАНСТВОМ tde_test ПО УМОЛЧАНИЮ ДЛЯ теста; ИЗМЕНИТЕ НЕОГРАНИЧЕННУЮ КВОТУ ПОЛЬЗОВАТЕЛЬСКОГО теста ДЛЯ tde_test; ПРЕДОСТАВЬТЕ ПОДКЛЮЧЕНИЕ К тесту; ПРЕДОСТАВЬТЕ СОЗДАТЬ ТАБЛИЦУ ДЛЯ тестирования;
-
Зашифрованные данные: как создать зашифрованный столбец.Вы должны создать кошелек для хранения ключа шифрования.Добавьте следующую запись в файл sqlnet.ora на сервере и убедитесь, что указанный каталог был создан.
ENCRYPTION_WALLET_LOCATION= (ИСТОЧНИК=(МЕТОД = ФАЙЛ)(METHOD_DATA= (КАТАЛОГ =/u01/app/oracle/admin/DB10G/encryption_wallet/)))
Вы должны создать и открыть кошелек:
CONN sys/password AS SYSDBA
ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY "myPassword";
Затем вы можете создавать свои таблицы с зашифрованными или нет нужными столбцами:
CREATE TABLE tde_test (
id NUMBER(10),
data VARCHAR2(50) ENCRYPT
)
TABLESPACE tde_test;
Я надеюсь, что это поможет вам.
Комментарии:
1. 1 Спасибо. Это была полезная информация, однако мне нужна пара функций шифрования / дешифрования. Я должен иметь возможность шифровать / расшифровывать на лету. Данные не обязательно находятся в таблице.
2. Пожалуйста 😉 … ммм, а как насчет DBMS_OBFUSCATION_TOOLKIT? Он содержит функции для шифрования / дешифрования данных с использованием либо стандарта шифрования данных (DES), либо алгоритмов Triple DES.
3. Насколько я понимаю, рекомендуется использовать DBMS_CRYPTO. DBMS_OBFUSCATION_TOOLKIT предназначен для старых баз данных. Кроме того, мне нужно защитить ключ, сохранив его в O / S.
4. @Zesty, да, ты прав. В этом URL download.oracle.com/docs/cd/B19306_01/network.102/b14266 / … вы можете найти несколько примеров использования DBMS_CRYPTO и ваших различных вариантов хранения ключей (в вашей ОС, в базе данных и т. Д.)