Reject NaN in ClampFloat64 and check L1 sensitivity overflow in Laplace noise#405
Reject NaN in ClampFloat64 and check L1 sensitivity overflow in Laplace noise#405AndyBurecovics wants to merge 1 commit intogoogle:mainfrom
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
181e0df to
393649e
Compare
|
Thanks for the PR, Andy! It seems we already skip NaN values for mean, variance, standard deviation, quantiles, and count & select partitions (indirectly, because their Re: L1 sensitivity overflow in laplace_noise.go, L0 & LInf are guaranteed to be a number (see |
ClampFloat64 does not handle NaN inputs. Because IEEE 754 comparisons with NaN return false, NaN passes through clamping untouched and propagates into DP results, breaking the privacy guarantee.
NaN reaches ClampFloat64 through L1 sensitivity overflow in the Laplace noise layer: when lInfSensitivity * l0Sensitivity overflows to +Inf, ceilPowerOfTwo returns NaN, and the noise computation produces NaN throughout.
This patch: