Skip to content
forked from google/rappor

RAPPOR: Privacy-Preserving Reporting Algorithms

License

Notifications You must be signed in to change notification settings

joelfcorrea/rappor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAPPOR

RAPPOR is a novel privacy technology that allows inferring statistics about populations while preserving the privacy of individual users.

This repository contains simulation and analysis code in Python and R.

For a detailed description of the algorithms, see the paper and links below.

Feel free to send feedback to rappor-discuss@googlegroups.com.

Running the Demo

Although the Python and R libraries should be portable to any platform, our end-to-end demo has only been tested on Linux.

If you don't have a Linux box handy, you can view the generated output.

To get your feet wet, install the R dependencies (details below). It should look something like this:

$ R
...
> install.packages(c('glmnet', 'optparse', 'ggplot2'))

Then run:

$ ./demo.sh build  # optional speedup, it's OK for now if it fails

This compiles and tests the fastrand C extension module for Python, which speeds up the simulation.

$ ./demo.sh run

The demo strings together the Python and R code. It:

  1. Generates simulated input data with different distributions
  2. Runs it through the RAPPOR privacy-preserving reporting mechanisms
  3. Analyzes and plots the aggregated reports against the true input

The output is written to _tmp/report.html, and can be opened with a browser.

Dependencies

R analysis (analysis/R):

Demo dependencies (demo.sh):

These are necessary if you want to test changes to the code.

Python client (client/python):

  • None. You should be able to just import the rappor.py file.

Platform:

  • R: tested on R 3.0.
  • Python: tested on Python 2.7.
  • OS: the shell script tests have been tested on Linux, but may work on Mac/Cygwin. The R and Python code should work on any OS.

Development

To run tests:

$ tests/run.sh all

This currently runs Python unit tests and lints the Python files.

API

rappor.py is a tiny standalone Python file, and you can easily copy it into a Python program.

NOTE: Its interface is subject to change. We are in the demo stage now, but if there's demand, we will document and publish the interface.

The R interface is also subject to change.

The fastrand C module is optional. It's likely only useful for simulation of thousands of clients. It doesn't use cryptographically strong randomness, and thus should not be used in production.

Directory Structure

client/             # client libraries
  python/
    rappor.py
    rappor_test.py  # Unit tests go next to the implementation.
  cpp/              # placeholder
analysis/
  R/                # R code for analysis
  tools/            # command line tools for analysis
apps/               # web apps to help you use RAPPOR
tests/              # system tests
  gen_sim_input.py  # generate test input data
  rappor_sim.py     # run simulation
  run.sh            # driver for unit tests, lint
doc/
build.sh            # build docs, C extension
demo.sh             # run demo
run.sh              # misc automation

Documentation

Links

About

RAPPOR: Privacy-Preserving Reporting Algorithms

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • R 44.3%
  • Python 33.2%
  • C++ 11.5%
  • Shell 9.2%
  • C 1.8%