Базы данных Oracle - статьи

         

Зашифруйте столбцы


Чтобы шифровать столбцы, используя средства TDE, все, что вы должны сделать, это добавить к определениям столбцов простое предложение – ENCRYPT. А до этого вы должны решить, какой вы будете использовать тип шифрования и длину ключа. Для детального обсуждения этой проблемы обратитесь к моей статье "Шифруем свои ресурсы данных", упомянутой выше.

Предположим, что у вас в обычной схеме имеется таблица владельцев банковских счетов ACCOUNTS, определенная следующим образом:

ACC_NO NUMBER ACC_NAME VARCHAR2(30) SSN VARCHAR2(9)

В настоящее время все данные этой таблицы хранятся в виде обычного текста. Вы хотите преобразовать столбец SSN (Social Security Number, номер социального страхования), чтобы он хранился в зашифрованном виде. Для этого вы можете выполнить оператор:

alter table accounts modify (ssn encrypt);

Этот оператор делает две вещи:

  • создает ключ шифрования для таблицы. Если вы измените другой столбец этой же таблицы, чтобы он также хранился в зашифрованном виде, будет использоваться этот же ключ таблицы;
  • преобразовывает все значения столбца SSN в зашифрованный формат.
  • Этот оператор не изменяет тип данных или размер столбца, и он также не создает никаких триггеров или представлений.

    По умолчанию для шифрования используется алгоритм AES (Advanced Encryption Standard, усовершенствованный стандарт шифрования) с 192-битовым ключом. Вы можете также выбрать другой алгоритм, указывая в операторе соответствующее дополнительное предложение.

    Например, чтобы использовать 128-битовое шифрование по алгоритму AES, вы можете выполнить оператор:

    alter table accounts modify (ssn encrypt using 'AES128');

    Вы можете использовать предложения AES128, AES192, AES256 или 3DES168 (168-bit Triple DES , трехкратное применение алгоритма DES (Data Encryption Standard, стандарт шифрования данных) с 168-битовым ключом).

    После шифрования столбца вы увидите в описании таблицы следующее:

    SQL> desc accounts

    Name Null? Type ------------ ------------ -------------------------- ACC_NO NUMBER ACC_NAME VARCHAR2(30) SSN VARCHAR2(9) ENCRYPT

    Обратите внимание на ключевое слово ENCRYPT, указанное после типа данных. Для поиска в базе данных зашифрованных столбцов можно воспользоваться представлением словаря данных DBA_ENCRYPTED_COLUMNS. (Средства TDE нельзя применять к таблицам схемы SYS.)



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