45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe DB2 Encryption Möglichkeiten der Verschlüsselung von Daten mit DB2 Bordmitteln inklusive der Datenbankverbindung
Agenda 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe Vorstellung Motivation / Warum Verschlüsselung Bevor man anfängt….. Möglichkeiten der Implementierung Beispiele der Verschlüsselung mit DB2 10.5
Mein erster Vortrag auf einer Course…… GSE DB2 LUW Regensburg Ferdinand Prahst – efpe seit 10 Jahren COURSE !!
Warum komme ich auf die COURSE 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe Vorstellung Ferdinand Prahst 39 Jahre seit 2000 selbständig im Bereich DB2 LUW NEU : seit Oktober 2015 Papa von Zwillingen
Motivation / Warum Verschlüsselung ? 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe Beweggründe Gesetze –sensitive Daten (Geheimhaltung) –personenbezogene Daten (Gesundheitswesen) Projekt / Fachabteilung Zugriffsbeschränkung für DBAs (Compliance) –Einfacher mit „no data access“
Bevor man anfängt 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe Mit Augenmaß / KISS !!!! Nicht „alles oder nichts“ Genaue Anforderung Viel Lärm um nichts 3 Bereiche der Verschlüsselung ruhende Daten aktive daten Verbindungen –db2set DB2COMM=SSL –TrustedContext -> Benutzer erbt Berechtigung wenn er aus der richtigen Umgebung kommt Encryption Expert (kostenpfl.)
Verschlüsselung innerhalb der DB / Verschlüsseln von Spalten (1/2) 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe Tabelle anlegen oder bereits angelegt Column Level Encryption
Verschlüsselung innerhalb der DB / Verschlüsseln von Spalten (2/2) 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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.
DB2 native encryption / Highlights 45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe ab DB 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 Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 !!! Was braucht man zur Verschlüsselung
45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 Zwei Ebenen der Verschlüsselung
45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 Erste Schritte
45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 into encrdb encrypt Entschlüsseln db2 restore db dbenc from /diskb/backup/ taken at … no encrypt DB verschlüsseln / entschlüsseln
45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 ! Masterkey tauschen
45. COURSE-Tagung Juni 2016 im Schlosshotel Bad Wilhelmshöhe in Kassel Ferdinand Prahst – efpe 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 Erste Erfahrungen