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!