-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Look into the "create NULL values with JOIN using count(*)" difference attack #164
Comments
The last row is not put aside as unaccounted for. The unaccounted for business only applies if there is another AID for us to attach the information to, which in this case there is not.
The result, in this example, would be: 5 + noise(1). Presumably there would additionally be a noise layer associated with the negative condition excluding ssn If you can exclude a victim, then this is clearly not safe... I think a premise for this attack to work would be if we have a query that meets the following criteria:
Let's alter the above example such that both tables have an AID to make this attack work. TL;DR: The difference is now between The tables would be as in the original example, only with Clients:
Purchases:
Now the query Anonymized based on
i.e. a count of Anonymized based on
i.e. a count of The final anonymized result would be: For query Anonymized based on
i.e. a count of Anonymized based on
i.e. a count of The final anonymized result would therefore be |
The example with a single AID was for illustrative purposes.
I don't think LED can compensate for not flattening outliers. |
The design I've settled on will adjust for one AID, and this adjustment takes place before noise and flattening are computed. In fact it happens within the selectable containing the isolating condition. So in the case of this attack, LED would insert the rows with Can I suggest that we revisit this attack after LED is implemented in the reference implementation? |
Cristian raised the following difference attack:
I was under the impression this attack was already described in another discussion. But to be more explicit:
We have 2 tables:
purchases
, with columnsproduct_id
andclient_id
, andclients
, with columnsid
andssn
.Column
ssn
is labeled as the AID. Assume the following data is present:Clients:
Purchases:
If we issue a query like:
we get the following input to the
count
aggregator:If Ne=1 and Nt = 2, this results in a flattening of 4. The output will be 10 - 4 + noise(1) = 6 + noise(1).
For the query:
we get the following input to the
count
aggregator:The last row is put aside as unaccounted.
If Ne=1 and Nt = 2, this results in a flattening of 0 for accounted rows. The output will be 5 - 0 + 5 - 0 + noise(1) = 10 + noise(1).
The difference in the results is large enough to dominate the noise, allowing us to know the entity with
ssn = 'f'
is an outlier and to detect other attributes of it by conditional inclusion/exclusion in queries.The text was updated successfully, but these errors were encountered: