Section: New Software and Platforms
libqif - A Quantitative Information Flow C++ Toolkit Library
Participants : Konstantinos Chatzikokolakis [correspondant] , Susheel Suresh, Tymofii Prokopenko.
https://github.com/chatziko/libqif
The goal of libqif is to provide an efficient C++ toolkit implementing a variety of techniques and algorithms from the area of quantitative information flow and differential privacy. We plan to implement all techniques produced by Comète in recent years, as well as several ones produced outside the group, giving the ability to privacy researchers to reproduce our results and compare different techniques in a uniform and efficient framework.
Some of these techniques were previously implemented in an ad-hoc fashion, in small, incompatible with each-other, non-maintained and usually inefficient tools, used only for the purposes of a single paper and then abandoned. We aim at reimplementing those – as well as adding several new ones not previously implemented – in a structured, efficient and maintainable manner, providing a tool of great value for future research. Of particular interest is the ability to easily re-run evaluations, experiments and case-studies from all our papers, which will be of great value for comparing new research results in the future.
The library was under constant development in 2016 with several new features added this year. The project's git repository shows for this year 77 commits by 2 contributors, containing 5697 line additions and 4067 line removals. Some of the techniques already implemented are:
-
Standard leakage measures: Shannon, min-entropy, guessing entropy
-
Measures from the -leakage framework [26]
-
Standard differential privacy mechanisms from the literature
-
The planar Laplace mechanism of [27]
-
The tight-constraints mechanism of [29] (also with equality constraints)
-
The standard Kantorovich metric as well as the multiplicative variant from [28]
-
Additive capacity for specific prior over all gain functions [2]
-
All operations are supported for both doubles (for precision) and floats (for memory efficiency)
-
All operations involving only rational quantities are supported using arbitrary precision rational arithmetic, allowing to obtain exact results
Many more are scheduled to be added in the near future.