private-attribution / ipa

A raw implementation of Interoperable Private Attribution
MIT License
42 stars 25 forks source link

IPA Fake Event Generation #851

Open danielmasny opened 1 year ago

danielmasny commented 1 year ago

IPA has a number of records $N$. Each record consists of a secret shared match key and other associated data.

The task is to generate $M$ fake events that consists of secret shared random match keys (fake match key) and associated data set to $0$ for a given bound $B$.

More concretely: We need to do the following process for all combinations of two out of three helper parties in $(H_1,H_2,H_3)$:

the two selected helper parties, i.e. $(H_i,H_j)\in(H_1,H_2,H_3)$ do the following:

$Hk$ generates $M{i,j}$ fake events and sets all shares to $0$.

Append all $M:=M{1,2}+M{2,3}+M_{3,1}$ fake events to the initial $N$ records.

akoshelev commented 1 year ago

Some code pointers

How to send/receive data: https://github.com/private-attribution/ipa/blob/c5b59f8c89adca951fd5565caef7c9fd5d3ab5aa/src/protocol/basics/reveal.rs#L59

Sampling from Gaussian with the given $(\epsilon, \delta, cap = 1)$

https://github.com/private-attribution/ipa/blob/b28e6d75ae6eafda804dcf366a883b7dfc957d4e/src/protocol/dp/insecure.rs#L28

Secret sharing (semi-honest) - https://github.com/private-attribution/ipa/blob/650cb4b37b4db8f4476551598ecb55091b225c24/src/secret_sharing/replicated/semi_honest/additive_share.rs#L18

In-memory test - https://github.com/private-attribution/ipa/blob/650cb4b37b4db8f4476551598ecb55091b225c24/src/protocol/ipa_prf/shuffle.rs#L361