This release implements the Big Bird algorithm, described in our preprint. Big Bird is a privacy management layer that operates on top of the individual privacy loss accounting layer. It introduces a shared global budget to maintain strong privacy guarantees against colluding sites, and a system of quota filters to regulate how sites can deplete the global budget. Big Bird also exposes an experimental batch API that uses a fair scheduler that improves utilization while maintaining isolation. Together, these mechanisms establish a robust foundation for enforcing privacy protections in adversarial environments.
What's Changed
- Add URIs to
EventandReportAPIs by @giorgi-o in #31 - PDS refactor - Terminology alignments with CM 3.3 by @mychern in #35
- Implementing logging infrastructure by @arcaulfield in #36
- Implement c/nc/q-conv filters by @giorgi-o in #37
- Added filtering of relevant events based on URIs by @mychern in #40
- Add event metadata relevancy check by PPA by @mychern in #42
- Add QSource filter by @mychern in #43
- Fix tests, and a few QoL cleanups by @giorgi-o in #50
- Adjusted individual sensitivity to be per epoch-site by @mychern in #51
- Simplify PpaEvent interface by @mychern in #52
- Harmonize source terminology and fix epoch-source budgeting by @tholop in #53
- Simple 2p-commit to check remaining budget before consumption. If not enough, enable rollback. by @mychern in #59
is_matching_eventcan be closure with captured variables by @giorgi-o in #60- Some type improvements and simplifications by @tholop in #62
- Refactor PdsReport and PdsFilterStatus by @tholop in #65
- Add some serialization and Pure DP budget constructors by @tholop in #69
- Intermediary sites queries optimizations by @mychern in #68
- Do not specify patch version in Cargo.toml by @giorgi-o in #73
- PPA: Make URIs generic, instead of hard-coded to String by @giorgi-o in #74
- Simplify HashMapFilterStorage generics by @giorgi-o in #75
- Histogram refactor by @tholop in #76
- Refactor the pds module by @tholop in #77
- Factor out PDS-core (without EventStorage) from PrivateDataService by @giorgi-o in #81
- Simplify PureDPBudget type and filter arithmetic #79 by @arcaulfield in #82
- Clone refactoring by @mychern in #84
- Create
RelevantEventsstruct to store relevant events by @giorgi-o in #83 - Replace (almost) all uses of
usizewithu64by @giorgi-o in #85 - Some small QOL fixes by @giorgi-o in #86
- Simplify
FilterStoragetrait by @giorgi-o in #87 - Make Ppa type aliases uri-customisable by @giorgi-o in #88
- Implement batching algorithm and release filter by @giorgi-o in #89
- Rename filters to match the paper's terminology by @giorgi-o in #92
- Add Big Bird reference by @tholop in #93
- Experimental flags - debug-reports by @mychern in #91
- Implement cross-report privacy loss optimization with attributionObject API by @giorgi-o in #95
Full Changelog: v0.2...v0.3