Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  1/2006
suche: 
Dieser Artikel richtet sich an Oracle Administratoren und Entwickler, die sich in der Version Oracle Database 10g Release 2 mit der Daten- verschlüsselung beschäftigen.

Glossar

TDE
Transparent Data Encryption (deutsch: Transparente Datenverschlüsselung).
Package
Stellt eine Sammlung logisch zusammengehöriger Funktionalitäten (Prozeduren, Funktionen, Typdeklarationen,... ) dar.
Export Utility (EXP)
Werkzeug zum Extrahieren von Strukturen und Daten aus einer Oracle Datenbank.
Data Pump
Werkzeug zum Extrahieren und Importieren von Strukturen und Daten einer Oracle Datenbank ab der Version Oracle Database 10g (siehe ORDIX News 2/2004).
Wallet
Aufbewahrungsort der Zertifikate.
OWM
Oracle Wallet Manager, Tool zur Erzeugung und Bearbeitung von Wallets.

Datenverschlüsselung mit Oracle 10g Release 2:

TDE − Top Secret mit Oracle 10gR2

Um sensible Daten vor unberechtigten Zugriffen zu schützen, werden verschiedene Techniken eingesetzt. Neben Authentifizierung und Zugriffskontrolle kann zusätzlich Datenverschlüsselung eingesetzt werden. Dieser Artikel behandelt das neue Feature "Transparente Datenverschlüsselung" im Release 2 von Oracle 10g.

Datenverschlüsselung Version 8 und 10g Release 1

Mit Hilfe der Datenverschlüsselung wird ein zusätzlicher Schutz vor unberechtigten Zugriffen von Dritten auf sensible Daten und deren Manipulation und Missbrauch erreicht, da die Daten mit einem Verschlüsselungsalgorithmus und einem Schlüssel codiert werden. Seit der Version 8i stellt Oracle das Package DBMS_OBFUSCATION_TOOLKIT zur Verfügung. In der Version 10g Release 1 kam das Package DBMS_CRYPTO hinzu.

Datenverschlüsselung Version 10g Release 2

In dem nun beschriebenen Release 2 von Oracle 10g gibt es die so genannte "Transparente Datenverschlüsselung" (Transparent Data Encryption, kurz TDE) als zusätzliche Möglichkeit, die Daten innerhalb der Datenbank (also auch auf der Platte) und auch im Netzwerk zu verschlüsseln (siehe Abbildung 1).

Mit TDE ist es möglich, Tabellenspalten ohne zusätzlichen Programmieraufwand zu verschlüsseln. Selbst beim Einsatz von Views entsteht kein administrativer Mehraufwand.

Fast Start Failover
Abb. 1: Die transparente Datenverschlüsselung in ihrer schematischen Übersicht.

Ist TDE für eine oder mehrere Spalten einer Tabelle eingericht, findet bereits beim INSERT in eine Tabelle automatisch eine Verschlüsselung der Daten statt. Bei der Abfrage der Daten aus einer Tabelle werden die Daten automatisch entschlüsselt. TDE unterstützt 3DES (Data Encryption Standard) und AES (Advanced Encryption Standard) Verschlüsselungsalgorithmen.

Anwendung der transparenten Datenverschlüsselung

Die Verschlüsselung kann sehr einfach eingerichtet werden. Soll eine Tabellenspalte mit TDE verschlüsselt werden, so kann diese Information bereits beim Anlegen einer Tabelle mit dem Schlüsselwort ENCRYPT angegeben werden. In Abbildung 2 wird eine Tabelle mitarbeiter mit einer verschlüsselten Spalte gehaltsgruppe unter Nutzung des Verschlüsselungsalgorithmus "AES128" angelegt.

Um eine Tabellenspalte im Nachhinein als verschlüsselt zu kennzeichnen, kann das Kommando ALTER TABLE verwendet werden. Die einzelnen, verschlüsselten Tabellenspalten lassen sich über die Datenbanksicht DBA_ENCRYPTED_COLUMNS ermitteln. Die Verwendung beider Kommandos wird in Abbildung 2 gezeigt.

Mit dem Schlüsselwort DECRYPT kann eine Verschlüsselung auf einer Tabellenspalte wieder deaktiviert werden.

Master-Schlüssel

Wird eine Spalte mit dem Kommando ENCRYPT als verschlüsselt gekennzeichnet, so wird implizit ein Schlüssel für die Tabelle zum Verschlüsseln erzeugt und im Data Dictionary abgelegt. Aus Sicherheitsgründen wird dieser Schlüssel mit einem Master-Schlüssel verschlüsselt.

Wallet

