Brave, Fingerprinting and Privacy on the Web Me (the early years) - - PowerPoint PPT Presentation

brave fingerprinting and privacy on the web me the early
SMART_READER_LITE
LIVE PREVIEW

Brave, Fingerprinting and Privacy on the Web Me (the early years) - - PowerPoint PPT Presentation

Brave, Fingerprinting and Privacy on the Web Me (the early years) Grew up in Chicago actual Chicago Law school, then freelance web design Started: Anchorage, AK Ended: Judge Judy Show invitation PhD in Computer Science


slide-1
SLIDE 1

Brave, Fingerprinting and Privacy on the Web

slide-2
SLIDE 2

Me (the early years)

  • Grew up in Chicago


…actual Chicago

  • Law school, then freelance web design


Started: Anchorage, AK 
 Ended: Judge Judy Show invitation

  • PhD in Computer Science


University of Illinois at Chicago

slide-3
SLIDE 3

Me, now

  • Privacy Researcher at Brave


Research to improve privacy in the browser

  • Co-Chair of PING


Privacy reviews of new web standards

  • Academic Collaborator


“Pure” research

slide-4
SLIDE 4

Brave in a Slide

  • Privacy focused
  • Alternative funding model for

the web

  • Research and engineering

focused

  • Browsers and infrastructure

now, more to come…

slide-5
SLIDE 5

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-6
SLIDE 6

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-7
SLIDE 7

Why Does Tracking Exist?

slide-8
SLIDE 8
slide-9
SLIDE 9
slide-10
SLIDE 10
slide-11
SLIDE 11
slide-12
SLIDE 12
slide-13
SLIDE 13
slide-14
SLIDE 14
slide-15
SLIDE 15

$ $ $ ¢ ¢ ¢

slide-16
SLIDE 16

$

slide-17
SLIDE 17

Identify “expensive”
 people here Pay a little to advertise
 to them here

slide-18
SLIDE 18
slide-19
SLIDE 19
slide-20
SLIDE 20

But how much…

slide-21
SLIDE 21
slide-22
SLIDE 22
slide-23
SLIDE 23
slide-24
SLIDE 24
slide-25
SLIDE 25

But how much… a lot / too much

slide-26
SLIDE 26

Overview

  • 1. Why websites track
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-27
SLIDE 27
slide-28
SLIDE 28
  • Javascript
  • DOM / Initial Web API
  • Netscape
  • Firefox
  • Brave + BAT
slide-29
SLIDE 29

Web 0.0

good-site.com

slide-30
SLIDE 30

Web 0.0

good-site.com GET /home.html <html>…</html>

slide-31
SLIDE 31

Web 0.0

good-site.com GET /home.html <html>…</html> GET /other.html <html>…</html>

slide-32
SLIDE 32

Web 0.0

good-site.com GET /home.html <html>…</html> GET /other.html <html>…</html>

slide-33
SLIDE 33

Birth of the Tracking

  • Problem
  • Authentication?
  • Can’t log in every time
  • HTTP auth is terrible and limited
  • Solution
  • Server gives token to user
  • User returns it on requests
  • Aka “cookies”
slide-34
SLIDE 34

Web 0.0

good-site.com

slide-35
SLIDE 35

Web 0.0

good-site.com GET /home.html <html> + id=XYZ

slide-36
SLIDE 36

Web 0.0

good-site.com GET /home.html <html> + id=XYZ GET /secret.html + id=XYZ <html>…

slide-37
SLIDE 37

Web 0.0

good-site.com GET /home.html <html> + id=XYZ GET /secret.html + id=XYZ <html>… GET /secret.html 🙆🙆

slide-38
SLIDE 38

But in the meantime…

slide-39
SLIDE 39

cat-cuties.com kozy-kittens.com

slide-40
SLIDE 40

cat-cuties.com kozy-kittens.com

slide-41
SLIDE 41

cat-cuties.com kozy-kittens.com

slide-42
SLIDE 42

cat-cuties.com kozy-kittens.com cookies, cookies everywhere…

slide-43
SLIDE 43

Cookies + 3p Resources ———————— Tracking

slide-44
SLIDE 44

44

Site A

slide-45
SLIDE 45

45

Site A Id=abc Tracking Site

slide-46
SLIDE 46

46

Site A Tracking Site Site B

slide-47
SLIDE 47

47

Site A Tracking Site Site B Id=abc

slide-48
SLIDE 48

48

Site A Tracking Site Site B Tracker knows the same person visited A + B

slide-49
SLIDE 49

Tracking Patient Zero

  • The internets “original sin”

  • cross origin resources

  • 3p cookies

  • or both…
  • “I invitent Javascript and


