DB2 Encryption Möglichkeiten der Verschlüsselung von Daten mit DB2 Bordmitteln inklusive der Datenbankverbindung 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Agenda • • • • • Vorstellung Motivation / Warum Verschlüsselung Bevor man anfängt….. Möglichkeiten der Implementierung Beispiele der Verschlüsselung mit DB2 10.5 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Mein erster Vortrag auf einer Course…… seit 10 Jahren COURSE !! GSE DB2 LUW 17.12.-18.12.2015 - Regensburg Ferdinand Prahst – efpe d@ta Warum komme ich auf die COURSE • fachfremd • Fachdiskussion innerhalb und außerhalb der IT – „alte Hasen und ihr Erfahrungsschatz“ – Vortrag über Whisky an der Bar • Eigene Vorträge als Beitrag zum Wissenstransfer – Thema meiner Diplomarbeit – „CICS-Papst“ Ebert als Vorbild 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Vorstellung • • • • Ferdinand Prahst 39 Jahre seit 2000 selbständig im Bereich DB2 LUW NEU : seit Oktober 2015 Papa von Zwillingen 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Motivation / Warum Verschlüsselung ? Beweggründe • Gesetze – sensitive Daten (Geheimhaltung) – personenbezogene Daten (Gesundheitswesen) • Projekt / Fachabteilung • Zugriffsbeschränkung für DBAs (Compliance) – Einfacher mit „no data access“ 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Bevor man anfängt • • • • Mit Augenmaß / KISS !!!! Nicht „alles oder nichts“ Genaue Anforderung Viel Lärm um nichts 3 Bereiche der Verschlüsselung • ruhende Daten Encryption Expert (kostenpfl.) • aktive daten • Verbindungen – db2set DB2COMM=SSL – TrustedContext -> Benutzer erbt Berechtigung wenn er aus der richtigen Umgebung kommt 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Verschlüsselung innerhalb der DB / Verschlüsseln von Spalten (1/2) Tabelle anlegen oder bereits angelegt Column Level Encryption 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Verschlüsselung innerhalb der DB / Verschlüsseln von Spalten (2/2) Row-Column (Cell) or Set-Column Level Encryption “The ENCRYPT/DECRYPT SQL functions are legacy. I do not recommend them for any serious encryption implementation. They use outdated cryptography, they do not provide good key management, and I don’t think their performance is great.” “Ask the Experts” panel at the IDUG 2014 Technical Conference in Arizona. 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta DB2 native encryption / Highlights • ab DB2 10.5 FP5 • Bereits ab Workgroup Server Edt. (WSE) • Transparent für Anwendungen – Keinerlei Anpassungen nötig • Für Backups und Online Datenbank • basiert auf Public Key Cryptography Standard #12 (PKCS#12) • Verschlüsselung standardmäßig mit AES 256 – andere aber möglich (3DES oder AES) 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Was wird verschlüsselt? • Alle Tabellenbereiche • Alle Arten von Daten (LOB, XML, etc.) • Load Copy und Load Files • Transaktionslogs • .bin Dumpfiles • Daten werden auch in Memory verschlüsselt gehalten, wenn sie gerade nicht verwendet werden Unverschlüsselt: • Daten die regulär gelesen werden • Exports 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Was braucht man zur Verschlüsselung GSKit: IBM Global Security Kit • wird mit DB installiert (sqllib/gskit) • Libraries werden verwendet • Command Line: gsk8capicmd_64 Keystore • Speicherung für Verschlüsselungs Master Keys • kann auch Zertifikate für SSL Verbindungen enthalten • Verschlüsseltes File • Nicht Bestandteil des Backups – Separierung wichtig • USER ist für Sicherung verantwortlich !!! 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Zwei Ebenen der Verschlüsselung 1. Schicht: • DEK: Data Encryption Key • Mit diesem Schlüssel werden die Daten verschlüsselt • Wird mit in der Datenbank bzw. im Backup gespeichert 2. Schicht: • Der DEK wird wiederum verschlüsselt mit dem Master Key (MK) • Nennt man auch Envelope Encryption • Der MK wird außerhalb der Datenbank gespeichert - im PKCS12 Keystore • Nur der/die DB2 Instance Owner sollten read/write Zugang zu diesem Keystore haben • Grund: wird der Schlüssel gewechselt, muss nur der DEK aber nicht alle Daten – neu verschlüsselt werden 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Erste Schritte Keystore anlegen ./sqllib/gskit/bin/gsk8capicmd_64 –keydb –create -db keystore.p12 -pw StrengGeheim23! –strong -type pkcs12 –stash MasterKey anlegen ./sqllib/gskit/bin/gsk8capicmd_64 -secretkey -add -db keystore.p12 stashed -label mylabel -file mysecretfile Instance anpassen • db2 update dbm cfg using keystore_type pkcs12 keystore_location /home/db2inst2/keystore.p12 Stashfile ersetzt Passwort, ohne stashfile muss beim DB2START das Passwort mitgegeben werden 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta DB verschlüsseln / entschlüsseln Beim Anlegen db2 create db dbenc encrypt (master key automatisch generiert) db2 create db dbenc encrypt cipher aes key length 128 master key label mklabel Bei einer bestehenden DB ( nicht inplace, Backup/Restore notwendig) db2 restore db sample from /db2inst1/backup taken at 20160603181051 into encrdb encrypt Entschlüsseln db2 restore db dbenc from /diskb/backup/ taken at … no encrypt 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Masterkey tauschen • db2 connect to dbencr • db2 "call admin_rotate_master_key('MKL_encrDB_0616')" Value of output parameters -------------------------Parameter Name : LABEL Parameter Value : 'MKL_encrDB_0616 Return Status = 0 Das übergebene Label muss im aktuellen keystore exisitieren ! 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta Erste Erfahrungen • • • • CPU geringfügig höher belastet, HW-Unterstützung prüfen ! Datenbankgröße kaum verändert Backup etwas größer Beim BACKUP einer verschlüsselten DB zieht die COMPRESS Option nicht mehr, enn also z.B. libdb2encr.so gesetzt ist, kann Backup nicht komprimiert werden 45. COURSE-Tagung 5.-7. Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe d@ta