Deze pagina is automatisch vertaald. Lees het Engelse origineel. English

Hoe een Firebird-database versleutelen met de IBSurgeon-plugin: installeren op de server, verbinding maken vanuit een applicatie, ontwikkeltools gebruiken en versleutelde back-up/herstel uitvoeren. Volledig product: Encryption Framework.

Installatiescripts in 1 stap

Windows: voer de installer uit vanaf GitHub - Engels · Português.

Linux: gebruik de standaard Firebird-installer van IBSurgeon/firebirdlinuxinstall met -crypt-only.

Vereisten voor een handmatige installatie

  • Firebird 3.0.3 of hoger (3.x, 4.x, 5.x). Oudere versies worden niet ondersteund door deze demo.
  • Proefplug-inarchieven en de Delphi/Lazarus/.NET/PHP-voorbeelden (hieronder).
  • Proef-DbCrypt.conf in plugins.
  • Een SYSDBA-gebruiker. Indien ontbrekend: stop Firebird, voer isql -user sysdba employee.fdb uit, voer CREATE USER SYSDBA PASSWORD 'masterkey'; uit, start de service.

De walkthrough gebruikt 64-bits Firebird. Voor 32-bits neemt u bestanden uit het bijbehorende WINDOWS_32bit-archief (of Linux 32-bits).

Downloads

ExampleApplications.zip - gecompileerde democlient en broncode. DbCrypt.conf - proefsleutel.

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

Stap 1 - Initiële versleuteling (Windows-voorbeeld)

Plaats een onversleutelde database op een handige locatie, bijvoorbeeld C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB.

1. Alias in databases.conf

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

Om de sleutelhouder op elke database toe te passen, voegt u KeyHolderPlugin = KeyHolder toe in firebird.conf, of kopieert u het voorbeeld-firebird.conf uit het archief (stap 3).

2. Bestanden naar server/plugins

Vanuit FB_NN_WINDOWS_64bit\Server\plugins:

  • DbCrypt.dll
  • DbCrypt.conf (proefsleutel)
  • KeyHolder.dll
  • KeyHolder.conf - tekstbestand met sleutels alleen voor ontwikkeling. Stuur dit niet mee naar eindgebruikers.

3. Bestanden naar de Firebird-hoofdmap

Vanuit FB_NN_WINDOWS_64bit\Server: fbcrypt.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, gbak.exe, firebird.msg en optioneel firebird.conf.

4. Versleutelen met 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; (of gstat -h) moet Database encrypted melden.

dbcrypt is de plug-innaam; red is een sleutel gedefinieerd in KeyHolder.conf. Op Linux plaatst u namen tussen aanhalingstekens en let u op hoofdletters:

alter database encrypt with "DbCrypt" key Red;

Na deze stap bewaart de server sleutels in KeyHolder.conf (ontwikkel-/beheermodus).

Wat bevindt zich op de server versus de client

Server Client
plugins/dbcrypt.dll, plugins/keyholder.dll, DbCrypt.conf
libssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dll
Versleutelde gbak: gbak.exe, firebird.msg
Optioneel: plugins/KeyHolder.conf (ontwikkelsleutels), firebird.conf
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dll
Optioneel: firebird.conf

Stap 2 - Verbinding maken vanuit een clientapplicatie

Om een klantomgeving na te bootsen, hernoemt of verwijdert u plugins/KeyHolder.conf. De plug-in verwacht dan de sleutel van de applicatie. ExampleApplications.zip bevat een gecompileerde Delphi XE8-client plus Lazarus-, .NET- en PHP-voorbeelden.

Vóór de gebruikelijke verbinding stuurt de app de sleutel (een paar extra aanroepen). Daarna is Firebird-gebruik ongewijzigd. De Delphi-demo staat onder Example_Delphi_EnhancedCryptTestClient\Win32\Debug:

  1. Stel het databasepad of de alias in onder “1. Setup Login”.
  2. Voer de sleutelnaam en -waarde in (voor sleutel RED kopieert u de waarde uit KeyHolder.conf).
  3. U kunt met die sleutel versleutelen/ontsleutelen - versleuteling vereist een actieve verbinding en kost tijd.
  4. Klik op Execute query om een eenvoudige SELECT uit te voeren via de versleutelde verbinding.

De demo maakt alleen verbinding via TCP/IP - XNET wordt niet ondersteund. Het voorbeeld houdt verbindings-, transactie- en querystappen expliciet zodat u het patroon kunt kopiëren.

Versleutelingsdemoclient: login, sleutelnaam en query uitvoeren
Democlient: login, sleutel, versleutelen/ontsleutelen, testquery.
Versleutelingsdemoclient die verbindingsstappen toont tegen een versleutelde Firebird-database
Eenvoudige verbindings-/transactie-/queryreeks.

Stap 3 - Ontwikkeltools en opdrachtregel

Vanaf Encryption Framework v2021 kan fbclient.dll zelf sleutels laden. IBExpert, FlameRobin, SQLLY, Database Workbench, RedExpert, gfix, nbackup en vergelijkbare tools werken dan zonder codeaanpassingen.

Zorg dat de client-bitheid overeenkomt:

  • Firebird-opdrachtregeltools (isql, gfix, nbackup) komen overeen met de server - kopieer Windows_64bit\WindowsClientPart_64bit naast die binaire bestanden.
  • De meeste GUI-tools zijn 32-bits - kopieer Windows_32bit\WindowsClientPart_32bit naar de map van de tool.

Opdrachtregeltools gebruiken dan plugins\KeyHolder.conf naast die kopie van fbclient. Andere apps geven de sleutel nog steeds zelf door.

isql die verbinding maakt met een versleutelde database via client-side KeyHolder
Client-side sleutelladen: fbclient → KeyHolder → KeyHolder.conf.
  1. De tool start en laadt fbclient.dll.
  2. fbclient leest firebird.conf, ziet KeyHolderPlugin=KeyHolder en laadt plugins\keyholder.dll.
  3. KeyHolder leest KeyHolder.conf (bijv. sleutel Red).
  4. isql maakt verbinding en kan SHOW DATABASE uitvoeren.
FlameRobin verbonden met een versleutelde Firebird-database met client-side sleutels
Hetzelfde patroon met FlameRobin.

gbak: client-side sleutelladen produceert een onversleuteld .fbk-bestand. Gebruik de gbak van het framework met expliciete -KEYFILE / -KEYNAME / -KEY zodat de back-up versleuteld blijft.

nbackup: incrementele kopieën blijven versleuteld.

Stap 4 - Back-up en herstel

Standaard gbak kan een productieversleutelde database niet openen (geen sleutels op de server, geen sleutel van de client). Het framework levert een gbak die de back-up versleutelt met dezelfde sleutel als de database. gbak -? voegt toe:

-KEYFILE   naam van een bestand met DB- en back-upcryptosleutel(s)
-KEYNAME   naam van een sleutel die voor versleuteling moet worden gebruikt
-KEY       sleutelwaarde in "0x5A,"-notatie

Back-up

Geef de sleutel op zodat gbak de database kan lezen en het .fbk-bestand kan versleutelen - hetzij een sleutelbestand (zelfde indeling als KeyHolder.conf) of een expliciete waarde. Het maken van een back-up van een niet-versleutelde database met deze switches levert nog steeds een versleutelde back-up op.

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

Met -KEY moet u nog steeds -KEYNAME doorgeven.

Herstel

Hetzelfde idee: sleutelbestand of expliciete sleutel. Het herstellen van een niet-versleutelde back-up met deze switches creëert een versleutelde database.

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