Diese Seite wurde maschinell übersetzt. Lesen Sie das englische Original. English

So verschlüsseln Sie eine Firebird-Datenbank mit dem IBSurgeon-Plugin: Installation auf dem Server, Verbindung aus einer Anwendung, Nutzung von Entwicklerwerkzeugen und verschlüsseltes Backup/Restore. Vollversion: Encryption Framework.

1-Schritt-Installationsskripte

Windows: Installationsprogramm von GitHub ausführen - Englisch · Português.

Linux: das Standard-Firebird-Installationsprogramm von IBSurgeon/firebirdlinuxinstall mit -crypt-only verwenden.

Voraussetzungen für eine manuelle Installation

  • Firebird 3.0.3 oder höher (3.x, 4.x, 5.x). Ältere Versionen werden von dieser Demo nicht unterstützt.
  • Test-Plugin-Archive und die Delphi/Lazarus/.NET/PHP-Beispiele (unten).
  • Test-DbCrypt.conf in plugins.
  • Ein SYSDBA-Benutzer. Falls nicht vorhanden: Firebird stoppen, isql -user sysdba employee.fdb ausführen, CREATE USER SYSDBA PASSWORD 'masterkey'; ausführen, Dienst starten.

Die Anleitung verwendet 64-Bit-Firebird. Für 32-Bit die Dateien aus dem passenden WINDOWS_32bit-Archiv (oder Linux-32-Bit) nehmen.

Downloads

ExampleApplications.zip - kompilierter Demo-Client und Quellcode. DbCrypt.conf - Testschlüssel.

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

Schritt 1 - Erste Verschlüsselung (Windows-Beispiel)

Legen Sie eine unverschlüsselte Datenbank an einem geeigneten Ort ab, z. B. C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB.

1. Alias in databases.conf

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

Um den KeyHolder auf jede Datenbank anzuwenden, fügen Sie KeyHolderPlugin = KeyHolder in firebird.conf hinzu oder kopieren Sie die Beispiel-firebird.conf aus dem Archiv (Schritt 3).

2. Dateien in server/plugins

Aus FB_NN_WINDOWS_64bit\Server\plugins:

  • DbCrypt.dll
  • DbCrypt.conf (Testschlüssel)
  • KeyHolder.dll
  • KeyHolder.conf - Textdatei mit Schlüsseln nur für die Entwicklung. Nicht an Endbenutzer ausliefern.

3. Dateien in das Firebird-Wurzelverzeichnis

Aus FB_NN_WINDOWS_64bit\Server: fbcrypt.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, gbak.exe, firebird.msg und optional firebird.conf.

4. Mit isql verschlüsseln

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

show database; (oder gstat -h) sollte Database encrypted melden.

dbcrypt ist der Plugin-Name; red ist ein in KeyHolder.conf definierter Schlüssel. Unter Linux Namen in Anführungszeichen setzen und Groß-/Kleinschreibung beachten:

alter database encrypt with "DbCrypt" key Red;

Nach diesem Schritt hält der Server die Schlüssel in KeyHolder.conf (Entwicklungs-/Administratormodus).

Was auf dem Server vs. auf dem Client liegt

Server Client
plugins/dbcrypt.dll, plugins/keyholder.dll, DbCrypt.conf
libssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dll
Verschlüsseltes gbak: gbak.exe, firebird.msg
Optional: plugins/KeyHolder.conf (Entwicklungsschlüssel), firebird.conf
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dll
Optional: firebird.conf

Schritt 2 - Verbindung aus einer Client-Anwendung

Um eine Kundensituation nachzubilden, benennen Sie plugins/KeyHolder.conf um oder entfernen Sie sie. Das Plugin erwartet dann den Schlüssel von der Anwendung. ExampleApplications.zip enthält einen kompilierten Delphi-XE8-Client sowie Lazarus-, .NET- und PHP-Beispiele.

Vor der üblichen Verbindung sendet die App den Schlüssel (ein paar zusätzliche Aufrufe). Danach bleibt die Firebird-Nutzung unverändert. Die Delphi-Demo liegt unter Example_Delphi_EnhancedCryptTestClient\Win32\Debug:

  1. Datenbankpfad oder Alias unter „1. Setup Login“ festlegen.
  2. Schlüsselnamen und -wert eingeben (für Schlüssel RED den Wert aus KeyHolder.conf kopieren).
  3. Sie können mit diesem Schlüssel verschlüsseln/entschlüsseln - Verschlüsselung benötigt eine aktive Verbindung und dauert.
  4. Auf „Execute query“ klicken, um eine einfache SELECT-Abfrage über die verschlüsselte Verbindung auszuführen.

