
Browser
Fonts
Plugins
Virtual Hardware
Operating System
Operating System
Physical Hardware
Browser
Fonts
Plugins
Virtual Hardware
Operating System
Virtualization Layer
...
Browsing Platform 1 Browsing Platform N
Fig. 3. A multi-level view of browsing platforms. Virtualization isolates the
user’s system.
case because although they do not have hard dependencies to
or from other components in a DPC configuration, they do
impact all user interface applications, including browsers and
websites. Moreover, the modularity mechanisms are not the
same for all levels: there are different dependency management
tools in systems and in browsers, different plugin types and
versions for different browsers, different CPU architectures,
etc. Fonts may also be specific to a given system due to
licensing or packaging issues.
1) Operating system reconfiguration: Blink uses Virtual-
Box to isolate browsing platforms because it is open source
and multi-platform (supports Linux, Mac OS and Windows
as both host and guest). Also, VirtualBox abstracts hardware
(enabling us to randomize the CPU architecture), provides
extensive functionality, has low overhead, and allows for a
number of configuration parameters. Added bonuses are a
user-friendly GUI and guest additions to improve integration.
However, it could be substituted with other solutions.
We use VirtualBox’s shared folders to transfer data between
the host and the VMs. Launching a browsing platform starts
the assembly of a randomized DPC configuration (i.e., OS,
fonts, plugins, browser). The browser, fonts and plugins are
copied to shared folders, as is the user’s profile (i.e., open
tabs, bookmarks, downloads, saved passwords). VMs start the
BlinkVM.py monitoring script, whose job is to install fonts
and plugins, prepare the user profile, launch and monitor
the browser, and listen for commands from the host (e.g.,
shutdown, coffee break reconfiguration). When shutting down,
shared folders are cleaned and the user-profile is recovered.
VMs are additionally snapshotted when launched and rolled
back to their pre-browsing states when the browsing session
ends. This ensures the platform returns to a known stable state
that is free of temporary files, cookies, trackers, and malware.
Finally, because the OS is low-level, reconfiguring it can cause
the browser and plugins to be invalidated.
2) Font reconfiguration: To install a font, the font file must
be copied to the correct folder and registered. However, many
applications do not detect font changes dynamically. We tested
two methods to list the fonts available in browsers, namely
Adobe Flash font enumeration and JavaScript font probing.
Our results indicate that to ensure font changes are reflected
in the exhibited fingerprint you should restart the browser.
3) Browser reconfiguration: Installing a browser requires
copying the installation folder and running the main exe-
cutable. Browser’s run as processes so changing from one
browser to another is as simple as stopping and starting them.
4) Plugin reconfiguration: Installing a plugin is as simple
as copying a file to the proper plugin directory. However, un-
like fonts, plugins are compiled for a specific CPU architecture
and operating system, and can have runtime dependencies on
configuration files or system libraries. Furthermore, not all
plugins work in all browsers. We focused on randomizing
NPAPI plugins (compatible with most browsers) and PPAPI
plugins for Chrome (as of January 2015, NPAPI plugins are
blocked by default 8). When reconfiguring, plugins must match
the CPU architecture (e.g., i686, IA-64, amd64), the operating
system (e.g., Windows, Linux), and the browser (e.g., Firefox,
Chrome) of the DPC to work properly. Interestingly, plugin
support is often dynamic, as is the case with Chrome, Opera
and Firefox. This allows Blink to reconfigure the plugin list
at runtime, and is used for Coffee break reconfigurations to
immediately change the exhibited fingerprint without restarting
the browsing platform.
B. The diversity reservoir
At the heart of Blink is the idea that exploiting software
diversity can create an ever changing browsing platform that
limits attempts to track its users through browser fingerprint
tracking. However, this diversity has to be built; software com-
ponents must be collected and managed to ensure consistent,
functional platforms are assembled and reconfigured.
1) Building the diversity reservoir: The operating system
is the base of the browsing platform. We built VMs using
various operating systems, although we focused on the Ubuntu
and Fedora Linuxes for the i686 and x86 64 architectures.
Many pre-built Linux and *BSD VMs can be downloaded
freely over the internet to avoid the installation process.
Other operating system’s often require licenses and cannot be
freely distributed. Once built, each VM must be configured to
work with Blink. This includes setting up shared folders and
configuring Blink’s monitoring script to auto-start.
We focused on the Chrome and Firefox browsers and down-
loaded multiple versions of each from the vendors’ websites.
There’s one version for each combination of release channel
(stable, beta and development) and CPU architecture (i686 and
x86 64). It is easy to add browsers and there are a number
of forks for both Chrome (Chromium, SRWare Iron, Epic,
. . . ) and Firefox (Iceweasel, Seamonkey, .. . ) that are trivial
to integrate. To add a browser you must unpackage it into
Blink’s browser folder and follow the naming convention.
We wrote scripts to crawl the Ubuntu and Fedora reposito-
ries for fonts. We found many duplicate fonts, yet some fonts
tend to be specific to a distribution. Moreover, fonts are most
often installed in groups, as seen with packages that install
multiple fonts. Blink allows defining font groups and system-
specific fonts to avoid exhibiting uncommon fingerprints.
8http://blog.chromium.org/2014/11/the-final-countdown-for-npapi.html