Demostración de Firebird Encryption
Cómo cifrar una base de datos Firebird con el plugin de IBSurgeon: instalar en el servidor, conectar desde una aplicación, usar herramientas de desarrollo y realizar copias de seguridad/restauración cifradas. Producto completo: Encryption Framework.
Scripts de instalación en 1 paso
Windows: ejecute el instalador desde GitHub - English · Português.
Linux: use el instalador estándar de Firebird de IBSurgeon/firebirdlinuxinstall con -crypt-only.
Requisitos previos para una instalación manual
- Firebird 3.0.3 o superior (3.x, 4.x, 5.x). Las versiones anteriores no son compatibles con esta demo.
- Archivos de plugin de prueba y ejemplos de Delphi/Lazarus/.NET/PHP (abajo).
- DbCrypt.conf de prueba en
plugins. - Un usuario SYSDBA. Si falta: detenga Firebird, ejecute
isql -user sysdba employee.fdb, ejecuteCREATE USER SYSDBA PASSWORD 'masterkey';, inicie el servicio.
El tutorial usa Firebird de 64 bits. Para 32 bits, tome los archivos del archivo WINDOWS_32bit correspondiente (o Linux de 32 bits).
Descargas
ExampleApplications.zip - cliente demo compilado y fuentes. DbCrypt.conf - clave de prueba.
Paso 1 - Cifrado inicial (ejemplo en Windows)
Coloque una base de datos sin cifrar en un lugar conveniente, por ejemplo C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB.
1. Alias en databases.conf
crypt = C:\Temp\EMPLOYEE30\EMPLOYEE30.FDB
{
KeyHolderPlugin = KeyHolder
}
Para aplicar el key holder a todas las bases de datos, agregue KeyHolderPlugin = KeyHolder en firebird.conf, o copie el firebird.conf de muestra del archivo (paso 3).
2. Archivos en server/plugins
Desde FB_NN_WINDOWS_64bit\Server\plugins:
DbCrypt.dllDbCrypt.conf(clave de prueba)KeyHolder.dllKeyHolder.conf- archivo de texto con claves solo para desarrollo. No lo distribuya a usuarios finales.
3. Archivos en la raíz de Firebird
Desde FB_NN_WINDOWS_64bit\Server: fbcrypt.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, gbak.exe, firebird.msg y opcionalmente firebird.conf.
4. Cifrar con 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; (o gstat -h) debe informar Database encrypted.
dbcrypt es el nombre del plugin; red es una clave definida en KeyHolder.conf. En Linux, use comillas y respete mayúsculas/minúsculas:
alter database encrypt with "DbCrypt" key Red;
Después de este paso, el servidor guarda las claves en KeyHolder.conf (modo desarrollo / administración).
Qué va en el servidor vs el cliente
| Servidor | Cliente |
|---|---|
plugins/dbcrypt.dll, plugins/keyholder.dll, DbCrypt.conflibssl-1_1-x64.dll, libcrypto-1_1-x64.dll, fbcrypt.dllgbak cifrado: gbak.exe, firebird.msgOpcional: plugins/KeyHolder.conf (claves de desarrollo), firebird.conf
|
fbclient.dll, fbcrypt.dll, libcrypto-1_1.dllOpcional: firebird.conf
|
Paso 2 - Conectar desde una aplicación cliente
Para simular un sitio de cliente, renombre o elimine plugins/KeyHolder.conf. El plugin entonces espera la clave desde la aplicación. ExampleApplications.zip incluye un cliente compilado en Delphi XE8 más ejemplos de Lazarus, .NET y PHP.
Antes de la conexión habitual, la aplicación envía la clave (unas pocas llamadas adicionales). Después de eso, el uso de Firebird no cambia. La demo de Delphi está en Example_Delphi_EnhancedCryptTestClient\Win32\Debug:
- Establezca la ruta de la base de datos o el alias en “1. Setup Login”.
- Ingrese el nombre y valor de la clave (para la clave RED, copie el valor de
KeyHolder.conf). - Puede cifrar/descifrar con esa clave - el cifrado requiere una conexión activa y toma tiempo.
- Haga clic en Execute query para ejecutar un SELECT simple a través de la conexión cifrada.
La demo se conecta solo por TCP/IP - XNET no es compatible. El ejemplo mantiene los pasos de conexión, transacción y consulta explícitos para que pueda copiar el patrón.
Paso 3 - Herramientas de desarrollo y línea de comandos
Desde Encryption Framework v2021, fbclient.dll puede cargar claves por sí mismo. IBExpert, FlameRobin, SQLLY, Database Workbench, RedExpert, gfix, nbackup y herramientas similares funcionan sin cambios de código.
Haga coincidir la arquitectura del cliente:
- Las herramientas de línea de comandos de Firebird (
isql,gfix,nbackup) coinciden con el servidor - copieWindows_64bit\WindowsClientPart_64bitjunto a esos binarios. - La mayoría de las herramientas GUI son de 32 bits - copie
Windows_32bit\WindowsClientPart_32biten la carpeta de la herramienta.
Las herramientas de línea de comandos usan entonces plugins\KeyHolder.conf junto a esa copia de fbclient. Otras aplicaciones aún pasan la clave por sí mismas.
- La herramienta se inicia y carga
fbclient.dll. fbclientleefirebird.conf, veKeyHolderPlugin=KeyHoldery cargaplugins\keyholder.dll.- KeyHolder lee
KeyHolder.conf(por ejemplo, clave Red). isqlse conecta y puede ejecutarSHOW DATABASE.
gbak: la carga de clave del lado del cliente produce un .fbk sin cifrar. Use el gbak del framework con -KEYFILE / -KEYNAME / -KEY explícitos para que la copia de seguridad permanezca cifrada.
nbackup: las copias incrementales permanecen cifradas.
Paso 4 - Copia de seguridad y restauración
El gbak estándar no puede abrir una base de datos cifrada en producción (sin claves en el servidor, sin clave desde el cliente). El framework incluye un gbak que cifra la copia de seguridad con la misma clave que la base de datos. gbak -? añade:
-KEYFILE nombre de un archivo con la(s) clave(s) de cifrado de BD y copia de seguridad
-KEYNAME nombre de una clave a utilizar para el cifrado
-KEY valor de clave en notación "0x5A,"
Copia de seguridad
Proporcione la clave para que gbak pueda leer la base de datos y cifrar el .fbk - ya sea un archivo de claves (misma estructura que KeyHolder.conf) o un valor explícito. Hacer una copia de seguridad de una base de datos no cifrada con estos interruptores aún produce una copia de seguridad cifrada.
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
Con -KEY aún debe pasar -KEYNAME.
Restauración
Misma idea: archivo de claves o clave explícita. Restaurar una copia de seguridad no cifrada con estos interruptores crea una base de datos cifrada.
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