PipelineDP: Differential Privacy Framework für das Python-Universum

Google und OpenMined machen die Vorzüge des differenzierten Datenschutzes auch der Python Developer Community als Open Source zugänglich.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
PipelineDP: Differential Privacy Framework für das Python-Universum

(Bild: Andrii Yalanskyi/Shutterstock.com)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Im Zuge des kürzlichen Data Privacy Days haben Google und OpenMined das neueste Release 0.1.0 des Differential Privacy Framework PipelineDP vorgestellt. Auf Basis der von Google entwickelten Differential Privacy Library soll das Framework nun auch Entwicklerinnen und Entwicklern aus dem Python-Ökosystem die einfache Möglichkeit eröffnen, Datenanalysen unter Einhaltung eines differenzierten Datenschutzes durchzuführen.

Google hatte erstmals im Jahr 2019 die intern entwickelte und in Diensten wie der Suche, Maps, YouTube oder Android genutzten Bibliothek zu Differential Privacy als Open Source freigegeben. Die zunächst nur für C++, Java und Go verfügbare Library sollte es insbesondere Forschenden ermöglichen, Google-Code einzusehen. Inzwischen steht es Entwicklerinnen und Entwicklern aber ebenso frei, die Bibliothek in eigenen Anwendungen zu nutzen, um Daten mit differenziellem Datenschutz zu verarbeiten.

Mit der Verfügbarkeit für Python und durch die Zusammenarbeit mit OpenMined, einer Vereinigung von Open-Source-Developern, hoffen die Google-Verantwortlichen, Differential Privacy einem noch größeren Kreis von Anwenderinnen und Anwendern zugänglich machen zu können. OpenMined verfolgt das Ziel, beliebige Daten zu Analysezwecken zur Verfügung zu stellen, ohne direkten Einblick in diese Daten oder deren Download erlauben zu müssen. Remote Data Science soll dazu das bestehende Dilemma auflösen, Daten teilen zu können, ohne deren Schutz aufzugeben. Über einen PyGrid-Server lassen sich die Daten geschützt bereitstellen. Mit der auf NumPy basierenden Bibliothek PySyft und Tools wie PyGrid und HAGrid können Data Scientists die Daten in eigene Analysen einbinden und verwerten.

Das in den vergangenen 12 Monaten gemeinsam mit Google entwickelte Differential Privacy Framework PipelineDP eröffnet nun außerdem die Möglichkeit zur Integration mit Batch-Processing-Systemen wie Apache Spark und Beam, um auch die datenschutzkonforme Verarbeitung größerer Datensätze zu gewährleisten. Das Python-Framework beherrscht zahlreiche Berechnungsfunktionen wie count, sum oder average und stellt Entwicklerinnen und Entwicklern eine zu Spark und Beam vergleichbare API bereit. Das folgende Listing zeigt beispielhaft eine Datenverarbeitung mit Differential Privacy in Apache Spark:

# Define the privacy budget available for our computation.
budget_accountant = pipeline_dp.NaiveBudgetAccountant(total_epsilon=1,
                                                      total_delta=1e-6)

# Wrap Spark's RDD into it's private version. You will use this private wrapper
# for all further processing instead of the Spark's RDD. Using the wrapper ensures
# that only private statistics can be released.
private_movie_views = \
    make_private(movie_views, budget_accountant, lambda mv: mv.user_id)

# Calculate the private sum of ratings per movie
dp_result = private_movie_views.sum(
    SumParams(
              # The aggregation key: we're grouping data by movies
              partition_extractor=lambda mv: mv.movie_id,
              # The value we're aggregating: we're summing up ratings
              value_extractor=lambda mv: mv.rating,

              # Limits to how much one user can contribute:
              # .. at most two movies rated per user
              #    (if there's more, randomly choose two)
              max_partitions_contributed=2,
              # .. at most one ratings for each movie
              max_contributions_per_partition=1,
              # .. with minimal rating of "1"
              #    (automatically clip the lesser values to "1")
              min_value=1,
              # .. and maximum rating of "5"
              #    (automatically clip the greater values to "5")
              max_value=5)
              )
budget_accountant.compute_budgets()

# Save the results
dp_result.saveAsTextFile(FLAGS.output_file)

PipelineDP soll aber auch Nicht-Expertinnen und -Experten das Umsetzen von Differential Privacy erleichtern. Dazu deckt das Framework Maßnahmen wie etwa den Schutz von Ausreißer-Daten und seltenen Kategorien ab, und erzeugt schützenden Lärm (Safe Noise). Vom Einsatz in Produktionsumgebungen raten OpenMined und Google allerdings noch ab, da das Projekt noch als experimentell eingestuft ist. Wer sich eingehender mit PipelineDP beschäftigen möchte, findet im GitHub-Repo verschiedene Anwendungsbeispiele für Spark, Beam sowie weitere Frameworks. Ein Codelab bietet darüber hinaus mehr Details zu den API-Funktionen und deren Anwendung.

(map)