3p script, and I’ve been 
 making up for it ever sense…”
 (paraphrase)

slide-50
SLIDE 50

“Ever-Cookies”

  • Some browsers started fighting back


Brave, Safari, Firefox, extensions…


  • Trackers fought back


Moving IDs information out of cookies, to other location


  • Long list of locations

○ Local and Session Storage ○ HSTS ○ Cache (etags, Cache API, etc) ○ Plugins ○ many many many more…

slide-51
SLIDE 51

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting in web standards
  • 5. Fingerprinting counter measures
  • 6. Anti-finger printing exercise
  • 7. Wrapping up
slide-52
SLIDE 52

Fingerprinting, what’s diff?

  • Classic tracking

  • Website stores an id on the client

  • The client returns the id to the server (cookie or JS)

  • The id is what allows re-identification
  • Fingerprinting / passive tracking

  • Website finds things different about each visitor

  • That difference allows re-identification
slide-53
SLIDE 53

Fingerprinting, how

  • Large number of semi-identifiers

  • Browser size

  • Extra fonts

  • Audio hardware

  • Video hardware

  • Installed plugins

  • Color depth

  • etc etc etc…
slide-54
SLIDE 54

All browser users

slide-55
SLIDE 55

All browser users:
 3 billion people You
 1 person in 3 billion

slide-56
SLIDE 56

Firefox
 Users All browser users:
 3 billion people

slide-57
SLIDE 57

Windows users All browser users:
 3 billion people

slide-58
SLIDE 58

Office Fonts All browser users:
 3 billion people

slide-59
SLIDE 59

Sending DNT header All browser users:
 3 billion people

slide-60
SLIDE 60

Using ad blocker All browser users:
 3 billion people

slide-61
SLIDE 61

All browser users:
 3 billion people You
 1 person in 100

slide-62
SLIDE 62

Succeeding at Fingerprinting

  • 1. Breath of fingerprints


Large number of semi-identifiers

  • 2. Depth of fingerprints


How uniquely each identifier can… identify

slide-63
SLIDE 63

Breath (examples)

  • User agent string
  • Installed fonts
  • Canvas / WebGL
  • Hardware (many)
  • Height / width
slide-64
SLIDE 64

User Agent String

  • History of the Browser user-agent string


https://webaim.org/blog/user-agent-string-history/

  • Katamari-Damacy of identifiers
  • Brave / Chrome

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.50 Safari/537.36

  • Easy to extract

  • navigator.userAgent

  • User-Agent:
slide-65
SLIDE 65
  • Three categories of fonts

  • System

  • Local

  • Web
  • “Local” is the tricky part

  • Office

  • Photoshop

  • Goofery
  • Easy to extract

  • plugins

  • css + span + width

Installed Fonts

slide-66
SLIDE 66

[‘Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew',
 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold’…]

slide-67
SLIDE 67

[‘Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew',
 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold’…] <span>Example</span>

slide-68
SLIDE 68

[‘Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew',
 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold’…] <span>Example</span>

Fingerprinter

For each font…

slide-69
SLIDE 69

[‘Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew',
 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold’…] <span>Example</span>

Fingerprinter

