FirebirdSQL logo

Firebird bietet einen Plugin-Mechanismus zum Verschlüsseln der in der Datenbank gespeicherten Daten.Dieser Mechanismus verschlüsselt nicht die gesamte Datenbank, sondern nur Datenseiten, Indexseiten und Blobseiten.

Um die Datenbankverschlüsselung zu ermöglichen, müssen Sie ein Datenbankverschlüsselungs-Plugin erwerben oder schreiben.

Note

Firebird enthält standardmäßig kein Plugin zur Datenbankverschlüsselung.

Das Verschlüsselungs-Plugin-Beispiel in examples/dbcrypt führt keine echte Verschlüsselung durch, es ist nur als Beispiel gedacht, wie ein solches Plugin geschrieben werden kann.

Unter Linux befindet sich ein Beispiel-Plugin namens libDbCrypt_example.so in plugins/.

Das Hauptproblem bei der Datenbankverschlüsselung ist die Speicherung des geheimen Schlüssels.Firebird bietet Unterstützung für die Übertragung des Schlüssels vom Client, dies bedeutet jedoch nicht, dass die Speicherung des Schlüssels auf dem Client der beste Weg ist;es ist nur eine der möglichen Alternativen.Das Speichern von Verschlüsselungsschlüsseln auf derselben Festplatte wie die Datenbank ist jedoch eine unsichere Option.

Zur effizienten Trennung von Verschlüsselung und Schlüsselzugriff sind die Daten des Datenbankverschlüsselungs-Plugins in zwei Teile unterteilt, die Verschlüsselung selbst und den Inhaber des geheimen Schlüssels.Dies kann ein effizienter Ansatz sein, wenn Sie einen guten Verschlüsselungsalgorithmus verwenden möchten, aber Ihre eigene benutzerdefinierte Methode zum Speichern der Schlüssel haben.

Nachdem Sie sich für Plugin und Schlüsselhalter entschieden haben, können Sie die Verschlüsselung durchführen.

Eine Datenbank verschlüsseln

Syntax
ALTER {DATABASE | SCHEMA}
  ENCRYPT WITH plugin_name [KEY key_name]
Table 1. ALTER DATABASE ENCRYPT-Anweisungsparameter
Parameter Beschreibung

plugin_name

Der Name des Verschlüsselungs-Plugins

key_name

Der Name des Verschlüsselungsschlüssels

Verschlüsselt die Datenbank mit dem angegebenen Verschlüsselungs-Plugin.Die Verschlüsselung beginnt unmittelbar nach Abschluss dieser Anweisung und wird im Hintergrund ausgeführt.Der normale Betrieb der Datenbank wird während der Verschlüsselung nicht gestört.

Die optionale KEY-Klausel gibt den Namen des Schlüssels für das Verschlüsselungs-Plugin an.Das Plugin entscheidet, was mit diesem Schlüsselnamen geschehen soll.

Note

Der Verschlüsselungsprozess kann mit dem Feld MON$CRYPT_PAGE in der virtuellen Tabelle MON$DATABASE überwacht oder mit gstat -e auf der Kopfseite der Datenbank angezeigt werden.gstat -h liefert auch begrenzte Informationen über den Verschlüsselungsstatus.

Die folgende Abfrage zeigt beispielsweise den Fortschritt des Verschlüsselungsprozesses in Prozent an.

select MON$CRYPT_PAGE * 100 / MON$PAGES
  from MON$DATABASE;
Note

SCHEMA ist derzeit ein Synonym für DATABASE;dies kann sich in einer zukünftigen Version ändern, daher empfehlen wir immer DATABASE zu verwenden

docnext count = 1

Eine Datenbank entschlüsseln

Syntax
ALTER {DATABASE | SCHEMA} DECRYPT

Entschlüsselt die Datenbank mit dem konfigurierten Plugin und Schlüssel.Die Entschlüsselung beginnt unmittelbar nach Abschluss dieser Anweisung und wird im Hintergrund ausgeführt.Der normale Betrieb der Datenbank wird während der Entschlüsselung nicht gestört.

Note

SCHEMA ist derzeit ein Synonym für DATABASE;dies kann sich in einer zukünftigen Version ändern, daher empfehlen wir immer DATABASE zu verwenden