zurück zur Übersicht Mehr Artikel

Schriftarten-Fingerprinting: Deine installierten Fonts verraten dich

Schriften-Fingerprint wird erstellt...

Deine Schriftartenliste ist über Jahre gewachsen. Das Betriebssystem brachte ein paar Hundert mit, Office ergänzte seine eigenen, Adobe fügte mit jeder App weitere hinzu, und die auffällige Schrift für ein Projekt von 2021 ist immer noch da. Jede Website kann das Ergebnis in wenigen Hundert Millisekunden auslesen, ohne Berechtigungsdialog. Je länger die Liste geworden ist, desto unwahrscheinlicher ist es, dass jemand anderes genau dieselbe hat.

Browser haben Websites nie einfach die komplette Schriftartenliste ausgehändigt, gerade weil sie so verräterisch ist. Das hat jedoch nicht geholfen. Ein Script kann Schriftarten messen, statt nach ihnen zu fragen: Eine unsichtbare Textzeile und zwei Breitenmessungen reichen. Das Widget auf dieser Seite prüft so 175 mögliche Schriftarten und zeigt, was dein Browser preisgibt und wie häufig deine Zusammenstellung unter allen bisherigen Scans ist.

Die Kurzfassung: Websites dürfen deine Schriftartenliste nicht einfach anfordern, also messen sie sie: einen unsichtbaren Testtext darstellen, eine mögliche Schrift einsetzen und prüfen, ob sich die Breite ändert. Nach einigen Hundert Wiederholungen entsteht eine Liste, die dich über gelöschte Cookies, Inkognitofenster und VPN-Wechsel hinweg wiedererkennbar macht. Den Trick nur teilweise zu blockieren, liefert dem Script oft bloß einen selteneren Fingerprint.

Wie Schriftarten-Fingerprinting funktioniert: der Messtrick

Das ganze Verfahren ist einfach. Das Script erzeugt ein unsichtbares <span> mit der sinnlosen Zeichenfolge mmmmmmmmmmlli in 72 Pixeln und misst ihre Breite in einer allgemeinen Schriftfamilie wie monospace. Dann setzt es die Familie auf "Segoe UI", monospace und misst erneut. Ist Segoe UI installiert, verwendet der Browser sie und die Breite ändert sich. Fehlt sie, greift die Ersatzschrift und der Wert bleibt gleich. Eine mögliche Schriftart, zwei Breitenmessungen, keine besondere API.

Auch die Zeichenfolge ist nicht zufällig: m und l gehören in den meisten Schriften zu den breitesten und schmalsten Kleinbuchstaben. Ein Schriftwechsel verändert die Gesamtbreite so besonders deutlich. Beobachte es auf deinem eigenen Gerät:

Der Breitentest, live in deinem Browser
font-family: monospace …
mmmmmmmmmmlli
font-family: "Segoe UI", monospace …
mmmmmmmmmmlli
Messung läuft …
Die beiden Breiten werden in deinem Browser ausgelesen.
Zwei Breitenmessungen beantworten für eine Schrift die Frage „Ist sie installiert?“. Das Widget auf dieser Seite wiederholt den Test 175-mal, genau wie ein Tracking-Script. Gemessen wird bei 72 px, derselben Größe, mit der echte Scripts Unterschiede verstärken.

Es gibt elegantere Wege zur gleichen Antwort. document.fonts.check() liefert sie mit einem Aufruf als Wahrheitswert zurück, allerdings nur in Chromium-Browsern dank einer Abweichung von der Spezifikation. Firefox und Safari antworten für jeden angegebenen Font mit wahr. Textmessung auf einem Canvas kommt ganz ohne Änderungen am DOM aus. Eine einzige ausdrücklich erlaubnisbasierte API gibt es ebenfalls: queryLocalFonts() liefert echte Schriftnamen und sogar Schriftdateien, nachdem der Nutzer einen Berechtigungsdialog bestätigt hat. Ein Tracker zeigt dir diesen Dialog nicht.

Diese Verfahren heißen zusammen Font-Enumeration. Nicht nur Tracker nutzen sie. Systeme zur Betrugs- und Bot-Erkennung führen denselben Test aus, um Geräteangaben zu prüfen. Deshalb begegnet dir das Ergebnis auch an Stellen, die reine Werbetracker nicht erreichen: beim Bezahlen, bei der Risikobewertung von Anmeldungen und bei Kontoüberprüfungen.

Was deine installierten Schriftarten verraten

Wertvoll ist nicht die Länge der Liste, sondern die Aussage jedes Eintrags. Schriftarten gelangen als Nebeneffekt anderer Installationen auf deinen Rechner. Segoe UI deutet auf Windows, Helvetica Neue auf Apple und DejaVu Sans auf Linux. Bahnschrift grenzt Windows auf Version 10 oder neuer ein, Segoe UI Variable deutet auf Windows 11. Minion Pro oder Myriad Pro verraten, dass Adobe-Software auf dem Rechner war. Eine für Chinesisch eingerichtete Windows-Installation bringt Schriften mit, die eine US-Installation nicht benötigt. Deine Fonts dokumentieren, was du verwendest und ungefähr wann du es eingerichtet hast:

