Verifiable Distributed Aggregation Functions (VDAFs) is a family of multi-party protocols for computing aggregate statistics over user measurements. These protocols are designed to ensure that, as long as at least one aggregation server executes the protocol honestly, individual measurements are never seen by any server in the clear. At the same time, VDAFs allow the servers to detect if a malicious or misconfigured client submitted an invalid measurement.
Mastic is a new two-party VDAF for the following secure aggregation task each client holds an input and an associated weight, and the data collector wants to aggregate the weights of all clients whose inputs begin with a prefix of its choosing. This functionality enables two classes of applications:
- First, it allows grouping metrics by client attributes without revealing which clients have which attributes. We call this attribute-based metrics and is a generalization over Prio3.
- Second, it solves the weighted heavy hitters problem, where the goal is to compute the subset of inputs that have the highest total weight. This is a generalization of the (plain) heavy-hitters problem solved by works like Poplar1.
This repository is the working area for the individual Internet-Draft, "The Mastic VDAF".
Formatted text and HTML versions of the draft can be built using make
.
$ make
Command line usage requires that you have the necessary software installed. See the instructions.
Implementation | Language | Version | Dependencies | Description |
---|---|---|---|---|
Reference | Python | main | draft-irtf-cfrg-vdaf | Reference Implementation |
mastic | Rust | main | N/A | Research Prototype (PoPETS’25) (incompatible to the spec) |
libprio-rs | Rust | v0.16.7+ | N/A | Implementation (WIP) of draft-mouris-cfrg-mastic-01 |
See the guidelines for contributions.