Privacy Protection in Relational Databases Prof. Dr. Stefan Böttcher University of Paderborn Based on slides compiled by Martin Hett Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 1 / 31 Motivation Health_Co Bluttest Alice Med_Care Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 2 / 31 1 Ziel DBS zeichnet auf wer wann was mit welchen Daten gemacht hat Lösungsvorschlag: alle Ergebnistupel aufzeichnen. hoher Speicherbedarf Informationsgewinn nicht aus Ergebnis ablesbar Besser: Anfragen aufzeichnen Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 3 / 31 System-Architektur Audit-Ausdruck Anfragen Schreiboperationen insert, delete, update AnfrageProtokoll Motivation verdächtige Anfragen AuditAnfragenGenerator Audit-Anfragen (SQL) Insert-Trigger DBTabellen Ziel DBS Delete-Trigger HintergrundDB Update-Trigger Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 4 / 31 2 Middlewareschnittstelle Anfrage Zweck Benutzer Middleware Anfrage Benutzer Zeit Schreiboperation <erfolgreich> Zeit AnfrageProtokoll DBTabellen Privacy Protection in RDB - HintergrundDB Prof. Dr. Stefan Böttcher - DBS SS 2005 5 / 31 Anfrage-Protokoll • als Tabelle organisiert • speichert alle Anfragen Benutzer Zeit Motivation Ziel SQL-Statement Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 6 / 31 3 Hintergrund-DB Ziel: DB-Zustand zu einem best. Zeitpunkt wiederherstellen Problem: Zuwenig Speicher um jedesmal ganze DB zu kopieren Lösung: Nur Änderungen festhalten. Implementierung: Intervallgrenzen für Gültigkeit angeben A1 An ... Motivation Ziel Logging Privacy Protection in RDB - TS TE Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 7 / 31 Insert-Trigger • Fügt für jedes ‘insert‘ in Original-DB ein neues Tupel in Hintergrund-DB ein. A1 ... An TS TE <new_a1> ... <new_an> <akt_Zeit> 'null' Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 8 / 31 4 Delete-Trigger • Sucht das zu löschende Tupel und markiert es als gelöscht. A1 ... <old_a1> ... Motivation Ziel An TE <old_an> <startZeit> Logging Privacy Protection in RDB TS - <akt_Zeit> Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 9 / 31 Update-Trigger • Markiert das bis jetzt gültige Tupel als gelöscht. • fügt das neue Tupel in Hintergrund-DB ein. A1 ... <old_a1> ... <old_an> <startZeit> <akt_Zeit> <new_a1> ... <new_a1> <akt_Zeit> 'null' Motivation Ziel An Logging Privacy Protection in RDB - TS TE Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 10 / 31 5 Audit-Ausdruck Audit-Ausdruck Anfragen Schreiboperationen insert, delete, update AnfrageProtokoll Motivation DBTabellen Ziel Trigger Logging Privacy Protection in RDB - verdächtige Anfragen AuditAnfragenGenerator Audit-Anfragen (SQL) HintergrundDB DBS Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 11 / 31 Audit-Anfrage : Beispiel Alice möchte wissen, ob ihr Name und ihre Adresse zusammen mit ihrem Diabetes-Risiko weitergegeben wurden. DURING t1 AUDIT name, adresse, diagnose FROM Bluttest WHERE name = ‘Alice‘ Motivation Ziel TO Logging Privacy Protection in RDB - t2 Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 12 / 31 6 von Audit-Anfrage gehütetes Geheimnis : Beispiel Der Audit-Ausdruck selektiert folgende DB-Feld-Kombination name adresse Alice Paderborn ... diagnose ... Diabetis Das dadurch beschriebene Geheimnis ist die Kombination aus Name='Alice', Adresse='Paderborn' und Diagnose='Diabetis' Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 13 / 31 Unentbehrliches Tupel - Idee • Ein (virtuelles) Tupel ist unentbehrlich für eine Anfrage Q, wenn das Weglassen des Tupels das Ergebnis von Q verändern würde • Ein (virtuelles) Tupel ist unentbehrlich für eine Audit Query A (also wesentlich für das durch A beschriebene Geheimnis) wenn das Weglassen des Tupels das Ergebnis von A verändern würde • Ein für Motivation dasZiel durch ALogging beschriebene Geheimnis Audit-Anfrage Audit-Ausdruck wesentliches Tupel t, beeinflusst das Ergebnis von Q,14 / 31 Privacy Protection in RDB Prof. Dr. Stefan Böttcher SS 2005 wenn t für A und für Q unentbehrlich ist 7 Unentbehrliches Tupel π…= Duplikate entfernt π…= Duplikate behalten • Ein (virtuelles) Tupel ν ∈ T ist unentbehrlich für σPQ( T )) , eine Anfrage Q = πCQ(σ wenn das Weglassen von ν das Ergebnis von Q verändern würde: ind(ν ν,Q) Motivation Ziel π CQ(σ σPQ( T )) ν } )) ≠ πCQ(σ σPQ( T- {ν Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 15 / 31 Unentbehrlichkeit - DISTINCT π…= Duplikate entfernt π…= Duplikate behalten • Ein (virtuelles) Tupel ν ∈ T ist unentbehrlich für eine Anfrage Q = πCQ(σPQ( T )) , wenn es unentbehrlich für Q‘ = πCQ(σPQ( T )) ist. Privacy Protection in RDB - Prof. Dr. Stefan Böttcher - SS 2005 16 / 31 8 Unentbehrlichkeit - Beispiel Student: hört: Name MNr Alice 123456 Kurs: MNr KNr 123456 0001 123456 0002 KNr 0001 0002 Titel Mod SWE Q = πS.Name(σK.Semester=1( S |X| h |X| K )) t1 = (0002, SWE, 1) Semester 1 1 π…= Duplikate entfernt unentbehrlich für Q ? Ja, denn t1 ist unentbehrlich für Q‘ Q‘ = πS.Name(σK.Semester=1( S |X| h |X| K )) Privacy Protection in RDB - Prof. Dr. Stefan Böttcher π…= Duplikate behalten - SS 2005 17 / 31 Unentbehrlichkeit – Aggregation • Ein (virtuelles) Tupel ν ∈ T ist unentbehrlich für eine Anfrage Q mit Aggregation, wenn es unentbehrlich für die aggregationslose Version Q‘ ist. Q= Q‘ = SELECT name, avg(duration) FROM Doctor d, Treatment t WHERE d.did=t.did AND disease=‘diabetes‘ GROUP BY name Privacy Protection in RDB - SELECT name, duration FROM Doctor d, Treatment t WHERE d.did=t.did AND disease=‘diabetes‘ Prof. Dr. Stefan Böttcher - SS 2005 18 / 31 9 Audit-Anfrage : Beispiel Alice möchte wissen, ob ihr Name und ihre Adresse zusammen mit ihrem Diabetes-Risiko weitergegeben wurden. DURING t1 AUDIT name, adresse, diagnose FROM Bluttest WHERE name = ‘Alice‘ Motivation Ziel TO Logging Privacy Protection in RDB - t2 Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 19 / 31 von Audit-Anfrage gehütetes Geheimnis : Beispiel Der Audit-Ausdruck selektiert folgende DB-Feld-Kombination name adresse Alice Paderborn ... diagnose ... Diabetis Das dadurch beschriebene Geheimnis ist die Kombination aus Name='Alice', Adresse='Paderborn' und Diagnose='Diabetis' Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 20 / 31 10 Benutzer-Query : Beispiel SELECT name, adresse FROM Bluttest WHERE diagnose=‘Diabetes‘ AND plz=‘33100‘ name adresse plz Bob Dörenhagen 33100 Diabetes Alice Paderborn 33100 Diabetes Motivation Ziel Logging Privacy Protection in RDB - diagnose ... Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 21 / 31 Benutzer-Query ist Candidate Query - Bsp. Benutzer-Query umfasst alle Spalten der Audit-Query name adresse ... ... diagnose name adresse plz ... diagnose Bob Dörenhagen 33100 Diabetes Alice Paderborn 33100 Diabetes Alice Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 22 / 31 11 Candidate-Query • Eine Anfrage Q ist eine candidate query zu einem gegebenen Audit-Ausdruck A , wenn Q auf alle Spalten CQ zugreift, die als Spalten CA in A vorkommen: Q ist candidate Query für A C A ⊆ CQ Candidate Queries können leicht durch statische Tests ermittelt werden Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 23 / 31 Benutzer-Query ist verdächtig - Beispiel 1. Benutzer-Query umfasst alle Spalten der Audit-Query 2. Es gibt ein für beide Queries unentbehrliches Tupel ... ... name adresse diagnose Alice name adresse plz Bob Dörenhagen 33100 Diabetes Alice Paderborn 33100 Diabetes Motivation Ziel Logging Privacy Protection in RDB - diagnose ... Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 24 / 31 12 Benutzer-Query ist verdächtig - Beispiel name adresse plz Bob Alice Paderborn diagnose ... 33100 Diabetes 33100 Diabetes Es gibt gemeinsames unentbehrliches Tupel: candidate query ist verdächtig (=suspicious) Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 25 / 31 Verdächtige Anfrage Eine candidate query Q ist verdächtig bei einem gegebenen Audit-Ausdruck A, wenn beide ein unentbehrliches (maximal virtuelles) Q ist candidate query Tupel ν teilen: suspicious(Q,A) Motivation Ziel Logging Privacy Protection in RDB ind(ν,A) ) - CA ⊆ CQ ^ Audit-Ausdruck Audit-Anfrage ∃ ν : ( ind(ν,Q) ^ Prof. Dr. Stefan Böttcher - SS 2005 26 / 31 13 Anfrage-Erzeugung Existiert gemeinsames unentbehrliches Tupel? Selektionsbedingungen beider Anfragen verschachteln Sicherstellen, dass gleiche DB-Sicht zugrunde liegt Effizienz (kleinere Datenmenge für 2.Selektion) Anfrage verdächtig, wenn Ergebnismenge nicht leer: σA( σQ(Tτ)) ≠ Ø Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 27 / 31 Audit-Anfragen-Generator • 3 Schritte: 1. Statische Analyse ermittelt candidate queries 2. Zeitintervall-Prüfung 3. Verdächtigkeits-(Suspicious-)Test Kombiniert candidate query und audit query zu einzelner SQL-Anfrage Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 28 / 31 14 Statische Analyse 1. Vergleich der Attribut-Namen: CA ⊆ CQ 2. DURING-Bedingung τ ∈ [ t1 ; t2 ] 3. Widersprüche es gibt kein gemeinsames unentbehrliches Tupel übrig bleiben: verdächtige Queries Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 29 / 31 Zusammenfassung 1. Anfragen aufzeichen 2. DB-Zustände wiederherstellen 3. Zu prüfende Daten spezifizieren Audit-Ausdruck 4. Audit-Anfrage generieren Verdächtige Anfragen erkennen Candidate queries ermitteln Gemeinsames unentbehrliches Tupel finden Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 30 / 31 15 Offene Fragen / Ausblick • Externe Verknüpfung von Anfrage-Ergebnissen • Verknüpfungen mit externen Daten • Manipulation von Anfrage-Protokoll und Hintergrund-DB Motivation Ziel Logging Privacy Protection in RDB - Audit-Ausdruck Prof. Dr. Stefan Böttcher - Audit-Anfrage SS 2005 31 / 31 16