Fingerabdrücke auf der Leinwand

Browserprofile mit Canvas-Fingerprinting

Trends & News | News

Raffiniert, versteckt und kaum zu verhindern soll die neue Tracking-Methode sein, mit der Werbeunternehmen überall im Web Surfer verfolgen können. Canvas-Fingerprinting wirft viele Fragen auf – nicht nur technischer Natur.

Weite Teile der Netzöffentlichkeit schreckten auf, als Forscher der Universitäten Princeton und Leuven ihre Feldstudie über moderne Trackingtechniken veröffentlichten [1]. Die Ende Juli bekannt gewordene Studie untersucht die Technik und Verbreitung von drei unterschiedlichen Verfahren: Evercookies, die sich durch verschiedene Speichertechniken von selbst regenerieren können, Cookie-Synchronisation, bei der Werbenetzwerke ihre Daten untereinander austauschen, und Canvas-Fingerprinting.

Besonders Letzteres sorgte für Aufsehen, denn bislang hatte kaum jemand von diesem Verfahren gehört – dabei setzen es bereits mehr als 5 Prozent der laut Alexa-Ranking führenden 100 000 Websites ein. Das Funktionsprinzip ist gleichermaßen raffiniert und überraschend.

Leinwandkunde

Canvas ist ein Verfahren, um mit JavaScript zu zeichnen. Eine Seite kann ein canvas-Element enthalten, in dem JavaScript-Befehle einfache Formen, Farben, Schriften und Bilder zu einer Pixelgrafik anordnen. Durch schnellen Austausch dieser Grafiken entstehen Animationen; eines der wichtigsten Einsatzgebiete sind Browserspiele.

Auch kann die Seite Anweisungen in der Sprache WebGL an den Browser übergeben, welche dieser ohne Umweg über den Hauptprozessor an die Grafikkarte weiterleitet. Auf diese Weise kann eine Webseite aufwendige 3D-Grafiken darstellen – wenngleich WebGL nicht von alle Geräten und Browsern unterstützt wird: Internet Explorer und die iOS-Variante von Safari kennen diese Technik erst in der jeweils jüngsten Browser-Version.

Abweichung

Die per Canvas erzeugte Pixelgrafik kann der Browser in Formate wie JPEG oder PNG umwandeln. Bei gleichem Input produzieren alle Browser das gleiche Ergebnis – sollte man meinen. Doch im Juni 2012 stellten Keaton Mowery und Hovav Shacham, zwei Forscher an der Universität im kalifornischen San Diego, überraschend fest, dass mit Canvas erzeugte Grafiken oft winzige Unterschiede aufweisen [2].

Offenbar führen Unterschiede der Browser beim Rendering von Texten und Grafiken sowie kleine Optimierungen der Grafikkarten bei der Ausführung von WebGL dazu, dass dieselbe Canvas-Grafik auf unterschiedlichen Systemen unterschiedlich aussieht. Am einfachsten lässt sich dieser Effekt nachvollziehen, wenn man Schrift rendert, wie wir es für den Screenshot unten gemacht haben:

var canvas = document.createElement⤦
 ("canvas");
var context = canvas.getContext("2d");
context.fillText("Kennen wir uns?", 20, 20);
var dataURL = canvas.toDataURL⤦
 ("image/png");

Es ist nicht einmal nötig, dass der Browser das canvas ins HTML-Gerüst einbaut. Im gerenderten Bild lassen sich die Ergebnisse in Firefox, Internet Explorer und Chrome optisch kaum auseinanderhalten. Gibt man es jedoch als Daten-URL (also als Base64-kodierten String) aus, ist der Unterschied offensichtlich. Bereits mit diesem einfachen Versuchsaufbau ergaben sich 50 verschiedene Ergebnisse.

Kompakt zusammenfassen lässt sich das Ergebnis mit einer Hash-Funktion, die ebenfalls nur wenige Zeilen erfordert und zum Beispiel eine kurze Zahl auswirft. Rendert ein Browser dasselbe Bild auf demselben Gerät wiederholt, entsteht wieder derselbe Hash-Wert.

Experimente

Der Entwickler Valentin Vasilyev knüpfte an die Arbeit der beiden Forscher an und programmierte ein unter Open-Source-Lizenz veröffentlichtes Fingerprinting-Skript (siehe c’t-Link). Er konnte es auf einer Website mit Millionen von bereits identifizierten Nutzern ausprobieren und somit die Ergebnisse deutlich verbessern: Nach eigenen Aussagen lieferten 89 Prozent der getesteten Browser eindeutige Fingerabdrücke.