Der Master-Schlüssel wird wiederum in einem Wallet abgelegt, das sich standardmäßig auf dem Datenbankserver unter dem in Abbildung 2 genannten Verzeichnis befindet. Die Ablage der Wallets kann in der sqlnet.ora nach Bedarf geändert werden. Das Wallet dient zur Ablage von Master-Schlüsseln. Es zeichnet sich dadurch aus, dass es durch ein Passwort geschützt ist und über den Oracle Wallet Manager (OWM) verwaltet werden kann.

Ein Wallet kann mit dem Kommando ALTER SYSTEM erzeugt werden. In Abbildung 2 wird ein Wallet angelegt und sein Kennwort auf "geheim" gesetzt. Gleichzeitig wird es für die transparente Datenverschlüsselung geöffnet.

Wallet und Tabellen

Beim Einfügen von Datensätzen in eine Tabelle mit einer verschlüsselten Spalte wird zuerst der Master-Schlüssel aus dem Wallet ermittelt. Danach wird mit Hilfe des Master-Schlüssels der Tabellenschlüssel aus dem Data Dictionary entschlüsselt. Anschließend werden mit dem entschlüsselten Tabellenschlüssel die in die Tabelle eingefügten Daten verschlüsselt und in der Datenbank abgelegt.

Außerdem besteht die Möglichkeit, bereits verschlüsselte Tabellenspalten mit einem neuen Kodieralgorithmus neu zu verschlüsseln. Mit der REKEY Anweisung in Abbildung 2 wird für die Tabelle mitarbeiter ein neuer Tabellenschlüssel erzeugt. Gleichzeitig werden die bereits verschlüsselten Spalten mit dem Kodieralgorithmus "AES256" neu verschlüsselt.

CREATE TABLE mitarbeiter(
ma_nr         NUMBER,
name          VARCHAR2(30),
gehaltsgruppe VARCHAR2(9) ENCRYPT USING 'AES128');
ALTER TABLE mitarbeiter
   MODIFY (gehaltsgruppe ENCRYPT USING 'AES128');
ALTER TABLE mitarbeiter MODIFY (gehaltsgruppe DECRYPT);
SELECT * FROM DBA_ENCRYPTED_COLUMNS;
Standard Wallet-Ablageverzeichnis für Master-Schlüssel:
$ORACLE_BASE/admin/$ORACLE_SID/wallet
Ändern der Wallet-Ablage auf dem Datenbankserver:
$ORACLE_HOME/network/admin/sqlnet.ora
ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY
"geheim";
ALTER TABLE mitarbeiter REKEY USING 'AES256';
expdp kg/kg ENCRYPTION_PASSWORD=geheim
TABLES=mitarbeiter
impdp kg/kg ENCRYPTION_PASSWORD=geheim
TABLES=mitarbeiter
Abb. 2: Sammlung beispielhafter Listings und Ablageverzeichnisse.

Data Pump und TDE

Beim Extrahieren von Daten in eine Datei mit dem Werkzeug Data Pump (ab Oracle Version 10) werden die Daten standardmäßig im Klartext (also unverschlüsselt) abgelegt. Lediglich eine Warnung weist darauf hin, dass eventuell verschlüsselte Daten aus einer Tabelle unverschlüsselt in eine Datei gespeichert werden.

Um die mit Data Pump erzeugten Dateien zu schützen, kann mit der Option ENCRYPTION_ PASSWORD ein Kennwort für die erzeugten Dateien festgelegt werden.

Sollen die mit Data Pump extrahierten Dateien wieder in eine Datenbank importiert werden, so wird das beim Exportieren festgelegte Kennwort benötigt.

Anmerkung: Das Export Utility (EXP) unterstützt keine mit TDE verschlüsselten Tabellen und kann solche somit auch nicht exportieren.

Symmetrische Verschlüsselung
Abb. 3: Vorgehensweise bei der symmetrischen Verschlüsselung.

Resümee zur Datenverschlüsselung und Performance

Das Ver- und Entschlüsseln beim Zugriff auf Daten stellt einen im Einzelfall minimalen Aufwand dar, der sich bei der Verarbeitung von Massendaten jedoch akkumulieren kann. Insbesondere beim Zugriff auf verschlüsselte, indizierte Attribute sollte man dies bedenken.

Die Performance beim TDE ist im Vergleich zu den anderen Verfahren im Hinblick auf verschlüsselte, indizierte Attribute besser, da auch die Indizes verschlüsselt abgelegt werden.

Die Verschlüsselung sollte demzufolge nur dann eingesetzt werden, wenn sensible Daten gespeichert werden sollen und eine hohe Sicherheit der Daten erforderlich ist.

Klaus Günther (info@ordix.de).