Какой рекомендуемый способ шифрования в Oracle?

#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 и ваших различных вариантов хранения ключей (в вашей ОС, в базе данных и т. Д.)