This repository contains the updated implementation of the Chorus system (version 0.1.3) for differential privacy, to accompany the following paper:
- CHORUS: a Programming Framework for Building Scalable Differential Privacy Mechanisms. Noah Johnson, Joseph P. Near, Joseph M. Hellerstein, Dawn Song. EuroS&P 2020.
This is an updated release of Chorus (version 0.1.3). The original release of Chorus is available here; see the original repository and the paper for more documentation.
This framework is written in Scala and built using Maven. The code has been tested on Mac OS X and Linux. To build the code:
$ mvn package
The file examples/MechanismExamples.scala
contains several examples
from the paper. To run the examples, after building Chorus:
mvn exec:java -Dexec.mainClass="examples.MechanismExamples"
This repo contains a proof-of-concept implementation resulting from a research project; we did not attempt to mitigate issues resulting from floating-point arithmetic or side channels. In particular, the following known attacks might be possible, depending on the deployment scenario and DBMS you use:
- On significance of the least significant bits for differential privacy. Ilya Mironov, CCS 2012.
- Widespread Underestimation of Sensitivity in Differentially Private Libraries and How to Fix It. Casacuberta et al., preprint, July 2022.
- Side-Channel Attacks on Query-Based Data Anonymization. Boenisch et al., CCS 2021.
Please don't use this code in production without considering these issues first.
This project is released under the MIT License.
This code is maintained by Joe Near.