Über verschiedenen API-Schnittstellen können Trackingscripte Informationen über die Hardware des Rechners sammeln und für die Berechnung eines individuellen Fingerprint des Browsers nutzen. Durch Messung der Performance aufwendiger Grafik Operationen oder beim Abspielen von Videos können Trackingscripte ebenfalls Informationen über die Hardware ermitteln.
- Bildschirm: Informationen über die Größe des Monitors und des Browserfensters werden am häufigsten für das Hardwarefingerprinting genutzt. Es liegen keine wissenschaftlichen Analysen zur Verbreitung dieser Trackingmethode 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 Trackingscripte, die Bildschirmgröße und Größe des Browserfensters für das Fingerprinting des Browsers nutzen.
Das Auslesen der Bildschirmgröße via Javascript kann man verhindern, indem folgende Variable unter "about:config" neu angelegt wird:
privacy.resistFingerprinting = true
Wenn diese Variable gesetzt wurde, dann wird wie beim TorBrowser die Fenstergröße des Browser gleichzeitig als Bildschirmgröße verwendet und die reale Größe des Bildschrims ist nicht auslesbar. Derzeit ist die Firefox Implementierung nicht kompatibel mit dem ClearClick Schutz von NoScript und führt zu falschen Alarmen. Deshalb haben wir diese Einstellung nicht in unsere Zusammenfassung aufgenommen.
In erster Linie sollte man Javascript allgm. deaktivieren und nur für vertrauenswürdige Webseiten freigeben. Das schützt gegen viele Fingerprinting Features.
- MediaDevices: In Firefox 39 wurde die Funktion zum Auslesen der Media Input und Output Devices standardmäßig aktiviert. Damit können Informationen über Kamera, Mikrophone oder Sound Ausgabe für das Hardware Fingerprinting genutzt werden.
Diese API kann mit folgender Option deaktiviert werden:
media.navigator.enabled = false
- AudioContext: Mit der AudioContext-API kann Javascript Soundschnipsel im AudioBuffer generieren, manipulieren und die Ergebnisse wieder auslesen. Dabei unterscheiden sich die Ergebnisse in Abhängigkeit von der Audiohardware und -software. Die Daten können für das Fingerprinting genutzt werden, wie die AudioContext Fingerprint Test Page zeigt.
Diese API kann mit folgender Option deaktiviert werden:
dom.webaudio.enabled = false
- Grafikhardware: Die Hardwarebeschleunigung des Rendering kann man unter "about:config" deaktivieren, um ein Fingerprinting der Grafikhardware zu verhindern.
Die Einbußen sind kaum erkennbar.
gfx.direct2d.disabled | true |
layers.acceleration.disabled | true |
media.hardware-video-decoding.enabled | false |
- Statistiken für Videos: Die Übermittlung von Statistiken beim Abspielen von Videos (Framerate usw.) kann unter "about:config" deaktiviert werden:
media.video_stats.enabled = false
- Keyboard: Erste Funktionen der Keyboard-API wurden in Firefox 38.0 aktiviert. Durch Auswertung der Keyboard Events beim Schreiben in Formularen kann ein Trackingscript z.B. ermitteln, ob eine deutsche oder englische Tastatur verwendet wird.
Die Tabelle zeigt als Beispiel eine Gegenüberstellung der ausgelesenen Parameter des Keyboard Event "keydown" beim Drücken der Taste "?":
| en-US Tastatur | deutsche Tastatur |
key | ? | ? |
charCode | 0 | 0 |
which | 191 | 63 |
code | Slash | Minus |
keyCode | 191 | 63 |
location | 0 | 0 |
Die Keyboard Events können unter "about:config" deaktiviert werden:
dom.keyboardevent.code.enabled | false |
dom.beforeAfterKeyboardEvent.enabled | false |
dom.keyboardevent.dispatch_during_composition | false |
- Die Camera-API von Firefox kann Gesichter erkennen (nur Face Detection, nicht Face Recogbition) und mit dem Tracking Focus einem Gesicht folgen. Die Technik ist nicht privacy-invasive, man braucht es aber auch nicht, um Webseiten zu betrachten. Unter "about:config" kann man diese Features deaktivieren:
camera.control.face_detection.enabled | false |
camera.control.autofocus_moving_callback.enabled | false |
- Gamepad: Die Gamepad-API liefert Informationen über einen angeschlossenen Gamepad. Das ist ein überwiegend sinnloses Feature und kann ebenfalls unter "about:config" deaktiviert werden:
dom.gamepad.enabled = false