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.

Ich fange mal hier mit einem Thema an, dass mitnichten als trivial angesehen werden sollte.

Das geht schon mal damit los, dass man Suchmaschinen anwerfen muss, um zu geeigneten - ich nenne sie mal Verschlüsselung-Plugins - zu gelangen, die dann mittels DDL-Anweisungen die Datenbankdatei *.fdb verschlüsseln / entschlüsseln.

Das Thema liegt mir aber auch am Herzen, weil es womöglich (unerfahrene) Firebird Anwender gibt, die denken, dass ihre Datenbankdatei *.fdb schon alleine deswegen sicher ist, weil man sich zu ihr nur mittels Eingabe des korrekten USER-Namen und USER-Passworts anmelden kann und man doch für die Datenzugriffe eh allerhand Rechte vergeben hat.

Also ich beginne mal. Bin selbst gespannt, wie sich das Thema entwickelt.

In der Firebird 4.0 Sprachreferenz (deutsch) steht oben auf Seite 670:
"Unter Linux befindet sich ein Beispiel-Plugin namens libDbCrypt_example.so in plugins/."

Also bei mir befinden sich im genannten Verzeichnis

/opt/firebird/plugins/

nur diese *.so-Bibliotheken:

::libChaCha.so
::libEngine13.so
::libfbtrace.so
::libLegacy_Auth.so
::libLegacy_UserManager.so
::libSrp.so
::libudr_engine.so

Habt ihr die libDbCrypt_example.so bei euch im Verzeichnis?
Wenn ja, was leistet sie?
Welches Verschlüsselungs-Plugin benutzt ihr und wie ist es mit dessen Zusatzinformationen bezüglich Firebird Einbindung wirklich bestellt?


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
bfuerchau
Beiträge: 490
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Mich würde da eher intesessieren, wie man komplexere Where-Klauseln und somit Indizierung auf verschlüsselten Daten durchführen kann.
Denn Mustersuche wie "like" oder "similar" sind dann eher äußerst langsam, da ja jede Information vor einer Prüfung erst entschlüsselt werden muss.
Selbst Abfragen wie >=/<=/</>/between lassen sich nicht mehr indizieren, da die Verschlüsselung die Reihenfolge nicht mehr gewährleistet.
Wenn man dann mal ein paar 100Tausend oder Millionen Datenzeilen hat, wird jeder Query zur Geduldsprobe.
Gerd
Beiträge: 235
Registriert: Di 1. Okt 2019, 17:13

Hallo, bfuerchau.

Ich gehe gleich mal auf Deinen - wie ich finde wichtigen - Interesseneinwurf ein.

Klar, dämmerts einem; Eine Verschlüsselung macht den Umgang mit den Daten in der Firebird Datenbank nicht unbedingt komfortabler und schneller.

Aber, jetzt sind wir doch erst ein mal hier an der Stelle, wo überhaupt erst einmal die Funktionalität VERSCHLÜSSELN initiiert werden soll - also ganz am Anfang.

Grob gesagt, stelle ich mir das (nur mit Firebird-Mitteln und des Plugins) so vor:

Verschlüsseln:

Code: Alles auswählen

ALTER {DATABASE}
ENCRYPT WITH plugin_name [KEY key_name ]
Statusanzeige des Verschlüsselns:

Code: Alles auswählen

SELECT MON$CRYPT_PAGE * 100 / MON$PAGES
FROM MON$DATABASE;
Entschlüsseln:

Code: Alles auswählen

ALTER {DATABASE} DECRYPT
Wenn mit der verschlüsselten Firebird Datenbank gearbeitet werden soll, wird zuvor eine Entschlüsslung stattfinden.
Hat sie stattgefunden, dann sollten sich so Themen, wie von Dir oben (z. B. komplexere Where-Klauseln, ...) angebracht, erledigt haben - oder etwa nicht?


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

Vorab: ich selbst habe noch nicht mit verschlüsselten DBs gearbeitet. Mich würde es aber wundern, wenn irgendwelche Funktion dann nicht mehr funktionieren. Ich sehe das eigentlich wie Gerd. Dass es Abstriche in der Performance gibt, ist sicherlich denkbar. Ein Vergleich eines verschlüsselten und unverschlüsselten Systems wäre hier mal interessant.

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

