FirebirdSQL logo

В Firebird существует возможность зашифровать данные хранимые в базе данных.Не весь файл базы данных шифруется: только страницы данных, индексов и blob.

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

Note

Пример плагина шифрования в examples/dbcrypt не производит реального шифрования, это просто пример того, как можно написать этот плагин.

Основная проблема с шифрованием базы данных состоит в том, как хранить секретный ключ.Firebird предоставляет помощника для передачи этого ключа от клиента, но это вовсе не означает, что хранение ключей на клиенте является лучшим способом: это не более чем одна возможных альтернатив.Хранение ключей на том же диске, что и база данных, является очень плохим вариантом.

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

После того как вы определитесь с плагином и ключом, вы можете включить процесс шифрования.

Синтаксис
ALTER DATABASE ENCRYPT WITH plugin_name [KEY key_name]
Table 1. Параметры оператора ALTER DATABASE ENCRYPT
Параметр Описание

plugin_name

Имя плагина шифрования.

key_name

Имя ключа шифрования.

Шифрование начинается сразу после этого оператора и будет выполняться в фоновом режиме.Нормальная работа с базами данных не нарушается во время шифрования.

Tip

Процесс шифрования может быть проконтролирован с помощью поля MON$CRYPT_PAGE в псевдо-таблице MON$DATABASE или смотреть страницу заголовка базы данных с помощью gstat -e.

gstat –h также будет предоставлять ограниченную информацию о состоянии шифрования.

Например, следующий запрос

select MON$CRYPT_PAGE * 100 / MON$PAGES from MON$DATABASE

будет отображать процент завершения процесса шифрования.

Необязательное предложение KEY позволяет передать имя ключа для плагина шифрования.Что делать с этим именем ключа решает плагин.

Для дешифрования базы данных выполните:

ALTER DATABASE DECRYPT

Для Linux пример плагина с именем libDbCrypt_example.so можно найти в поддиректории /plugins/.