<Insert Picture Here> Verschlüsseln als Überlebensstrategie Netzwerk- und Datenverschlüsselung in Oracle Datenbanken Heinz-Wilhelm Fabry ORACLE Deutschland GmbH 1
Agenda Datentransfer über das Netzwerk Daten in der Datenbank Backups Dump-/Exportdateien Agenda Datentransfer über das Netzwerk Daten in der Datenbank Backups Dump-/Exportdateien 2
Daten verschlüsselt übertragen x#!s%u3 Nur verfügbar mit Advanced Security Option Schutz vor Informationsverlust und vor Veränderung von Daten im Transfer Verschlüsseln der Übertragung von Oracle-Daten Vom Server zum Client Vom Client zum Server Von Server zu Server Unterstützt gängige Verfahren RC4, DES, Triple-DES, AES, MD5, SHA-1 Informationsquelle Netzwerk Login (Benutzername / Password) SQL Abfragen Ergebnisdaten ALTER USER IDENTIFIED BY pwort SQL*Plus: password Verschlüsselt Klartext Klartext Klartext Verschlüsselt 3
Daten verschlüsselt übertragen - Wie? SQLNET.ORA sqlnet.encryption_server sqlnet.encryption_types_server sqlnet.crypto_seed sqlnet.crypto_checksum_server sqlnet.crypto_checksum_types_server sqlnet.encryption_client sqlnet.encryption_types_client sqlnet.crypto_checksum_client sqlnet.crypto_checksum_types_client = required = AES192 = 'abcdefg1234567' = required = MD5 = required = AES192 = required = MD5 Verschlüsselung einschalten Client REJECTED ACCEPTED REQUESTED REQUIRED REJECTED aus aus aus Keine V.* Server ACCEPTED aus aus** ein ein REQUESTED aus ein ein ein REQUIRED Keine V.* ein ein ein * Keine Verbindung ** Default ist Accepted (Verschlüsselung und Prüfsummenverfahren sind ausgeschaltet) 4
Konfiguration mit Oracle Net Manager Daten verschlüsselt übertragen - Ergebnis Vorher... Nachher... 5
Agenda Datentransfer über das Netzwerk Daten in der Datenbank Backups Dump-/Exportdateien Verschlüsselt speichern Schutz vor unbefugtem Lesen der Daten Es geht NICHT darum, das Lesen oder Ändern über die SQL-Schnittstelle zu unterbinden Es geht um Verschlüsselung auf der Platte, im Backup, im Dump-File-Set Schutz vor Insidern Schutz z.b. bei entsorgten Platten Schutz z.b. beim Verlust auf dem Transport ins Schließfach 6
Daten verschlüsselt speichern Seit Oracle8i mittels PL/SQL-API Verfügbar in der Standard und der Enterprise Edition DBMS_OBFUSCATION_TOOLKIT Unterstützt ausschließlich den DES- bzw. 3DES- Algorithmus und wird nicht mehr empfohlen DBMS_CRYPTO ab Oracle Database 10g Seit Oracle Database 10g verfügbar innerhalb von Advanced Security (Option) Transparent Data Encryption (TDE) Verschlüsselung von Tabellenspalten Seit Oracle Database 11g Verschlüsselung von Tablespaces Arbeiten mit DBMS_CRYPTO Anwendungen / Trigger rufen das API auf Kein automatisches Schlüsselmanagement Package stellt Prozeduren und Funktionen zur Verfügung Zum Verschlüsseln und Entschlüsseln Zum Arbeiten mit Prüfsummen 7
Verschlüsseln mit DBMS_CRYPTO CREATE OR REPLACE FUNCTION crypt (eingabe IN VARCHAR2) RETURN RAW IS v_rohdaten RAW(200); v_schluessel RAW(32); -- 256-bit v_verschluesselung PLS_INTEGER := DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_ZERO; BEGIN SELECT schluessel INTO v_schluessel FROM schluesseltabelle WHERE sysdate BETWEEN startdatum AND nvl(enddatum, sysdate); v_rohdaten := DBMS_CRYPTO.ENCRYPT( src => UTL_I18N.STRING_TO_RAW (eingabe, 'AL32UTF8'), typ => v_verschluesselung, key => v_schluessel); RETURN v_rohdaten; END; Transparent Data Encryption (TDE) Anwendung SQL-Schnittstelle entschlüsselt Daten ASO Netzwerk- Verschlüsselung Daten werden verschlüsselt auf die Platte geschrieben Daten sind verschlüsselt im Backup Verschlüsseln von Tabellenspalten Unterstützte Datentypen CHAR NCHAR VARCHAR2 NVARCHAR2 NUMBER BINARY_DOUBLE BINARY_FLOAT DATE TIMESTAMP RAW Übernimmt das Key Management 8
TDE - Nicht unterstützte Features Foreign Keys LOBs Logical Standby Transportable Tablespace Oracle Streams Synchrones / asynchrones Change Data Capture (CDC) LogMiner Direct Path Insert Materialized View Logs Master Key und Tabellenschlüssel Master Key im PKCS#12 Wallet Tabellenschlüssel verschlüsselt durch Master Key (Wallet kann auch für Secure Backup genutzt werden) Tabellenschlüssel verschlüsselt Daten 9
TDE einsetzen - Vorbereitung In sqlnet.ora WALLET-Speicherort angeben (ENCRYPTION_)WALLET_LOCATION = (SOURCE = (METHOD=FILE) (METHOD_DATA= (DIRECTORY= $ORACLE_BASE/admin/<SID>/wallet))) Kein Speicherort in SQLNET.ORA angegeben Wallet (ewallet.p12) in $ORACLE_BASE/admin/<SID>/wallet Verzeichnis muß existieren Initialisieren des Master Key durch ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "einpasswort" einpasswort ist das Wallet-Passwort, nicht der Master Key TDE - Ändern des Master Key Zwingend nach Kompromittiertem Master Key Spezifischen Compliance-Regeln ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "einpasswort" Alle Tabellen-Schlüssel werden neu verschlüsselt KEINE erneute Verschlüsselung der Spalten Passwort und Master Key sind unabhängig voneinander Ändern des Passwortes über Oracle Wallet Manager (owm) 10
Funktionstrennung & Aufgabenverteilung DBA startet Datenbank Security-DBA öffnet Wallet Nach jedem STARTUP ALTER SYSTEM SET WALLET OPEN IDENTIFIED BY "einpasswort" Alternativ: Erzeugen eines Auto Open Wallet mit dem Oracle Wallet Manager (owm) TDE nutzen CREATE TABLE kunden (name VARCHAR2(30), id NUMBER ENCRYPT USING 'AES192' IDENTIFIED BY einpasswort NO SALT); ALTER TABLE produkte MODIFY (...); Verschlüsselungsalgorithmus muß für alle Spalten einer Tabelle identisch sein TDE und Indexe Gleichheitssuche über B*Tree-Index nur mit NO SALT LIKE-Vergleiche oder Range-Scans über eine verschlüsselte Indexspalte sind nicht möglich Es ist nicht möglich, Spalten in Tabellen von SYS zu verschlüsseln 11
TDE - Verschlüsselung ändern Verschiedene Algorithmen Standard ist AES192 Wechsel von Schlüsseln möglich (Master Key s.o.) Auf Tabellenebene ALTER TABLE kunden REKEY Wechsel des Algorithmus möglich ALTER TABLE kunden REKEY USING 'AES256' Durchgeführt als UPDATE auf alle Zeilen Nur lesender Zugriff auf die Tabelle Kein DML Alternativ mit DBMS_REDEFINITION TDE - Verschlüsselung aufheben ALTER TABLE produkte MODIFY (preis decrypt) 12
TDE - Tablespace-Verschlüsselung Tablespaces beim ersten Anlegen als verschlüsselt deklarieren Tablespaces nicht nachträglich zu ver- oder entschlüsseln TDE-Wallet muß vorhanden und geöffnet sein Transport vorhandener Daten in verschlüsselte Tablespaces mit DATA PUMP, CTAS, ALTER TABLE... MOVE CREATE TABLESPACE sicheristsicher DATAFILE '$ORACLE_BASE/dbdata/orcl/tdedatei.dbf' SIZE 20G ENCRYPTION USING 'AES128' DEFAULT STORAGE (encrypt); Hinweise: Tablespace-Verschlüsselung KEINERLEI funktionale Einschränkungen Unterstützt z.b. sämtliche Segment-Typen Bei LOBs alternativ über Secure Files CREATE TABLE tabelle (region VARCHAR2(20), a BLOB) LOB(a) STORE AS SECUREFILE (ENCRYPT USING 'AES128') Unterstützt z.b. INDEX RANGE SCANs und FOREIGN KEYs Verwendet immer SALT Verschlüsselung wirksam auch für REDO-Einträge, UNDO und TEMPORARY SEGMENTE Schlüssel ist in 11.1 NICHT änderbar 13
Hardware Security Module (HSM) Speichern des Schlüssels für die Spaltenverschlüsselung in einem HSM in der Datenbank ab Version 11.1.0.6 Ab 11.1.0.7 auch für Tablespace-Verschlüsselung Erleichtert das Schlüsselmanagement in verteilten Umgebungen z.b. mit Data Guard und RAC Standard PKCS #11-API erlaubt Rückgriff auf Module unterschiedlicher Anbieter Oracle-Zertifizierungen beachten (AYFSC*) Ver- / Entschlüsseln findet nach wie vor auf dem Server statt *Ask Your Friendly Sales Consultant HSM implementieren Vorgehensweise zum Einsatz eines HSM ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "benutzerid:passwort" * Vorgehensweise beim Wechsel von Wallet zu HSM ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY "benutzerid:passwort" MIGRATE USING "walletpasswort" Eventuell verwendete Public Key-Verschlüsselung wird umgesetzt auf symmetrische Verschlüsselung (AES) Nachträglicher Einsatz eines HSM für die Tablespace- Verschlüsselung NICHT möglich * Aus der Management-Umgebung des HSM 14
LOB-Verschlüsselung mit TDE Ausschließlich mit SecureFiles CREATE TABLE tabelle (region VARCHAR2(20), a BLOB) LOB(a) STORE AS SECUREFILE ( ENCRYPT USING 'AES128') TDE einsetzen: Vorbereitung im EM 15
TDE einsetzen: Vorbereitung im EM TDE einsetzen: Vorbereitung im EM 16
TDE einsetzen: Vorbereitung im EM TDE einsetzen: Implementieren im EM 17
Agenda Datentransfer über das Netzwerk Daten in der Datenbank Backups Dump-/Exportdateien Backups verschlüsseln mit RMAN Nur verfügbar mit Advanced Security Option Hintergrund Unverschlüsseltes Backup kann in die falschen Hände geraten RMAN> SET ENCRYPTION IDENTIFIED BY <password> ON FOR ALL TABLESPACES; RMAN> BACKUP DATABASE; Nutzt TDE wallet Automatisches Entschlüsseln bei Restore Restore benötigt Backup Wallet Passwort für Wallet 18
Oracle Secure Backup File Systeme Setzt ASO nicht voraus Verfügbar für SE und EE Ist vollständig RMAN kompatibel Kostengünstig Vollständig in Enterprise Manager integriert Sichert auf Band Unterstützt alle gängigen Tape Libraries und Laufwerke Sichert Datenbanken Dateisysteme aller Art (einschließlich OCFS) Oracle Homes, Oracle Application Server,... Linux, Unix Win., OCFS, Filer Datenbanken RMAN Oracle Backup Agenda Datentransfer über das Netzwerk Daten in der Datenbank Backups Dump-/Exportdateien 19
Data Pump-Verschlüsselung Nur verfügbar mit Advanced Security Option Steuerung über Parameter ENCRYPTION ALL / DATA_ONLY / ENCRYPTED_COLUMNS_ONLY / METADATA_ONLY / NONE ENCRYPTION_ALGORITHM AES128 / AES192 / AES256 ENCRYPTION_MODE DUAL / PASSWORD / TRANSPARENT ENCRYPTION_PASSWORD expdp scott/tiger encryption=all... directory=dmpdir... 20