.pdfpng.pngconvert #1

# adF: A Novel System for Measuring Web Fingerprinting through Ads

Miguel A Bermejo-Agueda  Universidad Carlos III MadridSpain ,  Patricia
Callejo  Universidad Carlos III de Madrid, UC3M-Santander Big Data
InstituteSpain ,  Rubén Cuevas  Universidad Carlos III de Madrid,
UC3M-Santander Big Data InstituteSpain and  Ángel Cuevas  Universidad Carlos
III de Madrid, UC3M-Santander Big Data InstituteSpain

###### Abstract.

This paper introduces _adF_ , a novel system for analyzing the vulnerability
of different devices, Operating Systems (OSes), and browsers to web
fingerprinting. _adF_ performs its measurements from code inserted in ads. We
have used our system in several ad campaigns that delivered 5.40 million ad
impressions. The collected data enable us to assess the vulnerability of
current desktop and mobile devices to web fingerprinting. Based on our
results, we estimate that 64% of desktop devices and 40% of mobile devices can
be uniquely fingerprinted with our web fingerprinting system. However, the
resilience to web fingerprinting varies significantly across browsers and
device types, with Chrome on desktops being the most vulnerable configuration.

fingerprinting, adv., user privacy, adTag, web tracking.

††copyright: none††doi: ††price: ††isbn: ††copyright: none††conference: ACM
TheWebConf 2024 homepage (ACM); 2024; Singapore

##  1\. Introduction

Digital advertising is arguably the primary source of funding for the current
Internet. Some of the most important tech companies, such as Google or Meta
(previously Facebook), declare that over 80% and 97% (2022 data) of their
profits come from digital advertising, respectively
(advertising_revenue_2023_google, ; advertising_revenue_2023_meta, ).

The appeal of online advertising for advertisers, compared to traditional
forms of publicity (e.g., TV, radio, or newspapers), lies in its ability to
deliver personalized ads. Implementing personalized advertising is based on
techniques that identify unique users online. These techniques are used for
tracking, profiling users, displaying targeted or re-targeted ads,
implementing attribution models, etc. The most widely used techniques for this
purpose are third-party cookies, advertising IDs, and fingerprinting
(cahn2016empirical, ; al2018beyond, ; bujlow2017survey, ).

Third-party cookies and advertising IDs, when properly implemented with
consent acquisition (not always the case), comply with data protection
regulations. Fingerprinting, by definition, is an intrusive practice and
represents a severe threat to end-users’ privacy. The most common type of
fingerprinting involves embedding a script in a website. When a user visits
such a website, the script collects attributes from the browser, OS, and
device rendering the web page. The concatenation of these attributes creates a
device fingerprint. If the number of attributes is large enough, the
fingerprint can make the device unique even among hundreds of thousands or
millions of devices. This practice is known as _web fingerprinting_. The
privacy risks associated with web fingerprinting have prompted extensive
research in this area.

A body of work proposes countermeasure techniques to prevent fingerprinting
(laperdrix2015mitigating, ; Al_FannahNasserMohammed2020Tltl, ; azad2020taming,
; canvasbloquer_firefox, ; wu2019rendered, ; laperdrix2016beauty, ;
iqbal2021fingerprinting, ; privacybadger, ; faizkhademi2015fpguard, ;
nikiforakis2015privaricator, ; laperdrix2017fprandom, ; trickel2019everyone, ;
gomez2019collaborative, ; obidatcanvas2020, ; salomatin2022comparison, ;
fernandez2023keep, ; torok2023only, ; noscript, ). Browser developers (e.g.,
Apple, Mozilla, or Google) have also proposed anti-fingerprinting measures in
later releases of their browsers (cameron_2018_appleagainstfp, ;
enhanced_tracking_protection_mozillawiki, ; chrome_plans_fp_ua, ). However, a
rapid web technology development has made some existing proposals obsolete and
requires a continuous effort from browser developers to update their anti-
fingerprinting solutions.

In this rapidly evolving context, proper auditing methodologies are crucial
for measuring the risk of web fingerprinting to users and assessing
vulnerabilities in different web browsers. The research community has proposed
measurement solutions in this direction (eckersley2010, ; laperdrix2016beauty,
; boda2011user, ; cao2017cross, ; browserleaks, ; privacycheck, ;
fietkau2021fpmon, ). Essentially, these solutions involve deploying a script
on a web page to compute the device fingerprint when a device connects to the
page. This methodology assesses whether the computed fingerprint is unique
within the database of previously computed fingerprints. This approach has
been very useful in improving our understanding of web fingerprinting.
However, it presents some limitations. On the one hand, if the auditing script
is deployed on a website meant for measuring fingerprinting (eckersley2010, ;
eckersley_panopticlick, ; laperdrix2016beauty, ; laperdrix_amiunique, ), it
requires the voluntary participation of users who are willing to assess their
fingerprint. Sustaining a continuous flow of visitors to these types of
website over time poses a challenge. On the other hand, running the script on
a regular website (gomezBoix2018hiding, ; andriamilanto2021largescale, ;
li2020wtmbf, ) introduces biases in the type of devices/users visiting that
single website. Moreover, the ability to conduct such experiments depends on
the willingness of the website owner to participate. Furthermore, the coverage
of this technique is limited to web-browsers, leaving aside other very common
venues such as mobile apps that operate on top of web views, essentially
utilizing web technologies.

In this paper, we propose a novel measurement technology to study web
fingerprinting. Our methodology utilizes ads, which are HTML elements included
on web pages and within mobile apps. We embed a script to compute the device
fingerprint within these ads, overcoming limitations of existing solutions: 1)
We run ad campaigns that perform measurements transparently to users, ensuring
longitudinal analyses without relying on volunteers; 2) Our methodology allows
for the study of web fingerprinting within the context of mobile apps; 3) Our
data sample is not limited to measurements from a single vantage point (i.e.,
web page); 4) Researchers have full control over our technique, deciding when
to run the campaigns; 5) By harnessing the targeting capabilities of online
advertising, our methodology enables the definition of specific device
configurations (based on device type, OS, and browser) to be measured for the
first time.

We have implemented our methodology in a system we refer to as _adF_ (as
discussed in Section 2) and conducted real ad campaigns that collected more
than 4,04M fingerprint samples in three independent periods of time over the
course of a year and a half (as detailed in Section 3). First, these real
experiments demonstrate that our methodology achieves an accuracy exceeding
80%, confirming its validity for the study of web fingerprinting. Second, the
analysis of the collected fingerprint samples allows to assess the
vulnerability of different device configurations to web fingerprinting. We
define a device configuration as the combination of device type (desktop vs.
mobile), an operating system (e.g., Windows, macOS, Android, or iOS), and a
browser (e.g., Mozilla Firefox, Chrome, or Safari). In the case of mobile
apps, we only distinguish between operating systems , Android vs. iOS (see
Section 7).

Our analysis reveals that 64% of desktop devices can be uniquely fingerprinted
from ads rendered by browsers. In the case of mobile devices, 40% (35%) can be
fingerprinted with ads delivered to browsers (mobile apps). Moreover, we
observe varying degrees of vulnerability to fingerprinting among different
device configurations. For instance, in mobile devices, iOS offers
significantly better protection against web fingerprinting compared to
Android; (2) In the case of desktop devices, over 78% of devices running
Chrome can be fingerprinted, regardless of the operating system. This
percentage drops to around 5,5% for Safari, macOS and stands at 22% for
Firefox, Linux.

Finally, a thorough analysis of all attributes contributing to web
fingerprinting reveals that cardinality (the number of distinct values an
attribute can take) and the entropy (the frequency of appearance of the
different values) are the key parameters that define the discrimination power
of attributes. The device configurations most susceptible to fingerprinting
are those associated with a higher number of attributes with substantial
discrimination power (as discussed in Section 8).

Figure 1. Visual representation of _adF_ , our implemented web fingerprinting
system.

##  2\. _adF_ : A system to measure web fingerprinting from ads

_adF_ is a novel system designed to assess the vulnerability of different
device configurations to web fingerprinting. Figure 1 shows the scheme of the
_adF_ system, formed by three components: _Data Collector_ , _Fingerprint
Constructor_ , and _Fingerprint Classifier_ , each of which is detailed below.
The final output of our system is a device fingerprint, categorized as either
unique or non-unique.

###  2.1. Data Collector

To collect attributes from the device, we have developed an _adTag_ , a
JavaScript (JS) code, which can be embedded into any ad format capable of
running a script. Our _adTag_ is executed upon the rendering process of the ad
on a device. The use of adTags is a widespread practice in online advertising.
Moreover, the research community has also used adTags to analyze transparency
aspects of online advertising (callejo2019q, ; 8932475, ) and to conduct
network measurements (callejo2017opportunities, ; callejo2019measuring, ).

