Eine encrypted firebird 3.0 datenbank ohne den benutzten schlüssel zu verändern, halte ich für nahzu unmöglich.
wie man das macht und was man ggf braucht findest du zum Beispiel hier
https://www.ibexpert.net/ibe/pmwiki....ptionPluginFB3
Wie und wo du in deiner applikation den benutzten key dann speicherst ist ein ganz anderes thema, aber ganz wichtig:
kein Finanzamt der welt wird in irgendeiner Software die Unveränderbarkeit von Daten fordern können, weil veränderungen
von Daten (zum Beispiel Lagerbestände) elementarer Bestandteil von Software ist.
Wenn du aber egal ob encrypted
db oder auch in einer normalen
DB sämtliche Änderungen sauber protokollierst
und bei jedem betroffenen Datensatz alle Änderungen im Protokoll hast, ist das wesentlich wichtiger, mit diesen
Informationen dem schnüffelnden Prüfer eine ausführliche Möglichkeit gibst, Veränderungen der Datensätze
nachsehen zu können.
Ob du dafür am Ende Trigger basierende Protkolldatensätze erstellst, oder ganz modern irgendwelche Blockchain
Techniken einbaust, ist als Medium ziemlich egal. Auf Anfrage solltest du in der Lage sein, technisch zu begründen,
warum du der Meinung bist, das deine Software Mechanismen eingebaut hat, die nachträglich gemachte Veränderungen
erkennbar protokolliert und auf Anfrage als Historie exportieren kannst.
Wenn du als Softwarehersteller, der den Key der Datenbank aber nun mal kennt, deinen Kunden aber
ein kleines Zusatzprogramm anbietest, mit dem zum Beispiel ein Restaurant Inhaber einfach mal
die Tagessumsätze ausbuchen kann, ohne das am Ende Datensätze überbleiben, dann wird das
niemals jemand finden können, es sei denn, das Finanzamt macht mal ein paar Testkäufe und
prüft dann ob die dabei erstellten umsätze in der Datenbank auch wirklich erkennbar vorhanden sind
(was ja vor kurzem einem Softwarehersteller mit ziemlich vielen Chinarestaurants als Kunden
so passiert ist und wo nun die beiden Gründer der Softwarefirma wohl im Knast sitzen ....)
Aufgrund aktueller Verordnungen wirst du bei der Sicherung der Datenbankinhalte mit ganz normalen
Sicherungsmechnismen und ggf per Trigger erstellen Datensatzänderungsprotokollen ganz gut klar kommen,
weil du im Kassenbereich sowieso nicht um die Nutzung von einer TSE
https://de.wikipedia.org/wiki/Techni...itseinrichtung
herumkommen wirst, weil nur da drin zertifizierte Hardware verbaut ist, die dein Kunde
seinem Prüfer auch glaubhaft als sicheren Mechanismus zeigen kann und gefordert ist.
Wenn auf dem Wege alle relevanten Dokumente erstellt wurde und in diesem System (zB der Kassendrucker)
sauber und vollständig gespeichert wurde, wird ein Prüfer jederzeit mit Stichproben in deiner Software
nachschauen können, ob die denn die gleichen Inhalte anzeigt.
Warum da wer was und wann geändert hat, solltest du in deiner Software ziemlich lückenlos anzeigen können
Beispiel:
Auf dem Bon und damit in der TSE steht ein verkauftes Schnitzel zu 7 €, der Preis in der Kasse ist aber
aktuell 14 €. Wenn der Prüfer das seltsam findet und deine Software nicht nachweisen kann, warum der preis
mal 7 Euro und mal 14 Euro ist, wird der ziemlich schnell davon ausgehen, das deine Software da nicht konsistent
ist und dein Kunde vorwerfen, das er vermutlich 14€ dafür kassiert hat, aber nur 7€ abgerechnet hat und damit
ziemlich einfach nachvollziehbar mit Hilfe deiner Software bescheisst. Kein schöner Moment für Fragen ....
Warum wirst du niemals etwas wie eine TSE Sicherheit in der Software haben können? Starte deine Software
in einer VM und niemand hindert dich ggf mit geeigneten Mitteln daran, beliebige Inhalte direkt im Arbeitsspeicher
zu manipulieren, ohne das deine Software davon überhaupt irgemand was merkt.
Es gibt übrigend auch zum Beispiel eine Banking Software von Oracle, bei der alle beteiligten Softwaremodule
so dermaßen gegen manipulation abgesichert sind, wie es nur gehen kann. Das hindert aber einen in den Betrug
involvierten Administrator, der aus welchen Gründen auch immer sämtliche Adminzugänge und Rechte an der
Software direkt auf Datenbankebene kennt oder benutzte Software reverse engineert und anpasst, da auch
einfach mal ein paar Konten zu manipulieren oder Records zu löschen. So was scheint bei Banken, die
genau so schnell vom Markt verschwinden, wie die gekommen sind, gar nicht mal so unüblich zu sein,
Mitarbeiter mit entsprechendem Wissen sind sehr gesuchte Arbeitskräfte in solchen unseriösen Unternehmen ...
Oder als Fazit: konzentrier dich auf Integration der TSE und versuche, deine Software so abzusichern,
das nicht jeder 08/15 Datenbank Browser da die Inhalte manipulieren kann.
In einer Firebird Datenbank, die nicht encrypted ist, änder ich dir nahezu alles an daten, was ich will, in IBExpert
ist mit Tools-Database Inside ein Werkzeug eingebaut, mit dem man nicht nur defekte Datenbanken retten kann, sondern
auch die Inhalte auslesen kann, egal ob irgendein Datenbanktrigger das verhindern will oder nur ein User da angeblich
reinkommt, weil das Modul gar keinen Firebird Server benutzt, sondern die Inhalte direkt ausliest und man schnell
per Hex Editor die Position findet, um sachen zu ändern, die per Software oder Firebird
SQL gar nicht gehen würde.
Im Vergleich zu anderen Datenbank ist der Aufbau einer
FB Db sogar noch ziemlich kompliziert.
Ähnliche Tools findet man zu fast allen Datenbankformaten oder nimmt einfach einen Hex Editor und try and error ...
Mit einer in FB3 encrypteten Datenbank, von der wir den Key nicht kennen, kannst du das Tool und auch einen
Hex Editor aber direkt vergessen.
Daher wäre das schon ein weg, sicherer zu sein, als ohne, meine Erfahrung sagt mir aber, das im Handels- oder
Dienstleistungsbereich ganz wenig Kunden auch nur drüber nachdenken, an den Daten was verändern zu können, wenn
der Hersteller der Software das nicht als Feature per Mund zu Mund Propaganda streut. Das Knast Risiko muss
dann aber jeder für seine eigene Lebensplanung abwägen ...