Datenbank verschlüsseln / entschlüsseln FB 4.02 - Linux Mint v21.1 Cinnamon

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Gerd
Beiträge: 235
Registriert: Di 1. Okt 2019, 17:13

Hallo, bfuerchau.

Danke fürs Schauen und den Link. :)
Das wäre dann aber die IBSurgeon Ltd.

Ich hatte bei IBPhoenix angefragt. (Weil ich auf die Schnelle nicht erkennen konnte, ob IBSurgeon auch für Linux bereitstellt.) Aber auch IBPhoenix hat bei sich dort sinngemäß stehen: ... für Firebird 3.0 und höher ...

Wenn ich keine anderen Vorschläge erhalte, dann erstelle ich einen entsprechenden Symlink erstellen. Wird schon funktionieren ...


Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Gerd
Beiträge: 235
Registriert: Di 1. Okt 2019, 17:13

Das ist nur zur Veranschaulichung für die kommenden Beiträge gedacht.

Man sieht hier die Strukturen von:
Firebird 3.0.10,
Firebird 4.0.2,
Firebird 5.0_Beta1 und
IBPhoenix Plug-in
Strukturen_unmittelbar_nach_Entpacken.png
Strukturen_unmittelbar_nach_Entpacken.png (180.78 KiB) 19555 mal betrachtet

Viele Grüße
Gerd
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Benutzeravatar
martin.koeditz
Beiträge: 446
Registriert: Sa 31. Mär 2018, 14:35

Hallo Gerd,

ich freue mich schon auf deine Berichte. Laufen die FB-Instanzen bei dir parallel auf einer Maschine?

Gruß
Martin
Martin Köditz
it & synergy GmbH
Gerd
Beiträge: 235
Registriert: Di 1. Okt 2019, 17:13

martin.koeditz hat geschrieben: Mo 19. Jun 2023, 08:30 Hallo Gerd,

... Laufen die FB-Instanzen bei dir parallel auf einer Maschine?

Gruß
Martin

Hallo Martin.

Das Bild "Strukturen_unmittelbar_nach_Entpacken.png" (s.o.) soll nicht zeigen, dass bei mir diese FB-Instanzen parallel auf einer Maschine laufen. Bei mir läuft 'nur' Firebird 4.0.2 unter Linux Mint v21.1 Cinnamon.

Dieses Bild soll zwei Sachen veranschaulichen und festhalten:

1. Es gibt Unterschiede im 'plugins'-Verzeichnis. Die sind so nicht dokumentiert, was das Testen wollen des Beispiels 'DbCrypt' in Fierebird 4 (und wohl auch in Firebird 5 Beta1) nicht leichter macht.

2. Es soll auch die Struktur des Plug-in IBP-DbCrypt (IBPhoenix) etwas visualisieren. Nur, damit man das mal sieht.


* * *
Zum aktuellen Stand der Dinge - für alle.
* * *

Von einem, der auszog, eine lokale Firebird 4 Datenbank zu verschlüsseln.

Die Dokumentation zum Plug-in IBP-DbCrypt ist aus meiner Sicht nicht gerade üppig. Die folgenden Quellen habe ich konsultiert:
:: Plug-in Seite von IBPhoenix

:: Plug-in Dateien
README.dbcrypt-ibphoenix.txt (23 Zeilen)
README.dbcrypt-services.txt (86 Zeilen)
KeyFile.conf (50 Zeilen)
firebird.conf.dbcrypt.in (6 Zeilen)
Callback.conf (5 Zeilen)


:: Firebird 4.0 Sprachreferenz

Bei meiner bisherigen Suche im Internet nach Informationen zum Plug-in IBP-DbCrypt wurde ich nicht wirklich fündig. Ich stoße da auf Suchergebnisse, die sich meist mit Plug-in-Meldungen beschäftigen. Zu diesen Meldungen komme ich aber unter "IV Baustellen".

I Plug-in

Handels-Name (vermutlich): IBP-DbCrypt
Bezugsort: IBPhoenix
Version: 1.2.5-2
Maschinen Architektur: x86_64
Plug-in-Auswahl für Betriebssystem: Linux 64 bit (hier: Linux Mint v21.1 Cinnamon, 64 bit)
Firebird - Version: 4.0 (hier: LI-V4.0.2.2816 Firebird 4.0)
Netzwerk: localhost