Our _adTag_ has been designed to capture a comprehensive set of up to 191
diverse attributes from the device, OS, and browser where the ad is displayed.
Specifically, it leverages JavaScript APIs within browsers to retrieve
information. While some APIs necessitate permissions for access, such as the
microphone (get_microphone_permission, ), camera (mediaDevices_getUserMedia,
), or location (geolocation_API, ), the majority of them are openly accessible
through our _adTag_. The attributes retrieved by our _adTag_ via these APIs
are stored on a server within our domain, where we process them and construct
the fingerprint using the Fingerprint Constructor. Table 4 in Appendix A
provides the complete list of attributes considered, along with their
respective sources.

An initial analysis of the 191 considered attributes, based on tens of
thousands of collected samples, reveals that some of these attributes are not
suitable for creating unique fingerprints. Therefore, our Data Collector does
not retrieve attributes that meet any of the following criteria: 1) the
attribute reports a constant value (e.g., Bars settings: menubar); 2) the
value of the attribute is unstable over time (e.g., Network Information:
downlink); 3) the value is unreliable (e.g., Window navigator.onLine); 4) most
popular browsers do not support the attribute (e.g., WebHID API). After
applying this filtering, the final version of the Data Collector retrieves a
total of 66 attributes from the initial 191. These attributes are highlighted
in bold in Table 4. Note that some of these 66 attributes are joined to form
meta-attributes defined as a concatenation of several individual attributes.
Table 4 also details the mapping of attributes to meta-attributes.

In the case of mobile apps, just a subset of 35 of these 66 attributes are
considered and thus used in our analyses. These are identified in Table 4 with
an asterisk (*).

###  2.2. Fingerprint Constructor

This module aims to build a device’s fingerprint using the 66 (35) attributes
collected by the Data Collector from the browser (or mobile app). To this end,
the Fingerprint Constructor first generates a string concatenating the value
of these 66 (35) attributes. On average, this string has a size of 657 Bytes
among the samples available in our dataset (as described in Section 3). We
could use this string as a fingerprint of the device. However, for enhanced
computational efficiency, we have applied an MD5 hash function to create an
alphanumeric fingerprint consisting of 512 bits for each device. The use of a
hash function ensures a very low collision probability, and the resulting
fingerprint’s reduced size enables rapid computational processing.

###  2.3. Fingerprint Classifier

The fingerprint delivered by the Fingerprint Constructor is actionable, for
instance, to track a device in the web, only if it is unique. Consequently,
the final of our system is a binary (fingerprint) classifier. Its output,
i.e., the dependent variable, is a binary indicator that determines whether a
fingerprint is unique (1) or non-unique (0). It receives as input (i.e.,
independent variables) the 66 (35) attributes from the Data Collector for
browser (mobile app) samples.

The Fingerprint Classifier, like any classifier, requires training. To achieve
this, we use the _fingerprint_ datasets, as introduced in Section 3,
comprising 161k and 52k real fingerprints from browsers and mobile apps,
respectively. Each fingerprint in these datasets is labeled as either unique
or non-unique.

The algorithm employed to build the model for our Fingerprint Classifier is
XGBoost (eXtreme Gradient Boosting) (xgboost_wiki, ). It has demonstrated the
highest performance in our evaluation using a k-fold cross-validation approach
when compared to alternative methods, including Logistic Regression, Support
Vector Machine, Decision Tree, Random Forest, Gradient Boosting Machine, as
well as various third-party gradient boosting algorithms like LightGBM and
CatBoost.

Two essential tasks related to data handling are integral to the design of our
classifier. Firstly, we employ the k-nearest neighbor (KNN) imputation
technique to address the issue of missing values that are not reported by the
browser (or mobile app). KNN is a widely used and effective technique
(aydin2021performance, ; scikit_2022, ). Secondly, XGBoost, like many other
machine learning algorithms, was primarily designed to work with numerical
data111Note that the latest versions of XGBoost offer experimental support for
categorical variables. However, this support is still limited
(categoricaldata_xgboost_1_7_1, ).. To transform categorical variables into
numerical ones, we adhere to best practices recommended by the research
community. We utilize one-hot encoding (sklearn_onehotencoder, ) for
categorical variables with low cardinality and frequency encoding
(countfrequencyencoder_1_0_2, ) for those with high cardinality.

Finally, we have chosen to develop two separate models, one for browsers and
another for mobile apps. This decision is driven by the differing number of
attributes available in each case, 66 vs. 35.

##  3\. Measurements and Datasets

To assess the vulnerability of different device configurations within browser-
based environments to web fingerprinting, we deployed the _adF_ system, as
described earlier, in live ad campaigns. These campaigns were configured
within the Sonata Platform, a Demand Side Platform (DSP) operated by TAPTAP
Digital (taptap_digital, ). Sonata is a mid-sized DSP that serves tens of
millions of daily ads in 15 countries across Europe, Africa, and the Americas.
The Data Collector retrieves the 66 attributes (highlighted in Table 4) from
each of the ads delivered through these ad campaigns. In addition, when
available, we also collect the device’s advertising ID provided by the DSP as
a feature.

The resulting dataset from these measurements, known as the _raw-browsers_
dataset, comprises a total of 3.06M data samples collected at different time
intervals (February-June 2022, May 2023, and September 2023). Each data sample
includes the following fields:

1\. device’s fingerprint obtained from the Fingerprint Constructor.

2\. device’s advertising ID obtained from the DSP.

3\. device’s type can take two values: mobile or desktop.

4\. device’s OS captures the OS of the device: iOS or Android for mobile
devices; Windows, macOS, or Linux for desktop devices.

5\. browser represents the browser used by the device (e.g., chrome, safari,
firefox).

6\. attributes is a data structure including the value of the 66 attributes.

We have collected a second dataset, comprising 975k samples from mobile apps,
distinct from the browser-based data. This dataset is referred to as the _raw-
apps_ dataset. The samples in this dataset contain the same fields as
previously described, with specific differences: (1) the field device’s type
is always mobile in this case; (2) the field device’s OS can take only two
values, iOS or Android; (3) the field browser identifies, in this case, the
WebView of the Android or iOS system; (4) the data structure attributes
includes information for 35 attributes.

Unfortunately, due to ethical and consistency concerns, we cannot utilize all
the samples in the _raw-browsers_ and _raw-apps_ datasets. On the one hand, we
aim to ensure our study does not subject users to risks they are not already
exposed to. In our study, the risk primarily involves having a unique ID
assigned. Consequently, we exclusively use data samples for which we possess
an informed advertising ID, accounting for 45.88% and 56.80% in our raw-
browser and raw-apps datasets, respectively. On the other hand, among these
samples with an informed advertising ID, we only consider those for which the
fingerprint value appears at least twice in the dataset. We do this because we
cannot assess whether a fingerprint that appears just once is unique or not.
The resulting datasets are consist of 161k and 52k data samples, and we refer
to them as the _fingerprint-browsers_ and _fingerprint-apps_ datasets,
respectively. These datasets include two additional fields, which we term
_ground-truth uniqueness_ and _measured uniqueness_ , respectively.

The _ground-truth uniqueness_ is a binary variable that signifies whether a
fingerprint is genuinely unique in our dataset (1) or not (0). Specifically,
if all the samples in any of the _fingerprint_ datasets sharing a specific
_device’s fingerprint_ value have the same advertising ID, the _ground-truth
uniqueness_ variable for these samples is set to 1 (indicating uniqueness),
and it is set to 0 (indicating non-uniqueness) otherwise.

We employ the _ground-truth uniqueness_ and the 66 attributes from the samples
in the _fingerprint-browsers_ dataset to train the XGBoost algorithm and
derive the model to be implemented by our Fingerprint Classifier. The model’s
output for each sample is then assigned to the _measured uniqueness_ field of
that sample within the _fingerprint-browsers_ dataset. For mobile apps, we
follow the same procedure, using the 35 attributes from the _fingerprint-apps_
dataset.

Finally, it is well-known that the market share of OSes and browsers is
imbalanced. On the one hand, Chrome holds a two-thirds share of browser
installations on both desktop and mobile devices. On the other hand, Windows
OS dominates the desktop market with a share over 69,3% while the mobile
device market is primarily split between Android (70,8%) and iOS (28,5%). To
ensure that our dataset adequately represents the most popular browsers and
OSes, we utilize the targeting capabilities provided by Sonata DSP to conduct
specific ad campaigns tailored to particular OSes and browsers. Additionally,
we run specific campaigns for mobile apps. The details of each campaign can be
found in Table 1. In addition, Figure 2 shows the number of samples in our
_fingerprint-browsers_ dataset across device configurations accounting for at
least 725 samples. For statistical representativeness reasons, these are the
configurations we consider in our analyses in the rest of the paper. In the
case of mobile apps, our _fingerprint-apps_ dataset includes 20,66% (10686)
and 79,34% (41031) samples from iOS and Android apps, respectively.

Table 1. Details of the ad campaigns used to populate our _fingerprint_
datasets.

