Cette page a été traduite automatiquement. Lisez l'original en anglais. English

Comment chiffrer une base de données Firebird avec le plugin IBSurgeon : installation sur le serveur, connexion depuis une application, utilisation des outils de développement et sauvegarde/restauration chiffrées. Produit complet : Encryption Framework.

Scripts d'installation en 1 étape

Windows : exécutez l'installateur depuis GitHub - English · Português.

Linux : utilisez l'installateur Firebird standard de IBSurgeon/firebirdlinuxinstall avec -crypt-only.

Prérequis pour une installation manuelle

  • Firebird 3.0.3 ou supérieur (3.x, 4.x, 5.x). Les versions plus anciennes ne sont pas prises en charge par cette démo.
  • Archives des plugins d'essai et exemples Delphi/Lazarus/.NET/PHP (ci-dessous).
  • DbCrypt.conf d'essai dans plugins.
  • Un utilisateur SYSDBA. S'il manque : arrêtez Firebird, exécutez isql -user sysdba employee.fdb, exécutez CREATE USER SYSDBA PASSWORD 'masterkey';, démarrez le service.

La procédure utilise Firebird 64 bits. Pour 32 bits, prenez les fichiers de l'archive WINDOWS_32bit (ou Linux 32 bits) correspondante.

Téléchargements

ExampleApplications.zip - client de démonstration compilé et sources. DbCrypt.conf - clé d'essai.

Firebird Windows 32 bits Windows 64 bits Linux 32 bits Linux 64 bits
3.0 zip zip tar.xz tar.xz
4.0 zip zip tar.xz tar.xz
5.0 zip zip - tar.xz

Étape 1 - Chiffrement initial (exemple Windows)

Placez une base de données non chiffrée à un emplacement pratique, par exemple C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB.

1. Alias dans databases.conf

crypt = C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB
{
KeyHolderPlugin = KeyHolder
}

Pour appliquer le détenteur de clé à chaque base de données, ajoutez KeyHolderPlugin = KeyHolder dans firebird.conf, ou copiez l'exemple firebird.conf de l'archive (étape 3).

2. Fichiers dans server/plugins

