Schutz sensibler Daten: Angriffe auf die Datenbankrekonstruktion verstehen

Es gibt eine Reihe von Gründen, warum Unternehmen und Regierungen Informationen über Menschen weitergeben möchten. Eine der gebräuchlichsten und nützlichsten Methoden zur Weitergabe von Daten ist die Volkszählung. Eine Volkszählung ist besonders interessant, weil sie einige äußerst persönliche Informationen über Einzelpersonen enthält und daher sorgfältig geschützt werden muss, um sicherzustellen, dass die veröffentlichten statistischen Informationen nicht in das Recht aller auf Privatsphäre eingreifen. In einer Reihe von Fällen hindern aggregierte Daten Hacker kaum daran, eine Datenbank neu zu erstellen, die den Originaldaten entweder sehr nahe kommt oder genau mit diesen übereinstimmt. In diesem Blogbeitrag werden wir anhand eines einfachen Beispiels ein wenig untersuchen, wie diese Angriffe funktionieren.

Dieser Blog-Beitrag und der nachfolgende Code basieren auf einem Artikel über Datenbank-Rekonstruktionsangriffe. Den Artikel finden Sie hier

Stellen Sie sich vor, wir arbeiten für ein Unternehmen namens Acme Data Inc. und verfügen über die folgende Datenbank, die Informationen für Personen in einem bestimmten geografischen Gebiet enthält.

name age married smoker employed
Sara Gray 8 False False False
Joseph Collins 18 False True True
Vincent Porter 24 False False True
Tiffany Brown 30 True True True
Brenda Small 36 True False False
Dr. Tina Ayala 66 True False False
Rodney Gonzalez 84 True True False

Hinweis: Bei allen Daten hier handelt es sich um gefälschte generierte Daten, und die Ähnlichkeit mit einer realen Person ist völlig zufällig.

Wir haben insgesamt 7 Leute in diesem Block. Neben dem Alter verfügen wir auch über den Raucherstatus, den Beschäftigungsstatus jedes Bewohners und darüber, ob er verheiratet ist oder nicht. Von hier aus veröffentlichen wir verschiedene Statistiken zu diesem Block. Wenn Sie jemals eine Volkszählung durchgeführt haben, haben Sie wahrscheinlich etwas Ähnliches gesehen.

📓 Um das Beispiel zu vereinfachen, hat diese fiktive Welt:

  • Zwei Ehestatus; Verheiratet (Wahr) oder Single (Falsch)
  • Zwei Raucherstatus; Nichtraucher (Falsch) oder Raucher (Wahr)
  • Zwei Beschäftigungsstatus; Arbeitslos (Falsch) oder erwerbstätig (Wahr)

👾 Eine weitere uns bekannte Logik besteht darin, dass alle Statistiken mit einer Anzahl von weniger als 3 unterdrückt werden. Die Unterdrückung von Statistiken mit niedrigen Zählwerten wird häufig als Taktik zum Schutz der Privatsphäre eingesetzt. Je weniger Menschen es gibt, die eine Statistik repräsentieren, desto mehr stechen sie in einem Datensatz hervor, was bedeutet, dass ihre Privatsphäre oft stärker gefährdet ist als die von denen, die sich „unter die Masse mischen“. Wie wir sehen werden, kann das bloße Wissen, dass eine Statistik unterdrückt wird, sogar zum Angriff auf einen Datensatz genutzt werden.

Als Datenanalyst bei Acme Data wurden wir mit der Erstellung der folgenden zusammenfassenden Statistiken beauftragt, die wir auf unserer Website veröffentlichen können, damit jeder sie einsehen kann. Nach Durchführung unserer Analyse möchten wir Folgendes veröffentlichen:

id name count median-age mean-age
A1 total-population 7.0 30.0 38.0
A2 non-smoker 4.0 30.0 33.0
B2 smoker 3.0 30.0 44.0
C2 unemployed 4.0 51.0 48.0
D2 employed 3.0 24.0 24.0
A3 single-adults NaN NaN NaN
B3 married-adults 4.0 51.0 54.0
A4 unemployed-non-smoker 3.0 36.0 37.0

Die Statistik A1 stellt die Gesamtbevölkerungszahl, das Durchschnittsalter und das Durchschnittsalter der Personen in der Datenbank dar. Die Zählung bezieht sich auf die Gesamtzahl der Personen in der Datenbank, das Durchschnittsalter bezieht sich auf das Alter, das die Datenbank in zwei gleiche Hälften teilt, und das Durchschnittsalter bezieht sich auf das Durchschnittsalter aller Personen in der Datenbank. Die anderen Statistiken zeigen alle die gleichen Informationen für verschiedene Kohorten.

