AccueilActualités informatiquePipelineDP : Framework de confidentialité différentielle pour l'univers Python

PipelineDP : Framework de confidentialité différentielle pour l’univers Python

Dans le cadre du récent Data Privacy Day, Google et OpenMined ont présenté la dernière version 0.1.0 du framework de confidentialité différentielle PipelineDP. Basé sur la bibliothèque Differential Privacy Library développée par Google, ce framework doit désormais permettre aux développeurs de l’écosystème Python d’effectuer facilement des analyses de données tout en respectant une protection différenciée des données.

Sommaire

En 2019, Google avait pour la première fois mis à disposition en open source la bibliothèque Differential Privacy développée en interne et utilisée dans des services tels que la recherche, Maps, YouTube ou Android. La bibliothèque, qui n’était initialement disponible que pour C++, Java et Go, devait notamment permettre aux chercheurs de consulter le code Google. Entre-temps, les développeurs sont également libres d’utiliser la bibliothèque dans leurs propres applications pour traiter les données avec une protection différentielle des données.

Avec la disponibilité pour Python et la collaboration avec OpenMined, une association de développeurs open source, les responsables de Google espèrent pouvoir rendre la confidentialité différentielle accessible à un cercle encore plus large d’utilisateurs et d’utilisatrices. L’objectif d’OpenMined est de mettre à disposition n’importe quelles données à des fins d’analyse, sans devoir autoriser un accès direct à ces données ou leur téléchargement. Remote Data Science doit résoudre le dilemme existant de pouvoir partager des données sans renoncer à leur protection. Les données peuvent être mises à disposition de manière protégée via un serveur PyGrid. Grâce à la bibliothèque PySyft basée sur NumPy et à des outils tels que PyGrid et HAGrid, les data scientists peuvent intégrer les données dans leurs propres analyses et les exploiter.

Le Differential Privacy Framework PipelineDP, développé en collaboration avec Google au cours des 12 derniers mois, offre désormais la possibilité d’une intégration avec des systèmes de traitement par lots tels qu’Apache Spark et Beam, afin de garantir le traitement de grands ensembles de données dans le respect de la protection des données. Le framework Python maîtrise de nombreuses fonctions de calcul telles que count, sum ou average et met à la disposition des développeurs une API comparable à Spark et Beam. Le listing suivant montre à titre d’exemple un traitement de données avec Differential Privacy dans 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 doit également faciliter la mise en œuvre de la confidentialité différentielle pour les non-spécialistes. Pour cela, le framework couvre des mesures telles que la protection des données aberrantes et des catégories rares, et génère un bruit protecteur (Safe Noise). OpenMined et Google déconseillent toutefois l’utilisation dans des environnements de production, car le projet est encore classé comme expérimental. Ceux qui souhaitent approfondir leurs connaissances de PipelineDP trouveront dans le Repo GitHub différents exemples d’application pour Spark, Beam et d’autres frameworks. Un Codelab offre en outre plus de détails sur les fonctions API et leur application.

Plus d'articles