martin.koeditz hat geschrieben: Mi 14. Jun 2023, 11:23 ... Ein Vergleich eines verschlüsselten und unverschlüsselten Systems wäre hier mal interessant.

Gruß
Martin
Hallo.

Ich habe auf den Webseiten von firebirdsql.org diese zwei Hinweise zu Firebird Verschlüsselungs-Plugins gefunden:


1. IBSurgeon - Firebird Encryption Plugin Framework (FEPF)

Soll eine starke AES256-Verschlüsselung, für Firebird 4.0 und 3.0 bieten. Man erfährt dort weiter:

:: Wie man die Datenbank mit dem Firebird-Verschlüsselungs-Plugin von IBSurgeon
:: Hinweis auf eine Anleitung in der die wichtigsten Funktionen der Verschlüsselung
a) wie man seine Firebird-Datenbank auf dem Server verschlüsselt,
b) wie man eine verschlüsselte Client-Verbindung implementiert und
c) wie man ein Backup durchführt.

Eine Demo des FEPF ist voll funktionsfähig, mit der einzigen Ausnahme, dass sie bis zum 30. März 2023 befristet ist.
(Übersetzt mit DeepL(R))

Der Termin ist schon vorbei. Man könnte bei Bedarf anfragen. Unklar ist auf die Schnelle geblieben, ob das FEPF auch für Linux (32/64bit) und MacOSX (32/64bit) verfügbar ist.
Mit den dortigen Preisen fürs Plugin und ggfls. Services muss halt jeder selbst klarkommen ...


***


2. IBPhoenix - Verschlüsselungs-Plugin für Firebird 3.x und höher

"IBPhoenix hat ein Verschlüsselungs-Plugin für Firebird 3.x und höher entwickelt, das mit AES128 oder AES256 kompatibel ist.
AES128 gilt als "Business-Grade-Sicherheit", während AES256 "militärisch" ist. Beachten Sie, dass AES256 einen Leistungsnachteil gegenüber AES128 hat."
(Übersetzt mit DeepL(R); Quelle: https://www.ibphoenix.com/products/soft ... tionplugin)

"Das Plugin ist derzeit für Windows (32/64bit), Linux (32/64bit) und MacOSX (32/64bit) verfügbar.
Das Plugin wird derzeit auf einer Reihe von Websites eingesetzt und zeigt keine Probleme mit der Leistung oder Zuverlässigkeit.
Wenn Sie es dennoch testen möchten, kontaktieren Sie uns bitte direkt und wir werden Ihnen einen entsprechenden Download zur Verfügung stellen."
(Übersetzt mit DeepL(R); Quelle: https://www.ibphoenix.com/products/soft ... tionplugin)

Man könnte bei Bedarf anfragen. Mit den dortigen Preisen muss halt jeder selbst klarkommen ...

Hat jemand Erfahrungen mit dem Verschlüsselungs-Plugin von 2. (IBPhoenix)?
Und auch hier gilt; mit den Preisen muss halt jeder selbst zurechtkommen.

Tja, und dann finde ich im Internet leider kein weiteres Firebird-Verschlüsselungs-Plugin.

Vielleicht lässt sich ja die Firebird Foundation Inc. dazu überreden mal ein befristet lauffähiges Verschlüsslung-Plugin Firebird v5 beizulegen. Die Beta-Phase wäre doch ideal dafür.


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
bfuerchau
Beiträge: 490
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Was das Entschlüsseln angeht, so muss bei der Verwendung von Indizierung der Index bereits entschlüsselt vorliegen.
Wenn der Index bei jedem Query (where, join on, group by) entschlüsselt aufgebaut werden müsste, hätte man keinen Vorteil mehr.
Da dann die Daten allerdings ungeschlüsselt in der DB liegen und ich über jede Spalte einen Index liegen kann, ist die Verschlüsselung der DB bei Diebstahl obsolet, da die Indexdaten ja ebenso auswertbar wären.
Gerd
Beiträge: 235
Registriert: Di 1. Okt 2019, 17:13

bfuerchau hat geschrieben: Do 15. Jun 2023, 09:55... und ich über jede Spalte einen Index liegen kann, ist die Verschlüsselung der DB bei Diebstahl obsolet, da die Indexdaten ja ebenso auswertbar wären. ...
Hallo, bfuerchau,

Ach Menno, Du bist schon in Regionen, wo hier offenbar (?) noch keiner war. Ganz lieb von mir gemeint. :)

Mir geht es in diesem Thema darum, ein sogenanntes Plug-in Verschlüsselung zur Anwendung in Firebird zu bringen. Da geht es zunächst um solche Fragen:
:: Welche Plug-ins gib es dafür überhaupt?
:: Sind sie leicht oder eher kompliziert in der Handhabung?

Und wenn das dann mal geklärt ist, könnte fließend ein neues Thema aufgemacht werden: Plug-in XYZ - welche Vorteile / Nachteile?

Jedenfalls habe ich gestern (14.06.2023) IBPhoenix angemailt und um testweise Überlassung deren Plug-in (siehe bitte oben unter 2.) gebeten.
Warten wir mal ...


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
bfuerchau
Beiträge: 490
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Das liegt ggf. bei mir daran, dass ich mir vorher überlege, was ich genau brauche um dann zu entscheiden, ob ich es probieren will.
Das Thema Ver-/Entschlüsselung gibts schließlich auch bei anderen DBM's.
Ich arbeite z.B. auch mit der DB2 for i (AS/400), die das auch kann.
Da ist es sogar noch schlimmer, da ein Index wie eine View direkt gelesen werden kann.
Dazu gibts auch noch die Sicherheitsrichtlinie, welche Felder / Inhalte darf welcher User denn sehen. Dann bleiben die Daten auch verschlüsselt beim Lesen, was aber Typmässig nicht zulässg ist, somit wird ein Default oder, wenn erlaubt, ein NULL gelesen.
Nun gibt es halt Programme, die Daten lesen, zum Editieren anbieten und wieder
a) Zurück schreiben
b) in andere Dateien kopieren
Im Fall a) kein Problem, da nicht sichtbare Felder auch nicht zurückgeschrieben werden.
Aber was ist mit Fall b)?
Im Ziel ist das Feld auch verschlüsselt. Da ich aber den Originalwert nicht lesen durfte schreibe ich in das Ziel nun den Default. Bedeutet also, dass die Information, die zur Verarbeitung wichtig ist, dann verloren geht.

