DOAG 2009 Konferenz 17. - 19.11.2009 Nürnberg Klaus Reimers ORDIX AG, Köln kr@ordix.de www.ordix.de
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 2
Intention Kundenprojekte - Gehaltsdaten geheim halten - Daten vor dem DBA verbergen - Daten vor Missbrauch von außen schützen (Hexeditor) Fragestellungen - Wie mache ich den Schlüssel sicher? - Eher ein Schutz gegen Intern oder gegen Extern? 3
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 4
Symmetrische Klartext Chiffretext Entschlüsselung Chiffretext Klartext t 5
dbms_obfuscation_toolkit Merkmale Algorithmen: - DES (56 Bit) - 3DES (128 Bit oder 192 Bit) --> Standard 128 Bit Datentypen - RAW - VARCHAR2 Funktionen - ENCRYPT / DECRYPT zum Verschlüsseln und Entschlüsseln - GETKEY zur Generierung eines Schlüssels - MD5 zur Generierung eines Hashwerts Zu verschlüsselnder Wert muss ganzzahliges Vielfaches von 8 sein 6
dbms_obfuscation_toolkit Beispiel DECLARE v_key v_chiffretext v_klartext BEGIN VARCHAR2(50) := '1234567890123456'; VARCHAR2(50); VARCHAR2(50); -- Verschluesseln... v_chiffretext := DBMS_OBFUSCATION_TOOLKIT.DES3Encrypt( input_string => 'ORDIX AG', key_string => v_key ); DBMS_OUTPUT.PUT_LINE('Chiffretext: ' v_chiffretext); -- Entschluesseln... v_klartext := DBMS_OBFUSCATION_TOOLKIT.DES3Decrypt( TOOLKIT DES3Decrypt( input_string => v_chiffretext, key_string => v_key ); DBMS_OUTPUT.PUT_LINE('Klartext: ' v_klartext); END; / Chiffretext: k;32.å^ Klartext: ORDIX AG 7
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 8
dbms_crypto Merkmale (I) Algorithmen: - DES und 3DES - AES128, AES192 und AES256 - RC4 Datentypen - RAW und PLS_INTEGER - CLOB und BLOB Funktionen - ENCRYPT / DECRYPT - HASH und MAC --> Einbahnstraße - RANDOM --> Generierung eines Schlüssels 9
dbms_crypto Merkmale (II) Block Cipher: - Art der ECB Electonic Codebook - je Block unabhängige gg CBC Cipher Block Chaining - über XOR Verknüpfung mit vorigem Block CFB Cipher Feedback - ist kleiner als eigentlicher Block OFB Output Feedback - ähnlich CFB, einiger Blocks des vorigen Blocks werden verknüpft Cipher Padding - Auffüllen auf fixe Größe des zu verschlüsselten Werts PKCS5 - Password Based Cryptography Standard NONE - Anwender muss selbst für korrekte Länge sorgen ZERO - Auffüllen mit Nullen 10
dbms_crypto Beispiel DECLARE v_schluessel v_text v_typ VARCHAR2(16) := '1234567890123456'; VARCHAR2(2000) := 'ORDIX AG'; NUMBER := DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5; RAW(2000); RAW(2000); v_verschl_textverschl v_entschl_text BEGIN v_verschl_text := DBMS_CRYPTO.ENCRYPT ( src => UTL_I18N.STRING_TO_RAW (v_text, 'AL32UTF8'), typ => v_typ, key => UTL_I18N.STRING_TO_RAW (v_schluessel, 'AL32UTF8') ); DBMS_OUTPUT.PUT_LINE('Verschlüsselter Text: ' v_verschl_text); v_entschl_text := DBMS_CRYPTO.DECRYPT ( src => v_verschl_text, typ => v_typ, key => UTL_I18N.STRING_TO_RAW (v_schluessel, 'AL32UTF8') ); DBMS_OUTPUT.PUT_LINE('Entschlüsselter Text: ' END; / UTL_I18N.RAW_TO_CHAR(v_entschl_text)); TO text)); Verschlüsselter Text: 41905AA13250D84EDA45FEBEC689A441 Entschlüsselter Text: ORDIX AG 11
Vergleich Package Feature DBMS_CRYPTO DBMS_OBFUSCATION_ TOOLKIT s- algorithmen DES, 3DES, AES, RC4, 3DES_2KEY DES, 3DES Padding Formen PKCS5, zero Nicht unterstützt Block cipher chaining i modes CBC, CFB, ECB, OFB CBC Hash Algorithmen SHA-1 MD5 Hash Algorithmen mit Schlüssel (MAC) HMAC_MD5, HMAC_SH1 Nicht unterstützt Schlüsselgeneratoren RAW, NUMBER, RAW, VARCHAR2 BINARY_INTEGER Datenbank Datentypen RAW, PLS_INTEGER, CLOB, BLOB RAW, VARCHAR2 12
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 13
Schlüsselmanagement Schlüssel kann abgelegt werden: in der Datenbank in einer Datei im Betriebssystem in der Datenbankanwendung Schlüssel kann durch den Anwender selbst eingegeben werden 14
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 15
Transparente Datenverschlüsselung Data Dictionary Verschlüsselter Tabellenschlüssel Master Schlüssel l Tabellenschlüssel im Klartext Entschlüsselung Wallet Spalte1 Spalte2 Spalte3 Klartext Klartext Verschlüsselter Text Verschlüsselter Text Tabelle Klartext Klartext 16
Wallet Tresor zur Aufbewahrung des Schlüssels l Default: - $ORACLE_BASE/admin/$ORACLE_SID/wallet SID/wallet Definition innerhalb der sqlnet.ora Erzeugung g des Wallets per Kommando ALTER SYSTEM SET ENCRYPTION KEY AUTHENTICATED BY geheim ; Öffnen des Wallets ALTER SYSTEM SET ENCRYPTION WALLET OPEN AUTHENTICATED BY geheim ; 17
Salt-Prinzip gleiche Werte werden unterschiedlich verschlüsselt keine Anlage eines Index möglich bei Verwendung von SALT - daher auch keine SALT Spalte auf Primary Key Unique Constraints grundsätzlich keine möglich auf - Foreign Key 18
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 19
Tablespace Encryption create tablespace encrypt_ts datafile /oracle11/oradata/kr/encrypt_ts01.dbf size 50m encryption using aes256 default storage (encrypt); auf Tablespace-Ebene nicht modifizierbar Wallet muss beim Zugriff geöffnet sein 20
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 21
Secure Files Speicherung von LOBs - Basicfile - Securefile Oracle SecureFiles bieten die folgenden Möglichkeiten: - Komprimierung - Deduplication - Transparente Algorithmen: 3DES168 / AES128 / AES192 / AES256 Eine NO SALT - wird nicht unterstützt Exportieren, Importieren ist nur mit Data Pump möglich 22
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 23
Data Pump Encryption Parameter ENCRYPTION - ALL - DATA_ONLY - METADATA_ONLY - ENCRYPTED_COLUMNS_ONLY - NONE ENCRYPTION_ALGORITHM - AES128 / AES192 / AES256 ENCRYPTION_MODE - PASSWORD / TRANSPARENT (ASO) / DUAL (ASO) ENCRYPTION_PASSWORDPASSWORD 24
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 25
Backup Encryption Mögliche sarten Transparent Encryption - bei geöffnetem Wallet (ASO) Password Encryption - Bei der Erzeugung der Backups muss ein Passwort angegeben werden, das entsprechend beim Restore abgefragt g wird. Dual Mode Encryption - ASO + Password 26
Agenda Intention PL/SQL - dbms_obfuscation_toolkit toolkit - dbms_crypto - Schlüsselmanagement Transparente - je Spalte - je Tablespace - Securefiles Data Pump RMAN Fazit 27
Fazit Schutz vor? - Internen (DBA) - Externem Datenklau Schlüsselmanagement - Wo liegt der Schlüssel? - Wer öffnet das Wallet? über PL/SQL - Programmieraufwand - Individuelle Lösung Transparente - Kostenpflichtig (ASO) - Unabhängig von der Entwicklung 28
Vielen Dank für Ihre Aufmerksamkeit! einfach.gut.beraten. 31