Campaign ID | Time Frame | Year | Ad Source | Type of Device | OS | CPM |  | delivered
---
impressions
| collected samples
---
in our server
| samples with
---
advertising ID
adTag_adF-01 | Feb 11-13 | 2022 | webs; apps | mobile; desktop | all | 0.02€ | 520007 | 381880 | 157293
adTag_adF-02 | May 22-23 | 2022 | webs; apps | mobile; desktop | Apple; Linux | 0.03€ | 359909 | 302539 | 86471
adTag_adF-03 | May 27-29 | 2022 | webs; apps | desktop | macOS; Linux | 0.32€ | 65066 | 53111 | 28294
adTag_adF-04 | Jun 01-03 | 2022 | webs; apps | desktop | macOS; Linux | 0.09€ | 791092 | 590832 | 314750
adTag_adF-app_01 | Jun 06-10 | 2022 | apps | mobile | Android; iOS | 0.03€ | 889335 | 594967 | 292382
adTag_adF-05 | Jun 28-30 | 2022 | webs; apps | desktop | macOS; Linux | 0.38€ | 25892 | 23766 | 22241
adTag_adF-br_01 | May 09-13 | 2023 | webs | mobile; desktop | all | 0.10€ | 983582 | 733229 | 327013
adTag_adF-br_02 | Sep 19-24 | 2023 | webs | mobile; desktop | all | 0.06€ | 1134013 | 977378 | 469080
adTag_adF-app_02 | Oct 03-07 | 2023 | apps | mobile | Android; iOS | 0.04€ | 634670 | 380042 | 261414

##  4\. Vulnerability and Accuracy metrics

In this section, we first define two metrics to assess the vulnerability of a
given device configuration to web fingerprinting. In addition, we also
introduce the accuracy metric used to assess the performance of _adF_ system.

###  4.1. Vulnerability Metrics

####  4.1.1. Theoretical Vulnerability ($\mathcal{TV}$)

We use _ground-truth uniqueness_ from our _fingerprint_ datasets to define the
theoretical vulnerability ($\mathcal{TV}$) of a given device configuration to
web fingerprinting. This is defined as follows:

(1) $\mathcal{TV}=\frac{N_{tf}}{N_{f}}$

Where $N_{f}$ represents the total number of fingerprints and $N_{tf}$ is the
number of fingerprints with a _ground-truth uniqueness_ equal to 1, for a
given device configuration. $\mathcal{TV}$ signifies the fraction of
fingerprints that are unique in our dataset based on ground-truth data (this
is why we use the term _theoretical_ to refer to it).

####  4.1.2. Measurable Vulnerability ($\mathcal{MV}$)

This metric is equivalent to $\mathcal{TV}$, but in this case, we use the
_measured uniqueness_ instead of _ground-truth uniqueness_. In particular, the
equation that defines $\mathcal{MV}$ is:

(2) $\mathcal{MV}=\frac{N_{mf}}{N_{f}}$

Where $N_{f}$ represents the total number of fingerprints and $N_{mf}$ is the
number of fingerprints with a _measured uniqueness_ equal to 1, for a given
device configuration.

Hence, while $\mathcal{TV}$ captures the actual vulnerability of a given
device configuration to web fingerprinting, $\mathcal{MV}$ reflects the
measurable vulnerability using our _adF_ system, which is subject to errors
(i.e., false positives and false negatives). If our system performs well, then
$\mathcal{TV}$ and $\mathcal{MV}$ would exhibit similar values.

###  4.2. _adF_ system’s accuracy

Our _adF_ system is essentially tackles a classification task, aiming to
extract device fingerprints and determine their uniqueness. To assess its
performance, we use a standard classification metric, accuracy
($\mathcal{A}$). Accuracy, in our scenario, represents the proportion of
fingerprints correctly classified as unique (true positives) or non-unique
(true negatives) by our system, relative to the total number of fingerprints
($N_{f}$). A high accuracy suggests that even without access to advertising ID
information, our system can effectively assess the vulnerability of different
device configurations to web fingerprinting.

Figure 2. x-axis: $\mathcal{MV}$, $\mathcal{TV}$ and $\mathcal{A}$ performance
of _adF_ system for all the considered browser-based device and mobile app
configurations; y-axis: number of samples for the browser and mobile app
configurations considered for the analyses conducted in the paper.

##  5\. Ethical Considerations

The research and experiments in this paper obtained IRB approval from our
institution. We have implemented measures to prevent new risks for users (see
Section 3). Moreover, we do not process any data from devices with an active
do-not-track flag in their browser. Our _adTag_ sends a total of 38,7kB to our
backend server, with minimal impact on device data consumption.

##  6\. Methodology Limitations

Our dataset is limited in device coverage, so our claim of fingerprint
uniqueness is confined to our dataset’s scope, and we cannot claim the global
uniqueness of such fingerprints. This limitation stems primarily from our
restricted budget for ad campaigns, amounting to 410,27 €. Also, ethical
considerations led us to exclude almost half of the samples without an
advertising ID in our dataset. Nevertheless, despite these constraints, our
dataset’s size (see Section 7) is comparable to previous works in the
literature (gomezBoix2018hiding, ; andriamilanto2021largescale, ). It confirms
that _adF_ provides high accuracy, establishing it as a reliable system for
evaluating device configuration vulnerability to web fingerprinting.
Furthermore, our results highlight the significant variability in protection
among different device configurations.

We also acknowledge that our methodology cannot assess the vulnerability of
browsers that do not support ad formats with embedded scripts, such as Brave
browser. However, these browsers represent a small fraction of the market
share and do not significantly impact our study’s overall conclusions.

##  7\. Results

In this section, we first analyze the performance of _adF_ system. Afterward,
we analyze the vulnerability of prevalent device configurations formed by the
combination of device type, operating system, and browser. Finally, we also
analyze the vulnerability of mobile apps to web fingerprinting.

###  7.1. Performance of our _adF_ system

Figure 2 displays the values of $\mathcal{TV}$, $\mathcal{MV}$, and
$\mathcal{A}$ for each configured mobile app and browser-based setup. _adF_
consistently achieves high accuracy, with $\mathcal{A}$ values exceeding 80%
for all configurations. As such, we can confidently assert that _adF_ is a
dependable tool for assessing the vulnerability of different device
configurations to web fingerprinting, even in the absence of ground-truth data
like advertising IDs.

###  7.2. Vulnerability of browser-based device configurations to web
fingerprinting

The values of $\mathcal{TV}$ and $\mathcal{MV}$ presented in Figure 2 serve to
assess the vulnerability of each of the browser-based configurations to web
fingerprinting. Given the similarity between $\mathcal{TV}$ and
$\mathcal{MV}$, we will discuss results based solely on $\mathcal{MV}$ for the
remainder of this section.

The first conclusion we extract from the results in Figure 2 is that mobile
devices exhibit lower vulnerability to web fingerprinting when compared to
desktop devices for a given browser (Chrome or Safari). For instance, in
desktop devices running macOS, Safari’s $\mathcal{MV}$ is 5.5%, while in
mobile devices running iOS, it is 3.4%. Likewise, Chrome offers lower
$\mathcal{MV}$ in mobile devices compared to desktop devices, regardless of
the OS.

Second, the choice of operating system (OS) significantly influences defense
against web fingerprinting. On mobile devices, regardless of the browser, iOS
users enjoy better protection against web fingerprinting than their Android
counterparts. For desktop devices, macOS and Linux outperform Windows in
shielding against web fingerprinting. When considering the common browser,
Chrome, across these OS categories, $\mathcal{MV}$ rates are $\\{$95.7%, 85%,
78.1%$\\}$ for $\\{$Windows, macOS, Linux$\\}$. However, in contrast to mobile
devices, a single OS doesn’t consistently offer superior protection regardless
of the browser. For example, Chrome users on macOS and Edge users on Windows
are more vulnerable compared to Firefox users on Linux.

Finally, when examining browsers individually, we find that Chrome ranks as
the least secure option (except in the case of iOS). In contrast, Safari and
Firefox provide notably superior protection against web fingerprinting. Note
that we gathered a few hundred samples from Firefox on both Windows and macOS,
suggesting Firefox’s strong performance on these operating systems.

Putting the results into context:

The configurations in Figure 2 correspond to the most prevalent setups in the
current web landscape, accounting for over 90% of all devices.

Our findings reveal significant variability in the vulnerability of these
configurations to web fingerprinting. To put these results into perspective,
it is essential to consider the current market share, which is notably skewed,
both in terms of OSes and browsers222Market share statistics are based on data
from https://gs.statcounter.com/ as of August 2023..

In the mobile ecosystem, 70,76% and 28,53% of the devices run on Android and
iOS, respectively. Regarding browsers, 64.64% of devices employ Chrome, and
24.96% opt for Safari. By combining OSes and browsers’ market share, we
identify three configurations that cover 95% of the mobile devices’ market
share: {Chrome, Android} $\sim$67%, {Safari, iOS} $\sim$25%, and {Chrome, iOS}
$\sim$4%. When we extrapolate the $\mathcal{MV}$ values presented in Figure 2
to this market share, we observe that web fingerprinting is feasible for at
least 40% of mobile devices when exposed to ads.

