Démo du chiffrement Firebird
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écutezCREATE 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.
É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.dllDbCrypt.conf(clé d'essai)KeyHolder.dllKeyHolder.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.conflibssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dllgbak chiffré : gbak.exe, firebird.msgOptionnel : plugins/KeyHolder.conf (clés de développement), firebird.conf
|
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dllOptionnel : 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 :
- Définissez le chemin ou l'alias de la base de données sous « 1. Setup Login ».
- Saisissez le nom et la valeur de la clé (pour la clé RED, copiez la valeur depuis
KeyHolder.conf). - Vous pouvez chiffrer/déchiffrer avec cette clé - le chiffrement nécessite une connexion active et prend du temps.
- 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.
É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 - copiezWindows_64bit\WindowsClientPart_64bità côté de ces binaires. - La plupart des outils graphiques sont en 32 bits - copiez
Windows_32bit\WindowsClientPart_32bitdans 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.
- L'outil démarre et charge
fbclient.dll. fbclientlitfirebird.conf, voitKeyHolderPlugin=KeyHolderet chargeplugins\keyholder.dll.- KeyHolder lit
KeyHolder.conf(par exemple la clé Red). isqlse connecte et peut exécuterSHOW DATABASE.
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