Ова страница је машински преведена. Прочитајте енглески оригинал. English

Како шифровати Firebird базу података помоћу IBSurgeon додатка: инсталација на серверу, повезивање из апликације, коришћење развојних алата и шифрована резервна копија/враћање. Комплетан производ: Encryption Framework.

Скрипте за инсталацију у 1 кораку

Windows: покрените инсталатер са GitHub-а - Енглески · Португалски.

Linux: користите стандардни Firebird инсталатер са IBSurgeon/firebirdlinuxinstall са -crypt-only.

Предуслови за ручну инсталацију

  • Firebird 3.0.3 или новији (3.x, 4.x, 5.x). Старије верзије нису подржане у овом демо примеру.
  • Пробне архиве додатака и Delphi/Lazarus/.NET/PHP примери (испод).
  • Пробни DbCrypt.conf у plugins фолдеру.
  • SYSDBA корисник. Ако недостаје: зауставите Firebird, покрените isql -user sysdba employee.fdb, извршите CREATE USER SYSDBA PASSWORD 'masterkey';, покрените сервис.

Водич користи 64-битни Firebird. За 32-битни, узмите датотеке из одговарајуће WINDOWS_32bit (или Linux 32-битне) архиве.

Преузимања

ExampleApplications.zip - компајлирани демо клијент и изворни код. DbCrypt.conf - пробни кључ.

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

Корак 1 - Почетно шифровање (Windows пример)

Поставите нешифровану базу података на погодну локацију, на пример C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB.

1. Алијас у databases.conf

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

Да бисте применили кључ на сваку базу података, додајте KeyHolderPlugin = KeyHolder у firebird.conf, или копирајте пример firebird.conf из архиве (корак 3).

2. Датотеке у server/plugins

Из FB_NN_WINDOWS_64bit\Server\plugins:

  • DbCrypt.dll
  • DbCrypt.conf (пробни кључ)
  • KeyHolder.dll
  • KeyHolder.conf - текстуална датотека са кључевима само за развој. Немојте је испоручивати крајњим корисницима.

3. Датотеке у корен Firebird-а

Из FB_NN_WINDOWS_64bit\Server: fbcrypt.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, gbak.exe, firebird.msg и опционо firebird.conf.

4. Шифровање помоћу 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; (или gstat -h) треба да пријави Database encrypted.

dbcrypt је име додатка; red је кључ дефинисан у KeyHolder.conf. На Linux-у, наведите имена под наводницима и водите рачуна о великим и малим словима:

alter database encrypt with "DbCrypt" key Red;

Након овог корака сервер чува кључеве у KeyHolder.conf (развојни / администраторски режим).

Шта се налази на серверу, а шта на клијенту

Сервер Клијент
plugins/dbcrypt.dll, plugins/keyholder.dll, DbCrypt.conf
libssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dll
Шифровани gbak: gbak.exe, firebird.msg
Опционо: plugins/KeyHolder.conf (развојни кључеви), firebird.conf
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dll
Опционо: firebird.conf

Корак 2 - Повезивање из клијентске апликације

Да бисте симулирали корисничко окружење, преименујте или уклоните plugins/KeyHolder.conf. Додатак тада очекује кључ од апликације. ExampleApplications.zip садржи компајлирани Delphi XE8 клијент, као и Lazarus, .NET и PHP примере.

Пре уобичајеног повезивања, апликација шаље кључ (неколико додатних позива). Након тога, коришћење Firebird-а је непромењено. Delphi демо је под Example_Delphi_EnhancedCryptTestClient\Win32\Debug:

  1. Подесите путању или алијас базе података под „1. Setup Login”.
  2. Унесите име кључа и вредност (за кључ RED, копирајте вредност из KeyHolder.conf).
  3. Можете шифровати/дешифровати тим кључем - шифровање захтева активну везу и траје одређено време.
  4. Кликните на Execute query да покренете једноставан SELECT кроз шифровану везу.

Демо се повезује само преко TCP/IP-а - XNET није подржан. Пример јасно приказује кораке повезивања, трансакције и упита како бисте могли да копирате образац.

Encryption demo client: login, key name, and execute query
Демо клијент: пријава, кључ, шифровање/дешифровање, тест упит.
Encryption demo client showing connection steps against an encrypted Firebird database
Једноставна секвенца повезивања / трансакције / упита.

Корак 3 - Алатке за програмере и командну линију

Од Encryption Framework v2021, fbclient.dll може сам да учита кључеве. IBExpert, FlameRobin, SQLLY, Database Workbench, RedExpert, gfix, nbackup и сличне алатке тада раде без измена кода.

Ускладите битност клијента:

  • Firebird алатке командне линије (isql, gfix, nbackup) одговарају серверу - копирајте Windows_64bit\WindowsClientPart_64bit поред тих бинарних датотека.
  • Већина GUI алатки је 32-битна - копирајте Windows_32bit\WindowsClientPart_32bit у фасциклу алатке.

Алатке командне линије тада користе plugins\KeyHolder.conf поред те копије fbclient-а. Остале апликације и даље саме прослеђују кључ.

isql connecting to an encrypted database via client-side KeyHolder
Учитавање кључа на клијентској страни: fbclient → KeyHolder → KeyHolder.conf.
  1. Алатка се покреће и учитава fbclient.dll.
  2. fbclient чита firebird.conf, види KeyHolderPlugin=KeyHolder и учитава plugins\keyholder.dll.
  3. KeyHolder чита KeyHolder.conf (нпр. кључ Red).
  4. isql се повезује и може да изврши SHOW DATABASE.
FlameRobin connected to an encrypted Firebird database using client-side keys
Исти образац са FlameRobin-ом.

gbak: учитавање кључа на клијентској страни производи нешифровани .fbk. Користите gbak из оквира са експлицитним -KEYFILE / -KEYNAME / -KEY како би резервна копија остала шифрована.

nbackup: инкременталне копије остају шифроване.

Корак 4 - Резервна копија и враћање

Стандардни gbak не може да отвори производну шифровану базу података (нема кључева на серверу, нема кључа од клијента). Оквир испоручује gbak који шифрује резервну копију истим кључем као и базу података. gbak -? додаје:

-KEYFILE   име датотеке са кључем(евима) за шифровање базе и резервне копије
-KEYNAME   име кључа који ће се користити за шифровање
-KEY       вредност кључа у "0x5A," нотацији

Резервна копија

Проследите кључ како би gbak могао да прочита базу података и шифрује .fbk - било датотеку са кључем (исти распоред као KeyHolder.conf) или експлицитну вредност. Резервна копија нешифроване базе са овим прекидачима и даље производи шифровану резервну копију.

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

Са -KEY и даље морате проследити -KEYNAME.

Враћање

Иста идеја: датотека са кључем или експлицитни кључ. Враћање нешифроване резервне копије са овим прекидачима ствара шифровану базу података.

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