:: Не фоксом единым
Oracle Шифрование
ВладимирС
Автор

Сообщений: 1693
Дата регистрации: 03.11.2005
Тут потребовали скрыть информации на уровне БД.
БД на сервере под линуксом.
Вижу 2 способа:
1. Использовать Oracle Wallet.
Но тут проблема... у меня доступ к серверу только через Putty. И вызвать owm по моему оконный интерфейс не получится, или я не до понял.

2. Использовать DBMS_CRYPTO.ENCRYPT
Но тут, где хранить key ?

Прошу помощи разобраться.
Ratings: 0 negative/0 positive
Re: Oracle Шифрование
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Скрыть от кого? Это первый и самый главный вопрос.
Кто имеет доступ к БД и серверу, какой доступ?
Wallet не более чем хранилка ключей шифрования/сертификатов. Они используются как для организации SSL (шифрование канала связи, плюс возможность аутентификации сервера и/или клиентов по их сертификатам), так и для Transparent Encryption (шифрования части содержимого файлов на дисках сервера). Первое защищает от атак перехвата траффика (снифферы), частично может защищать от атак "левый" клиент зная логин/пароль подключается к базе (и со всеми правами данного пользователя читает и пишет инфу), либо же "левый" сервер выдаёт себя за реальный (это значит + атака на сетевую инфраструктуру, чтобы перенаправить трафик на поддельный сервер), и ничего не подозревающий клиент записывает свою секретную информацию туда - в руки злоумышленника.
Второе - (весьма слабая IMHO) защита от физического доступа или кражи дисков сервера - т.к. по сути вместе с этими зашифрованными файлами так же и сам wallet с ключами украдут. Ну есть, конечно, варианты когда этого достаточно - скажем когда файлы БД на отдельном дисковом хранилище лежат, независимо от собственно "серверной машины". Или если wallet реализован с аппаратными хранилищами ключей, и их отдельно хранят, без доступа того же админа сервера к ним...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Oracle Шифрование
ВладимирС
Автор

Сообщений: 1693
Дата регистрации: 03.11.2005
Может я не в ту сторону иду... то направьте плиз.

Мне поставили задачу:
"Как сотрудник финансового отдела я хочу иметь возможность заносить ставки в систему и знать, что их смогут увидеть только люди с определенными ролями.
Как руководитель департамента я НЕ хочу, чтобы рядовые сотрудники, обслуживающие систему, могли как-то увидеть реальные ставки. Так же я хочу обратить внимание на важный момент: ставки должны скрываться не только в интерфейсе (Web), но и на уровне базы."

Соответсвенно я нашел инфу по Oracle Wallet:

Например, при создании таблицы вместе с именем столбца можно просто указать ключевое слово ENCRYPT, как показано в следующем примере.
Этот оператор создает таблицу, которая при сохранении на диске преобразует значения столбца ssn в формат шифрованных данных:
SQL> CREATE TABLE employees (
empno NUMBER(5) PRIMARY KEY
ename VARCHAR2(15) NOT NULL,
ssn NUMBER(9) ENCRYPT,
. . .
В приведенном примере ключевое слово ENCRYPT указывает, что значение ssn (Social Security number — номер карточки социального страхования) должно шифроваться.
Как только это будет сделано, даже если неправомочные пользователи получат доступ к данным на устройствах хранения, они не смогут их прочесть, поскольку данные зашифрованы.
Однако когда правомочные пользователи обращаются к этим данным, шифрованные данные автоматически дешифруются, а процесс дешифрации остается прозрачным для пользователя.
Oracle Wallet служит для хранения аутентификационной и регистрационной информации, в том числе — приватных ключей и сертификатов.

Чтобы воспользоваться функциональной возможностью прозрачного шифрования данных, понадобится выполнить следующие действия.
1. Создайте Oracle Wallet.
2. Откройте Oracle Wallet.
3. Сгенерируйте главный ключ шифрования, который будет использоваться для шифрования ключа шифрования столбца.
4. Укажите, как должно выполняться шифрование столбца.

Создать Oracle Wallet через OWM (Oracle Wallet Manager — Диспетчер бумажника Oracle).
Запустить через Linux выполнив команду owm...
Далее визуальный интерфейс...
НО у меня доступ к серверу только через Putty.
И визуального интерфейса я скорее всего не увижу. Вот тут напряг для меня.
Этот вариант скорее всего более приемлем. Т.к. мне надо шифровать числовые данные.


С другой стороны использование DBMS_CRYPTO.ENCRYPT

DBMS_CRYPTO.ENCRYPT(
src IN RAW,
typ IN PLS_INTEGER,
key IN RAW,
iv IN RAW DEFAULT NULL)
RETURN RAW;

Попробовал, шифрует инфу...
Но куда спрятать key (Ключ шифрования, который будет использоваться для шифрования/дешифрования данных.)
[attachment 29785 ]



Исправлено 2 раз(а). Последнее : ВладимирС, 01.08.18 08:33
Ratings: 0 negative/0 positive
Re: Oracle Шифрование
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Читай больше и про TDE и вообще про защиту.
От DBA защиты практически НЕТ.
Даже если использовать вручную открываемый wallet пароль от которого знает лишь "директор/особист", всё равно после его открытия DBA сможет получить доступ к зашифрованным данным. А сам по себе вручную открываемый wallet означает что человека с паролем придётся вызывать при каждой перезагрузке БД - "директор/особист" готов к этому?
Потом - TDE работает целиком и полностью на стороне сервера. Т.е. БЕЗ одновременной настройки SSL всё это шифрование бессмысленно, т.к. данные пересылаются по сети в clear-text виде. Даже включив SSL ты никак не защитишься от перехвата данных на стороне клиента - т.к. само приложение получает их от сетевой инфраструктуры оракла уже в расшифрованном виде - а значит простейшие перехватчики всё "украдут" - это не говоря уж про кражу непосредственно из "окна приложения" - если там не предусмотрены никакие защитные меры.

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

Конкретно по вопросу - wallet создаётся и заполняется ключом шифрования TDE автоматически сервером если всё настроить (пути в sqlnet.ora файле) и выполнить команду.
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "mypwd";
Превратить его в авто-открываемый wallet может консольная команда orapki (она же и создать может).
orapki wallet create -wallet путь_к_кошельку -auto_login -pwd

Но ещё раз - внимательно изучи ВСЕ нюансы этих технологий, т.к. "видимость защиты" в общем то гораздо хуже чем явное и всем известное её отсутствие.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Oracle Шифрование
ВладимирС
Автор

Сообщений: 1693
Дата регистрации: 03.11.2005
Спасибо большое за разъяснения.

Igor Korolyov
Конкретно по вопросу - wallet создаётся и заполняется ключом шифрования TDE автоматически сервером если всё настроить (пути в sqlnet.ora файле) и выполнить команду.
ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "mypwd";
Превратить его в авто-открываемый wallet может консольная команда orapki (она же и создать может).
orapki wallet create -wallet путь_к_кошельку -auto_login -pwd
Об этом я уже прочитал.
Igor Korolyov
Т.е. защита информации это настолько комплексный процесс, что одно лишь включение TDE или то же использование DBMS_CRYPTO - практически ничего не даёт. Нужен аудит безопасности, выявление всех точек возможной утечки информации и их устранение или взятие под контроль.
Хм... А я думал этого достаточно.
Тогда нахрена это все ?

Тогда, м.б. как предложение, шифровать в web-е и записывать абракадабру в БД. Потом читать абракадабру с БД и дешифровывать в web-е.
Т.е. при включенном/невключенном SSL будет читаться абракадабра.
В БД никто не расшифрует инфу, т.к. ключ шифрования в web-проекте и там идет шифрование/дешифрование.
Если это правильно... то все равно тут большой минус...
Надо как-то поправить значения ставок (которые являются секретом) для 1000 записей, блин надо все проектировать/программировать в web-е. Да и расчеты как-то вести... в общем гемморой.
В БД, все было бы проще.



Исправлено 2 раз(а). Последнее : ВладимирС, 02.08.18 08:16
Ratings: 0 negative/0 positive
Re: Oracle Шифрование
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
ВладимирС
Тогда нахрена это все ?
Это один из этапов/шагов защиты.
Конкретно TDE защищает от кражи данных системным администратором сервера СУБД или сетевого хранилища (если сами файлы БД отдельно хранятся - как и происходит в кластерах).
Защита (шифрование) в клиентском приложении - ну ты просто переносишь всю нагрузку (возможные точки "утечки") в это самое приложение - если веб - значит на веб-сервер, браузеры и сеть их соединяющую. Там уже системный администратор веб-сервера полновластный хозяин - от него не защититься будет. Ну и если клиенты не ходят по https и если не используют достаточно надёжные методы авторизации/аутентификации, то будут "дыры" в безопасности в сети и в браузерах/клиентских рабочих местах.


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 13 (Гостей: 13)

© 2000-2024 Fox Club 
Яндекс.Метрика