In the context of the desktop ecosystem, in terms of OSes, Windows, macOS, and
Linux cover 69,26%, 20,18%, and 3,18% of the market share, respectively. When
it comes to browsers, Chrome dominates with 63.53%, Safari follows with
13.01%, Edge has 11.15%, and Firefox stands at 6.18%. Therefore, the most
prevalent desktop configurations are: {Chrome, Windows} $\sim$52%, {Safari,
macOS} $\sim$13%, {Edge, Windows} $\sim$11% and {Chrome, macOS} $\sim$6.5%.
When extrapolating the results from Figure 2 to this specific market share, we
find that the prevalence of the Windows, Chrome configuration leads to a
situation where at least 64% of desktop devices can be effectively
fingerprinted from ads.

###  7.3. Mobile apps

Most mobile apps operate on top of Android or iOS WebView; therefore, they can
be exploited to implement web fingerprinting. However, to the best of the
authors’ knowledge, there is no previous empirical study that confirms if this
practice is viable. Figure 2 shows the value of $\mathcal{TV}$, $\mathcal{MV}$
and $\mathcal{A}$ for mobile apps on _Android_ vs. _iOS_.

First, we confirm that web fingerprinting is a viable practice in mobile
applications. Furthermore, our experiments also confirm that _adF_ is a valid
tool to assess the vulnerability of mobile applications to web fingerprinting.
In particular, $\mathcal{A}$ is higher than 83% for both iOS and Android apps.

Second, Android apps are more exposed to web fingerprinting compared to iOS.
In particular, when considering $\mathcal{MV}$, we find that 40.7% of Android
users and 22% of iOS users can be uniquely fingerprinted using mobile apps’
ads. If we extrapolate these results to the actual market share of Android and
iOS (70,76% and 28,53%, respectively), we conclude that 35% of mobile devices
can be uniquely identified using web fingerprinting techniques in mobile apps.

Finally, when comparing the vulnerability of apps versus browsers on the
mobile web, we find that while on Android, device vulnerability is
significantly lower in mobile apps than browsers, on iOS, apps exhibit a
notably higher vulnerability to web fingerprinting compared to browsers. This
is a relevant finding for iOS mobile app developers who should consider when
striving to enhance the security offered by their apps.

##  8\. Causes of Web Fingerprinting Vulnerability

As explained above, a fingerprint comprises a set of attribute values reported
by a device configuration. Consequently, the probability of a fingerprint
being unique and, by extension, the vulnerability of that configuration to web
fingerprinting depend on two key factors:

\- Number of reported attributes ($|N|$): This indicates the length of the
vector forming the fingerprint. Longer vectors generally result in a higher
probability of acquiring unique fingerprints. In other words, device
configurations that provide a greater number of attributes are typically more
vulnerable to web fingerprinting.

-Discrimination power of individual attributes: The discrimination power defines to what extend an individual attribute contributes to make a fingerprint unique. It is defined by the combination of two parameters: 1) the attribute’s _cardinality_ ($|S|$), defined as the number of distinct values an attribute can assume. If attribute $A$ can take 10 values whereas attribute $B$ can take 20 values, then attribute $B$ is (in principle) more useful to identify uniquely a user. and 2) the attribute’s _entropy_ ($H_{n}$), which measures the frequency with which different values of a given attribute appear. Attributes with higher entropy exhibit a more even and widespread utilization of their various values, consequently enhancing their discrimination power. In the literature, we find works which define the discrimination power of attributes using only the entropy (laperdrix2020fpSurvey, ). However, a lack of consideration the cardinality may lead to misinterpretations regarding the power discrimination of an attribute. For instance, an attribute with a cardinality equal to 2 and max normalized entropy (1) might be wrongly interpreted as more discriminatory compared to an attribute with a cardinality of 100 and a high normalized entropy (0,9).

Table 2 provides a summary of the three introduced factors ($|N|$, $|S|$,
$H_{n}$333$H_{n}$ is computed as the normalized Shannon entropy
(eckersley2010, ; masisi2008entropy, ).) for each attribute in the most
relevant mobile app and browser-based configurations considered in this paper.
Note that for attributes concatenated within a meta-attribute, we report the
values for the meta-attribute.

The results in the table offer two main insights. On the one hand, we can
assess that the configurations reported as most vulnerable to web
fingerprinting in Section 7 are characterized by a higher number of informed
attributes with high discrimination power (high cardinality and normalized
entropy). For instance, the Chrome, Windows configuration, identified as
highly vulnerable, reports 35 out of the 35 attributes listed in Table 2, with
9 of these attributes having a cardinality $>$ 250 and a normalized entropy
$>$ 0,15. Contrary, the Firefox, Linux configuration reports 30 attributes,
with just 1 exceeding the indicated cardinality and normalized entropy
thresholds. Likewise, it is evident that mobile configurations generally
report fewer attributes than desktop configurations. Furthermore, attributes’
cardinality and entropy tend to be lower in mobile configurations compared to
desktop configurations.

On the other hand, Table 2 reveals those attributes with the most significant
discrimination power (highlighted in bold). This represents very valuable
information for browser and mobile apps developers, which can design solutions
to mitigate the power discrimination of these attributes, reducing the
vulnerability of the corresponding device configuration.

Table 2. Discrimination power of attributes. For each attribute and device
configuration, we report: (i) whether the attribute is reported or not, (ii)
the cardinality ($|S|$), (iii) the normalized entropy ($H_{n}$). We highlight
in bold those attributes whose reporting we propose to block in our solution
($|S|>$ 25 and a $H_{n}>$ 0,10).

