FirebirdSQL logo

Dans Firebird, il est possible de crypter les données stockées dans une base de données. Le fichier de base de données n’est pas crypté dans son intégralité : seules les pages de données, d’index et de blob sont cryptées.

Pour rendre le cryptage de la base de données possible, vous devez obtenir ou écrire un plugin de cryptage de base de données.

Note

L’exemple de plugin de cryptage dans examples/dbcrypt ne produit pas de cryptage réel, c’est juste un exemple de comment ce plugin pourrait être écrit.

Le principal problème du cryptage des bases de données est de savoir comment stocker la clé secrète. Firebird fournit une aide pour transférer cette clé depuis le client, mais cela ne signifie pas que le stockage des clés sur le client soit la meilleure solution : ce n’est qu’une alternative possible. Stocker les clés sur le même disque que la base de données est une très mauvaise option.

Pour séparer efficacement le cryptage et l’accès aux clés, le plugin de cryptage de la base de données est divisé en deux parties : le cryptage lui-même et le détenteur de la clé secrète. Cela peut être une approche efficace si vous voulez utiliser un bon algorithme de cryptage mais avoir votre propre méthode de stockage de la clé secrète.

Une fois que vous avez choisi un plug-in et une clé, vous pouvez activer le processus de cryptage.

Syntaxe
ALTER DATABASE ENCRYPT WITH plugin_name [KEY key_name]
Table 1. Paramètres pour l’opérateur `ALTER DATABASE ENCRYPT'.
Paramètre Description

plugin_name

Le nom du plug-in de cryptage.

key_name

Le nom de la clé de cryptage.

Le cryptage commence immédiatement après cette déclaration et s’exécute en arrière-plan. Le fonctionnement normal de la base de données n’est pas perturbé pendant le cryptage.

Tip

Le processus de cryptage peut être surveillé en utilisant le champ MON$CRYPT_PAGE dans la pseudo-table MON$DATABASE ou regarder la page d’en-tête de la base de données avec gstat -e.

gstat -h fournira également des informations limitées sur l’état du cryptage.

Par exemple, la requête suivante

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

affichera le pourcentage d’achèvement du processus de cryptage.

La clause optionnelle KEY vous permet de passer un nom de clé au plugin de cryptage. Ce qu’il faut faire avec ce nom de clé est décidé par le plugin.

Pour décrypter la base de données, exécutez :

ALTER DATABASE DECRYPT

Pour Linux, un exemple de plugin nommé libDbCrypt_example.so peut être trouvé dans le sous-répertoire /plugins/.