0defb3aa

Справочная информация и некоторые подробности


Посмотреть состояние и местонахождение бумажника с шифроключами можно только с версии 11 в таблице V$ENCRYPTION_WALLET.

Перечень шифруемых столбцов в таблицах БД можно получить из отдельных системных таблиц DBA/ALL/USER_ENCRYPTED_COLUMNS. В нашем случае мы получим: SQL> SELECT * FROM user_encrypted_columns;

TABLE_NAME COLUMN_NAME ENCRYPTION_ALG SAL ------------------- ------------------- -------------------------- --- CLOSED B AES 192 bits key NO

Полное имя последнего столбца SALT. Поле ENCRYPTIONALG сообщает алгоритм шифрования. Кроме умолчательного AES192 возможны AES128, AES256 и 3DES168. Эти алгоритмы следует указывать явно: ALTER TABLE closed REKEY USING 'aes256';

Обратите внимание, что алгоритм указывается не для столбца, а для всей таблицы. Это потому, что Oracle не позволяет разным столбцам таблицы использовать разные алгоритмы шифрования: технически «шифрование выполняется на уровне блока» (цитата). Фактически последняя команда сменяет не только алгоритм, но и ключ шифрования, тоже один на всю таблицу. Этот собственный ключ шифрования таблицы (не «главный») тут же сам шифруется главным ключом из бумажника и запоминается для нее в БД, в системной таблице ENC$. Оттуда он будет браться при всякой шифровке/расшифровке значений полей строк таблицы. Так, при обращении к зашифрованному полю таблицы СУБД возьмет из ENC$ зашифрованый ключ этой таблицы, расшифрует его главным ключом из бумажника, и уже восстановленым ключом таблицы расшифрует значение поля.

Если нужно сменить хранимые шифрозначения, можно выдать просто: ALTER TABLE closed REKEY;

На «законную» возможность читать данные это никак не скажется (равно как и предыдущее действие), но хранимые значения будут подменены на вычисленные заново.

Упражнение. Проверить, изменится ли хранение в БД зашифрованных данных при смене шифроключа таблицы.

Посмотреть ключи шифрования в бумажнике можно программой mkstore, например: >mkstore -wrl C:\oracle\admin\orcl\wallet -list


Enter password: amicus123

Oracle Secret Store entries: ORACLE.SECURITY.DB.ENCRYPTION.AcYP07kvGk +av9Jnw2C48y0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY

То же, но чуть иначе, покажет программа orapki, если выдать: >orapki wallet display -wallet C:\oracle\admin\orcl\wallet -pwd amicus123

Эти же ключи покажет и Oracle Wallet Manager:



(Для этого нужно будет вызвать программу, сослаться на каталог с файлом бумажника и ввести пароль).

А вот значение главного ключа покажет только программа mkstore (следует одна строка): >mkstore -wrl C:\oracle\admin\orcl\wallet -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY

Сменить значение главного ключа можно командой типа: ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "amicus123";

Упражнение. Проверить, изменится ли хранение в БД зашифрованных данных при смене главного ключа в бумажнике.


Содержание раздела