II Voraussetzungen und Vorgehen

Quelle: IBPhoenix

II/1 SSE2-Befehlssatz
Maschinen Architektur ermitteln mittels Befehlseingaben in das GNOME-Terminal:

Code: Alles auswählen

gerd@gerd-MS-7641:~$ uname -m
x86_64
(-m steht für --machine; Maschinen Architektur)

Code: Alles auswählen

gerd@gerd-MS-7641:~$ lscpu
Architektur: x86_64
Kurz gesagt: Wo x86_64 draufsteht, ist auch SSE2 drin.

Der Aufruf des Dialogs "Systeminformation" (Programme-Menü - Einstellungen - Systeminformation) ist am einfachsten und bringt benötigte Zusatzinformationen.

model: AMD Athlon II X2 250
bits: 64
Flags: ht lm nx pae sse sse2 sse3 sse4a svm

Dies ist eine von mir stark gekürzte Darstellung der Ausgabe des Dialogs "Systeminformation".
Hier erfährt man, ob der Befehlssatz SSE2 unterstützt wird. Ja er wird.

II/2 libtommath-Bibliotheken müssen installiert sein.

1.2.0-6build3 ist die zurzeit aktuelle Version von libtommath1.

Über das Terminal kann man sich bei Bedarf detaillierte Informationen zum Paket libtommath1 anzeigen lassen, indem man dort eingibt:

Code: Alles auswählen

apt-cache show libtommath1
Dieses Paket enthält also die Bibliothek, die zur Ausführung von Programmen benötigt wird, die LibTomMath verwenden. LibTomMath ist eine freie, quelloffene, portable zahlentheoretische Bibliothek für ganze Zahlen, die vollständig in C geschrieben ist.
Nun, bekannt ist, dass Firebird während der Erstinstallation nach diesem Paket verlangt.
Falls es noch nicht installiert ist, lässt sich das mittels der folgenden Eingaben in das GNOME-Terminal ändern:

Code: Alles auswählen

sudo apt-get install libtommath1
Weitere interessante Informationen:
Der Forum-Teilnehmer jhoehne hat seine Vorgehensweisen geschildert, die ich seinerzeit erfolgreich nachvollziehen konnte und die mir geholfen haben.

II/3 GLIBC_2.14+ erforderlich

Von der GNU-C-Bibliothek (GLIBC) liegt bereits die Version 2.37 vor. Ich gehe davon aus, dass sie Abwärskompatibel bis hin zur erforderlichen Version 2.14 ist. Meldungen, die GLIBC_2.14+ fordern, gab es bisher nicht.

Nur wer weis, was er tut, kann sich das Paket als gepacktes Archiv glibc-2.37.tar.xz (ca. 18 MB) von distrowatch herunterladen und installieren.

Im Folgenden eine Simulation - es wird nichts verändert:

Code: Alles auswählen

apt-get install -s libc6
...
libc6 ist schon die neueste Version (2.35-0ubuntu3.1).
...
Das bedeutet, dass auf meinem Rechner Linux Mint v21.1 die GLIBC_2.35 vorhanden ist.


III Aufgetretene Unklarheiten

Zur Veranschaulichung habe ich Vorgehensweisen und Meldungen unter 'IV Baustellen' mit jeweiligen Status erfasst.

:: Es steht geschrieben:
"Entpacken Sie die Verschlüsselungsbibliotheken und Konfigurationsdateien nach $(root_dir)/plugins"
Warum nur die Verschlüsselungsbibliotheken und Konfigurationsdateien? Welche genau wären das? Warum nicht auch die Plug-in-Verzeichnisse (z. B. bin oder include, ...)?

:: Warum wird im Plug-in im Verzeichnis "bin" das Firebird Tool "gbak" (840,6 kB) mitgeliefert?
Was passiert, wenn dieses Tool nach /opt/firebird/bin verbracht wird? Dort gibt es bekanntlich ein Tool mit dem gleichen Namen, nur ist es dort 2,5 MB groß und natürlich jünger, da Firebird 4.