Also bei der Verschlüsselung muss die gesamte Verarbeitungslogik auf allen Ebenen der Verarbeitung geprüft und dementsprechend angepasst werden.
Einfach nur Verschlüsseln und hoffen, dass es gut geht, wirds wohl nicht werden.
Deswegen haben wir das insbesonders bei Altanwendungen sein gelassen, da da z.T. dei Sourcecodes gar nciht emhr vorliegen.
Und Geld für neue Anwendungen liegt nuch auch nicht überall so herum.
Gerd
Beiträge: 235
Registriert: Di 1. Okt 2019, 17:13

Gerd hat geschrieben: Do 15. Jun 2023, 10:45 ...
Jedenfalls habe ich gestern (14.06.2023) IBPhoenix angemailt und um testweise Überlassung deren Plug-in (siehe bitte oben unter 2.) gebeten.
Warten wir mal ...


Viele Grüße
Gerd

Hallo.

Habe nun freundlicherweise das "IBPhoenix Encryption Plugin for Firebird 3.0" von IBPhoenix für Linux 64 bit zu Testzwecken zur Verfügung gestellt bekommen. :)

Im Download-Archiv des Plug-ins befindet sich u. a. im Verzeichnis

/opt/firebird/plugins/

die Bibliothek libEngine12.so
Ich denke, das ist dann Firebird v3.0


Nun, bei mir (ich verwende Firebird 4.02 unter Linux Mint - 64 bit) liegt u.a. in diesem Verzeichnis die Bibliothek libEngine13.so - also so:
/opt/firebird/plugins/libEngine13.so

Wie sollte man denn bitte mit so etwas verfahren - damit es auch für Firebird v4.0 funktioniert?
(Soll das heißen, dass IBPhoenix kein solches Plug-in für Firebird v4 hat - jetzt, wo sogar schon Firebird 5 an die Tür klopft?)
:: die libEngine12.so da einfach zusätzlich mit reinkopieren?
:: wäre das mit einem Symlink korrekt lösbar?
:: sieht jemand noch einen anderen Ansatz - dann bitte her damit.

Danke.


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
bfuerchau
Beiträge: 490
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Laut diesem Link gibts das wohl auch für 4.0x:
https://ib-aid.com/en/firebird-encrypti ... framework/
Antworten