PowerScan
DE

Canvas-Fingerprinting erklärt: Warum zwei identische Browser unterschiedliche Pixel zeichnen

Browser-Fingerprints · 6 Min. Lesezeit · von PowerScan

Foto: Unsplash

Canvas-Fingerprinting ist die Technik, von der die meisten schon gehört haben und die die wenigsten erklären können. Die Idee ist einfach: den Browser etwas zeichnen lassen, die Pixel zurücklesen und einen Hash bilden. Interessant ist, warum die Pixel sich zwischen Rechnern überhaupt unterscheiden.

Die Zeichnung

Ein Fingerprinting-Skript erstellt ein Offscreen-<canvas>, holt einen 2D-Kontext und zeichnet eine kurze Abfolge: ein gefülltes Rechteck, etwas Text in einer benannten Schrift, vielleicht einen Verlauf, eine Kurve, ein Emoji. Dann ruft es toDataURL() oder getImageData() auf, um das Ergebnis zu lesen, und schickt die Bytes durch eine Hash-Funktion. Die Ausgabe ist eine kurze Zeichenkette wie 71ae464e. Diese Zeichenkette ist der „Canvas-Hash“.

An der Zeichnung ist nichts geheim, und es wird nichts an die GPU geschickt, was die Seite nicht ohnehin beschreiben könnte. Die Information steckt im Rendering, nicht in den Anweisungen.

Warum die Pixel sich unterscheiden

Text ist die Hauptquelle der Abweichungen. Das Rendern eines Glyphen hängt ab von der tatsächlich gewählten Schriftdatei (Fallbacks unterscheiden sich je nach Betriebssystem), von der Hinting- und Anti-Aliasing-Strategie (Graustufen oder Subpixel, und in welcher Subpixel-Reihenfolge), vom Rasterizer (FreeType, DirectWrite, CoreText oder ein eigener des Browsers) und davon, ob GPU oder CPU das Compositing erledigt hat. Jedes davon erzeugt leicht abweichende Randpixel. Ein einziger hellgrauer Pixel am Rand eines „e“ genügt, um den Hash komplett zu ändern.

Verläufe und Kurven kommen hinzu: Unterschiedliche Grafiktreiber und Anti-Aliasing-Pfade runden Zwischenwerte unterschiedlich. Das Ergebnis: Zwei Rechner mit derselben Browserversion, aber unterschiedlicher GPU, unterschiedlichen Treibern oder Betriebssystemen erzeugen meist unterschiedliche Hashes, während derselbe Rechner jedes Mal denselben Hash erzeugt. Stabil und vielfältig, genau das, was ein Tracker will.

Was ein Hash einer Website verrät

Für sich allein nichts darüber, wer Sie sind. Er sagt der Website, dass dieser Browser diese Zeichnung auf diese Weise rendert, was auf eine gewisse Gruppe von Rechnern zutrifft. Auf die Größe dieser Gruppe kommt es an. Ein gängiger Laptop mit integrierter Grafik und Standardschriften teilt seinen Hash mit vielen anderen. Ein ungewöhnliches Setup kann nahezu einzigartig sein. In Kombination mit Bildschirmgröße, Sprachliste und Renderer-String wird selbst ein häufiger Hash Teil einer seltenen Kombination.

Was Browser dagegen tun

Firefox gibt mit aktiviertem Resist-Fingerprinting ein leeres oder zufälliges Canvas zurück und kann beim Canvas-Zugriff nachfragen. Brave fügt Canvas-Lesevorgängen kleine zufällige Störungen hinzu, sodass sich der Hash zwischen Websites und Sitzungen ändert. Safari begrenzt, welche Schriften sichtbar sind, und schränkt manche Rücklesevorgänge ein. Chromium selbst randomisiert Canvas nicht; darauf aufbauende Browser, die Fingerprints kontrollieren wollen, tun dies mit eigenen Patches, und deren Qualität schwankt.

Rauschen ist nicht umsonst. Ein Canvas-Hash, der sich bei jedem Besuch ändert, ist selbst ein Signal, denn echte Browser tun das nicht. Die bessere Strategie für ein isoliertes Browserprofil ist ein Hash, der plausibel und konsistent ist, damit er wie eine gewöhnliche Maschine wirkt und nicht wie jede Stunde eine andere.

Was eine Diagnose zeigt

PowerScan zeichnet ein eigenes kleines Bild und zeigt Ihnen den Hash. Er wird nie hochgeladen; der Wert existiert nur in Ihrem Tab. Laden Sie neu, und der Hash sollte identisch sein. Wenn nicht, injiziert etwas im Browser Rauschen, und das ist gut zu wissen, bevor Sie sich auf dieses Profil verlassen.

Alle Artikel · Scan starten