:: Wie lautet denn nun der plugin_name, damit das DDL-Statement

Code: Alles auswählen

ALTER {DATABASE | SCHEMA}   ENCRYPT WITH plugin_name [KEY key_name ]
funktioniert. Etwa IBP_DbCrypt oder auch libAES128.so?
Klar ist, benutzt man einen falschen 'plugin_name', erhält man Meldungen wegen fehlgeschlagener Aktualisierung der Metadaten.


IV Baustellen (Erledigt / Offen)

Erledigt
Plug-in Name für DDL-Statement
Nachdem ich offenbar den richtigen 'plugin_name' (AES128) herausgefunden hatte, kam diese Art Meldung nicht mehr:

IBP_DbCrypt (Falsch)

Code: Alles auswählen

SQL> ALTER DATABASE ENCRYPT WITH IBP_DbCrypt;
Statement failed, SQLSTATE = HY024
unsuccessful metadata update
-ALTER DATABASE failed
-Crypt plugin IBP_DBCRYPT failed to load
SQL> 
libAES128.so (Falsch)

Code: Alles auswählen

SQL> ALTER DATABASE ENCRYPT WITH libAES128.so;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 38
-.
SQL> 
Übrigens, im Internet finden sich mehrere Beiträge von Anwendern, welche auch diese Namensgebung erst klären mussten.
Erst ein DDL-Statement dieser Art bringt mich einen Schritt weiter, KEY wurde bewusst weggelassen:

AES128 (Richtig)
SQL> ALTER DATABASE ENCRYPT WITH AES128;
Statement failed, SQLSTATE = 08004
unsuccessful metadata update
-ALTER DATABASE failed
-Missing database encryption key for your attachment
-Plugin AES128:
-Crypt key is not set
SQL>


Offen
:: Meldung -Crypt key is not set

Obwohl ich einen Schlüssel MyKey.txt unter /opt/firebird/ angelegt und die KeyFile.conf mit KeyHolderPlugin = KeyFile bearbeitet habe. Hoffe, dass es nur eine Frage der Zeit ist.

Vorgehensweise:

Code: Alles auswählen

gerd@gerd-MS-7641:~$ isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CONNECT 'localhost:/home/gerd/Firebird/Datenbanken/adressen.fdb' USER 'sysdba' PASSWORD 'geheimes_passwort';
Database: 'localhost:/home/gerd/Firebird/Datenbanken/adressen.fdb', User: SYSDBA
SQL> ALTER DATABASE ENCRYPT WITH AES128 KEY KeyFile;
Statement failed, SQLSTATE = 08004
unsuccessful metadata update
-ALTER DATABASE failed
-Missing database encryption key for your attachment
-Plugin AES128:
-Crypt key is not set
SQL> 
Erledigt
:: Eintrag firebird.log
"Value KeyFile configured for alias KeyHolderPlugin is not a fully qualified path name, ignored"
Deutsch: "Der für den Alias KeyHolderPlugin konfigurierte Wert KeyFile ist kein vollständig qualifizierter Pfadname und wird ignoriert."
Dieser Eintrag wird von Firebird seit dem Beginn der Nutzung des Plug-in geschrieben.
27.06.2023, 16:23 Uhr - Nachtrag:
Die "firebird.conf.dbcrypt.in" und die "KeyFile.conf" wurden jeweils durch ihre Originale ersetzt. Das erwartete Ergebnis trat ein. Der Eintrag in der "firebird.log" wird nun von Firebird nicht mehr vorgenommen.


Bis hier her erstmal.


Viele Grüße
Gerd
Zuletzt geändert von Gerd am Mi 28. Jun 2023, 10:57, insgesamt 1-mal geändert.
Linux Mint 21.3 Virginia Cinnamon 6.0.4
Firebird 5.0.0., Embedded, ISQL: LI-V5.0.0.1306
Lazarus 3.0.0 - FPC 3.2.2
Benutzeravatar
martin.koeditz
Beiträge: 446
Registriert: Sa 31. Mär 2018, 14:35

Hallo Gerd,

vielen Dank für deinen (wieder mal) ausführlichen Beitrag. Bleibe gespannt, wie es ausgeht.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Antworten