Attributes | MOBILE | DESKTOP | APP
---|---|---|---
Android | iOS | Windows | macOS | GNU/Linux | Android | iOS
Chrome | MIUI | Chrome | Safari | Chrome | Edge | Chrome | Safari | Chrome | Firefox
$|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$ | $|S|$ | $H_{n}$
UserAgent | 6946 | 0,39 | 165 | 0,44 | 602 | 0,57 | 131 | 0,38 | 374 | 0,28 | 56 | 0,34 | 141 | 0,25 | 72 | 0,36 | 216 | 0,21 | 82 | 0,46 | 5050 | 0,73 | 106 | 0,33
CPU cores | 8 | 0,02 | 2 | 0,01 | 4 | 0,03 | 4 | 0,05 | 24 | 0,14 | 9 | 0,22 | 13 | 0,14 | 4 | 0,12 | 24 | 0,13 | 9 | 0,23 | 6 | 0,02 | 2 | 0,03
Device memory | 6 | 0,09 | 4 | 0,10 | 1 | 0,00 | 1 | 0,00 | 6 | 0,08 | 5 | 0,09 | 4 | 0,03 | 1 | 0,00 | 6 | 0,11 | 1 | 0,00 | 5 | 0,10 | 1 | 0,00
Screen: color depth | 1 | 0,00 | 1 | 0,00 | 2 | 0,02 | 3 | 0,02 | 4 | 0,00 | 3 | 0,01 | 3 | 0,08 | 2 | 0,08 | 4 | 0,00 | 2 | 0,02 | – | – | – | –
Screen: pixel left | 4 | 0,00 | 1 | 0,00 | 1 | 0,00 | 2 | 0,00 | 1615 | 0,16 | 74 | 0,17 | 735 | 0,21 | 286 | 0,15 | 609 | 0,17 | 101 | 0,32 | – | – | – | –
Screen: orientation angle | 4 | 0,05 | 3 | 0,05 | 4 | 0,08 | 4 | 0,10 | 4 | 0,00 | 4 | 0,01 | 2 | 0,00 | 5 | 0,14 | 4 | 0,05 | 1 | 0,00 | 4 | 0,00 | 5 | 0,06
Screen: orientation type | 4 | 0,05 | 3 | 0,05 | 4 | 0,08 | 4 | 0,10 | 4 | 0,00 | 4 | 0,00 | 3 | 0,00 | 5 | 0,14 | 4 | 0,07 | 1 | 0,00 | – | – | – | –
Battery status: charging | 3 | 0,04 | 3 | 0,05 | 1 | 0,00 | 1 | 0,00 | 3 | 0,03 | 3 | 0,05 | 3 | 0,08 | 1 | 0,00 | 3 | 0,07 | 1 | 0,00 | – | – | – | –
Simultaneous touch points | 4 | 0,02 | 1 | 0,00 | 3 | 0,00 | 4 | 0,00 | 19 | 0,02 | 6 | 0,05 | 2 | 0,00 | 3 | 0,08 | 8 | 0,09 | 2 | 0,00 | 2 | 0,03 | 2 | 0,01
Media devices | 39 | 0,17 | 6 | 0,01 | 5 | 0,08 | 17 | 0,10 | 66 | 0,14 | 8 | 0,16 | 8 | 0,05 | 12 | 0,10 | 43 | 0,21 | 28 | 0,21 | 22 | 0,18 | 5 | 0,08
Languages | 2748 | 0,31 | 22 | 0,13 | 27 | 0,15 | 39 | 0,18 | 1638 | 0,20 | 55 | 0,24 | 822 | 0,36 | 43 | 0,18 | 1355 | 0,39 | 40 | 0,25 | 285 | 0,17 | 42 | 0,20
PDF viewer enabled | 3 | 0,01 | 2 | 0,05 | 3 | 0,08 | 3 | 0,08 | 3 | 0,04 | 3 | 0,01 | 3 | 0,01 | 3 | 0,09 | 3 | 0,08 | 3 | 0,09 | – | – | – | –
User Permissions state | 196 | 0,13 | 1 | 0,00 | 6 | 0,18 | 22 | 0,20 | 113 | 0,13 | 21 | 0,17 | 58 | 0,15 | 19 | 0,19 | 155 | 0,22 | 16 | 0,25 | – | – | – | –
available height | 456 | 0,32 | 41 | 0,31 | 30 | 0,29 | 32 | 0,25 | 549 | 0,26 | 79 | 0,42 | 582 | 0,52 | 310 | 0,45 | 590 | 0,44 | 206 | 0,63 | 227 | 0,33 | 20 | 0,24
available left | 1 | 0,00 | 1 | 0,00 | 1 | 0,00 | 3 | 0,00 | 221 | 0,04 | 17 | 0,04 | 199 | 0,07 | 30 | 0,01 | 166 | 0,14 | 60 | 0,27 | – | – | – | –
available top | 1 | 0,00 | 1 | 0,00 | 1 | 0,00 | 3 | 0,00 | 484 | 0,03 | 13 | 0,02 | 181 | 0,18 | 13 | 0,11 | 170 | 0,12 | 38 | 0,28 | – | – | – | –
available width | 445 | 0,24 | 30 | 0,17 | 30 | 0,26 | 33 | 0,21 | 502 | 0,20 | 57 | 0,31 | 171 | 0,24 | 79 | 0,35 | 541 | 0,37 | 156 | 0,51 | 124 | 0,20 | 16 | 0,19
full screen enabled | 2 | 0,06 | 2 | 0,10 | 3 | 0,01 | 1 | 0,00 | 3 | 0,05 | 2 | 0,10 | 2 | 0,07 | 3 | 0,11 | 3 | 0,07 | 3 | 0,10 | 2 | 0,06 | 1 | 0,00
Storage: quota | 3650 | 0,60 | 198 | 0,67 | 12 | 0,03 | 18 | 0,03 | 23271 | 0,81 | 743 | 0,93 | 772 | 0,39 | 20 | 0,02 | 4664 | 0,74 | 91 | 0,21 | 1787 | 0,62 | 3 | 0,06
navigator properties | 72 | 0,18 | 5 | 0,12 | 25 | 0,24 | 37 | 0,20 | 97 | 0,16 | 18 | 0,21 | 44 | 0,17 | 29 | 0,27 | 120 | 0,22 | 24 | 0,25 | 31 | 0,10 | 29 | 0,25
Plugins | 1 | 0,00 | 1 | 0,00 | 2 | 0,08 | 2 | 0,08 | 51 | 0,05 | 4 | 0,01 | 8 | 0,02 | 21 | 0,17 | 47 | 0,09 | 4 | 0,09 | – | – | – | –
Cookie enabled | 2 | 0,00 | 2 | 0,01 | 2 | 0,08 | 2 | 0,07 | 2 | 0,00 | 2 | 0,01 | 2 | 0,00 | 2 | 0,07 | 2 | 0,00 | 2 | 0,07 | – | – | – | –
MIME type | 1 | 0,00 | 1 | 0,00 | 2 | 0,08 | 2 | 0,08 | 21 | 0,05 | 4 | 0,01 | 7 | 0,02 | 7 | 0,12 | 15 | 0,09 | 6 | 0,10 | – | – | – | –
Time zone offset | 20 | 0,15 | 7 | 0,12 | 13 | 0,13 | 19 | 0,15 | 24 | 0,08 | 9 | 0,17 | 15 | 0,15 | 14 | 0,11 | 14 | 0,09 | 9 | 0,14 | 15 | 0,13 | 12 | 0,18
Canvas | 1360 | 0,46 | 70 | 0,45 | 90 | 0,31 | 311 | 0,35 | 619 | 0,33 | 134 | 0,57 | 247 | 0,39 | 236 | 0,47 | 1078 | 0,50 | 182 | 0,55 | 380 | 0,37 | 102 | 0,31
Fonts | 14 | 0,05 | 2 | 0,06 | 13 | 0,10 | 17 | 0,11 | 8359 | 0,56 | 361 | 0,71 | 1934 | 0,52 | 78 | 0,24 | 1382 | 0,36 | 299 | 0,70 | 2 | 0,00 | 7 | 0,11
Bluetooth availability | 3 | 0,06 | 2 | 0,05 | 1 | 0,00 | 1 | 0,00 | 3 | 0,08 | 3 | 0,10 | 3 | 0,08 | 1 | 0,00 | 3 | 0,10 | 1 | 0,00 | – | – | – | –
WebGL Extensions | 86 | 0,23 | 15 | 0,20 | 10 | 0,15 | 17 | 0,17 | 52 | 0,10 | 13 | 0,16 | 16 | 0,05 | 23 | 0,29 | 126 | 0,31 | 30 | 0,23 | 57 | 0,22 | 8 | 0,12
Audio formats: AACP | 1 | 0,00 | 1 | 0,00 | 2 | 0,00 | 2 | 0,00 | 2 | 0,00 | 1 | 0,00 | 1 | 0,00 | 2 | 0,00 | 1 | 0,00 | 3 | 0,02 | – | – | – | –
Audio formats: ACC | 2 | 0,00 | 1 | 0,00 | 3 | 0,00 | 3 | 0,00 | 3 | 0,00 | 1 | 0,00 | 2 | 0,00 | 3 | 0,01 | 2 | 0,00 | 3 | 0,01 | 1 | 0,00 | 2 | 0,01
Audio cxt: base latency | 116 | 0,22 | 9 | 0,22 | 8 | 0,06 | 11 | 0,05 | 18 | 0,02 | 3 | 0,03 | 9 | 0,09 | 13 | 0,11 | 76 | 0,20 | 5 | 0,04 | 70 | 0,25 | 7 | 0,05
Audio cxt: max channel count | 1 | 0,00 | 1 | 0,00 | 4 | 0,02 | 4 | 0,03 | 5 | 0,02 | 5 | 0,02 | 14 | 0,01 | 7 | 0,03 | 5 | 0,00 | 5 | 0,02 | – | – | – | –
Audio cxt: sample rate | 4 | 0,01 | 2 | 0,00 | 6 | 0,05 | 7 | 0,04 | 10 | 0,03 | 5 | 0,04 | 9 | 0,08 | 10 | 0,09 | 7 | 0,07 | 3 | 0,09 | 2 | 0,01 | 6 | 0,04
Audio cxt: state | 2 | 0,05 | 2 | 0,03 | 2 | 0,00 | 2 | 0,00 | 2 | 0,06 | 2 | 0,09 | 2 | 0,07 | 2 | 0,00 | 2 | 0,07 | 2 | 0,00 | – | – | – | –
WebGL (Rend - Param) | 525 | 0,46 | 76 | 0,52 | 10 | 0,09 | 18 | 0,11 | 2038 | 0,47 | 310 | 0,72 | 319 | 0,46 | 52 | 0,24 | 2360 | 0,65 | 137 | 0,54 | 234 | 0,40 | 7 | 0,05

Table 3. Overview of large-scale fingerprinting studies: uniqueness (_unq_),
no. collected attributes (_No. att_) and $H_{m}$.

| Eckersley(eckersley2010, ) | Laperdrix et al.(laperdrix2016beauty, ) | Gómez-Boix et al.(gomezBoix2018hiding, ) | Andriamilanto et al.(andriamilanto2021largescale, ) | adF
---|---|---|---|---|---
desktop | desktop | mobile | desktop | mobile | desktop | mobile | desktop | mobile | app
unq | 94,20% | 89,40% | 81% | 35,70% | 18,50% | 84,40% | 39,90% | 85,61% | 49,93% | 36,80%
No. att | 6 | 17 | 17 | 262 | 66 | 35
$H_{m}$444$H_{m}$ is the maximum possible diversity index where the entropy is maximum, and all values of an attribute are equally frequent. | 18,843 | 16,859 | 20,98 | 21,983 | 16,64 | 15,66

##  9\. Related Work

The profound privacy risks tied to web fingerprinting have motivated the
research community to address the topic.

The existing literature has extensively examined the feasibility of employing
various JavaScript APIs for fingerprinting devices such as Canvas
(mowery2012pixel, ; acar2014web, ; bursztein2016canvas, ; jiang2020tracking,
), WebGL API (cao2017cross, ; laor2022drawnapart, ), available fonts
(nikiforakis2013cookieless, ; gomezBoix2018hiding, ), Web Audio API
(englehardt2016online, ; cao2017cross, ; queiroz2019webaudio, ), Battery
Status API (diaz2015leaking, ) or extensions (sjosten2017discovering, ;
sanchez2017extension, ; starov2019unnecessarily, ;
laperdrix2021fingerprinting, ; Konstantinos2022Chronos, ), as well as
combinations of attributes (mayer2009any, ): _navigator_ , _screen_ ,
_navigator.plugins_ , and _navigator.mimeTypes_. Some works in this group
consider also the mobile ecosystem (das2018web, ; kurtz2016fingerprinting, ;
wu2016efficient, ; oliver2018fingerprintingthesis, ; heid2023functhooking, ;
tiwarik2023androidhybridapps, ). Eubank et al. (eubank2013shining, ) conducted
one of the earliest studies on mobile web tracking, analyzing cookies and HTTP
headers used by browsers and revealing distinctions between the fingerprints
of mobile and desktop devices. An overview of this literature can be found in
the surveys by Laperdrix et al. (laperdrix2020fpSurvey, ) and Zhang et al.
(zhang2022survey, )).

