Tato stránka byla strojově přeložena. Přečtěte si anglický originál. English

Jak zašifrovat databázi Firebird pomocí pluginu IBSurgeon: instalace na server, připojení z aplikace, použití vývojářských nástrojů a šifrovaná záloha/obnova. Plný produkt: Encryption Framework.

Instalační skripty v 1 kroku

Windows: spusťte instalátor z GitHubu - Anglicky · Português.

Linux: použijte standardní instalátor Firebirdu z IBSurgeon/firebirdlinuxinstall s parametrem -crypt-only.

Předpoklady pro ruční instalaci

  • Firebird 3.0.3 nebo vyšší (3.x, 4.x, 5.x). Starší verze nejsou tímto demem podporovány.
  • Archivy zkušebních pluginů a příklady pro Delphi/Lazarus/.NET/PHP (níže).
  • Zkušební DbCrypt.conf ve složce plugins.
  • Uživatel SYSDBA. Pokud chybí: zastavte Firebird, spusťte isql -user sysdba employee.fdb, proveďte CREATE USER SYSDBA PASSWORD 'masterkey';, spusťte službu.

Návod používá 64bitový Firebird. Pro 32bitovou verzi vezměte soubory z odpovídajícího archivu WINDOWS_32bit (nebo Linux 32-bit).

Stažení

ExampleApplications.zip - zkompilovaný demo klient a zdrojové kódy. DbCrypt.conf - zkušební klíč.

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

Krok 1 - Počáteční šifrování (příklad pro Windows)

Umístěte nešifrovanou databázi na vhodné místo, například C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB.

1. Alias v databases.conf

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

Chcete-li použít držitele klíčů pro všechny databáze, přidejte KeyHolderPlugin = KeyHolder do firebird.conf, nebo zkopírujte vzorový firebird.conf z archivu (krok 3).

2. Soubory do server/plugins

Z FB_NN_WINDOWS_64bit\Server\plugins:

  • DbCrypt.dll
  • DbCrypt.conf (zkušební klíč)
  • KeyHolder.dll
  • KeyHolder.conf - textový soubor s klíči pouze pro vývoj. Nedodávejte jej koncovým uživatelům.

3. Soubory do kořenového adresáře Firebirdu

Z FB_NN_WINDOWS_64bit\Server: fbcrypt.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, gbak.exe, firebird.msg a volitelně firebird.conf.

4. Šifrování pomocí 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; (nebo gstat -h) by mělo hlásit Database encrypted.

dbcrypt je název pluginu; red je klíč definovaný v KeyHolder.conf. Na Linuxu uvádějte názvy v uvozovkách a dodržujte velikost písmen:

alter database encrypt with "DbCrypt" key Red;

Po tomto kroku server uchovává klíče v KeyHolder.conf (režim vývoj / správa).

Co je na serveru vs. na klientovi

Server Klient
plugins/dbcrypt.dll, plugins/keyholder.dll, DbCrypt.conf
libssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dll
Šifrovaný gbak: gbak.exe, firebird.msg
Volitelně: plugins/KeyHolder.conf (vývojové klíče), firebird.conf
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dll
Volitelně: firebird.conf

Krok 2 - Připojení z klientské aplikace

Chcete-li simulovat prostředí zákazníka, přejmenujte nebo odstraňte plugins/KeyHolder.conf. Plugin pak očekává klíč od aplikace. ExampleApplications.zip obsahuje zkompilovaného klienta Delphi XE8 a vzorky pro Lazarus, .NET a PHP.

Před běžným připojením aplikace odešle klíč (několik dalších volání). Poté se použití Firebirdu nemění. Delphi demo je v Example_Delphi_EnhancedCryptTestClient\Win32\Debug:

  1. Nastavte cestu k databázi nebo alias v části „1. Setup Login“.
  2. Zadejte název klíče a hodnotu (pro klíč RED zkopírujte hodnotu z KeyHolder.conf).
  3. Můžete šifrovat/dešifrovat tímto klíčem - šifrování vyžaduje aktivní připojení a trvá určitou dobu.
  4. Klikněte na Execute query pro spuštění jednoduchého SELECT přes šifrované připojení.

Demo se připojuje pouze přes TCP/IP - XNET není podporováno. Vzorek ponechává kroky připojení, transakce a dotazu explicitní, abyste mohli vzor zkopírovat.

Demo klient šifrování: přihlášení, název klíče a spuštění dotazu
Demo klient: přihlášení, klíč, šifrování/dešifrování, testovací dotaz.
Demo klient šifrování zobrazující kroky připojení k šifrované databázi Firebird
Přehledná sekvence připojení / transakce / dotazu.

Krok 3 - Vývojářské nástroje a příkazový řádek

Od verze Encryption Framework v2021 může fbclient.dll načítat klíče sám. IBExpert, FlameRobin, SQLLY, Database Workbench, RedExpert, gfix, nbackup a podobné nástroje pak fungují bez změn kódu.

Přizpůsobte bitovou verzi klienta:

  • Nástroje příkazového řádku Firebirdu (isql, gfix, nbackup) odpovídají serveru - zkopírujte Windows_64bit\WindowsClientPart_64bit vedle těchto binárek.
  • Většina GUI nástrojů je 32bitová - zkopírujte Windows_32bit\WindowsClientPart_32bit do složky nástroje.

Nástroje příkazového řádku pak používají plugins\KeyHolder.conf vedle této kopie fbclient. Ostatní aplikace stále předávají klíč samy.

isql připojující se k šifrované databázi přes klientský KeyHolder
Načtení klíče na straně klienta: fbclient → KeyHolder → KeyHolder.conf.
  1. Nástroj se spustí a načte fbclient.dll.
  2. fbclient přečte firebird.conf, uvidí KeyHolderPlugin=KeyHolder a načte plugins\keyholder.dll.
  3. KeyHolder přečte KeyHolder.conf (např. klíč Red).
  4. isql se připojí a může provést SHOW DATABASE.
FlameRobin připojený k šifrované databázi Firebird pomocí klientských klíčů
Stejný vzor s FlameRobin.

gbak: načtení klíče na straně klienta vytvoří nešifrovaný soubor .fbk. Použijte gbak z frameworku s explicitními parametry -KEYFILE / -KEYNAME / -KEY, aby záloha zůstala šifrovaná.

nbackup: inkrementální kopie zůstávají šifrované.

Krok 4 - Zálohování a obnova

Standardní gbak nemůže otevřít produkční šifrovanou databázi (žádné klíče na serveru, žádný klíč od klienta). Framework obsahuje gbak, který šifruje zálohu stejným klíčem jako databázi. gbak -? přidává:

-KEYFILE   název souboru s klíči pro šifrování databáze a zálohy
-KEYNAME   název klíče, který se má použít pro šifrování
-KEY       hodnota klíče v zápisu "0x5A,"

Zálohování

Zadejte klíč, aby gbak mohl přečíst databázi a zašifrovat .fbk - buď soubor s klíči (stejné rozložení jako KeyHolder.conf), nebo explicitní hodnotu. Zálohování nešifrované databáze s těmito přepínači stále vytvoří šifrovanou zálohu.

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

S -KEY musíte stále zadat -KEYNAME.

Obnova

Stejný princip: soubor s klíči nebo explicitní klíč. Obnova nešifrované zálohy s těmito přepínači vytvoří šifrovanou databázi.

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