Fingerprinting bezeichnet eine Nutzerverfolgungs-Technik. Es wird angewandt, um Endgeräte und damit auch Nutzer eindeutig zu identifizieren und zu verfolgen. Dabei wurde oder wird es bei verschiedenen Geräten angewendet, so etwa Schreibmaschinen, Quarzuhren in Computern, Digitalkameras, Handys sowie PCs. Für die Methode ist kein physischer Zugriff auf das Gerät notwendig. Insbesondere die Daten, welche Webbrowser generieren, werden zum Fingerprinting verwendet, dies wird als Browser-Fingerprinting bezeichnet. Diese Methode wurde 2020 von 20 % der reichweitenstärksten 10.000 Internetseiten angewandt.
Eine Identifizierung von Geräten gelingt auf der Grundlage unterschiedlicher Daten, je nach Einsatzgebiet des Fingerprinting. Es werden dabei meist Parameter ausgelesen, die von dem Gerät über das Internet versandt werden. Die gesammelten Daten unterscheiden sich für verschiedene Geräte, abhängig davon, wie das Gerät in seinen Soft- und Hardware-Komponenten aufgebaut ist. Durch die Abweichungen in den Daten können einzelne Geräte oft eindeutig auseinandergehalten werden. So lässt sich auch die Person verfolgen, die das Gerät benutzt.
Nach dem World Wide Web Consortium dient das Browser-Fingerprinting dazu, Nutzer zu identifizieren, einen Zusammenhang zwischen deren Suchaktivitäten herzustellen, auch über mehrere Sitzungen hinweg, und Nutzer intransparent und unkontrolliert zu verfolgen.
Geschichte Schon in den 1970er Jahren beschäftigte sich der Forensiker Ordway Hilton im Journal of Forensic Sciences mit den spezifischen Erkennungsmerkmalen einzelner Schreibmaschinen, dieser Ansatz wurde bereits als Fingerprinting beschrieben. In der Methode ging es jedoch, in Gegensatz zu seitdem beschrieben Anwendungsfällen, um Geräte ohne Internetanschluss. Hilton beschrieb in dem Artikel die zunehmenden Schwierigkeiten in der Zuordnung von Schriftstücken zu einzelnen Schreibmaschinen. Die gestiegene Qualität der Schreibmaschinen und die geringen Fertigungstoleranzen würden zu subtileren Unterschieden führen, als das noch in den Jahrzehnten davor der Fall war. Zur Identifikation von Schriftstücken wurden kleinste Beschädigungen an den Lettern betrachtet, die sich mit fortschreitender Benutzung einstellten. Die Beschädigungen traten bei Satzschriften mit Serifen besonders häufig auf, da die schmalen Strukturen anfällig für Defekte waren. Zudem wurde die spezifische Schattierung pro Letter betrachtet, die sich je nach Maschine leicht unterscheiden konnte. Auch wurde die Tiefe der Prägung unter dem Binokular geprüft. Die Ausrichtung der Letter konnte als weiteres einzigartiges Merkmal dienen, beispielsweise wenn ein Buchstabe stets zu weit links gedruckt wurde oder wenn die Buchstaben nicht ganz auf einer Linie angeordnet waren. Diese Unterschiede resultierten unter anderem aus mechanischen Ungenauigkeiten, die bei jeder Schreibmaschine individuell waren.
2005 veröffentlichen Forscher der University of California, San Diego eine Arbeit, in der die Möglichkeit aufgezeigt wurde, Geräte mit Internetanschluss anhand der verbauten Quarzuhr voneinander zu unterschieden. Dies wurde erreicht, indem „mikroskopisch kleine Abweichungen in der Gerätehardware“ gemessen wurden, sogenannte Taktverschiebungen in den Uhren. Hierzu wurden die TCP-Zeitstempel aufgezeichnet und verglichen. Erprobt wurde die Methode damals an 100 virtuellen Linux-2.4.18- und 100 virtuellen Windows-XP-SP1-Hosts, die alle auf dem gleichen Computer liefen. Alle virtuellen Computer konnten mittels TCP-Zeitstempel mit hoher Wahrscheinlichkeit diesem einen Rechner zugeordnet werden. Steven J. Murdoch von der University of Cambridge veröffentlichte 2006 eine Forschungsarbeit, in der er zeigte, dass sich die CPU-Belastung von Tor-Knotenpunkten in Form von Wärme äußert, was wiederum Einfluss auf die Taktverschiebung in der Echtzeituhr hat. Diese Verschiebungen können, wie oben beschrieben, anhand der Zeitstempel gemessen werden. Damit stellte er eine Möglichkeit vor, die Anonymität des Tor-Netzwerkes oder ähnlicher Anonymitätsnetzwerke zu schwächen.
Im selben Jahr schlugen Forscher der State University of New York eine Methode vor, um einen eindeutigen Fingerprint für Bilder aus Digitalkameras zu erzeugen, hierzu nutzten sie das einzigartige Bildrauschen des Kamerasensors. Forscher der Universität Hongkong schlugen dagegen vor, die Abbildungsfehler des Objektives als Fingerprinting-Parameter zu nutzen.
Jonathan R. Mayer war 2009 der erste, der empirisch zeigte, dass Webbrowser unterschiedlich erscheinen, abhängig vom Betriebssystem, der Hardware und der Browser-Konfiguration und dass diese Unterschiede von einem fremden Server ausgelesen werden können, um ein Profil des Nutzers zu erstellen. Ein Jahr später führte Peter Eckersley von der Electronic Frontier Foundation (EFF) das Panopticlick-Experiment durch. Hierbei sammelte er mithilfe von Datenspenden ca. 470.000 Fingerprints von Nutzern. Er konnte zeigen, dass mit einer Kombination aus unterschiedlichen Messdaten 83,6 % der Fingerprints einzigartig waren. Wenn die Nutzer Plugins wie Adobe Flash Player oder Java Virtual Machine aktiviert hatten, stieg die Zahl auf 94,2 %, da diese Plugins zusätzliche Geräteinformationen lieferten. Diese Studie prägte den Begriff Browser-Fingerprinting.
2012 zeigten Keaton Mowery und Hovav Shacham, wie das HTML5-Canvas-Element genutzt werden kann, um einen Fingerprint zu erzeugen, dies legte den Grundstein für das sogenannte Canvas-Fingerprinting. Ein Jahr später schlug Thomas Unger von der FH Wien vor, die neu aufkommenden CSS3-Module (Cascading Style Sheets) zum Fingerprinting zu verwenden. 2015 wurde durch Forscher der Meiji-Universität erstmals die Möglichkeit erwähnt, Nutzer allein durch CSS zu verfolgen. Dazu wurde 2023 durch Forscher von IBM eine Methodik vorstellt, die es ermöglicht, einen CSS-Fingerprint zu erstellen, mit dem sich Nutzer zuverlässig verfolgen lassen. Die Effektivität soll der von Canvas-Fingerprints gleichen, mit dem Unterschied, dass sich die Technik noch schwerer verhindern lässt und auch gegen das Tor-Netzwerk wirksam sein kann.
Funktionsweise des Browser-Fingerprintings Während bei Cookies ein Identifikator auf dem Gerät gespeichert wird, um später wieder ausgelesen zu werden, werden beim Browser-Fingerprinting die Software- und Hardwaremerkmale von Geräten ausgelesen, um so verschiedene Geräte voneinander zu unterscheiden. Je mehr Parameter erfasst werden, desto eindeutiger können Geräte unterschieden werden. Die Menge an verwertbaren Daten wird in Bits an Entropie gemessen. Auf diese Weise wird beim Browser-Fingerprinting ein digitaler Fingerabdruck eines Gerätes erstellt, welcher in einem Hash oder einer Liste gespeichert wird. Wenn der Nutzer eine Internetseite erneut besucht, wird abermals der spezifische Fingerprint des Gerätes ausgelesen und mit dem Hash abgeglichen, so kann der Nutzer wiedererkannt werden, da sich sein Fingerprint im Allgemeinen nicht ändert. Je ungewöhnlicher ein System in seinen Software- und Hardware-Komponenten aufgebaut ist, desto einzigartiger ist auch der zugehörige Fingerprint und dementsprechend leichter ist der Nutzer zu verfolgen. Die Attribute, welche zum Browser-Fingerprinting verwendet werden können, sind äußerst vielfältig und unterliegen einem ständigen Wandel, weil neue Attribute hinzukommen und alte wegfallen. Im Folgenden werden deshalb beispielhaft einige wichtige Techniken dargestellt, aus denen sich die Daten für das Fingerprinting ergeben. Zwar ergibt sich durch die Kombination vieler Attribute ein genaueres Ergebnis, jedoch reichen teilweise bereits einzelne Attribute aus, um Nutzer mit hoher Wahrscheinlichkeit zu identifizieren.
HTTP-Headerfeld mini|alt=Das dargestellte Beispiel eines Browser Fingerprints ist in drei Spalten unterteilt: Attribute, Source und Example. Als Attribut steht dort z. B. Content Language (Sprache der Inhalte), als Quelle ist der HTTP header genannt und als Beispiel en-US,en;q=0.9. Ein weiteres Attribut ist der WebGL Vendor, welcher über JavaScript ausgelesen wird, als Beispiel ist gegeben: NVIDIA Corporation.|Beispiel für gesammelte Attribute in einem Browser-Fingerprint.Bei der Antwort auf eine HTTP-Anfrage sind Informationen über die Hardware, das Betriebssystem, den Browser und seine Version sowie über die eingestellten Sprachen enthalten. All diese Daten dienen als Fingerprinting-Vektor.
JavaScript-Attribute Fenster- und Bildschirmeigenschaften Hier werden Eigenschaften wie die Bildschirmgröße, die Größe des Browserfensters, die Farbtiefe und die dpi (deutsch Punkte pro Zoll) erfasst.
WebGL WebGL ist eine graphische API, mit der sich ohne zusätzliche Plugins interaktive 3D-Grafiken in Browser darstellen lassen. Dadurch, dass verschiedene Systeme und Browser die Grafik leicht anders darstellen, eignen sich diese Daten zum Fingerprinting. Unterschiede ergeben sich bei der Darstellung von Licht und Schatten, der Oberfläche eines Objektes und der Kameraperspektive.
Canvas Die Methode des Canvas-Fingerprintings macht sich den Effekt zunutze, dass die Darstellung von Canvas-Elementen variiert, abhängig vom Betriebssystem, der Browser-Version, der Grafikkarte und den installierten Schriftarten. Um für den Seitenbesucher einen spezifischen Fingerprint zum Zeitpunkt des Seitenaufrufs zu erstellen, wird dem Browser ein versteckter Text zur Anzeige übergeben. Hierzu sind nur wenige Programmzeilen JavaScript notwendig.
Benchmarking Hierbei wird über JavaScript eine Reihe an Aufgaben angefordert und daraufhin die Zeit gemessen, die bis zur Vollendung der Aufgabe benötigt wird. So lassen sich Leistungsunterschiede zwischen Computern, bei der CPU und GPU ermitteln. Die Interpretation der Daten ist hierbei schwierig, da sich schlecht ausmachen lässt, ob es sich tatsächlich um zwei unterschiedliche Geräte handelt oder ob ein Hintergrundprozess die Leistung während einer der Messungen beeinflusste.
AudioContext Die Web-Audio-API bietet eine Schnittstelle, um Audio zu verarbeiten. Dem Browser werden unhörbare Audioschnipsel übergeben und manipuliert, zum Beispiel in der Kompression, oder der Filterung. Die Ergebnisse werden dann ausgelesen und zum Fingerprinting verwendet.
CSS-Fingerprinting Ermittelt werden kann hierbei eine Liste von installierten Schriftarten, das Farbsystem, der Browser, oder die Browserfamilie und die über Media Queries geschätzte Bildschirmgröße. Diese Art des Fingerprintings benötigt keine JavaScript-Programmierschnittstelle.
Browser-Add-ons Die Anzahl und die Art der installierten Add-ons können als Vektor dienen. Direkt können die Add-ons nicht ausgelesen werden, jedoch kann über verschiedene Hinweise auf die Anwesenheit einer bestimmten Erweiterung geschlossen werden. Es können beispielsweise Anfragen an bestehende und falsche Erweiterungen versendet und dann die Zeitunterschiede der Antwort gemessen werden. Weiterhin kann detektiert werden, wenn Add-ons sehr spezifische URLs aufrufen, um Ressourcen – wie z. B. Bilder – bereitzustellen.
Technische Gegenmaßnahmen Ziel der Gegenmaßnahmen ist die Erhöhung der Privatsphäre beim Surfen im Internet. Das Browser-Fingerprinting lässt sich nutzerseitig deutlich schwerer verhindern als vergleichbare Tracking-Techniken. Grundsätzlich lässt sich eine Verfolgung weniger leicht realisieren wenn viele Nutzer einen ähnlichen oder gleichen Fingerprint besitzen, da dieser dann nicht mehr eindeutig einem einzelnen Benutzer zugeordnet werden kann. Der Tor-Browser zielt durch seinen Aufbau auf diesen Effekt ab. Durch verschiedene technische Grundlagen (Letterboxing, einheitliche Schriftarten etc.) erhalten viele Nutzer einen gemeinsamen Fingerprint, sie verschwinden dadurch in einer Anonymitätsgruppe von Nutzern, die denselben Fingerprint wie sie besitzen. Andere Browser wie beispielsweise Brave sind ebenfalls von Grund auf darauf ausgelegt, möglichst resistent gegen das Fingerprinting zu sein.