이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. English

IBSurgeon 플러그인으로 Firebird 데이터베이스를 암호화하는 방법: 서버에 설치하고, 애플리케이션에서 연결하고, 개발자 도구를 사용하고, 암호화된 백업/복원을 실행합니다. 전체 제품: Encryption Framework.

1단계 설치 스크립트

Windows: GitHub에서 설치 프로그램 실행 - English · Português.

Linux: IBSurgeon/firebirdlinuxinstall의 기본 Firebird 설치 프로그램을 -crypt-only 옵션과 함께 사용하세요.

수동 설치 사전 요구 사항

  • Firebird 3.0.3 이상 (3.x, 4.x, 5.x). 이전 버전은 이 데모에서 지원되지 않습니다.
  • 평가판 플러그인 아카이브 및 Delphi/Lazarus/.NET/PHP 예제 (아래).
  • plugins 폴더의 평가판 DbCrypt.conf.
  • 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비트 Windows 64비트 Linux 32비트 Linux 64비트
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
}

모든 데이터베이스에 키 홀더를 적용하려면 firebird.confKeyHolderPlugin = KeyHolder를 추가하거나, 아카이브의 샘플 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는 플러그인 이름이고, redKeyHolder.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를 도구 폴더에 복사하세요.

그러면 명령줄 도구는 해당 fbclient 복사본 옆의 plugins\KeyHolder.conf를 사용합니다. 다른 앱은 여전히 키를 직접 전달합니다.

isql connecting to an encrypted database via client-side KeyHolder
클라이언트 측 키 로드: fbclient → KeyHolder → KeyHolder.conf.
  1. 도구가 시작되고 fbclient.dll을 로드합니다.
  2. fbclientfirebird.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   DB 및 백업 암호화 키가 포함된 파일 이름
-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