In the context of our work, few existing papers have attempted to perform
large-scale analysis to assess users’ exposure to web fingerprinting. A
seminal work in the field by Eckersley (eckersley2010, ) performed the first
large-scale analysis of web fingerprinting. By leveraging the Panopticlick
(eckersley_panopticlick, ) website, the authors analyzed attributes collected
from HTTP headers, JavaScript APIs, and Flash and Java plugins. More recently,
Laperdrix et al. (laperdrix2016beauty, ) performed the first large-scale
analysis considering fingerprints from both mobile and desktop devices. They
based their study on data collected from the AmIUnique website
(laperdrix_amiunique, ). These aforementioned works followed a similar
approach, involving websites where volunteer users connect. These websites run
scripts to compute the device’s fingerprint and assess the uniqueness of each
fingerprint generated. Instead, Gómez-Boix et al. (gomezBoix2018hiding, ) and
Andriamilanto et al. (andriamilanto2021largescale, ) collected fingerprints
through a script deployed on one of the top 15 French websites, as per the
Alexa traffic rank. Similar to (gomezBoix2018hiding, ;
andriamilanto2021largescale, ), Li et al. (li2020wtmbf, ) deployed a
fingerprinting tool on a real-world website and studied the effectiveness of
web fingerprinting by collecting millions of samples.

We present a novel approach for measuring web fingerprinting using ads as
measurement venues rather than websites. This offers some advantages such as:
1) ability to define targeted measurement experiments for specific device
configurations, which allows for first time to reveal the vulnerability at the
granularity of individual device configurations; 2) independence from the
willingness of volunteers or website owners to provide data; 3) capacity to
audit the vulnerability to web fingerprinting in mobile apps for the first
time.

Finally, Table 3 compares the major large-scale studies on web fingerprinting,
including our own, across three dimensions: uniqueness, defined as the
fraction of unique identified fingerprints for both desktop and mobile
devices; number of collected attributes; and maximum diversity index. We
observe that our methodology aligns well with the findings of the most recent
study (andriamilanto2021largescale, ) in terms of uniqueness.

##  10\. Conclusion

In this paper, we present _adF_ , a novel system to assess the vulnerability
of different device configurations to web fingerprinting. _adF_ leverages the
widespread use of online ads as measurement venues for collecting device
attributes from code embedded in ads. This gathered information is then
processed to identify unique fingerprints. We have used _adF_ in several real
ad campaigns, enabling us to estimate the current vulnerability of devices to
web fingerprinting.

The results obtained are concerning. In particular, 64% of desktop devices are
vulnerable to web fingerprinting. In the case of mobile devices, 40% are
vulnerable to web fingerprinting via browser-rendered ads, and 35% through
mobile apps.

Furthermore, we conduct an in-depth analysis of the discrimination power
associated with different attributes reported by browsers and mobile apps.
These findings hold significant value for developers of browsers and mobile
apps seeking to implement more effective countermeasures against web
fingerprinting by blocking or controlling those attributes offering a higher
discrimination power.

