
[5] “Mobile internet usage soars by 67%,” http://gs.statcounter.com/press/
mobile-internet- usage-soars- by-67- perc.
[6] 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 21st ACM Conference on Computer
and Communications Security (CCS 2014). ACM, 2014.
[7] P. Eckersley, “How unique is your web browser?” in Proceedings of
the 10th International Conference on Privacy Enhancing Technologies,
ser. PETS’10. Berlin, Heidelberg: Springer-Verlag, 2010, pp. 1–18.
[Online]. Available: http://dl.acm.org/citation.cfm?id=1881151.1881152
[8] “HTML Canvas 2D Context,” http://www.w3.org/TR/2dcontext/.
[9] “Emoji and Dingbats,” http://unicode.org/faq/emoji_dingbats.html.
[10] “WebGL Specification,” https://www.khronos.org/registry/webgl/specs/
latest/1.0/.
[11] “ANGLE: Almost Native Graphics Layer Engine,” https://chromium.
googlesource.com/angle/angle.
[12] “Masking Agent extension for Firefox,” https://addons.mozilla.org/
firefox/addon/masking-agent/.
[13] “An Update on Flash Player and Android,” https://blogs.adobe.com/
flashplayer/2012/06/flash-player-and-android-update.html.
[14] J. Schuh, “Saying Goodbye to Our Old Friend NPAPI,” Septem-
ber 2013, https://blog.chromium.org/2013/09/saying-goodbye-to-our-
old-friend- npapi.html.
[15] “NPAPI deprecation: developer guide,” https://www.chromium.org/
developers/npapi-deprecation — The Netscape Plugin API (NPAPI) has
been permanently removed from Google Chrome since version 45. The
Pepper API (PPAPI) is one option but few plugins exist and it is not
proposed in the developer guide as an alternative.
[16] “Disallow enumeration of navigator.plugins (Mozilla bug tracker),”
https://bugzilla.mozilla.org/show_bug.cgi?id=757726.
[17] “NPAPI Plugins in Firefox,” https://blog.mozilla.org/futurereleases/
2015/10/08/npapi-plugins- in-firefox/.
[18] “Extensive discussion about reducing the HTML battery API,” https:
//groups.google.com/forum/#!topic/mozilla.dev.webapi/6gLD78z6ASI.
[19] L. Olejnik, G. Acar, C. Castelluccia, and C. Diaz, “The leaking battery:
A privacy analysis of the html5 battery status api,” Cryptology ePrint
Archive, Report 2015/616, 2015, http://eprint.iacr.org/.
[20] D. Fifield and S. Egelman, “Fingerprinting web users through font met-
rics,” in Proceedings of the 19th international conference on Financial
Cryptography and Data Security. Berlin, Heidelberg: Springer-Verlag,
2015.
[21] “Ghostery browser extension,” https://www.ghostery.com/our-solutions/
ghostery-browser-extention/.
[22] “Privacy Badger browser extension,” https://www.eff.org/privacybadger.
[23] “NoScript browser extension,” https://noscript.net/.
[24] “Design of the Tor browser,” https://www.torproject.org/projects/
torbrowser/design/.
[25] “Release of Tor with a new defense against font enumeration,” https:
//blog.torproject.org/blog/tor-browser-55-released.
[26] T.-F. Yen, Y. Xie, F. Yu, R. P. Yu, and M. Abadi, “Host fingerprinting
and tracking on the web: Privacy and security implications.” in NDSS,
2012.
[27] J. Spooren, D. Preuveneers, and W. Joosen, “Mobile device
fingerprinting considered harmful for risk-based authentication,” in
Proceedings of the Eighth European Workshop on System Security,
ser. EuroSec ’15. New York, NY, USA: ACM, 2015, pp. 6:1–6:6.
[Online]. Available: http://doi.acm.org/10.1145/2751323.2751329
[28] K. Boda, A. M. Földes, G. G. Gulyás, and S. Imre, “User tracking
on the web via cross-browser fingerprinting,” in Information Security
Technology for Applications, ser. Lecture Notes in Computer Science,
P. Laud, Ed. Springer Berlin Heidelberg, 2012, vol. 7161, pp. 31–46.
[Online]. Available: http://dx.doi.org/10.1007/978- 3-642- 29615-4_4
[29] K. Mowery, D. Bogenreif, S. Yilek, and H. Shacham, “Fingerprinting
information in JavaScript implementations,” in Proceedings of W2SP
2011, H. Wang, Ed. IEEE Computer Society, May 2011.
[30] M. Mulazzani, P. Reschl, M. Huber, M. Leithner, S. Schrittwieser,
E. Weippl, and F. C. Wien, “Fast and reliable browser identification
with javascript engine fingerprinting,” in Web 2.0 Workshop on Security
and Privacy (W2SP), vol. 5, 2013.
[31] “ Technical analysis of client identification mechanisms
,” https://www.chromium.org/Home/chromium-security/client-
identification-mechanisms.
[32] “three.js official website, a JavaScript library to create 3D animations
using WebGL,” http://threejs.org/.
APPENDIX A
NORMALIZED SHANNON’S EN TRO PY F OR A LL
AMIUNIQUE’S ATTR IBUTES
Attribute All Desktop Mobile
User agent 0.580 0.550 0.741
List of plugins 0.656 0.718 0.081
List of fonts (Flash) 0.497 0.548 0.033
Screen resolution (JS) 0.290 0.263 0.366
Timezone 0.198 0.200 0.245
Cookies enabled 0.015 0.016 0.011
Accept 0.082 0.082 0.105
Content encoding 0.091 0.089 0.122
Content language 0.351 0.344 0.424
List of HTTP headers 0.249 0.247 0.312
Platform (JS) 0.137 0.110 0.162
Do Not Track 0.056 0.057 0.058
Use of local storage 0.024 0.023 0.036
Use of session storage 0.024 0.023 0.036
Canvas 0.491 0.475 0.512
Vendor WebGL 0.127 0.125 0.131
Renderer WebGL 0.202 0.205 0.165
AdBlock 0.059 0.060 0.029
APPENDIX B
OUR ATT EM PT AT A WEB GL T ES T
As reported by Mowery et al. [4], the WebGL API can be
used to render 3D forms in the browser. With the help of the
three.js JavaScript library [32], we aimed to have a test that
renders three different forms:
•a sphere
•a cube
•a Torus knot
However, after analyzing more than 40,000 fingerprints, we
concluded that the test was too brittle and unreliable to draw
any conclusions from it. Indeed, if the user were to change the
size of its browser window or open the browser console, the
actual dimensions of the rendering context would be updated
inside the library and the rendering would differ with just a
simple page reload. Figure 10 shows three renderings of the
same test with three different window sizes on the same device.
APPENDIX C
ADDITIONAL FLAS H ATTRIBUT ES
For Flash, we also collected the following four attributes:
•Capabilities.language
•Capabilities.os
•Capabilties.screenResolutionX
•Capabilties.screenResolutionY
The language obtained through Flash is the devices main
language, but it is not as precise as the content language header
collected through HTTP. For the screen resolution, it can be
more interesting than the JavaScript value because Flash will
return the full resolution of a multi-screen setup and not the
resolution of a single screen. Finally, when analyzing the data
from the string collected from the OS property, it confirmed
what has been observed by Nikiforakis et al. [1] in 2013.
Depending on the OS and the browser, the information is often
generic, returning “Windows" or “Linux", but in some cases