DoubleClick, ComScore, cXense
Google AdSense
Google Analytics, Yandex metrika
Facebook, Google Plus
Decrease from 105 network requests to 16 after widget removing
google-analytics.com
connect.facebook.net
accounts.google.com
bluekai.com
crwdcntrl.net
exelator.com
doubleclick.net
tag.apxlv.net
adnxs.com
adsymptotic.com
rlcdn.com
adbrn.com
nexac.com
tapad.com
liadm.com
pippio.com
sohern.com
demdex.net
bidswitch.net
agkn.com
mathtag.com
...
Once you will login to websites or your email or use social media with your real profile
The capability of a site to identify or re-identify a visiting user, user agent or device via configuration settings or other observable characteristics.
Based on characteristics observable in the contents of Web requests, without the use of any code executed on the client.
Passive fingerprint
Source Address from IP Headers
Fingerprint Surface
* Hash of the sum of identified feature functions' results
JavaScript code or other code on the local client to observe additional characteristics about the browser.
Active fingerprint
Fingerprint Surface
* Hash of the sum of identified feature functions' results
Allows re-identification of a user or inferences about a user in the same way that HTTP cookies allow state management for the stateless HTTP protocol
* N - number of discovered storages
The set of observable characteristics that can be used in concert to identify a user, user agent or device or correlate its activity.
Each identified feature based on the following factors
Factor | Value |
---|---|
entropy | 10 bits * |
detectability | ✓ |
persistence | Until update |
availability | ✓ |
scope | Cross origin |
Variable | Entropy (bits) |
---|---|
user agent plugins fonts video supercookies http accept timezone cookies enabled |
10.0 15.4 13.9 4.83 2.12 6.09 3.04 0.353 |
* Not trivial and interesting
const canvas = document.createElement('canvas')
const context = canvas.getContext('2d')
context.fillText(..)
context.fillRect(..)
context.fillStyle(..)
canvas.toDataURL()
It is consistent, high-entropy, transparent to user, readily obtainable
The same text can be rendered in different ways on different computers depending on the operating system, font library, graphics card, graphics driver and the browser.
The same idea and dependencies as in canvas fingerprint
aliased line width range; aliased point size range; alpha bits; antialiasing; blue bits; depth bits; green bits; max anisotropy; max combined texture image units; max cube map texture size; max fragment uniform vectors; max render buffer size; max texture image units; max texture size; max varying vectors; max vertex attribs; max vertex texture image units; max vertex uniform vectors; and etc.
Fingerprint can collect WebGL constants also
Approach can successfully identify 99.24%
Audio signals processed on different machines or browsers may have slight differences due to hardware or software differences between the machine
Using the window.AudioContext API to fingerprint does not collect sound played or recorded by your machine.
Number of possible identifiers - 3,592,980
Group of researchers presented an analysis of Battery Status API as implemented by Firefox on GNU/Linux in 2015
The high precision battery level readings provided by Firefox can lead to an unexpected fingerprinting surface: the detection of battery capacity.
https://name:value@host
Backend dependent
Backend and HTTP Cookies dependent
Set value
Get value
1. Send request to backend
2. Resonse from backend
2.1 Return 304 HTTP Status if IF-NONE-MATCH is set in headers
2.2 Return 200 HTTP status if HTTP cookies not set
Set value
Get value
1. Send request with value in URL to backend
2. Request PNG Image
2.1 Return 304 HTTP Status if value is set in cookies
2.2 Return 200 HTTP Status with encoded value in PNG if value is not set in HTTP Cookies
Backend and HTTP Cookies dependent
Jeremiah Grossman, August 2006
link:visited + window.getComputedStyle
Attempt for getting pixel color from converted html to Canvas is preveneted
Paul Stone, July 2013
window.requestAnimationFrame + calculate time between frames drawing
History Sniffing Timing Attack
Timing Attacks with SVG Filters
CSS + SVG Filters + Reading pixels
First version of specification. April 2009
Local Shared Object
W3C Recommendation 28 October 2014
Backend dependent
The release of version 34.0 of Firefox seems to have changed. Unlike Google Chrome, Firefox has chosen to prefer privacy over security and no longer carries HSTS over to private windows.
Allows a website to indicate that it should always be accessed using a secure connection
http(s)://name-[0-4096].domain.com/?(SET/DEL)
HTTP Public Key Pinning
Server: One of these hashes must be in the TLS cert chain you receive from me.
Browser: DOPE!! NEXT TIME I SEE YOU I WILL CHECK IT BEFORE I WRECK IT
RFC 7469
Is your browser safe against tracking?
over a million different browser-instances
83.6% had completely unique fingerprints (entropy: 18.1 bits, or more)
94.2% of “typical desktop browsers” were unique (entropy: 18.8 bits, or more)
Browser Characteristic | Entropy (bits) | Each browser with this value |
---|---|---|
Hash of canvas fingerprint Screen Size and Color Depth Browser Plugin Details Time Zone DNT Header Enabled? HTTP_ACCEPT Headers Hash of WebGL fingerprint Language System Fonts Platform User Agent |
7.47 4.6 7.88 0.77 2.12 14.35 4.83 5.78 4.95 2.99 9.18 |
177.31 24.19 236.12 108.76 1.7 20830.13 28.43 55.12 30.98 7.93 579.31 |
Panopticlick does not measure all forms of tracking and protection
~480k browser are tested
* Result of fingerprint test for my browser. The July of 2017
Has shares some goals with panoticlick
but provides a number of novelties
We are now over 400,000 fingerprints
Built on top of Firefox, with automation provided by Selenium. It includes several hooks for data collection, including a proxy, a Firefox extension, and access to Flash cookies
Academic researchers, developers, public advocates, and others with expertise in online privacy all could advance our progress towards providing accurate web privacy information and best practices for the public.
As an example of browser with design against fingerprint tecniques
Specific Fingerprinting Defenses in the Tor Browser:
Plugins; HTML5 Canvas Image Extraction; Fonts; Monitor, Widget, and OS Desktop Resolution; Display Media information; WebGL; MediaDevices API; MIME Types; User Agent and HTTP Headers; Locale Fingerprinting; Timezone and Clock Offset; HSTS and HPKP supercookies; and etc.
W3C Editor's Draft 11 May 2017
* First version of W3C draft was created on March of 2013
The Do Not Track header was originally proposed in 2009 by researchers Christopher Soghoian, Sid Stamm, and Dan Kaminsky
Based on web services trust and reputation
New web features bring new fingerprinting techniques
The Web Never Forgets