Depuis FB_NN_WINDOWS_64bit\Server\plugins :

  • DbCrypt.dll
  • DbCrypt.conf (clé d'essai)
  • KeyHolder.dll
  • KeyHolder.conf - fichier texte avec les clés pour le développement uniquement. Ne le distribuez pas aux utilisateurs finaux.

3. Fichiers dans la racine de Firebird

Depuis FB_NN_WINDOWS_64bit\Server : fbcrypt.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, gbak.exe, firebird.msg, et éventuellement firebird.conf.

4. Chiffrer avec isql

isql localhost:C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB -user SYSDBA -pass masterkey
SQL> alter database encrypt with dbcrypt key red;
SQL> show database;

show database; (ou gstat -h) doit indiquer Database encrypted.

dbcrypt est le nom du plugin ; red est une clé définie dans KeyHolder.conf. Sous Linux, mettez les noms entre guillemets et respectez la casse :

alter database encrypt with "DbCrypt" key Red;

Après cette étape, le serveur conserve les clés dans KeyHolder.conf (mode développement / administration).

Ce qui se trouve sur le serveur vs le client

Serveur Client
plugins/dbcrypt.dll, plugins/keyholder.dll, DbCrypt.conf
libssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dll
gbak chiffré : gbak.exe, firebird.msg
Optionnel : plugins/KeyHolder.conf (clés de développement), firebird.conf
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dll
Optionnel : firebird.conf

Étape 2 - Se connecter depuis une application cliente

Pour simuler un site client, renommez ou supprimez plugins/KeyHolder.conf. Le plugin attend alors la clé de l'application. ExampleApplications.zip contient un client Delphi XE8 compilé ainsi que des exemples Lazarus, .NET et PHP.

Avant la connexion habituelle, l'application envoie la clé (quelques appels supplémentaires). Ensuite, l'utilisation de Firebird est inchangée. La démo Delphi se trouve sous Example_Delphi_EnhancedCryptTestClient\Win32\Debug :

  1. Définissez le chemin ou l'alias de la base de données sous « 1. Setup Login ».
  2. Saisissez le nom et la valeur de la clé (pour la clé RED, copiez la valeur depuis KeyHolder.conf).
  3. Vous pouvez chiffrer/déchiffrer avec cette clé - le chiffrement nécessite une connexion active et prend du temps.
  4. Cliquez sur Execute query pour exécuter un simple SELECT via la connexion chiffrée.

La démo se connecte uniquement via TCP/IP - XNET n'est pas pris en charge. L'exemple rend explicites les étapes de connexion, transaction et requête afin que vous puissiez copier le modèle.

Client de démonstration de chiffrement : connexion, nom de clé et exécution de requête
Client de démo : connexion, clé, chiffrement/déchiffrement, requête de test.
Client de démonstration de chiffrement montrant les étapes de connexion à une base de données Firebird chiffrée
Séquence simple de connexion / transaction / requête.

Étape 3 - Outils de développement et ligne de commande

Depuis Encryption Framework v2021, fbclient.dll peut charger les clés lui-même. IBExpert, FlameRobin, SQLLY, Database Workbench, RedExpert, gfix, nbackup et outils similaires fonctionnent alors sans modification de code.

Faites correspondre l'architecture du client :

  • Les outils en ligne de commande Firebird (isql, gfix, nbackup) correspondent au serveur - copiez Windows_64bit\WindowsClientPart_64bit à côté de ces binaires.
  • La plupart des outils graphiques sont en 32 bits - copiez Windows_32bit\WindowsClientPart_32bit dans le dossier de l'outil.

Les outils en ligne de commande utilisent ensuite plugins\KeyHolder.conf à côté de cette copie de fbclient. Les autres applications passent toujours la clé elles-mêmes.

isql se connectant à une base de données chiffrée via KeyHolder côté client
Chargement de clé côté client : fbclient → KeyHolder → KeyHolder.conf.
  1. L'outil démarre et charge fbclient.dll.
  2. fbclient lit firebird.conf, voit KeyHolderPlugin=KeyHolder et charge plugins\keyholder.dll.
  3. KeyHolder lit KeyHolder.conf (par exemple la clé Red).
  4. isql se connecte et peut exécuter SHOW DATABASE.
FlameRobin connecté à une base de données Firebird chiffrée utilisant des clés côté client
Même modèle avec FlameRobin.

gbak : le chargement de clé côté client produit un .fbk non chiffré. Utilisez le gbak du framework avec -KEYFILE / -KEYNAME / -KEY explicites pour que la sauvegarde reste chiffrée.

nbackup : les copies incrémentales restent chiffrées.

Étape 4 - Sauvegarde et restauration

Le gbak standard ne peut pas ouvrir une base de données chiffrée en production (pas de clés sur le serveur, pas de clé depuis le client). Le framework fournit un gbak qui chiffre la sauvegarde avec la même clé que la base de données. gbak -? ajoute :

-KEYFILE   nom d'un fichier contenant la ou les clés de chiffrement de la base et de la sauvegarde
-KEYNAME   nom d'une clé à utiliser pour le chiffrement
-KEY       valeur de la clé en notation "0x5A,"

Sauvegarde

Fournissez la clé pour que gbak puisse lire la base de données et chiffrer le fichier .fbk - soit un fichier de clés (même structure que KeyHolder.conf), soit une valeur explicite. Sauvegarder une base de données non chiffrée avec ces options produit toujours une sauvegarde chiffrée.

gbak.exe -b -KEYFILE h:\Firebird\examplekeyfile.txt -KEYNAME RED localhost:h:\employee_30.fdb h:\testenc4.fbk -user SYSDBA -pass masterkey

gbak -b -KEY 0xec,0xa1,0x52,0xf6,0x4d,0x27,0xda,0x93,0x53,0xe5,0x48,0x86,0xb9,0x7d,0xe2,0x8f,0x3b,0xfa,0xb7,0x91,0x22,0x5b,0x59,0x15,0x82,0x35,0xf5,0x30,0x1f,0x04,0xdc,0x75, -keyname RED localhost:h:\employee30\employee30.fdb h:\testenc303.fbk -user SYSDBA -pass masterkey

Avec -KEY, vous devez toujours passer -KEYNAME.

Restauration

Même principe : fichier de clés ou clé explicite. Restaurer une sauvegarde non chiffrée avec ces options crée une base de données chiffrée.

gbak -c -v -keyfile h:\Firebird\examplekeyfile.txt -keyname white h:\testenc4.fbk localhost:h:\employeeenc4.fdb -user SYSDBA -pass masterkey

gbak -c -v -key 0xec,0xa1,0x52,0xf6,0x4d,0x27,0xda,0x93,0x53,0xe5,0x48,0x86,0xb9,0x7d,0xe2,0x8f,0x3b,0xfa,0xb7,0x91,0x22,0x5b,0x59,0x15,0x82,0x35,0xf5,0x30,0x1f,0x04,0xdc,0x75, -keyname RED h:\testenc4.fbk localhost:h:\employeeenc4.fdb -user SYSDBA -pass masterkey