def laplace_mechanism(data, f, eps):
return f(data) + laplace(0, 1.0/eps)
This won't actually be private because floating-point numbers are different than real numbers. Real DP projects deal with this more carefully. def laplace_mechanism(data, f, eps):
return f(data) + laplace(0, 1.0/eps)
This won't actually be private because floating-point numbers are different than real numbers. Real DP projects deal with this more carefully.The scenario I'm thinking in is each user's entry is a real number from U[1e15,1e15+1], and we want to output sum. The sensitivity is still 1. So the Laplace Mechanism outputs something like sum(DB)+laplace(0,1/eps), which will be exactly sum(DB) because laplace(0,1/eps) is smaller than the gap between floats >=1e15.
For this to be an issue, the actual sum(DB) needs to be implemented in full precision right? Otherwise it seems like the sensitivity isn't necessarily 1.
It points to an ethical problem with how Differential Privacy is expected to be used. You have to get everything 100% right or the secrets in your dataset will eventually be compromised. As someone publishing works incorporating differential privacy techniques, do you have enough confidence in your implementation to risk those secrets? What level of consent is required from those who are impacted if your implementation fails?