User Tools

Site Tools


privacy:fingerprinting

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
privacy:fingerprinting [2026/08/12 09:29] – Refresh all corpus figures for the extended 2010-2026 extraction (4,322 -> 5,859 papers; fingerprint-naming 201 -> 280, browser-FP subset 59 -> 83). fp_fold.mjs extended: residue had grown from 5 tuples to 59, now 7; new 'LLM / model identification' famil karel.kubicek.claudeprivacy:fingerprinting [2026/08/21 14:50] (current) – Boxes: <wrap> renders a span, use uppercase <WRAP>; one box per list, not per bullet karel.kubicek.claude
Line 3: Line 3:
 //Browser fingerprinting// identifies a browser — and through it a device and a person — from the configuration it exposes to JavaScript and to HTTP: fonts, canvas rendering, audio processing, screen geometry, installed extensions, GPU behaviour. Unlike [[Privacy:Cookies|cookies]] it is **stateless**: nothing is written to the client, so nothing can be cleared, and there is no browser API a user can use to say no. That is what makes it the tracking technique that outlives every storage-based countermeasure, and the one a measurement study is least well equipped to observe. //Browser fingerprinting// identifies a browser — and through it a device and a person — from the configuration it exposes to JavaScript and to HTTP: fonts, canvas rendering, audio processing, screen geometry, installed extensions, GPU behaviour. Unlike [[Privacy:Cookies|cookies]] it is **stateless**: nothing is written to the client, so nothing can be cleared, and there is no browser API a user can use to say no. That is what makes it the tracking technique that outlives every storage-based countermeasure, and the one a measurement study is least well equipped to observe.
  
-The canonical entry point outside this wiki is Laperdrix et al.'s survey {[laperdrix2020_survey]}, which covers the attribute space, the entropy literature and the defence taxonomy in a way this page does not attempt to duplicate. What this page adds is the **measurement methodology**: how the 59 papers in our corpus actually detected fingerprinting, why their prevalence numbers cannot be compared with one another, and what you have to instrument to produce a number of your own.+The canonical entry point outside this wiki is Laperdrix et al.'s survey {[laperdrix2020_survey]}, which covers the attribute space, the entropy literature and the defence taxonomy in a way this page does not attempt to duplicate. What this page adds is the **measurement methodology**: how the 83 papers in our corpus actually detected fingerprinting, why their prevalence numbers cannot be compared with one another, and what you have to instrument to produce a number of your own.
  
 <WRAP important> <WRAP important>