Beachten Sie, dass wir es bei A3 unterdrückt haben, um die Identität der Personen zu schützen, bei denen ein höheres Risiko einer erneuten Identifizierung besteht. Das Interessante an dieser Statistik ist, dass es sich hierbei um Informationen handelt, die wir in unser Modell kodieren können, um uns bei der Erstellung einer besseren Rekonstruktion zu helfen. Wir können daraus schließen, dass es unterdrückt wird, weil es <3 Personen gibt, die diese Kohorte repräsentieren, da wir wissen, dass andere Statistiken (wie D2) 3 Personen enthalten und diese Statistik nicht unterdrückt ist.

Um diese Einschränkungen in ein Modell zu kodieren, das wir zum Rekonstruieren der Daten verwenden können, können wir eine Bibliothek wie [Z3] (https://github.com/Z3Prover/z3) verwenden. Wir können Bibliotheken wie Z3 verwenden, um Einschränkungen zu modellieren und dann nach einer Antwort zu fragen, die diesen Einschränkungen entspricht. Tatsächlich ist jede der oben genannten Statistiken eine Einschränkung, die wir modellieren können, und wir können sie auffordern, alle Permutationen von Alter, Raucherstatus, Beschäftigungsstatus und Ehestatus zu generieren, die vorhanden sein müssen, um alle Einschränkungen zu erfüllen. Ein Beispiel für die Modellierung einer Einschränkung kann wie folgt erfolgen:

import z3

# create a solver object, that houses all our constraints
solver = z3.Solver()

# create representations of the variables we want to receive an answer for; such as ages
ages: z3.ArraySort = z3.Array('ages', z3.IntSort(), z3.IntSort())

# define a constraint on these variables (we know there are 7 people, so we range over that number)
# the constraint we add here is to ensure all 7 people have a realistic age (between 0 and 125)
min_age = 0
max_age = 125

for i in range(7):
    solver.add(
        z3.And(
            z3.Select(ages, i) > min_age,
            z3.Select(ages, i) < max_age
        )
    )

solver.check() # this checks that our constraints can produce a valid model
solver.model() # we can then access that model

Das Ergebnis der oben genannten Einschränkungen würde letztendlich eine Liste von Werten für Altersgruppen ausgeben, die unseren Einschränkungen entsprechen. Das Modell, das wir am Ende haben, könnte beispielsweise so aussehen:

[45, 34, 67, 34, 123, 1, 8]

Natürlich kann es viele Permutationen geben, das Modell kann unterschiedliche Antworten ausgeben, je nachdem, welche es zuerst auswählt. Mit jeder neuen hinzugefügten Einschränkung reduzieren wir den Suchraum, bis wir im Idealfall eine Antwort finden, die allen Einschränkungen entspricht. Zu diesem Zeitpunkt haben wir die Datenbank neu aufgebaut!

Wenn Sie dies in Aktion sehen möchten, schauen Sie sich dieses Repo mit einer vollständigen Implementierung an.

Abschluss

In diesem Artikel haben wir untersucht, wie aggregierte Daten Hacker kaum daran hindern, eine Datenbank neu zu erstellen, die den Originaldaten entweder sehr nahe kommt oder genau mit ihnen übereinstimmt. Es ist wichtig, dies bei der Veröffentlichung von Daten zu berücksichtigen.

Bevor wir zum Schluss kommen, fragen Sie sich vielleicht, warum das möglich ist. Nun, die Antwort darauf kommt von denselben Leuten, die die beste uns bekannte Technik zum Schutz vor dieser Art von Angriffen entwickelt haben:

„Zu genaue Antworten auf zu viele Fragen zu geben, wird die Privatsphäre auf spektakuläre Weise zerstören.“

Cynthia Dwork und Aaron Roth, Autoren von „The Algorithmic Foundations of Differential Privacy“

Die nächste Frage, die Sie sich vielleicht stellen, lautet: „Wie schütze ich mich vor diesem Angriff?“ Ein paar Dinge, die Sie sich ansehen können, sind:

  • Differenzielle Privatsphäre: DP eignet sich hervorragend zum Schutz dieser Art von Daten. Tatsächlich hat das US-Volkszählungsamt Bereau DP eingeführt, um die Offenlegung privater Informationen über Einzelpersonen zu verhindern
  • Datenminimierung: Die Veröffentlichung zu vieler Informationen kann zu einem einfacheren Rekonstruktionsangriffsvektor führen. Daher kann die Minimierung der von Ihnen veröffentlichten Daten eine einfache Möglichkeit sein, die Anzahl der Personen einzuschränken Rückschlüsse auf Ihre Daten ziehen können

Versuchen Sie, wenn möglich, Datenschutzexperten in Ihrer Organisation zu konsultieren, um sicherzustellen, dass diese eine Datenschutzprüfung durchführen, bevor sie Daten an Dritte oder die Öffentlichkeit weitergeben.

Danke!

Geschrieben von

Lifig Autor

Ich bin ein Daten-/Datenschutzingenieur mit Sitz in Sydney.