A machine-learning-based tool for discovering differential privacy violations in black-box algorithms.
We recommend installing DP-Sniper using conda.
After installing conda, you can install DP-Sniper by running its installation script install.sh:
bash ./install.shYou can ignore the warning ResourceWarning: unclosed running multiprocessing pool.
Note: The above steps are sufficient to use the main package dpsniper. If you would like to run the experiments from the SP 2021 research paper, you have to follow additional installation steps as described in eval_sp2021/README.md).
The following command tests the differential privacy of the Laplace mechanism, explained in detail in file dpsniper/example.py:
conda activate dp-sniper
python dpsniper/example.py # may take a while due to an extensive final confirmationThis commands stores temporary outputs and log files to the folder
example_outputs of the current working directory.
DP-Sniper is a black-box approach. To run DP-Sniper or DD-Search on your own
mechanism, you only have to implement the method m of the abstract class
Mechanism defined in
dpsniper/mechanisms/abstract.py and modify
the code snippet in dpsniper/example.py. See
dpsniper/mechanisms for example implementations of
popular mechanisms.
This is an implementation of the approach presented in the following research paper:
B. Bichsel, S. Steffen, I. Bogunovic and M. Vechev. 2021. DP-Sniper: Black-Box Discovery of Differential Privacy Violations using Classifiers. In IEEE Symposium on Security and Privacy (SP 2021).
The main algorithms DD-Search and DP-Sniper from the paper can be found in dpsniper/search/ddsearch.py and dpsniper/attack/dpsniper.py, respectively.
You are encouraged to cite the above publication using the following BibTeX entry if you use DP-Sniper for academic research.
@inproceedings{bichsel2021dpsniper,
author={Bichsel, Benjamin and Steffen, Samuel and Bogunovic, Ilija and Vechev, Martin},
title = {DP-Sniper: Black-Box Discovery of Differential Privacy Violations using Classifiers},
booktitle = {2021 IEEE Symposium on Security and Privacy (SP)},
year = {2021},
pages = {391-409},
doi = {10.1109/SP40001.2021.00081},
url = {https://doi.org/10.1109/SP40001.2021.00081},
publisher = {IEEE Computer Society},
address = {Los Alamitos, CA, USA},
month = {may}
}
You can find instructions on how to reproduce the evaluation results of our paper in the folder eval_sp2021.
MIT License, see LICENSE.
This repository includes third-party code from
statdp, marked as MIT License, Copyright (c) 2018-2019 Yuxin Wang.