Implemen'ng ¡Differen'al ¡Privacy ¡& ¡ Side-‑channel ¡a8acks ¡ CompSci ¡590.03 ¡ Instructor: ¡Ashwin ¡Machanavajjhala ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 1 ¡
Outline ¡ • Differen'al ¡Privacy ¡Implementa'ons ¡ – PINQ: ¡Privacy ¡Integrated ¡Queries ¡ ¡[McSherry ¡SIGMOD ¡‘09] ¡ – Airavat: ¡Privacy ¡for ¡MapReduce ¡ ¡[Roy ¡et ¡al ¡NDSS ¡‘10] ¡ • A8acks ¡on ¡Differen'al ¡Privacy ¡Implementa'ons ¡ – Privacy ¡budget, ¡state ¡and ¡'ming ¡a8acks ¡[Haeberlin ¡et ¡al ¡SEC ¡‘11] ¡ • Protec'ng ¡against ¡a8acks ¡ – Fuzz ¡ ¡ ¡ ¡ ¡[Haeberlin ¡et ¡al ¡SEC ¡‘11] ¡ – Gupt ¡ ¡ ¡ ¡ ¡[Mohan ¡et ¡al ¡SIGMOD ¡‘12] ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 2 ¡
Differen'al ¡Privacy ¡ • Let ¡A ¡and ¡B ¡be ¡two ¡databases ¡such ¡that ¡B ¡= ¡A ¡– ¡{t}. ¡ • A ¡mechanism ¡M ¡sa'sfies ¡ε-‑differen'al ¡privacy, ¡if ¡for ¡all ¡outputs ¡O, ¡ and ¡all ¡such ¡A, ¡B ¡ ¡ P(M(A) ¡= ¡O) ¡≤ ¡e ε ¡ P(M(B) ¡= ¡O) Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 3 ¡
Differen'al ¡Privacy ¡ • Equivalently, ¡let ¡A ¡and ¡B ¡be ¡any ¡two ¡databases ¡ ¡ • Let ¡A ¡Δ ¡B ¡= ¡(A ¡– ¡B) ¡U ¡(B ¡– ¡A) ¡ ¡ ¡ ¡… ¡or ¡the ¡symmetric ¡difference ¡ • A ¡mechanism ¡M ¡sa'sfies ¡ε-‑differen'al ¡privacy, ¡if ¡for ¡all ¡outputs ¡O, ¡ ¡ P(M(A) ¡= ¡O) ¡≤ ¡e ε ¡ ¡|A ¡Δ ¡B| ¡ P(M(B) ¡= ¡O) Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 4 ¡
PINQ: ¡Privacy ¡Integrated ¡Queries ¡ [McSherry ¡SIGMOD ¡‘09] ¡ • Implementa'on ¡is ¡based ¡on ¡C#’s ¡LINQ ¡language ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 5 ¡
PINQ ¡ • An ¡analyst ¡ini'ates ¡a ¡PINQueryable ¡object, ¡which ¡in ¡turn ¡ recursively ¡calls ¡other ¡objects ¡(either ¡sequen'ally ¡or ¡in ¡parallel). ¡ ¡ • A ¡PINQAgent ¡ensures ¡that ¡the ¡privacy ¡ budget ¡ is ¡not ¡exceeded. ¡ ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 6 ¡
PINQAgent: ¡Keeps ¡track ¡of ¡privacy ¡budget ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 7 ¡
PINQ: ¡Composi'on ¡ • When ¡a ¡set ¡of ¡opera'ons ¡O1, ¡O2, ¡… ¡are ¡performed ¡sequen'ally, ¡ then ¡the ¡budget ¡of ¡the ¡en're ¡sequence ¡is ¡the ¡sum ¡of ¡the ¡ε ¡for ¡ each ¡opera'on. ¡ ¡ • When ¡the ¡opera'ons ¡are ¡run ¡in ¡parallel ¡on ¡disjoint ¡subsets ¡of ¡the ¡ data, ¡the ¡privacy ¡budget ¡for ¡the ¡all ¡the ¡opera'ons ¡is ¡the ¡max ¡ε. ¡ ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 8 ¡
Aggrega'on ¡Operators ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 9 ¡
Aggrega'on ¡operators ¡ ¡ Laplace ¡Mechanism ¡ • NoisyCount ¡ • NoisySum ¡ Exponen1al ¡Mechanism ¡ • NoisyMedian ¡ • NoisyAverage ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 10 ¡
PINQ: ¡Transforma'on ¡ Some'mes ¡aggregates ¡are ¡computed ¡on ¡transforma'ons ¡on ¡the ¡data ¡ ¡ • Where : ¡takes ¡as ¡input ¡a ¡predicate ¡(arbitrary ¡C# ¡func'on), ¡and ¡ outputs ¡a ¡subset ¡of ¡the ¡data ¡sa'sfying ¡the ¡predicate ¡ ¡ • Select : ¡Maps ¡each ¡input ¡record ¡into ¡a ¡different ¡record ¡using ¡a ¡C# ¡ func'on ¡ ¡ • GroupBy : ¡Groups ¡records ¡by ¡key ¡values ¡ • Join : ¡Takes ¡two ¡datasets, ¡and ¡key ¡values ¡for ¡each ¡and ¡returns ¡ groups ¡of ¡pairs ¡of ¡records ¡for ¡each ¡key. ¡ ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 11 ¡
PINQ: ¡Transforma'ons ¡ ¡Sensi'vity ¡can ¡change ¡once ¡transforma'ons ¡have ¡been ¡applied. ¡ ¡ ¡ • GroupBy: ¡Removing ¡a ¡record ¡from ¡an ¡input ¡dataset ¡A, ¡can ¡change ¡ one ¡group ¡in ¡the ¡output ¡T(A). ¡Hence, ¡|T(A) ¡Δ ¡T(B)| ¡= ¡2 ¡|A ¡Δ ¡B| ¡ • Hence, ¡the ¡implementa'on ¡of ¡GroupBy ¡mul'plies ¡ε ¡by ¡2 ¡before ¡ recursively ¡invoking ¡the ¡aggrega'on ¡opera'on ¡on ¡each ¡group. ¡ • Join ¡can ¡have ¡a ¡much ¡larger ¡(unbounded) ¡sensi'vity. ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 12 ¡
Example ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 13 ¡
Outline ¡ • Differen'al ¡Privacy ¡Implementa'ons ¡ – PINQ: ¡Privacy ¡Integrated ¡Queries ¡ ¡[McSherry ¡SIGMOD ¡‘09] ¡ – Airavat: ¡Privacy ¡for ¡MapReduce ¡ ¡[Roy ¡et ¡al ¡NDSS ¡‘10] ¡ • A8acks ¡on ¡Differen'al ¡Privacy ¡Implementa'ons ¡ – Privacy ¡budget, ¡state ¡and ¡'ming ¡a8acks ¡[Haeberlin ¡et ¡al ¡SEC ¡‘11] ¡ • Protec'ng ¡against ¡a8acks ¡ – Fuzz ¡ ¡ ¡ ¡ ¡[Haeberlin ¡et ¡al ¡SEC ¡‘11] ¡ – Gupt ¡ ¡ ¡ ¡ ¡[Mohan ¡et ¡al ¡SIGMOD ¡‘12] ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 15 ¡
Covert ¡Channel ¡ • Key ¡assump'on ¡in ¡differen'al ¡privacy ¡implementa'ons: ¡ ¡ The ¡querier ¡can ¡ only ¡ observe ¡the ¡result ¡of ¡the ¡query, ¡and ¡ nothing ¡else. ¡ – This ¡answer ¡is ¡guaranteed ¡to ¡be ¡differen'ally ¡private. ¡ ¡ ¡ • In ¡prac'ce: ¡The ¡querier ¡can ¡observe ¡other ¡effects. ¡ – E.g, ¡Time ¡taken ¡by ¡the ¡query ¡to ¡complete, ¡power ¡consump'on, ¡etc. ¡ ¡ ¡ – Suppose ¡a ¡system ¡takes ¡1 ¡minute ¡to ¡answer ¡a ¡query ¡if ¡Bob ¡has ¡cancer ¡and ¡ 1 ¡micro ¡second ¡otherwise, ¡then ¡based ¡on ¡query ¡'me ¡the ¡adversary ¡may ¡ know ¡that ¡Bob ¡has ¡cancer. ¡ ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 16 ¡
Threat ¡Model ¡ • Assume ¡the ¡adversary ¡(querier) ¡does ¡not ¡have ¡physical ¡access ¡to ¡ the ¡machine. ¡ ¡ – Poses ¡queries ¡over ¡a ¡network ¡connec'on. ¡ ¡ • Given ¡a ¡query, ¡the ¡adversary ¡can ¡observe: ¡ ¡ – Answer ¡to ¡their ¡ques1on ¡ – Time ¡that ¡the ¡response ¡arrives ¡at ¡their ¡end ¡of ¡the ¡connec1on ¡ – The ¡system’s ¡decision ¡to ¡execute ¡the ¡query ¡or ¡deny ¡(since ¡the ¡new ¡query ¡ would ¡exceed ¡the ¡privacy ¡budget) ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 17 ¡
Timing ¡A8ack ¡ Func'on ¡is_f(Record ¡r){ ¡ ¡if(r.name ¡= ¡Bob ¡&& ¡r. ¡disease ¡= ¡Cancer) ¡ ¡ ¡sleep(10 ¡sec); ¡ ¡ ¡ // ¡or ¡go ¡into ¡infinite ¡loop, ¡or ¡throw ¡excep3on ¡ ¡return ¡f(r); ¡ } ¡ ¡ Func'on ¡counv(){ ¡ ¡var ¡ ¡fs ¡= ¡from ¡record ¡in ¡data ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡where ¡(is_f(record)) ¡ ¡print ¡fs.NoisyCount(0.1); ¡ } ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 18 ¡
Timing ¡A8ack ¡ Func'on ¡is_f(Record ¡r){ ¡ ¡if(r.name ¡= ¡Bob ¡&& ¡r. ¡disease ¡= ¡Cancer) ¡ ¡ ¡sleep(10 ¡sec); ¡ ¡ ¡ // ¡or ¡go ¡into ¡infinite ¡loop, ¡or ¡throw ¡excep3on ¡ ¡return ¡f(r); ¡ } ¡ ¡ Func'on ¡counv(){ ¡ ¡var ¡ ¡fs ¡= ¡from ¡record ¡in ¡data ¡ If ¡Bob ¡has ¡Cancer, ¡then ¡the ¡query ¡takes ¡> ¡10 ¡seconds ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡where ¡(is_f(record)) ¡ If ¡Bob ¡does ¡not ¡have ¡Cancer, ¡then ¡query ¡takes ¡less ¡than ¡a ¡second. ¡ ¡ ¡print ¡fs.NoisyCount(0.1); ¡ } ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 19 ¡
Global ¡Variable ¡A8ack ¡ Boolean ¡found ¡= ¡false; ¡ ¡ Func'on ¡f(Record ¡r){ ¡ ¡if(found) ¡ ¡return ¡1; ¡ ¡ ¡if(r.name ¡= ¡Bob ¡&& ¡r.disease ¡= ¡Cancer){ ¡ ¡ ¡found ¡= ¡true; ¡return ¡1; ¡ ¡} ¡else ¡return ¡0; ¡ } ¡ ¡ Func'on ¡counv(){ ¡ ¡var ¡ ¡fs ¡= ¡from ¡record ¡in ¡data ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡where ¡(f(record)) ¡ ¡print ¡fs.NoisyCount(0.1); ¡ } ¡ Lecture ¡17 ¡: ¡590.03 ¡Fall ¡13 ¡ 20 ¡
Recommend
More recommend