janus_collector: Map field elements to negative aggregate result values (for DP noise)

Open
#3,346 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
rust

Research direction

Start in janus_collector, where the Prio3 instance and prime modulus are available, and trace how aggregate field elements become result values. Define how values in the negative range should be represented and whether the behavior is configurable; done means DP-noise wraparounds map as intended without unexpectedly changing non-DP behavior.

Written by the indexing model from the issue text.

Description

When aggregators add noise to aggregate shares for differential privacy, this can result in very large numbers in the aggregate result currently, if the noise causes a wraparound. We can address this by mapping to [-p/2, 0) instead of [p/2, p). (for example) This could be done as a post-processing step, but I think it would be more convenient if janus_collector handled it, because the Prio3 instance, and thus the prime modulus, is at hand already. The downside of this change is that applications not using DP would have their aggregate results wrap around with half as many measurements as before, so we may want to make this configurable.

Dominant language
Rust
Stars
70
Forks
16
Avg merge
4h 36m
Merged PRs (30d)
30

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from divviup/janus

All issues in divviup/janus

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.