Subject: [Ppm] VDAF and PPM prototypes

From: Tim Geoghegan <[email-masked]>
Date: Tue, 9 Nov 2021 18:17:19 -0800

Hello PPM,

Ahead of the PRIV BOF tomorrow[1], I want to share some implementation work
that has been ongoing for a while so everyone can take a look at some code.

First, `libprio-rs`[2]. This is a Rust crate[3] that implements the
cryptographic primitives underlying the PPM protocol. The initial
`libprio-rs` was donated by Apple in support of the Exposure Notifications
Private Analytics project[4]. Since then, Chris Patton and I have been
working on extending it to support more aggregation types in Prio[5] as
well as Heavy Hitters[6], fitting both into the _Verifiable Distributed
Aggregation Function_ (VDAF) framework[7] that Chris, Richard Barnes and
Phillipp Schoppmann have specified.

Next, `ppm-prototype`[8]. This is a prototype and proof of concept of the
Privacy Preserving Measurements (PPM) protocol[9]. We eventually aim to use
`libprio-rs` in production deployments[10], but `ppm-prototype` is intended
to prove that the PPM protocol is implementable and that we've got a decent
VDAF API exposed in crate `prio`. It will also serve as a test bed for
experiments as we iterate on the protocol. As of this writing, it supports
the Prio3 VDAF, but maybe by the time you read this, I will have added
Heavy Hitters support.

We welcome any questions, comments, suggestions, etc. either here on the
list or via GitHub issues and pull requests. If you'd like to know more
about VDAF, I urge you to attend Thursday's CFRG session[11], and we will
be talking about PPM tomorrow (Wednesday) at the PRIV BOF[12]!

Thanks,
Tim Geoghegan
Internet Security Research Group

[1] It may be today by the time you read this.
[2] https://github.com/abetterinternet/libprio-rs
[3] https://crates.io/crates/prio
[4]
https://github.com/google/exposure-notifications-android/blob/master/doc/ENPA.pdf
[5] https://crypto.stanford.edu/prio/paper.pdf
[6] https://eprint.iacr.org/2021/017
[7] https://github.com/cjpatton/vdaf
[8] https://github.com/abetterinternet/ppm-prototype
[9] https://github.com/abetterinternet/ppm-specification
[10] Though it needs lots of work, including security analysis and much
more serious test coverage, before it will be ready for that.
[11] https://datatracker.ietf.org/meeting/112/materials/agenda-112-cfrg-02
[12] https://datatracker.ietf.org/meeting/112/materials/agenda-112-priv-02