Aktualisierungen gibt es im Changelog, als RSS-Feed
oder im [matrix] Raum #prhdb-changes:nitro.chat

Privacy-Handbuch

Mit Javascript ist es möglich, viele Details des Browsers auszulesen und einen individuellen Fingerprint zu berechnen, der auch ohne Cookies/Evercookies das Tracking ermöglicht.

  1. Bildschirm: Informationen über die Größe des Monitors und des Browser­fensters werden am häufigsten für das Hardware­finger­printing genutzt. Es liegen keine wissen­schaftlichen Analysen zur Verbreitung dieser Tracking­methode vor, aber grob geschätzt werden diese Informationen von 30-50% der Webseiten ausgewertet. Insbesondere auf größeren Portalen wie heise.de, spiegel.de, zeit.de oder google.com findet man fast immer Tracking­scripte, die Bildschirm­größe und Größe des Browser­fensters für das Finger­printing des Browsers nutzen.

  2. Canvas Fingerprinting wurde 2012 in dem Paper Perfect Pixel beschrieben und 2016 auf 14.371 Webseiten als Tracking­verfahren nach­gewiesen. Der Canvastest auf Browser­leaks.com demonstriert das Verfahren. Als einfache Demo kann der Test Schluss­folgerungen über den verwendeten Browser und das Betriebs­system ableiten (und User-Agent Fakes enttarnen).

    Mit Javascript kann Text in ein Canvas Element geschrieben werden. Das Ergebnis wird als Grafik ausge­lesen und ein Hashwert der Grafik berechnet. Das Ergebnis unterscheidet sich von Browser zu Browser aufgrund installierter Schriften, Software für das Rendering usw.

  3. Canvas Font Fingerprinting wurde 2016 in dem OpenWPM Paper (PDF) beschrieben. Dabei wird das "CanvasRenderingContext2D" Objekt mit der Methode "measureText" genutzt. Der Text wird nicht in das Canvas Element geschrieben sondern es wird nur die Größe ermittelt, die ein Text mit unter­schiedlichen Schriftarten benötigen würde, wenn er geschrieben werden würde. Der ClientRects Test demonstriert das Verfahren.

    Auch dieses Trackingverfahren wird in-the-wild für das Browserfingerprinting eingesetzt. 
  4. AudioContext: Mit der Audio-API kann Javascript unhörbare Sound­schnipsel im Audio­buffer generieren, manipulieren und die Ergebnisse wieder auslesen. Dabei unter­scheiden sich die Ergebnisse in Abhängigkeit von der Audio­hardware und -software. Die Daten können für das Finger­printing genutzt werden, wie die AudioContext Fingerprint Test Page zeigt.

  5. Timing APIs können von Web­anwendungen zur Analyse des Ladens von Resourcen oder des Nutzer­verhaltens missbraucht werden (siehe: Timing Attacks on Web Privacy, PDF).

  6. Gamepad: Die Gamepad-API kann Informationen über ein angeschlossenes Gamepad liefern. Da 99% der Nutzer kein Gamepad verwenden, liefert sie in der Regel keine Informationen. Aber wenn ein Gamepad angeschlossen wurde, ist es ein sehr eindeutiges Merkmal.
  7. Media Device Enumeration liefert Daten über Kamera und Mikrofon, die man für das Hardware Fingerprinting zu verwenden kann. Der Surfer muss dabei nicht um Zustimmung für den Zugriff auf Kamera oder Mikrofon gebeten werden. Der WebRTC Test demonstriert es: Firefox verwendet als Device-IDs einen gesalzenen Hash. Der Salt für die Berechnung des Hashes wird beim ersten Start festgelegt und immer erneuert, wenn Cookies und Cache Daten gelöscht werden. Außerdem ist der Salt in Surfcontainern unterschiedlich.
  8. HTML Beacons kann ein Browser beim Verlassen/Schließen einer Webseite Daten zur Analyse an den Webserver senden, die via Javascript gesammelte wurden. Statt die Beacon API zu deaktivieren, ist es unauffäliger, so zu tun als ob aber keine Daten zu senden.

    Wenn man HTML5 Beacons nicht verschickt, kann es vorkommen, dass eine Webseite nach einem Klick nicht aktualisiert wird. eBay.com ist ein Beispiel dafür. Man muss oft den Reload Button klicken, um eine wirklich aktuelle Seite zu sehen.

Schutz gegen Fingerprinting mit Javascript

Die meisten oben genannten Javascript APIs könnte man deativieren, um ein Auslesen von Daten zu verhindern (was auch oft empfohlen wird). Da ein Tracking­script die Deaktivierung der APIs erkennt, schafft man damit wieder neue Merkmale für das Fingerprinting (ist also kontraproduktiv).

Besser ist es, die Ausgaben der Javascript APIs geringfügig zu manipulieren. Die Parameter für die Manipulation können von der Domain abhängen, die im Browser aufgerufen wird, so dass die Fakes innerhalb einer Domain konstant bleiben und sich nur beim Wechsel der Domain ändern. Damit wird eine Wieder­erkennung des Surfers anhand des Fingerprint über mehrere Webseiten unmöglich.

Es gibt mehrere Add-ons, die Javascript APIs faken können. An dieser Stelle wird eine Kombination von Canvas­Blocker und JS-Restrictor empfohlen. Der Funktions­umfang beider Add-ons über­schneidet sich in den Standard­einstellungen, so dass man die Konfiguration anpassen und darauf achten muss, welche Funktion welches Add-on übernimmt.

Die folgende Tabelle ist eine Empfehlung für die Kombination der beiden Add-ons Canvas­Blocker und JS Redirector, die man übernehmen oder variieren kann (bei mir funktioniert es gut):

CanvasBlockerJS Restrictor
minimale Größe
vortäuschen
aktiviert
(ohne WebGL)
aktiviert
aktiviert
WebGL API
Funktionen
deaktiviert
aktiviert
1/100 sec ohne
zus. Rauschen
Amplitude
variieren
keine Geräte
anzeigen
randomly slow
messages
aktiviert
max. 2 Einträge
aktiviert
(Obfuscation)
Zufällige Werte
zwischen min...8.0
aktiviert
(nichts senden aber
"ok" zurückgeben)
aktiviert

Für das Add-on CanvasBlocker steht diese Konfiguration zum Download bereit, im JS-Restrictor muss man einen eigenen Level mit diesen Eigenschaften definieren und als "Default" setzen.

Für Webseiten zum Onlinebanking (mit Flickercode) oder für Videokonferenzen kann man im Add-on JS-Restrictor den vordefinierten Level "0" und sie funktionieren dann i.d.R problemlos.

Lizenz: Public Domain