Die Demo verbindet nur über TCP/IP - XNET wird nicht unterstützt. Das Beispiel hält Verbindungs-, Transaktions- und Abfrageschritte explizit getrennt, damit Sie das Muster übernehmen können.

Verschlüsselungs-Demo-Client: Login, Schlüsselname und Abfrage ausführen
Demo-Client: Login, Schlüssel, Verschlüsseln/Entschlüsseln, Testabfrage.
Verschlüsselungs-Demo-Client mit Verbindungsschritten gegen eine verschlüsselte Firebird-Datenbank
Einfache Verbindungs-/Transaktions-/Abfragesequenz.

Schritt 3 - Entwicklerwerkzeuge und Befehlszeile

Ab Encryption Framework v2021 kann fbclient.dll Schlüssel selbst laden. IBExpert, FlameRobin, SQLLY, Database Workbench, RedExpert, gfix, nbackup und ähnliche Werkzeuge funktionieren dann ohne Codeänderungen.

Bitbreite des Clients beachten:

  • Firebird-Befehlszeilenwerkzeuge (isql, gfix, nbackup) entsprechen dem Server - Windows_64bit\WindowsClientPart_64bit neben diese Binärdateien kopieren.
  • Die meisten GUI-Werkzeuge sind 32-Bit - Windows_32bit\WindowsClientPart_32bit in den Ordner des Werkzeugs kopieren.

Befehlszeilenwerkzeuge verwenden dann plugins\KeyHolder.conf neben dieser Kopie von fbclient. Andere Apps übergeben den Schlüssel weiterhin selbst.

isql verbindet sich über clientseitigen KeyHolder mit einer verschlüsselten Datenbank
Clientseitiges Laden des Schlüssels: fbclient → KeyHolder → KeyHolder.conf.
  1. Das Werkzeug startet und lädt fbclient.dll.
  2. fbclient liest firebird.conf, sieht KeyHolderPlugin=KeyHolder und lädt plugins\keyholder.dll.
  3. KeyHolder liest KeyHolder.conf (z. B. Schlüssel Red).
  4. isql verbindet sich und kann SHOW DATABASE ausführen.
FlameRobin verbunden mit einer verschlüsselten Firebird-Datenbank mit clientseitigen Schlüsseln
Gleiches Muster mit FlameRobin.

gbak: Das clientseitige Laden des Schlüssels erzeugt eine unverschlüsselte .fbk-Datei. Verwenden Sie das Framework-gbak mit explizitem -KEYFILE / -KEYNAME / -KEY, damit das Backup verschlüsselt bleibt.

nbackup: Inkrementelle Kopien bleiben verschlüsselt.

Schritt 4 - Backup und Wiederherstellung

Das Standard-gbak kann eine produktive verschlüsselte Datenbank nicht öffnen (keine Schlüssel auf dem Server, kein Schlüssel vom Client). Das Framework enthält ein gbak, das das Backup mit demselben Schlüssel wie die Datenbank verschlüsselt. gbak -? fügt hinzu:

-KEYFILE   Name einer Datei mit DB- und Backup-Verschlüsselungsschlüsseln
-KEYNAME   Name eines Schlüssels, der für die Verschlüsselung verwendet werden soll
-KEY       Schlüsselwert in der Notation "0x5A,"

Backup

Geben Sie den Schlüssel an, damit gbak die Datenbank lesen und die .fbk-Datei verschlüsseln kann - entweder eine Schlüsseldatei (gleiches Layout wie KeyHolder.conf) oder einen expliziten Wert. Das Sichern einer unverschlüsselten Datenbank mit diesen Schaltern erzeugt dennoch ein verschlüsseltes Backup.

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

Mit -KEY müssen Sie weiterhin -KEYNAME angeben.

Wiederherstellung

Gleiche Idee: Schlüsseldatei oder expliziter Schlüssel. Das Wiederherstellen eines unverschlüsselten Backups mit diesen Schaltern erzeugt eine verschlüsselte Datenbank.

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