It’s #FrontendFriday – Canvas Fingerprinting: Tracking deines digitalen Fingerabdrucks

Wie jeden 2. Freitag ist heute wieder #FrontendFriday!

Das heimliche Tracking im Internet hat (leider) schon eine lange Tradition. Spätestens seit der DSGVO ist jedem bekannt, was über Cookies technisch möglich ist und wie man sich dagegen schützen kann.

In diesem #FrontendFriday möchten wir jedoch nicht die klassische Methode des Trackings durch das Internet beleuchten, sondern eine alternative, unbekanntere Methode: das Canvas Fingerprinting.

Was ist Canvas Fingerprinting?

Seit HTML5 ist es möglich, über das HTML-Element (englisch für Leinwand) mit JavaScript zu zeichnen. Ursprünglich wurde Canvas von Apple als Teil der Browser-Engine webkit entwickelt und wurde dann in den HTML5-Standard aufgenommen.
Heute kann man via JavaScript sogar 3D-Elemente in Canvas zeichnen. Canvas wird heute von so gut wie allen Browsern (auch mobil) unterstützt und wird auch zum verdeckten Tracking im Internet verwendet.

Canvas Fingerprinting ist eine Methode des Device- oder Browser Fingerprinting, welche ohne Generierung einer ID Benutzer (relativ) eindeutig identifizieren kann.

In der Studie Pixel Perfect: Fingerprinting Canvas in HTML5 von Keaton Mowery und Hovav Shacham wurde diese Methode erstmals wissenschaftlich untersucht.

Wie funktioniert das geheime Tracking?

Im Gegensatz zum klassischen Tracking durch Cookies geschieht das Tracking über Canvas weitaus raffinierter.

Über ein im DOM enthaltenes Canvas-Element wird per JavaScript ein Bild gezeichnet. Das Bild kann beispielsweise mehrere Linien und einen Text mit Zahlen und Buchstaben enthalten.
Ein so erstelltes Canvas kann z.B. so aussehen:

Quelle: https://browserleaks.com/canvas
In diesem jsFiddle kann man sehen, wie das Canvas-Element erstellt und mit JavaScript darauf gezeichnet wird.

Ein solches Bild wird im Browser der Clients gezeichnet, natürlich versteckt – z.B: mit einem simplen CSS-„opacity: 0;“. Für das menschliche Auge sieht das Bild in jedem Browser/Client auf den ersten Blick zwar gleich aus, aber…

durch unzählige, minimale Unterschiede der Clients, wie z.B. installierte Treiber, Grafikkarte, Rendering-Engine, Anti-Aliasing, installierte Schriftarten, Auflösung, uvm. unterscheiden sich die Canvas-Bilder im direkten Pixelvergleich minimal.

Ein Beispiel ist das Hinting von Schriftarten. So kann ein „m“ mit der gleichen Schriftart, aber unterschiedlichen „Hinting-Werten“ im Detail anders aussehen:

Quelle: https://multilogin.com/everything-you-need-to-know-about-canvas-fingerprinting/

Ebenso können auch andere, winzige Merkmale durch verschiedene Hard- und Software unterschiedlich dargestellt sein.

Die minimalen Unterschiede sind in der folgenden Animation (35 Frames für 35 verschiedene Benutzer) dargestellt:

Quelle: https://browserleaks.com/canvas

Durch die Summe aller kleinen Pixelunterschiede lassen sich so Benutzer fast eindeutig identifizieren.

Über das gezeichnete Canvas-Bild wird dann meist ein PNG-Hash erzeugt und fertig ist die „ID“ des Benutzers.

Wie genau ist das?

Die Zuverlässigkeit der eindeutigen Identifizierung liegt im Schnitt bei etwa ~90%. Das hört sich nach viel an, ist es aber nicht. 99,9% bedeuten beispielsweise, dass von 425.093 Besuchern, 423 gleich identifiziert werden.
Dies wird auch als Nachteil gegenüber dem eindeutig identifizierbaren Verfahren durch z.B. Cookies genannt. Die Bezeichnung Fingerprint ist also etwas hoch gegriffen.

Wie unique man über Canvas Fingerprinting wirklich identifiziert werden kann, kann man auf browserleaks.com/canvas selbst testen.

Nicht nur mit Werbung lässt sich Geld verdienen

Der Common Usecase für das verdeckte und eindeutige Tracken von Usern ist, sein Surfverhalten im Internet nachvollziehen zu können und ihm dann sogenannte „benutzerspezifische“ Werbung anzeigen zu können.

Aber es gibt auch einen positiven Anwendungsfall: fingerprintjs.com nutzt die OpenSource CanvasFing-erprint-Library fingerPrintJs2 zur Betrugserkennung (Fraud Detection).
So können mit Hilfe von Canvas Fingerprinting die mehrfache Teilnahme an z.B. Gewinnspielen oder Umfragen erkannt werden.

Canvas Fingerprinting ist also perse nichts böses. :)

Auf welchen Browsern/Endgeräten/OS funktioniert das?

Auf allen, die sich nicht schützen.

Wie kann man sich dagegen schützen?

Wie beim Tracking mit Cookies, gibt es auch gegen das Canvas Fingerprinting entsprechende Plugins, die das Tracken verhindern:

Firefox: https://addons.mozilla.org/en-US/firefox/addon/canvasblocker/
Chrome: https://chrome.google.com/webstore/detail/canvas-blocker-fingerprin/nomnklagbgmgghhjidfhnoelnjfndfpd?hl=de
IE: als ob

Wer also bereits ein Anti-Tracking-Plugin gegen Cookies wie z.B. Ghostery installiert hat, sollte auf jeden Fall auch eines gegen Canvas Fingerprinting installieren.

Quellen

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*Pflichtfelder

*