
Bibliothèque de tests de confidentialité pour les systèmes d'apprentissage profond, permettant l'évaluation de la susceptibilité aux attaques par inférence d'appartenance, extraction de modèle et inversion de modèle, et l'évaluation des techniques de préservation de la confidentialité.

Note : Ce projet est en pause.
PrivacyRaven est une bibliothèque de test de confidentialité pour les systèmes d'apprentissage profond. Vous pouvez l'utiliser pour déterminer la susceptibilité d'un modèle à différentes attaques contre la confidentialité, évaluer les techniques d'apprentissage automatique préservant la confidentialité, développer de nouvelles métriques et attaques de confidentialité, et réutiliser des attaques pour la provenance des données et d'autres cas d'usage.
PrivacyRaven prend en charge l'extraction de modèles en boîte noire avec uniquement des étiquettes, l'inférence d'appartenance et (bientôt) les attaques par inversion de modèles. Nous prévoyons également d'inclure la vérification de la confidentialité différentielle, l'optimisation automatisée des hyperparamètres, d'autres classes d'attaques et d'autres fonctionnalités ; voir les issues GitHub pour plus d'informations. PrivacyRaven a été présenté à la OpenMined Privacy Conference, à Empire Hacking, et sur le blog de Trail of Bits.
Les systèmes d'apprentissage profond, en particulier les réseaux de neurones, ont proliféré dans un large éventail d'applications, y compris des cas d'usage sensibles pour la confidentialité tels que la reconnaissance faciale et les diagnostics médicaux. Cependant, ces modèles sont vulnérables à des attaques contre la confidentialité qui ciblent à la fois la propriété intellectuelle du modèle et la confidentialité des données d'entraînement. La littérature récente a vu une course aux armements entre les attaques et les défenses en matière de confidentialité sur divers systèmes. Et jusqu'à présent, les ingénieurs et les chercheurs ne disposaient pas des outils d'analyse de la confidentialité nécessaires pour rivaliser avec cette tendance. C'est pourquoi nous avons développé PrivacyRaven, un outil d'assurance pour l'apprentissage automatique qui vise à être :
PrivacyRaven découpe chaque attaque en plusieurs phases personnalisables et optimisables. Différentes interfaces sont également fournies pour chaque attaque. L'interface présentée ci-dessous est connue sous le nom d'interface de base. PrivacyRaven fournit également des wrappers autour de configurations d'attaque spécifiques issues de la littérature, ainsi qu'une fonctionnalité d'exécution de toutes les attaques.
Voici comment lancer une attaque d'extraction de modèle dans PrivacyRaven :
#examples/extract_mnist_gpu.py
import privacyraven as pr
from privacyraven.utils.data import get_emnist_data
from privacyraven.extraction.core import ModelExtractionAttack
from privacyraven.utils.query import get_target
from privacyraven.models.victim import train_four_layer_mnist_victim
from privacyraven.models.four_layer import FourLayerClassifier
# Create a query function for a target PyTorch Lightning model
model = train_four_layer_mnist_victim()
def query_mnist(input_data):
# PrivacyRaven provides built-in query functions
return get_target(model, input_data, (1, 28, 28, 1))
# Obtain seed (or public) data to be used in extraction
emnist_train, emnist_test = get_emnist_data()
# Run a model extraction attack
attack = ModelExtractionAttack(
query_mnist, # query function
200, # query limit
(1, 28, 28, 1), # victim input shape
10, # number of targets
(3, 1, 28, 28), # substitute input shape
"copycat", # synthesizer name
FourLayerClassifier, # substitute model architecture
784, # substitute input size
emnist_train, # seed train data
emnist_test, # seed test data
)
Comme la seule exigence principale vis-à-vis du modèle victime est une fonction de requête, PrivacyRaven peut être utilisé pour attaquer une large gamme de modèles, quel que soit le framework ou la méthode de distribution.
Les autres classes d'attaques peuvent être lancées de manière similaire. Consultez le dossier examples pour plus d'informations.
poetry updatepoetry install.Si vous souhaitez utiliser un environnement Jupyter Notebook, exécutez poetry shell puis jupyter notebook.
De plus, si vous souhaitez exécuter PrivacyRaven dans un conteneur Docker, exécutez chmod +x build.sh puis ./build.sh. Notez qu'en fonction de la quantité de ressources allouées à Docker, les performances de PrivacyRaven peuvent être considérablement affectées.
N'hésitez pas à rejoindre notre canal #privacyraven dans Empire Hacking si vous avez besoin d'aide pour utiliser ou étendre PrivacyRaven. La version officielle via pip arrivera bientôt.
Veuillez noter que PrivacyRaven est encore au début de son développement et évolue rapidement. Les utilisateurs sont invités à effectuer des mises à jour fréquentes et à éviter d'appliquer PrivacyRaven à des cas d'usage critiques.
PrivacyRaven est encore un travail en cours. Nous vous invitons à contribuer comme vous le pouvez, que vous souhaitiez intégrer une nouvelle technique de synthèse ou rendre une fonction d'attaque plus lisible. Veuillez consulter CONTRIBUTING.md pour commencer.
Le corbeau a été associé à divers concepts dans différentes cultures au fil du temps. Parmi ceux-ci, le corbeau est généralement associé à la prophétie et à la perspicacité. Naturellement, nous avons nommé l'outil PrivacyRaven car il est conçu pour fournir un aperçu de la confidentialité de l'apprentissage profond.
Les principaux mainteneurs sont :
Cette bibliothèque est disponible sous la licence Apache 2.0. Pour une exception aux conditions, veuillez nous contacter.
Bien que PrivacyRaven ait été construit sur une multitude de recherches sur les attaques contre la confidentialité de l'apprentissage automatique, les recherches les plus importantes pour le développement de PrivacyRaven sont :
Ceci est une liste de publications, présentations, articles de blog et autres médias publics qui parlent de PrivacyRaven.