Was deine Schriftartenliste verrät
Betriebssystem
Segoe UI wird mit Windows geliefert
…
Helvetica Neue wird mit macOS und iOS geliefert
…
DejaVu Sans wird mit Linux-Desktops geliefert
…
Betriebssystemgeneration
Bahnschrift seit Windows 10 enthalten, zuvor nicht vorhanden
…
Segoe UI Variable seit Windows 11 enthalten
…
Installierte Software
Minion Pro wird von Adobe-Anwendungen installiert
…
Myriad Pro wird von Adobe-Anwendungen installiert
…
Gerade live in deinem Browser geprüft, mit demselben Breitenmesstrick wie bei einem Tracker. Die hervorgehobenen Zeilen skizzieren deinen Rechner: Betriebssystem, ungefähres Alter und einen Teil deiner installierten Software. Dafür war kein Berechtigungsdialog nötig.

Das ist dieselbe Art von Datenleck wie in Ein Browser, fünf Betriebssystemangaben: Die gemeldeten Bezeichnungen lassen sich ändern, aber der Rechner dahinter verhält sich weiter wie zuvor. Ein gefälschter macOS-User-Agent zusammen mit einer Liste voller Segoe und Calibri ist ein Widerspruch, den jedes Script in Millisekunden erkennt.

In der Panopticlick-Studie der EFF enthielt die damals über Flash und Java erfasste Schriftartenliste 13,9 Bit identifizierende Information. Nur die Plugin-Liste lieferte unter den gemessenen Browsermerkmalen mehr. Browser haben Plugins inzwischen stark eingeschränkt: navigator.plugins liefert überall dieselbe kurze Liste von PDF-Betrachtern oder gar nichts. Schriftarten lassen sich dagegen weiterhin so gut messen wie 2010. Die Liste verrät sich sogar doppelt: direkt als Liste und über Canvas-Fingerprinting, bei dem die verfügbaren Fonts die exakten gezeichneten Pixel mitbestimmen.

Und die Liste bleibt beständig. Sie ändert sich weder beim Löschen von Cookies noch im Inkognitofenster und interessiert sich nicht für dein VPN. Änderungen entstehen beim Installieren oder Entfernen von Software, für die meisten Menschen nur einige Male im Jahr. Für eine Tracking-Kennung ist das eine lange Lebensdauer.

Lässt sich Schriftarten-Fingerprinting verhindern? Die Blockierfalle

Erweiterungen versprechen, Messungen zu unterbinden, indem sie Tests blockieren oder Rauschen einspeisen. Das Problem ist dasselbe wie bei vielen halben Spoofing-Lösungen auf dieser Website: Der Schutz ist seltener als das Merkmal, das er versteckt.

Ein Desktop-Chrome unter Windows, der nur eine Handvoll websicherer Schriften meldet, ist nicht anonym, sondern ungewöhnlich. Genau davon lebt Fingerprinting. Zufallslisten sind noch problematischer: Eine echte Liste bleibt monatelang stabil. Ändert sie sich zwischen Besuchen, gehörst du erkennbar zu den wenigen Nutzern dieser Erweiterung. Erweiterungen, die Messwerte fälschen, überschreiben außerdem die Funktionen, mit denen eine Seite misst. Das erzeugt ein zweites Problem: Eine überschriebene Standardfunktion meldet bei der Untersuchung nicht mehr [native code]. Dasselbe Erkennungszeichen verrät Stealth-Plugins.

Browser, die ernsthaft dagegen vorgehen, stimmen den gesamten Schutz darauf ab. Tor Browser liefert eigene Schriften mit und beschränkt Websites auf diese feste Liste, sodass alle Tor-Nutzer ungefähr dieselbe kleine Auswahl zeigen. Das funktioniert und verrät zugleich, dass du Tor nutzt. Brave verwendet stattdessen Farbling: Pro Website und Sitzung zeigt es die Betriebssystemschriften und eine zufällige Auswahl deiner zusätzlich installierten Fonts. Die heute gesammelte Liste unterscheidet sich damit unauffällig von der morgigen, ohne unmöglich zu wirken. Beide Ansätze funktionieren, weil der ganze Browser darauf ausgelegt ist und kein einzelner Patch gegen ihn arbeitet.

Was du konkret tun kannst

  1. Sieh dir zuerst deine eigene Liste an. Das Widget auf dieser Seite hat deinen Browser bereits vermessen. Klappe die Schriftartenliste auf und prüfe, was jede Website sehen kann und wie häufig genau deine Auswahl unter allen Scans ist. Eine einzigartige Zusammenstellung solltest du kennen, bevor sie relevant wird.
  2. Flicke nicht nur einzelne Stellen. Eine Font-Blockiererweiterung in einem sonst normalen Browser macht dich seltener, nicht sicherer. Für Schutz beim täglichen Surfen verwende einen darauf ausgelegten Browser wie Brave oder Tor und wäge deren Kompromisse bewusst ab.
  3. Bei mehreren Identitäten gehört die Schriftartenliste zur Identität. Jedes Profil braucht Fonts, die Sitzung für Sitzung zum behaupteten Betriebssystem passen. Incogniton gibt jedem Profil eine eigene, dauerhaft stabile Schriftartenliste. So gehört die ausgelesene Geschichte zum Profil und nicht zu deinem Rechner.

Deine Schriftarten beantworten Fragen über dich, seit du diesen Rechner hast. Das Widget oben zeigt ihre Antworten. Der vollständige Browser-Scan zeigt, was dein Browser sonst noch hinzufügt.

Incogniton-Logo

Bring deine Privatsphäre aufs nächste Level

Pfeil