For each font… for (const fontName of fonts) { // 1. Apply font to span // 2. Measure width of span // 3. If it changes, user has font… }

slide-70
SLIDE 70

Canvas / WebGL

  • Pixel Perfect: Fingerprinting Canvas in HTML5


Keaton Mowery and Hovav Shacham

  • Drawling APIs


e.g. Drawing lines / shapes

  • Standardized, but subtle differences
  • Easy to extract

  • Create canvas

  • Do some drawing

  • toDataURL()

slide-71
SLIDE 71
slide-72
SLIDE 72

Hovav Shacham The Geometry of Innocent Flesh on the Bone:
 Return-into-libc without Function Calls

slide-73
SLIDE 73

Hardware Identifiers

  • Many Web APIs leak capabilities 

  • number of cores (HTML)

  • number of audio channels (Web Audio API)

  • num shaders and similar (WebGL API)

  • device memory (Device Memory API)

  • network (WebRTC, Network status API)
  • Semi identifying
  • Easy to extract

  • All browsers have subset of the above

  • Most platforms have no permissions
slide-74
SLIDE 74

Height / Width

?

slide-75
SLIDE 75

Height / Width

  • What does it mean?
  • How to extract w/ JavaScript?
  • How to extract w/o JavaScript?
  • Brb 5 min (Go go go go go!)
slide-76
SLIDE 76

Fingerprinting Depth

https://panopticlick.eff.org/

slide-77
SLIDE 77

Fingerprinting in Practice

  • Needs to be in a database…
  • Hash each endpoint
  • Hash each value into a single identifier…
  • Nice implication: “poisionability”…
slide-78
SLIDE 78

Exercise

  • Read fingerprint2.js
  • List as many finger-printing approaches as possible
  • Understand how they’re carried out
  • Predict which are most identifying
slide-79
SLIDE 79

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-80
SLIDE 80

Fingerprinting Countermeasures

  • Remove the functionality
  • Make the functionality consistent
  • Restrict access (permissions, 1p vs 3p, user gesture, etc)
  • Noise
  • “Privacy budget”
slide-81
SLIDE 81

Remove the functionality

  • Delete JS end point
  • Remove the HTTP header
  • Remove the runtime capability
slide-82
SLIDE 82

Consistency

  • Make every browser return the same value
  • … or, most?
  • Not that diff in practice from “removing”
slide-83
SLIDE 83

Restrict access

  • Permission prompt
  • User gesture
  • 1p vs. 3p
  • “Site engagement”
slide-84
SLIDE 84

Noise

  • Stenography
  • Make different every time
slide-85
SLIDE 85

Privacy Budget

  • Allow some identifiability
  • After “identifiability budget” is exhausted do… something
  • Google folks love it
  • Everyone else is… skeptical
slide-86
SLIDE 86

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-87
SLIDE 87

Fingerprint2 Again…

  • Choose two fingerprinting vectors to combat
  • Propose counter measures
  • Choose two fingerprinting vectors that are hard
  • Why are counter measures hard?
slide-88
SLIDE 88

Fingerprint2 pt 3…

  • Pretend your the attacker
  • How would you respond to those defenses…
slide-89
SLIDE 89

Fingerprint2 pt 4…

  • Pretend your the defender again
  • How would you modify your defenses given the previous

round…

slide-90
SLIDE 90

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-91
SLIDE 91

91

Brave Privacy Protections

slide-92
SLIDE 92
  • Shields

  • Global protection

from tracking


  • On by default

  • Can be disabled if

needed

Brave Privacy Protections

slide-93
SLIDE 93

Brave Privacy Protections

  • Block cross site trackers

  • Lists of known tracking

websites


  • Refuse to load

  • Both community and

Brave generated

slide-94
SLIDE 94

94

Blocking Cross-Site Trackers in Brave

  • EasyList and EasyPrivacy


Used by AdBlock Plus, etc.


  • Disconnect


Used by Firefox, extensions


  • uBlock Origin


Excellent blocking extension


  • Brave generated


Open source, shared with community

slide-95
SLIDE 95

Brave Privacy Protections

  • Don’t send

identifiers to third party sites


  • Send to “main” site

  • Same with other

storage methods

slide-96
SLIDE 96

Brave Blocks Tracking Cookies

Site A Id=abc Tracking Site

slide-97
SLIDE 97

Brave Blocks Tracking Cookies

Site A Id=abc Tracking Site

slide-98
SLIDE 98

Brave Blocks Tracking Cookies

Site A Tracking Site Site B

slide-99
SLIDE 99

Brave Blocks Tracking Cookies

Site A Tracking Site Site B Id=abc

slide-100
SLIDE 100

Brave Blocks Tracking Cookies

Site A Tracking Site Site B Tracker can’t link A and B

slide-101
SLIDE 101

Brave Privacy Protections

  • Reduce finger printing

vectors


  • Currently:

○ Hardware identifiers ○ Canvas ○ WebGL ○ Audio

  • Planned:

○ Fonts ○ User agent ○ Screen size

slide-102
SLIDE 102
  • Restrictions on third-party

scripts


  • Identifying tracking behaviors,

not just scripts / URLs


  • Query parameters filtering

  • Bounce tracking

  • Much more…

Under Exploration Possible Privacy Protections

slide-103
SLIDE 103

Overview

  • 1. Why websites track (and how much)
  • 2. “Classic” tracking
  • 3. Fingerprinting / “passive tracking”
  • 4. Fingerprinting counter measures
  • 5. Anti-finger printing exercise
  • 6. Privacy protections in Brave
  • 7. Wrapping up
slide-104
SLIDE 104

Unasked for Advice

  • Brave is hiring, keep us in mind
  • Privacy is more than just web, there’s lots to do
  • Don’t accept privacy as a feature…
  • Choose your employer with values in mind
slide-105
SLIDE 105

Thanks!

  • Pete Snyder


Privacy Researcher
 pes@brave.com
 @pes10k

  • Questions?

  • Standards work?

  • Privacy jobs?

  • Brave business model

  • BAT / Block chain

  • Anything else?