## References

  * (1) T. Bianchi, “Advertising revenue of google from 2001 to 2022.” https://www.statista.com/statistics/266249/advertising-revenue-of-google/#statisticContainer/, Feb 2023.
  * (2) S. Dixon, “Annual advertising revenue of meta platforms worldwide from 2009 to 2022.” https://www.statista.com/statistics/271258/facebooks-advertising-revenue-worldwide/, Feb 2023.
  * (3) A. Cahn, S. Alfeld, P. Barford, and S. Muthukrishnan, “An empirical study of web cookies,” in Proceedings of the 25th international conference on world wide web, pp. 891–901, 2016.
  * (4) N. M. Al-Fannah, W. Li, and C. J. Mitchell, “Beyond cookie monster amnesia: Real world persistent online tracking,” in International Conference on Information Security, pp. 481–501, Springer, 2018.
  * (5) T. Bujlow, V. Carela-Español, J. Sole-Pareta, and P. Barlet-Ros, “A survey on web tracking: Mechanisms, implications, and defenses,” Proceedings of the IEEE, vol. 105, no. 8, pp. 1476–1510, 2017.
  * (6) P. Laperdrix, W. Rudametkin, and B. Baudry, “Mitigating browser fingerprint tracking: multi-level reconfiguration and diversification,” in 2015 IEEE/ACM 10th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, pp. 98–108, IEEE, 2015.
  * (7) N. M. Al-Fannah and C. Mitchell, “Too little too late: can we control browser fingerprinting?,” Journal of intellectual capital., vol. 21, no. 2, pp. 165–180, 2020.
  * (8) B. A. Azad, O. Starov, P. Laperdrix, and N. Nikiforakis, “Taming the shape shifter: Detecting anti-fingerprinting browsers,” in DIMVA 2020-17th Conference on Detection of Intrusions and Malware & Vulnerability Assessment, 2020.
  * (9) “Firefox extension to block the canvas api.” https://addons.mozilla.org/fr/firefox/addon/canvasblocker/.
  * (10) S. Wu, S. Li, Y. Cao, and N. Wang, “Rendered private: Making $\\{$GLSL$\\}$ execution uniform to prevent $\\{$WebGL-based$\\}$ browser fingerprinting,” in 28th USENIX Security Symposium (USENIX Security 19), pp. 1645–1660, 2019\.
  * (11) P. Laperdrix, W. Rudametkin, and B. Baudry, “Beauty and the beast: Diverting modern web browsers to build unique browser fingerprints,” in 2016 IEEE Symposium on Security and Privacy (SP), pp. 878–894, IEEE, 2016.
  * (12) U. Iqbal, S. Englehardt, and Z. Shafiq, “Fingerprinting the fingerprinters: Learning to detect browser fingerprinting behaviors,” in 2021 IEEE Symposium on Security and Privacy (SP), pp. 1143–1161, IEEE, 2021.
  * (13) “Privacy badger official website.” https://privacybadger.org/.
  * (14) A. FaizKhademi, M. Zulkernine, and K. Weldemariam, “Fpguard: Detection and prevention of browser fingerprinting,” in IFIP Annual Conference on Data and Applications Security and Privacy, pp. 293–308, Springer, 2015.
  * (15) N. Nikiforakis, W. Joosen, and B. Livshits, “Privaricator: Deceiving fingerprinters with little white lies,” in Proceedings of the 24th International Conference on World Wide Web, pp. 820–830, 2015.
  * (16) P. Laperdrix, B. Baudry, and V. Mishra, “Fprandom: Randomizing core browser objects to break advanced device fingerprinting techniques,” in International Symposium on Engineering Secure Software and Systems, pp. 97–114, Springer, 2017.
  * (17) E. Trickel, O. Starov, A. Kapravelos, N. Nikiforakis, and A. Doupé, “Everyone is different: client-side diversification for defending against extension fingerprinting,” in 28th USENIX Security Symposium (USENIX Security 19), pp. 1679–1696, 2019.
  * (18) A. Gómez-Boix, D. Frey, Y.-D. Bromberg, and B. Baudry, “A collaborative strategy for mitigating tracking through browser fingerprinting,” in Proceedings of the 6th ACM Workshop on Moving Target Defense, pp. 67–78, 2019\.
  * (19) M. A. OBIDAT, S. OBEIDAT, J. HOLST, and T. LEE, “Canvas deceiver-a new defense mechanism against canvas fingerprinting,” 2020.
  * (20) A. A. Salomatin, A. Y. Iskhakov, and R. V. Meshcheryakov, “Comparison of the effectiveness of countermeasures against tracking user browser fingerprints,” IFAC-PapersOnLine, vol. 55, no. 9, pp. 244–249, 2022.
  * (21) A. Fernandez-de Retana and I. Santos-Grueiro, “Keep your identity small: Privacy-preserving client-side fingerprinting,” arXiv preprint arXiv:2309.07563, 2023.
  * (22) R. Torok and A. Levy, “Only pay for what you leak: Leveraging sandboxes for a minimally invasive browser fingerprinting defense,” in 2023 IEEE Symposium on Security and Privacy (SP), pp. 1023–1040, IEEE, 2023.
  * (23) “What is it? - noscript: Own your browser!.” https://noscript.net/.
  * (24) D. Cameron, “Apple declares war on ’browser fingerprinting,’ the sneaky tactic that tracks you in incognito mode.” https://gizmodo.com/apple-declares-war-on-browser-fingerprinting-the-sneak-1826549108/, Jun 2018.
  * (25) D. Camp, “Firefox now available with enhanced tracking protection by default plus updates to facebook container, firefox monitor and lockwise.” https://blog.mozilla.org/blog/2019/06/04/firefox-now-available-with-enhanced-tracking-protection-by-default/.
  * (26) Y. Weiss, “Intent to deprecate and freeze: The user-agent string.” https://groups.google.com/a/chromium.org/g/blink-dev/c/-2JIRNMWJ7s/, Jan 2020.
  * (27) P. Eckersley, “How unique is your web browser?,” Privacy Enhancing Technologies, p. 1–18, 2010.
  * (28) K. Boda, Á. M. Földes, G. G. Gulyás, and S. Imre, “User tracking on the web via cross-browser fingerprinting,” in Nordic conference on secure it systems, pp. 31–46, Springer, 2011.
  * (29) Y. Cao, S. Li, E. Wijmans, et al., “(cross-) browser fingerprinting via os and hardware level features.,” in NDSS, 2017.
  * (30) “Browserleaks.” https://browserleaks.com/l/.
  * (31) “Privacycheck.” https://privacycheck.sec.lrz.de/.
  * (32) J. Fietkau, K. Thimmaraju, F. Kybranz, S. Neef, and J.-P. Seifert, “The elephant in the background: A quantitative approachto empower users against web browser fingerprinting,” in Proceedings of the 20th Workshop on Workshop on Privacy in the Electronic Society, WPES ’21, (New York, NY, USA), p. 167–180, Association for Computing Machinery, 2021.
  * (33) “Is your browser safe against tracking?.” https://panopticlick.eff.org/.
  * (34) “Learn how identifiable you are on the internet.” https://amiunique.org/.
  * (35) A. Gómez-Boix, P. Laperdrix, and B. Baudry, “Hiding in the crowd: an analysis of the effectiveness of browser fingerprinting at large scale,” in Proceedings of the 2018 world wide web conference, pp. 309–318, 2018.
  * (36) N. Andriamilanto, T. Allard, G. Le Guelvouit, and A. Garel, “A large-scale empirical analysis of browser fingerprints properties for web authentication,” ACM Trans. Web, vol. 16, sep 2021.
  * (37) S. Li and Y. Cao, “Who touched my browser fingerprint? a large-scale measurement study and classification of fingerprint dynamics,” in Proceedings of the ACM Internet Measurement Conference, IMC ’20, (New York, NY, USA), p. 370–385, Association for Computing Machinery, 2020.
  * (38) P. Callejo, A. Pastor, R. Cuevas, and Á. Cuevas, “Q-tag: A transparent solution to measure ads viewability rate in online advertising campaigns,” in Proceedings of the 15th International Conference on Emerging Networking Experiments And Technologies, pp. 151–157, 2019.
  * (39) P. Callejo, R. Cuevas, and Á. Cuevas, “An ad-driven measurement technique for monitoring the browser marketplace,” IEEE Access, vol. 7, pp. 181339–181347, 2019.
  * (40) P. Callejo, C. Kelton, N. Vallina-Rodriguez, R. Cuevas, O. Gasser, C. Kreibich, F. Wohlfart, and Á. Cuevas, “Opportunities and challenges of ad-based measurements from the edge of the network,” in Proceedings of the 16th ACM Workshop on Hot Topics in Networks, pp. 87–93, 2017.
  * (41) P. Callejo, R. Cuevas, N. Vallina-Rodriguez, and Á. C. Rumin, “Measuring the global recursive dns infrastructure: a view from the edge,” IEEE Access, vol. 7, pp. 168020–168028, 2019.
  * (42) “Getting browser microphone permission - web apis: Mdn.” https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Build_a_phone_with_peerjs/Connect_peers/Get_microphone_permission.
  * (43) “Mediadevices.getusermedia() - web apis: Mdn.” https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia/.
  * (44) “Geolocation api - web apis: Mdn.” https://developer.mozilla.org/en-US/docs/Web/API/Geolocation_API/.
  * (45) “Xgboost.” https://en.wikipedia.org/wiki/XGBoost/, Jul 2022.
  * (46) Z. E. Aydin and Z. K. Ozturk, “Performance analysis of xgboost classifier with missing data,” Manchester Journal of Artificial Intelligence and Applied Sciences (MJAIAS), vol. 2, no. 02, p. 2021, 2021.
  * (47) “Sklearn.impute.knnimputer.” https://scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html/, 2022\.
  * (48) “Categorical data — xgboost 1.7.1 documentation.” https://xgboost.readthedocs.io/en/stable/tutorials/categorical.html/.
  * (49) “sklearn.preprocessing.onehotencoder.” https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html/.
  * (50) “Countfrequencyencoder.” https://feature-engine.readthedocs.io/en/1.0.x/encoding/CountFrequencyEncoder.html/.
  * (51) “Taptap digital - intelligence for marketing.” http://www.taptapdigital.com/.
  * (52) P. Laperdrix, N. Bielova, B. Baudry, and G. Avoine, “Browser fingerprinting: A survey,” ACM Trans. Web, vol. 14, apr 2020.
  * (53) L. Masisi, V. Nelwamondo, and T. Marwala, “The use of entropy to measure structural diversity,” in 2008 IEEE International Conference on Computational Cybernetics, pp. 41–45, 2008.
  * (54) K. Mowery and H. Shacham, “Pixel perfect: Fingerprinting canvas in html5,” Proceedings of W2SP, vol. 2012, 2012.
  * (55) G. Acar, C. Eubank, S. Englehardt, M. Juarez, A. Narayanan, and C. Diaz, “The web never forgets: Persistent tracking mechanisms in the wild,” in Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security, pp. 674–689, 2014.
  * (56) E. Bursztein, A. Malyshev, T. Pietraszek, and K. Thomas, “Picasso: Lightweight device class fingerprinting for web clients,” in Proceedings of the 6th Workshop on Security and Privacy in Smartphones and Mobile Devices, SPSM ’16, (New York, NY, USA), p. 93–102, Association for Computing Machinery, 2016\.
  * (57) W. Jiang, X. Wang, X. Song, Q. Liu, and X. Liu, “Tracking your browser with high-performance browser fingerprint recognition model,” China communications, vol. 17, no. 3, pp. 168–175, 2020.
  * (58) T. Laor, N. Mehanna, A. Durey, V. Dyadyuk, P. Laperdrix, C. Maurice, Y. Oren, R. Rouvoy, W. Rudametkin, and Y. Yarom, “Drawnapart: A device identification technique based on remote gpu fingerprinting,” arXiv preprint arXiv:2201.09956, 2022.
  * (59) N. Nikiforakis, A. Kapravelos, W. Joosen, C. Kruegel, F. Piessens, and G. Vigna, “Cookieless monster: Exploring the ecosystem of web-based device fingerprinting,” in 2013 IEEE Symposium on Security and Privacy, pp. 541–555, IEEE, 2013.
  * (60) S. Englehardt and A. Narayanan, “Online tracking: A 1-million-site measurement and analysis,” in Proceedings of the 2016 ACM SIGSAC conference on computer and communications security, pp. 1388–1401, 2016.
  * (61) J. S. Queiroz and E. L. Feitosa, “A web browser fingerprinting method based on the web audio api,” The Computer Journal, vol. 62, no. 8, pp. 1106–1120, 2019.
  * (62) C. Diaz, L. Olejnik, G. Acar, and C. Casteluccia, “The leaking battery: a privacy analysis of the html5 battery status api,” Lecture notes in computer science, vol. 9481, pp. 254–263, 2015.
  * (63) A. Sjösten, S. Van Acker, and A. Sabelfeld, “Discovering browser extensions via web accessible resources,” in Proceedings of the Seventh ACM on Conference on Data and Application Security and Privacy, pp. 329–336, 2017.
  * (64) I. Sanchez-Rola, I. Santos, and D. Balzarotti, “Extension breakdown: Security analysis of browsers extension resources control policies,” in 26th USENIX Security Symposium (USENIX Security 17), pp. 679–694, 2017.
  * (65) O. Starov, P. Laperdrix, A. Kapravelos, and N. Nikiforakis, “Unnecessarily identifiable: Quantifying the fingerprintability of browser extensions due to bloat,” in The World Wide Web Conference, pp. 3244–3250, 2019.
  * (66) P. Laperdrix, O. Starov, Q. Chen, A. Kapravelos, and N. Nikiforakis, “Fingerprinting in style: Detecting browser extensions via injected style sheets,” in 30th USENIX Security Symposium (USENIX Security 21), pp. 2507–2524, 2021.
  * (67) K. Solomos, P. Ilia, N. Nikiforakis, and J. Polakis, “Escaping the confines of time: Continuous browser extension fingerprinting through ephemeral modifications,” in Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security, CCS ’22, (New York, NY, USA), p. 2675–2688, Association for Computing Machinery, 2022.
  * (68) J. R. Mayer, “Any person… a pamphleteer”: Internet anonymity in the age of web 2.0,” Undergraduate Senior Thesis, Princeton University, vol. 85, 2009\.
  * (69) A. Das, G. Acar, N. Borisov, and A. Pradeep, “The web’s sixth sense: A study of scripts accessing smartphone sensors,” in Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, pp. 1515–1532, 2018.
  * (70) A. Kurtz, H. Gascon, T. Becker, K. Rieck, and F. C. Freiling, “Fingerprinting mobile devices using personalized configurations.,” Proc. Priv. Enhancing Technol., vol. 2016, no. 1, pp. 4–19, 2016.
  * (71) W. Wu, J. Wu, Y. Wang, Z. Ling, and M. Yang, “Efficient fingerprinting-based android device identification with zero-permission identifiers,” IEEE Access, vol. 4, pp. 8073–8083, 2016.
  * (72) J. Oliver, Fingerprinting the Mobile Web.  PhD thesis, Master Thesis. London, UK: Imperial College London, 2018.
  * (73) K. Heid, V. Andrae, and J. Heider, “Towards detecting device fingerprinting on ios with api function hooking,” in Proceedings of the 2023 European Interdisciplinary Cybersecurity Conference, EICC ’23, (New York, NY, USA), p. 78–84, Association for Computing Machinery, 2023.
  * (74) A. Tiwari, J. Prakash, A. Rahimov, and C. Hammer, “Understanding the impact of fingerprinting in android hybrid apps,” in 2023 IEEE/ACM 10th International Conference on Mobile Software Engineering and Systems (MOBILESoft), pp. 28–39, May 2023.
  * (75) C. Eubank, M. Melara, D. Perez-Botero, and A. Narayanan, “Shining the floodlights on mobile web tracking-a privacy survey,” in Proceedings of the IEEE Workshop on Web, vol. 2, 2013.
  * (76) D. Zhang, J. Zhang, Y. Bu, B. Chen, C. Sun, T. Wang, et al., “A survey of browser fingerprint research and application,” Wireless Communications and Mobile Computing, vol. 2022, 2022.

