このページは機械翻訳されています。英語の原文をお読みください。 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を追加するか、アーカイブ(ステップ3)からサンプルのfirebird.confをコピーします。

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.dlllibcrypto-1_1-x64.dlllibssl-1_1-x64.dllgbak.exefirebird.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.dllplugins/keyholder.dllDbCrypt.conf
libssl-1_1-x64.dlllibcrypto-1_1-x64.dllfbcrypt.dll
暗号化対応gbakgbak.exefirebird.msg
オプション:plugins/KeyHolder.conf(開発用キー)、firebird.conf
fbclient.dllfbcrypt.dlllibcrypto-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、gfixnbackup などのツールは、コード変更なしで動作します。

クライアントのビット数を合わせます:

  • Firebird コマンドラインツール(isqlgfixnbackup)はサーバーに合わせます - 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