-**Before you search the literature for "fingerprinting", know that the word names at least six unrelated research areas.** In our corpus of seven security and privacy venues, 201 papers describe detecting something they call a fingerprint. Only 59 of them are about browsers. The largest single group — 71 papers — is **website fingerprinting**, an encrypted-traffic-analysis problem about inferring which page a victim loaded over Tor or a VPN. It shares the word and almost nothing else. See [[#What the Word Means in the Literature]].+**Before you search the literature for "fingerprinting", know that the word names at least eight unrelated research areas.** In our corpus of seven security and privacy venues, 280 papers describe detecting something they call a fingerprint. Only 83 of them are about browsers. The largest single group — 105 papers — is **website fingerprinting**, an encrypted-traffic-analysis problem about inferring which page a victim loaded over Tor or a VPN. It shares the word and almost nothing else. See [[#What the Word Means in the Literature]].
 </WRAP> </WRAP>
  
Line 154: Line 154:
 ==== Detection in the wild versus defence ==== ==== Detection in the wild versus defence ====
  
-The 59 papers split into two research programmes that use the same instrumentation:+The 83 papers split into two research programmes that use the same instrumentation:
  
 **Detecting fingerprinting** — the classifier lineage. Heuristic API-access counting (Acar et al., Englehardt & Narayanan) gave way to learned script classifiers: FP-Inspector {[iqbal2021_fingerprinting]} on syntactic and dynamic JS features, FP-Radar {[bahrami2022_radar]} on the co-occurrence graph of API accesses over time, automatic discovery of //emerging// techniques {[su2023_automatic]}, taint tracking with entropy thresholds in FP-Tracer {[boussaha2024_tracer]}, and federated detection without centralising crawl data in FP-Fed {[annamalai2024_fpfed]}. Rizzo et al. {[rizzo2021_unveiling]} come at it from code mining instead. **Detecting fingerprinting** — the classifier lineage. Heuristic API-access counting (Acar et al., Englehardt & Narayanan) gave way to learned script classifiers: FP-Inspector {[iqbal2021_fingerprinting]} on syntactic and dynamic JS features, FP-Radar {[bahrami2022_radar]} on the co-occurrence graph of API accesses over time, automatic discovery of //emerging// techniques {[su2023_automatic]}, taint tracking with entropy thresholds in FP-Tracer {[boussaha2024_tracer]}, and federated detection without centralising crawl data in FP-Fed {[annamalai2024_fpfed]}. Rizzo et al. {[rizzo2021_unveiling]} come at it from code mining instead.
Line 323: Line 323:
 ==== Methodology and limitations of these figures ==== ==== Methodology and limitations of these figures ====
  
-  * **Seven venues only.** CCS, IMC, NDSS, PETS, USENIX Security, TheWebConf, IEEE S&P, 2010–2026, with 2025 and 2026 provisional. **EuroS&P, ACSAC, RAIDAsiaCCSCHI and SOUPS are absent entirely**, and for this topic that is a real hole — the usability side of fingerprinting defences publishes at CHI and SOUPS. Every claim here is a claim about those seven venues.+  * **Seven venues only**, 2010–2026, with 2025 and 2026 provisional. Which venueswhich yearswhat each stage of the selection funnel costs and which venue-years are empty are on [[literature:corpus]] and are not restated here. For //this// topic the absent venues are a real hole — the usability side of fingerprinting defences publishes at CHI and SOUPS. Every claim here is a claim about those seven venues.
   * **One paper is double-counted.** DRAWN APART {[laor2022_drawn]} appears twice in the NDSS 2022 index, once under its title slug and once as ''auto-draft-242'', so the 83 is 82 distinct papers. Counts elsewhere on the page carry the same one-paper error. Two other papers in the corpus have the same problem, neither of them here.   * **One paper is double-counted.** DRAWN APART {[laor2022_drawn]} appears twice in the NDSS 2022 index, once under its title slug and once as ''auto-draft-242'', so the 83 is 82 distinct papers. Counts elsewhere on the page carry the same one-paper error. Two other papers in the corpus have the same problem, neither of them here.
   * **Silence is not absence.** "Does not state whether it ran headless" means the paper did not say. These are reporting figures, not practice figures.   * **Silence is not absence.** "Does not state whether it ran headless" means the paper did not say. These are reporting figures, not practice figures.
Line 345: Line 345:
  
   - **Uniformity and randomisation are measured differently.** Against a uniformity defence you measure //how many users share a bucket//; against farbling you measure //whether values are linkable across sessions//. A protocol written for one gives a meaningless answer against the other, and this is a common flaw in defence comparisons.   - **Uniformity and randomisation are measured differently.** Against a uniformity defence you measure //how many users share a bucket//; against farbling you measure //whether values are linkable across sessions//. A protocol written for one gives a meaningless answer against the other, and this is a common flaw in defence comparisons.
-  - **Your own crawler's browser is a defence configuration.** A 2026 Firefox with FPP on by default in Standard mode is not the browser that older papers measured with. State the browser, the version, and the fingerprinting-protection settings — the 19.5% of crawling papers in the corpus that state statefulness are ahead of the field, and fingerprinting-protection state is reported even less often than that.+  - **Your own crawler's browser is a defence configuration.** A 2026 Firefox with FPP on by default in Standard mode is not the browser that older papers measured with. State the browser, the version, and the fingerprinting-protection settings — the 19.6% of crawling papers in the corpus that state statefulness are ahead of the field, and fingerprinting-protection state is reported even less often than that.
  
 ==== The 2025 policy reversal ==== ==== The 2025 policy reversal ====
Line 352: Line 352:
 On 18 December 2024 Google notified users of its advertising products that **from 16 February 2025 it would no longer prohibit them from employing fingerprinting techniques**. The UK Information Commissioner's Office responded the next day: //"We think this change is irresponsible"//, quoting Google's own 2019 position on fingerprinting back at it — //"We think this subverts user choice and is wrong."//((UK Information Commissioner's Office, [[https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/2024/12/our-response-to-google-s-policy-change-on-fingerprinting/|"Our response to Google's policy change on fingerprinting"]], 19 December 2024. Verified against the ICO page directly on 2026-08-05.)) On 18 December 2024 Google notified users of its advertising products that **from 16 February 2025 it would no longer prohibit them from employing fingerprinting techniques**. The UK Information Commissioner's Office responded the next day: //"We think this change is irresponsible"//, quoting Google's own 2019 position on fingerprinting back at it — //"We think this subverts user choice and is wrong."//((UK Information Commissioner's Office, [[https://ico.org.uk/about-the-ico/media-centre/news-and-blogs/2024/12/our-response-to-google-s-policy-change-on-fingerprinting/|"Our response to Google's policy change on fingerprinting"]], 19 December 2024. Verified against the ICO page directly on 2026-08-05.))
  
-For a measurement researcher this is the most consequential change in the topic since GDPR. Prevalence figures from before February 2025 describe a web in which the largest ad platform contractually forbade the technique. Anything you measure after it does not, and the corpus behind this page ends in 2024 — so **there is currently no peer-reviewed measurement in these seven venues of the post-reversal web.** That is an open research question with a date on it.+For a measurement researcher this is the most consequential change in the topic since GDPR. Prevalence figures from before February 2025 describe a web in which the largest ad platform contractually forbade the technique; anything you measure after it does not
 + 
 +**The first post-reversal measurement in these seven venues has now landed.** Luo et al. {[luo2025_canvassing]} crawled the Tranco top 20K and a random tail sample **in May 2025**, three months after the change, and found canvas fingerprinting on **12.7% of 16,276 popular sites and 9.9% of 17,260 tail sites**That is one technique on one crawl, and it is not a before/after comparison — nobody has run the same instrument on both sides of the date. But the page can no longer say the post-reversal web is unmeasured, and a pre/post study now has a published post-side baseline to work against.
 </WRAP> </WRAP>
  
Line 359: Line 361:
 ==== Detecting fingerprinting in a crawl ==== ==== Detecting fingerprinting in a crawl ====
  
-  * **[[https://github.com/openwpm/OpenWPM|OpenWPM]]** — the standard instrumented crawler; its JavaScript instrumentation records every access to a configured API surface, with call arguments and stack, which is the raw material every detector on this page consumes. 12 of the 59 papers use it. See [[Programming:Crawler:OpenWPM]].+  * **[[https://github.com/openwpm/OpenWPM|OpenWPM]]** — the standard instrumented crawler; its JavaScript instrumentation records every access to a configured API surface, with call arguments and stack, which is the raw material every detector on this page consumes. 15 of the 83 papers use it. See [[Programming:Crawler:OpenWPM]].
   * **[[https://github.com/uiowa-irl/FP-Inspector|FP-Inspector]]** {[iqbal2021_fingerprinting]} — the most-used purpose-built classifier in the corpus (4 papers). Treat it as a **research artifact frozen at its 2021 paper**, not a maintained tool: useful for its classifier, feature set and labelled script list; expect to port it.   * **[[https://github.com/uiowa-irl/FP-Inspector|FP-Inspector]]** {[iqbal2021_fingerprinting]} — the most-used purpose-built classifier in the corpus (4 papers). Treat it as a **research artifact frozen at its 2021 paper**, not a maintained tool: useful for its classifier, feature set and labelled script list; expect to port it.
-  * **[[https://github.com/duckduckgo/tracker-radar-collector|DuckDuckGo Tracker Radar Collector]]** — a lighter Puppeteer-based collector with an API-access collector built in; papers. See [[Programming:Crawler:Tracker radar collector]].+  * **[[https://github.com/duckduckgo/tracker-radar-collector|DuckDuckGo Tracker Radar Collector]]** — a lighter Puppeteer-based collector with an API-access collector built in; papers. See [[Programming:Crawler:Tracker radar collector]].
   * **Filter lists** — EasyPrivacy and Disconnect are what most papers actually use for ground truth. Read the caveat above before you do the same, and see [[Privacy:Requests]] for how to apply them in post-processing rather than during the crawl.   * **Filter lists** — EasyPrivacy and Disconnect are what most papers actually use for ground truth. Read the caveat above before you do the same, and see [[Privacy:Requests]] for how to apply them in post-processing rather than during the crawl.
  
Line 373: Line 375:
   * **[[https://abrahamjuliot.github.io/creepjs/|CreepJS]]** — aggressive detection of lies and inconsistencies: it is the closest public analogue to FP-Scanner {[vastel2018_scanner]} and the fastest way to discover that your stealth plugin is making you //more// identifiable.   * **[[https://abrahamjuliot.github.io/creepjs/|CreepJS]]** — aggressive detection of lies and inconsistencies: it is the closest public analogue to FP-Scanner {[vastel2018_scanner]} and the fastest way to discover that your stealth plugin is making you //more// identifiable.
   * **[[https://fpmon.github.io/fingerprinting-monitor/|FPMON]]** — a browser extension that reports, in real time, which fingerprinting-relevant APIs the current page touched. Handy for a spot check on a site your pipeline flagged.   * **[[https://fpmon.github.io/fingerprinting-monitor/|FPMON]]** — a browser extension that reports, in real time, which fingerprinting-relevant APIs the current page touched. Handy for a spot check on a site your pipeline flagged.
-  * **[[https://github.com/fingerprintjs/fingerprintjs|FingerprintJS]]** — the open-source library, used as a positive control by of the 59 papers. Licence history matters if you vendor it: MIT, then Business Source License 1.1 for the 4.x series, back to MIT from 5.0.0 (current npm release 5.2.0, MIT, checked 2026-08-05). The hosted **Fingerprint Pro** product is separate and proprietary.+  * **[[https://github.com/fingerprintjs/fingerprintjs|FingerprintJS]]** — the open-source library, used as a positive control by 14 of the 83 papers. Licence history matters if you vendor it: MIT, then Business Source License 1.1 for the 4.x series, back to MIT from 5.0.0 (current npm release 5.2.0, MIT, checked 2026-08-05). The hosted **Fingerprint Pro** product is separate and proprietary.
  
 ==== A crawler self-check you should run ==== ==== A crawler self-check you should run ====
Line 384: Line 386:
   - Whether the fingerprinting scripts you detected are the same set a headful browser on the same page loads. FP-Fed {[annamalai2024_fpfed]} measures precisely this gap.   - Whether the fingerprinting scripts you detected are the same set a headful browser on the same page loads. FP-Fed {[annamalai2024_fpfed]} measures precisely this gap.
  
-''puppeteer-extra-plugin-stealth'' patches many of the obvious tells and appears in one corpus paper. Do not treat it as a solution: CreepJS and FP-Scanner-style consistency checks defeat it, and a partially-patched browser occupies an anonymity set of one. If detectability matters to your result, **measure it and report it** rather than assuming it away.+''puppeteer-extra-plugin-stealth'' patches many of the obvious tells and appears in two corpus papers. Do not treat it as a solution: CreepJS and FP-Scanner-style consistency checks defeat it, and a partially-patched browser occupies an anonymity set of one. If detectability matters to your result, **measure it and report it** rather than assuming it away.
  
 ===== Open Questions ===== ===== Open Questions =====
  
-  * <wrap todo>No measurement in these seven venues of fingerprinting prevalence **after** Google's 16 February 2025 policy change. The pre/post comparison is the obvious study and the baseline data (FP-Radar, FP-Inspector) is public.</wrap> +<WRAP todo> 
-  * <wrap todo>No study quantifies how much a **headless or containerised crawler** under-counts fingerprinting relative to a headful one on the same site listFP-Fed {[annamalai2024_fpfed]} shows the gap exists; nobody has measured its size across a large crawl.</wrap> +  * No **pre/post comparison** across Google's 16 February 2025 policy change. Luo et al. {[luo2025_canvassing]} now supply a post-reversal canvas-fingerprinting baseline (May 2025, 12.7% of the top 20K), so what is missing is the same instrument run on both sides of the date rather than any measurement at all. The pre-side baseline data (FP-Radar, FP-Inspector) is public. 
-  * <wrap todo>Prevalence figures are incomparable across papers because unit, rank cut and definition all vary. A shared benchmark — a fixed site sample with hand-labelled ground truth — does not exist for fingerprinting the way EasyList serves ad-blocking research.</wrap> +  * **Partly answered since this page was written.** Annamalai et al. {[annamalai2025_beyond]} compared real user sessions against an automated crawl of the same sites and found the crawl missed **211 of 471 fingerprinting websites (45%)** — the first published size for this gapWhat is still open is the narrower question: how much of that 45% is //headless versus headful// as opposed to interaction depth, authentication and consent, which the paper attributes it to. 
-  * <wrap todo>Consent and fingerprinting: only of 59 papers touch a law, and none in the corpus tests whether a CMP's consent signal changes fingerprinting behaviour on the same site. Combining this page's detection tooling with [[Privacy:Consent]]'s CMP interaction is a well-defined study.</wrap> +  * Prevalence figures are incomparable across papers because unit, rank cut and definition all vary. A shared benchmark — a fixed site sample with hand-labelled ground truth — does not exist for fingerprinting the way EasyList serves ad-blocking research. 
-  * <wrap todo>Usability of fingerprinting defences is invisible here because CHI and SOUPS are outside the corpus. Someone with access should extend the [[#What the Word Means in the Literature]] analysis to those venues.</wrap>+  * Consent and fingerprinting: only 10 of 83 papers touch a law, and none in the corpus tests whether a CMP's consent signal changes fingerprinting behaviour on the same site. Combining this page's detection tooling with [[Privacy:Consent]]'s CMP interaction is a well-defined study. 
 +  * Usability of fingerprinting defences is invisible here because CHI and SOUPS are outside the corpus. Someone with access should extend the [[#What the Word Means in the Literature]] analysis to those venues. 
 +</WRAP>
  
 ===== Related Pages ===== ===== Related Pages =====
  
   * [[Privacy:Cookies]] — the stateful counterpart; fingerprinting and cookies are used together, and respawning links them directly {[fouad2022my]}.   * [[Privacy:Cookies]] — the stateful counterpart; fingerprinting and cookies are used together, and respawning links them directly {[fouad2022my]}.
-  * [[Privacy:JavaScript]] — classifying the scripts that 42.4% of these papers are actually detecting.+  * [[Privacy:JavaScript]] — classifying the scripts that 39.8% of these papers are actually detecting.
   * [[Privacy:Requests]] — the filter lists that most of this literature uses as ground truth, and why that is a compromise.   * [[Privacy:Requests]] — the filter lists that most of this literature uses as ground truth, and why that is a compromise.
   * [[Privacy:Consent]] — the open compliance question: a technique with no refusal mechanism.   * [[Privacy:Consent]] — the open compliance question: a technique with no refusal mechanism.
   * [[Design:Website classification]] — where fingerprinting sits in the wider classification taxonomy.   * [[Design:Website classification]] — where fingerprinting sits in the wider classification taxonomy.
   * [[Programming:Crawler:OpenWPM]] and [[Programming:Crawler:Tracker radar collector]] — the two instrumented crawlers this page depends on.   * [[Programming:Crawler:OpenWPM]] and [[Programming:Crawler:Tracker radar collector]] — the two instrumented crawlers this page depends on.
-  * [[Programming:Stateful stateless]] — only 39.0% of these papers state it, and for fingerprinting it changes what you see.+  * [[Programming:Stateful stateless]] — only 36.8% of these papers state it, and for fingerprinting it changes what you see.
   * [[Design:Crawling location]] — the other axis a fingerprinting crawl is judged on.   * [[Design:Crawling location]] — the other axis a fingerprinting crawl is judged on.
   * [[Statistics:Biases]] — why a uniqueness percentage is a property of your sample.   * [[Statistics:Biases]] — why a uniqueness percentage is a property of your sample.
privacy/fingerprinting.1786526979.txt.gz · Last modified: by karel.kubicek.claude

Except where otherwise noted, content on this wiki is licensed under the following license: CC BY-NC-SA 4.0
CC BY-NC-SA 4.0 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki