Firebird Encryption Demo
Како шифровати 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 - пробни кључ.
Корак 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.dllDbCrypt.conf(пробни кључ)KeyHolder.dllKeyHolder.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.conflibssl-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. Setup Login”.
- Унесите име кључа и вредност (за кључ RED, копирајте вредност из
KeyHolder.conf). - Можете шифровати/дешифровати тим кључем - шифровање захтева активну везу и траје одређено време.
- Кликните на Execute query да покренете једноставан SELECT кроз шифровану везу.
Демо се повезује само преко TCP/IP-а - XNET није подржан. Пример јасно приказује кораке повезивања, трансакције и упита како бисте могли да копирате образац.
Корак 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-а. Остале апликације и даље саме прослеђују кључ.
- Алатка се покреће и учитава
fbclient.dll. fbclientчитаfirebird.conf, видиKeyHolderPlugin=KeyHolderи учитаваplugins\keyholder.dll.- KeyHolder чита
KeyHolder.conf(нпр. кључ Red). isqlсе повезује и може да извршиSHOW DATABASE.
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