Web ¡tracking ¡technologies ¡ and ¡privacy ¡protec5on ¡on ¡the ¡Web ¡ Nataliia ¡Bielova ¡ ¡ Inria ¡Rennes, ¡ 25 ¡October ¡2013 ¡ ¡
Back ¡in ¡1993… ¡ 2 ¡
Today… ¡ Web ¡Tracking ¡ AdverJse.com ¡ Tracker.com ¡ Bigger ¡browsing ¡profiles ¡ ¡ ¡ ¡ ¡ = ¡increased ¡value ¡for ¡trackers ¡ Doubleclick.com ¡ = ¡reduced ¡privacy ¡for ¡users ¡ ¡ (HypotheJcal ¡tracking ¡relaJonships ¡only.) ¡ Courtesy ¡of ¡Franziska ¡Roesner ¡ 3 ¡
Today… ¡ Web ¡Tracking ¡ AdverJse.com ¡ MyAd.com ¡ Tracker.com ¡ YourAd.com ¡ Doubleclick.com ¡ (HypotheJcal ¡tracking ¡relaJonships ¡only.) ¡ 4 ¡
In ¡this ¡talk… ¡ § What ¡is ¡Web ¡Tracking? ¡ • How ¡does ¡it ¡work? ¡ ¡ • Its ¡basic ¡components ¡ § How ¡to ¡protect ¡your ¡privacy ¡on ¡the ¡Internet? ¡ • What ¡kind ¡of ¡defenses ¡you ¡can ¡set ¡in ¡your ¡browser? ¡ ¡ • Are ¡they ¡effecJve? ¡ • Which ¡research ¡soluJons ¡are ¡proposed? ¡ • What ¡about ¡EU ¡laws ¡and ¡regulaJons? ¡ 5 ¡
HTTP ¡protocol ¡is ¡stateless ¡ URL ¡path: ¡bbc.co.uk/news... ¡ URL ¡path: ¡bbc.co.uk/news ¡ Method: ¡GET Parameters ¡ ¡ ¡ Web ¡browser ¡ Web ¡server ¡ Cookies: ¡session-‑id= 2082787201l ¡& ¡… ¡ Method: ¡GET ¡ … ¡ … ¡ HTTP ¡request ¡ HTTP ¡response ¡ Status: ¡200 ¡OK ¡ Content: ¡HTML ¡page ¡ Cookie ¡Database ¡ Set-‑cookies: ¡session-‑id= 2082787201l ¡& ¡… ¡ bbc.co.uk/news: ¡ … ¡ session-id=2082787201l -‑ ¡Mapping ¡requests ¡to ¡apps ¡ -‑ ¡Rendering ¡pages ¡ -‑ ¡ContacJng ¡DBs ¡ -‑ ¡ExecuJng ¡scripts/plugins ¡ -‑ ¡ConstrucJng ¡responses ¡ (JavaScript) ¡ ¡ -‑ ¡Launching ¡new ¡HTTP ¡requests ¡ 6 ¡
HTTP ¡protocol ¡is ¡stateless ¡ URL ¡path: ¡bbc.co.uk/news... ¡ URL ¡path: ¡bbc.co.uk/news ¡ Method: ¡GET Parameters ¡ ¡ ¡ High-‑level ¡point: ¡ ¡ Web ¡browser ¡ Web ¡server ¡ Cookies: ¡session-‑id= 2082787201l ¡& ¡… ¡ Method: ¡GET ¡ HTTP ¡cookies ¡ are ¡useful ¡for ¡web ¡session ¡handling, ¡but ¡ … ¡ … ¡ also ¡ can ¡be ¡used ¡to ¡track ¡users. ¡ HTTP ¡request ¡ HTTP ¡response ¡ Status: ¡200 ¡OK ¡ Content: ¡HTML ¡page ¡ Cookie ¡Database ¡ Set-‑cookies: ¡session-‑id= 2082787201l ¡& ¡… ¡ bbc.co.uk/news: ¡ … ¡ session-id=2082787201l -‑ ¡Mapping ¡requests ¡to ¡apps ¡ -‑ ¡Rendering ¡pages ¡ -‑ ¡ContacJng ¡DBs ¡ -‑ ¡ExecuJng ¡scripts/plugins ¡ -‑ ¡ConstrucJng ¡responses ¡ (JavaScript) ¡ ¡ -‑ ¡Launching ¡new ¡HTTP ¡requests ¡ 7 ¡
Mechanisms ¡Required ¡By ¡Trackers ¡ • Ability ¡to ¡store/create ¡user ¡idenJty ¡in ¡the ¡browser ¡ § HTTP ¡cookies ¡ § other ¡HTTP ¡headers ¡ Stateful ¡tracking ¡ § other ¡browser ¡storages ¡ § device ¡fingerprinJng: ¡ ¡ • browser ¡properJes ¡ ¡ Stateless ¡tracking ¡ • OS ¡properJes ¡ ¡ • IP ¡address… ¡ • Ability ¡to ¡communicate ¡user ¡idenJty ¡back ¡to ¡tracker ¡ § HTTP ¡request ¡headers ¡ § JavaScript ¡ Nataliia ¡Bielova ¡ 8 ¡
Stateful ¡Tracking ¡ COOKIES ¡AND ¡OTHER ¡BROWSER ¡STORAGES ¡ 9 ¡
Cookies: ¡first-‑ ¡& ¡third-‑party ¡ Origin ¡ Origin ¡ ny5mes.com ¡ b.scorecardresearch.com ¡ nyJmes.com ¡ <iframe � � src=b.scorecardresearch.com> � � � � Html ¡page ¡+ ¡ ¡ Third-‑party ¡ � First-‑party ¡ � � JavaScript ¡code ¡ � can ¡read/write ¡ ¡ can ¡read/write ¡ ¡ � � cookies ¡of ¡ ¡ cookies ¡of ¡ ¡ � b.scorecardresearch ny5mes.com ¡ </iframe> � .com ¡ <script src=facebook.net> � � JavaScript ¡code ¡ � � </src> � Nataliia ¡Bielova ¡ 10 ¡
Within-‑Site ¡Tracking ¡ First-‑party ¡cookies ¡ are ¡used ¡to ¡track ¡repeat ¡visits ¡to ¡ a ¡site. ¡ google-‑analyJcs.com ¡ hjp://site1.com ¡ <script processing ¡engine ¡ src=google- analytics.com/ 2:52pm: user 123 visited Cookie ¡Database ¡ script.js> � � site1.com � site1.co com: m: script ¡ � go google- ga_id=123 � logs ¡ analyt ytics cs.co com/tr track? k? </src> � ga_i _id=123& & site=site1.co com m Based ¡on ¡the ¡slide ¡of ¡Franziska ¡Roesner ¡ 11 ¡
First-‑party ¡cookie ¡sekng ¡ 12 ¡
First-‑party ¡cookies ¡benefits ¡ • Keep ¡the ¡session ¡through ¡ different ¡windows/tabs ¡ • Website ¡owners ¡can ¡evaluate ¡ § website ¡staJsJcs ¡ § popularity ¡of ¡certain ¡pages ¡ § popularity ¡of ¡links ¡ § selected ¡and ¡copied ¡phrases ¡ 13 ¡
Cross-‑sites ¡Tracking ¡ Third-‑party ¡cookies ¡are ¡used ¡by ¡trackers ¡included ¡in ¡ other ¡sites ¡to ¡create ¡profiles. ¡ ¡ tracker.com ¡ hjp://site2.com ¡ hjp://site1.com ¡ co cookie: i id=789 processing ¡engine ¡ <iframe src=tracker.com/ ad.html> � 9:30am: user 789 visited Cookie ¡Database ¡ � co cookie: i id=789 site1.com � ad ¡ tracker.co com: id=789 � 9:31am: user 789 visited � logs ¡ site2.com </iframe> � Courtesy ¡of ¡Franziska ¡Roesner ¡ 14 ¡
PracJcal ¡protecJon: ¡ Third-‑party ¡cookies ¡blocking ¡ 15 ¡
PracJcal ¡protecJon: ¡ Third-‑party ¡cookies ¡blocking ¡ • Does ¡not ¡influence ¡your ¡browsing ¡experience ¡ • Does ¡not ¡adjust ¡adverJsements ¡for ¡you ¡ ¡ • So ¡why ¡are ¡third-‑party ¡cookies ¡s5ll ¡there? ¡ § It’s ¡a ¡business ¡of ¡adverJsement ¡companies ¡ • “ How ¡much ¡are ¡you ¡worth?” ¡ ¡ § New ¡plugin ¡shows ¡what ¡adverJsers ¡pay ¡for ¡you ¡ § hjp://yourvalue.inrialpes.fr ¡by ¡Inria ¡PrivaJcs ¡team ¡ 16 ¡
Cookie ¡respawning ¡ • Cookies ¡ can ¡respawn ¡ even ¡if ¡the ¡ user ¡has ¡deleted ¡them ¡ • Ashkan ¡Soltani, ¡ August ¡2011 ¡ KISSmetrics ¡and ¡Hulu.com ¡lawsuits ¡ § HTML5 ¡localStorage ¡ ¡ § Flash ¡LSOs ¡ ¡ § Other ¡hjp ¡headers ¡ ¡ • Samy ¡Kamkar: ¡“evercookie” ¡ ¡: ¡ § Even ¡more ¡storage ¡mechanisms ¡ 17 ¡
Respawning ¡-‑ ¡local ¡storages ¡ • KissMetrics ¡lawsuit: ¡HTML5 ¡localStorage ¡(across ¡sessions) ¡ User ¡leaves ¡the ¡page ¡ tracker.com ¡ hjp://site1.com ¡ processing ¡engine ¡ Cookie ¡Database ¡ <iframe src=tracker.com/ tracker.co com: id=789 ad.html> � 9:30am: user 789 visited � co cookie: i id=789 site1.com � ad ¡ � � logs ¡ HTML5 ¡localStorage ¡ </iframe> � tracker.co com: id=789 18 ¡
Respawning ¡-‑ ¡local ¡storages ¡ • KissMetrics ¡lawsuit: ¡HTML5 ¡localStorage ¡(across ¡sessions) ¡ High-‑level ¡point: ¡ ¡ User ¡deletes ¡all ¡the ¡cookies! ¡ If ¡these ¡ local ¡storages ¡didn’t ¡store ¡a ¡copy ¡of ¡cookies , ¡ ¡ tracker.com ¡ this ¡tracking ¡would ¡not ¡be ¡detected! ¡ hjp://site2.com ¡ processing ¡engine ¡ Cookie ¡Database ¡ <iframe src=tracker.com/ tracker.co com: id=789 ad.html> � 9:30am: user 789 visited � co cookie: i id=789 site1.com � ad ¡ � 9:31am: user 789 visited � logs ¡ HTML5 ¡localStorage ¡ site2.com </iframe> � tracker.co com: id=789 19 ¡
Not ¡only ¡Respawning, ¡but ¡Tracking ¡ • Demonstrated ¡by ¡Vladimir ¡Klimontovich, ¡October ¡2012 ¡ • HTML5 ¡localStorage ¡instead ¡of ¡cookies ¡ //Iframe code (http://pixel.sample-ad-exchange.com/iframe.html) � <html> � <head></head> � <body> � <script type="text/javascript"> � var userId = localStorage.getItem("user_id"); � if (userId == null) { � //set user is if user is unknown � userId = Math.random(); � localStorage.setItem("user_id", userId); � } � var img = document.createElement('img'); � img.src = "http://pixel.sample-ad-exchange.com/pixel.gif?user_id=“ + userId; � var body = document.getElementsByTagName('body')[0]; � body.appendChild(img); � </script> � </body> � </html> � 20 ¡
Recommend
More recommend