##  Appendix A Ethics considerations

The research and experiments described in this paper have obtained the IRB
approval of our institution through the Data Protection Officer, a member of
the Ethics Committee responsible for approving projects and experiments with
potential data protection implications.

Note that we have taken specific measures to avoid exposing users to new
risks. In particular, as we explained above, we only consider fingerprints for
those users for which we have an advertising ID. By doing so, we avoid
creating any unique ID for users who do not have one. Moreover, we do not
process any data from devices that have the do-not-track flag active in their
browser.

Finally, our _adTag_ sends a total of 38,7kB to our backend server. This is a
negligible amount of data, which has a minimal impact on the overall data
consumption of the device.

##  Appendix A Attributes considered by the _adF_ system

This appendix includes Table 4 providing detailed information of all the
attributes initially considered to build the _adF_ system.

Table 4. Attributes collected to build _adF_ system. With asterisk (*)
attributes considered for fingerprinting in the mobile app ecosystem.

Meta-attributes | Attributes | Reason | Source
---|---|---|---
User-Agent | ua* | - | JS object
Time zone offset | timeZoneOffset* | - | JS meth.
Bars settings | menubar | (quasi)-fixed value | JS object
personalbar | (quasi)-fixed value
statusbar | (quasi)-fixed value
toolbar | (quasi)-fixed value
locationbar | (quasi)-fixed value
scrollbars | (quasi)-fixed value
Network Info | downlink | not stable over time | JS API
effectiveType | not stable over time
rtt | not stable over time
saveData | not stable over time
type | not stable over time
CPU cores | hw Concurrency* | - | JS object
Device memory | device Memory* | - | JS object
Screen settings | width | correlated value | JS object
height | correlated value
colorDepth | -
pixelDepth | correlated value
orientation.angle* | -
orientation.type | -
screenLeft | -
screenTop | correlated value
Nº touch points | multitouch | in maxTouchPoints | JS object
maxTouchPoints* | -
Content encoding | content-encoding | not stable over time | HTTP hdr
Content type | content-type | not stable over time | HTTP hdr
Referer | referer | not stable over time | JS object
URL | url | not stable over time | JS object
Platform | platform | in User Agent | JS object
Languages | languages* | - | JS object
Do Not Track | doNotTrack | - | JS object
Java enabled | javaEnabled | (quasi)-fixed value | JS object
Web Driver | webDriver | (quasi)-fixed value | JS object
PDF viewer enabled | pdfViewerEnabled | - | JS object
Display window | availWidth* | - | JS object
availHeight* | -
availLeft | -
availTop | -
fullScreenEnabled* | -
Storage | usage | not stable over time | AJAX API
quota* | -
navigator object | window.navigator* | - | JS object
List of Plugins | plugins | - | JS object
Cookies | cookieEnabled | - | JS object
cookies | not stable over time
List of MIME type | mimeType | - | JS object
User Permissions state | accelerometer | - | AJAX meth.
ambient-light-sensor | (quasi)-fixed value
background-fetch | -
background-sync | -
camera | -
clipboard-read | -
clipboard-write | -
display-capture | -
geolocation | -
gyroscope | -
magnetometer | -
microphone | -
midi | -
nfc | -
notifications | -
payment-handler | -
persistent-storage | -
push | (quasi)-fixed value
screen-wake-lock | -
Media devices | mediaDevices* | - | AJAX meth.
Canvas | canvas* | - | JS API
List of Fonts | fonts* | - | JS meth.
Bluetooth | bluetoothAvailability | - | AJAX API
Battery status | charging | - | AJAX API
level | not stable over time
chargingTime | not stable over time
dischargingTime | not stable over time
Audio context | baseLatency* | - | JS API
maxChannelCount | -
sampleRate* | -
state | -
Frequency analyser | channelCount | (quasi)-fixed value | JS API
WebGL Vendor | webglVendor | in WebGL Renderer | JS API
WebGL Renderer | webglRenderer* | - | JS API
WebGL Extensions | webglExtensions* | - | JS API

Meta-attributes | Attributes | Reason | Source
---|---|---|---
WebGL Attributes | antialias | (quasi)-fixed value | JS API
powerPreference* | -
desynchronized | (quasi)-fixed value
WebGL Parameters |  | ALIASED_LINE-
---
_WIDTH_RANGE*
- | JS API
| ALIASED_POINT-
---
_SIZE_RANGE*
-
| IMPLEMENTATION-
---
_COLOR_READ-
_FORMAT
(quasi)-fixed value
| IMPLEMENTATION-
---
_COLOR_READ-
_TYPE
(quasi)-fixed value
| MAX_COMBINED-
---
_TEXTURE_IMAGE-
_UNITS*
-
| MAX_CUBE_MAP-
---
_TEXTURE_SIZE*
-
| MAX_FRAGMENT-
---
_UNIFORM-
_VECTORS*
-
| MAX-
---
_RENDERBUFFER-
_SIZE*
-
| MAX_TEXTURE-
---
_IMAGE_UNITS
(quasi)-fixed value
| MAX_TEXTURE-
---
_SIZE
correlated value
| MAX_VARYING-
---
_VECTORS*
-
| MAX_VERTEX-
---
_ATTRIBS*
-
| MAX_VERTEX-
---
_TEXTURE-
_IMAGE_UNITS
(quasi)-fixed value
| MAX_VERTEX-
---
_UNIFORM-
_VECTORS*
-
| MAX_VIEWPORT-
---
_DIMS*
-
RENDERER | in WebGL Renderer
SAMPLES* | -
SAMPLE_BUFFERS | (quasi)-fixed value
| SHADING-
---
_LANGUAGE-
_VERSION
in WebGL Renderer
STENCIL_FUNC | (quasi)-fixed value
| STENCIL_VALUE-
---
_MASK*
-
SUBPIXEL_BITS* | -
VENDOR | in WebGL Renderer
VERSION | in WebGL Renderer
WebGL ShaderPrecision: .rangeMin .rangeMax .precision -FRAGMENT (FR_S) -VERTEX (VR_S) | FR_S_LOW_FLOAT | correlated value | JS API
FR_S_MEDIUM_FLOAT | correlated value
FR_S_HIGH_FLOAT | (quasi)-fixed value
FR_S_LOW_INT | correlated value
FR_S_MEDIUM_INT | correlated value
| FR_S_HIGH_INT
---
[.rangeMax]*
-
VR_SLOW_FLOAT | correlated value
VR_SMEDIUM_FLOAT | correlated value
VR_SLOW_INT | correlated value
VR_SMEDIUM_INT | correlated value
VR_SHIGH_INT | correlated value
Audio formats .supported .smooth .powerEfficient | acc [.supported]* | - | AJAX API
x-wav | correlated value
mpeg | correlated value
aacp [.supported] | -
wav | correlated value
mp4-codec_mp4a402 | (quasi)-fixed value
mp4-codec_ac-3 | correlated value
mp4-codec_ec-3 | correlated value
mp4-codec_alac | (quasi)-fixed value
flac | correlated value
mp4-codec_flac | correlated value
ogg-codec_flac | correlated value
mp4-codec_mp3 | correlated value
ogg-codec_opus | correlated value
webm-codec_opus | correlated value
mp4-codec_opus | correlated value
ogg-codec_vorbis | correlated value
webm-codec_vorbis | correlated value