Dabei benutzte Vasilyev nicht nur Canvas-Fingerprinting (schattierter Text und ein farbiges Rechteck), sondern ließ auch die Ergebnisse der Aussagen des Browsers über sich selbst einfließen – Browser-Kennung, Plug-ins, Sprache, Farbtiefe und Zeitzone. Das Skript generiert die Grafik, extrahiert die Daten-URL, wirft diese mit den Browserdaten zusammen und errechnet daraus den Hash-Wert.

Vasilyevs Auftraggeber war nicht zufrieden mit der Erkennungsrate, vor allem bei Mobilgeräten, und brach die Versuche ab. Doch andere Unternehmen sammelten Erfahrungen und Daten mit seinem Skript. Beispielsweise testete es das zum Verlag Gruner und Jahr gehörende Werbenetzwerk Ligatus; mittlerweile hat Ligatus den Test nach eigenen Angaben beendet. Andere versuchten, es weiter zu optimieren. Ein unter einer vietnamesischen Domain gehostetes Skript etwa probiert 1126 Fonts durch.

Schnüffel-Widget

Laut der eingangs erwähnten Feldstudie setzen 5559 Websites bereits Canvas-Fingerprinting ein. Die überwiegende Mehrheit der betroffenen Websites nutzt ein Widget von AddThis (siehe c’t-Link). Es zeichnet den alle lateinischen Buchstaben enthaltenden Text „Cwm fjordbank glyphs vext quiz“ sowie ein Rechteck auf die Leinwand, die per CSS unsichtbar gemacht wurde; nach dem Extrahieren des Fingerprints zerstört das Skript das Canvas.

Man darf annehmen, dass die meisten Website-Betreiber nicht wissen, was sie sich da eingehandelt haben. Denn nur ein kleiner Teil des unkomprimiert mehr als 10 000 Zeilen langen AddThis-Skriptes beschäftigt sich mit Tracking. Der Dienst ist bekannt dafür, Webseiten mit Widgets zu versorgen, über die sie Sharing-Buttons für Facebook, Twitter et cetera anbieten können – doch dabei füllt AddThis auch die eigenen Datenbanken.

Fingerabdrücke

Die in Mobilgeräten vorinstallierten Browser dürften sich per Fingerabdruck schwer identifizieren lassen – zu standardisiert sind dort Hard- und Software. Bei Desktop-Rechnern sind technische Maßnahmen gegen das Canvas-Fingerprinting schwierig. Das Abschalten von JavaScript oder extern nachgeladenen Skripten hilft, schränkt aber die Praxistauglichkeit für den Anwender ein. Der „Privacy Badger“, eine Browser-Erweiterung der Verbraucherschutzorganisation Electronic Frontier Foundation, soll in einer künftigen Version Browser-Fingerprinting unterbinden. Mowery und Shacham schlagen Browser-Herstellern vor, canvas.toDataURL() nur nach Bestätigung durch den Anwender auszuführen.

Letztlich ist Canvas-Fingerprinting nur eine weitere von vielen Techniken zum Tracken individueller Nutzer. Auch mit klassischen Cookies, Flashs Local-Storage-Objekten, localStorage, Web Storage, WebSQL, FileWriter API oder HTTP-ETag, lassen sich Surfer tracken – nach gegenwärtigem Stand der Technik sogar zuverlässiger.

Datenschutzpanik wäre übertrieben: Canvas-Fingerprinting übermittelt keine persönliche Daten und dürfte sich kaum zu etwas anderem eignen als der Identifizierung eines bereits bekannten Nutzers – aber auch im privaten Surfmodus. Doch wenn ein Anbieter genau das will, kann sich der Nutzer kaum dagegen wehren – Canvas-Fingerprinting unterstreicht diese Erkenntnis.

Statt dem Internetnutzer die aufwendige und anspruchsvolle Aufgabe des Tracking-Schutzes aufzubürden, wäre es ein riesiger Fortschritt, wenn Webdesigner beim Einbau von extern gehosteten Skripten etwas mehr Sensibilität walten lassen würden: Wie das Beispiel AddThis zeigt, sind es nämlich die Besucher der Seiten, die für nette Zusatzfunktionen zahlen – mit ihrer Privatsphäre. (jo)

Literatur
  1. [1] The web never forgets: Persistent tracking mechanisms in the wild, https://securehomes.esat.kuleuven.be/~gacar/persistent/the_web_never_forgets.pdf
  2. [2] Pixel Perfect: Fingerprinting Canvas in HTML5, http://cseweb.ucsd.edu/~hovav/dist/canvas.pdf

Artikel kostenlos herunterladen

weiterführende Links

Infos zum Artikel

Kapitel
  1. Leinwandkunde
  2. Abweichung
  3. Experimente
  4. Schnüffel-Widget
  5. Fingerabdrücke
0Kommentare
Kommentieren
Kommentar verfassen
Anzeige

Anzeige

weiterführende Links
  1. Zu diesem Artikel hat die Redaktion noch folgendes zusammengestellt:

    Links (4)

Anzeige