Anonym im Internet – Der Webbrowser

Wenn man versucht im Internet so anonym wie möglich zu sein, dann reicht es bei Weitem nicht die IP zu verbergen, FlashCookies zu blockieren oder das „Private Browsing“ (oder auch Pornomode 😉 ) im Webbrowser anzuschalten. Der Webbrowser ist die größte Datenschleuder und ermöglicht es beinahe ausnahmslos einen User über Webseiten hinweg nur anhand seines einzigartigen Fingerabdrucks zu identifizieren. Aber der Reihe nach.

Identifikation durch den Browser

Um eine Person zu identifizieren braucht man, ganz abstrakt gesprochen, Informationen über sie, die wir durch Interpretation von Daten gewinnen. Und da Daten in der Informationstechnologie als Bits mit den Werten „0“ und „1“ repräsentiert werden, macht es Sinn auch hier fortan von Bits zu sprechen. Möchte man theoretisch alle ~7,01 Milliarden Menschen der Erde eindeutig identifizieren, so bräuchte man dazu 33 Bits an Informationen. (233=8.589.934.592). Diese Informationen ließen sich bspw. aus Daten über das jeweilige Geschlecht, Alter, Name, Herkunft,…extrahieren. In unserem Fall sollen jedoch keine Menschen, sondern Browser, bzw. Computer eindeutig identifiziert werden und dann darauf folgend geschlossen werden, dass meistens die gleiche Person einen einmal identifizierten Browser verwendet. Laut offiziellen Schätzungen nutzten Ende 2011 etwa 2,1 Milliarden Menschen das Internet. Mit 31 Bits an Informationen  (231=2 147 483 648) ließe sich jeder einzelne davon eindeutig identifizieren. Aber welche Daten nehmen wir nun und wie effektiv sind diese Daten zur Identifizierung?

Mein Browser teilt einer Webseite z.B. mit in welcher Zeitzone ich mich befinde (GMT+1) oder auf welche Sprache er eingestellt ist (de_DE). Aus obigen Schätzungen geht hervor, das Ende 2011 etwa 500.723.686 Menschen in Europa das Internet nutzen, also etwa jeder Vierte. Das gibt uns ungefähr zwei Bits an Information – nicht besonders hilfreich. Nicht viel besser steht es da mit meinen Bildschirmeinstellungen (1680x1050x32), diese Settings nutzt etwa jeder 20. Internetnutzer und beschwert uns nur etwas mehr als 4 weitere Bits an Information. Deutlich mehr erzählt mein USER_AGENT:  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0, denn diese spezielle Kombination aus Betriebssystem und Browser-Version nutzen schon deutlich weniger Menschen (nur etwa jeder 13.325 Browser) und bringt deshalb deutlich mehr, nämlich etwa 13.7 Bits an Information.

Entstanden auf http://www.useragentstring.com/

Leider kann man nicht ohne weiteres einfach fortfahren, Daten zusammentragen und die gewonnenen Informationsbits addieren, bis wir den Browser eindeutig identifiziert haben. Hier macht uns die Entropie einen Strich durch die Rechnung.

Entropie ist unter anderem ein Begriff aus der Informationetheorie. Ich versuche gar nicht erst diesen Begriff bis ins kleinste zu erklären, das habe ich selbst auf der Uni nie komplett begriffen. Grob umrissen kann man jedoch sagen, dass die Entropie die Menge an Information (Informationsdichte) bestimmt, die aus bestimmten Daten gewonnen werden können. Wenn ich nun sage, dass mein Geburtstag der 17.10.1980 war, dann enthalten diese Daten vielerlei Informationen, die man interpretieren kann. Z.B. wurde ich an einem Freitag geboren, ich bin in diesem Augenblick 31 Jahre alt, mein chinesisches Tierkreiszeichen ist der Affe und an eben jenem Tag empfing Papst Johannes Paul II. im Vatikan die britische Königin Elisabeth II. Die Daten meines Geburtstags enthalten also viel Information, sie haben eine hohe Entropie oder Informationsdichte.

Teile ich nun direkt danach mit, dass mein Sternzeichen Waage ist, hat diese Aussage dann einen hohen Informationsgehalt? Nein, denn diese Information hätte ja bereits aus den vorangegangenen Daten meines Geburtstags interpretiert werden können, sie ist in diesem Fall nutzlos. Auch bei den Daten, die ein Browser verrät gibt es vielerlei Daten, die zu Informationen mit geringer Entropie werden.

Die Webseite Panopticlick hat ein Beispiel für das „Browser-Fingerprinting“ online gestellt und sich genau mit diesen Problemen befasst. Wenn man seinen Browser dort analysieren lässt wird mit allen bekannten Methoden versucht, dem Browser Daten über sich und das zu Grunde liegende System, zu entlocken. Die Menge an Informationen ist erschreckend und erstaunlich zugleich.

Gekürzte Fassung des Panopticlick Berichts

Den größten Teil der gewonnenen Information bezieht Panopticlick also aus Daten wie dem USER_AGENT, der Liste der Browser Plugins und den installierten Systemschriftarten und schafft es anhand der eigenen Datenbasis von bisher ~2 Millionen getesteten Systemen mich eindeutig zu identifizieren.

Was geschieht mit den gewonnenen Informationen?

Unabhängig von Cookies, IP oder Pornomodus könnte ein in verschiedene Webseiten eingebundenes Skript meinen Browser und damit meinen Weg im Internet dokumentieren, mir zielgerichtete Werbung ausliefern, oder einfach nur Dritten mitteilen, was ich gerade so treibe. Ich mache mir gar keine Illusionen darüber, dass Werbenetzwerke diese Technik bereits ausnutzen und bin mir auch bewusst darüber wie ich dieses Problem vollständig lösen könnte: Niemals wieder online gehen. Aber mal ehrlich, 2012 ist das nur noch schwer möglich, nicht wahr?

Mögliche Lösungsansätze gegen das Browser Fingerprinting

Sofort schweben mir zwei Lösungansätze vor, nämlich die Datenübermittlung blockieren oder in der Masse verstecken. In der Masse verstecken klingt dabei zunächst einfacher als es ist sobald man sich im Klaren darüber ist welche Daten die meisten Informationen preisgeben.

Eine der sinnvollsten Lösungen die mir spontan einfiel und die wenig Aufwand bedeutet ist das surfen über mobile Endgeräte. iOS, Android und Co. besitzen oft innerhalb eines Produktzyklus die selbe Ausstattung an System-Fonts, Plugins und USER_AGENT. Ein kurzer, nicht repräsentativer Versuch mit drei Samsung Galaxy SII und zwei Ipad 3 bewies, dass diese Annahme nicht gänzlich falsch sein kann. Keines der Geräte konnte innerhalb seiner Geräteklasse eindeutig erkannt werden.

Auf den PC ist diese Uniformität natürlich sofort dahin. Aber wie wäre es mit einem Browserpaket, welches alle Plugins und Fonts selbst mitbringt? Eine kritische Masse an Nutzern vorausgesetzt würden diese alle wie ein und derselbe Browser identifiziert werden. Leicht könnte man die technischen Grundvoraussetzungen auch mit einer frei zur Verfügung gestellten virtuellen Maschine oder bootbaren Linux-Live-CD schaffen. Aber seien wir ehrlich, wer macht sich denn die Mühe jedesmal solch eine Umgebung zu starten, nur um mal schnell etwas zu googeln? Und wie lange würde es dauern, bis genügend Leute diese Lösung nutzen?

Also doch lieber blockieren? Auch das blockieren der zur Identifizierung herangezogenen Daten ist ein Kampf gegen Windmühlen. Schließt man eine Tür, wird eine neue irgendwo geöffnet. Aber mit etwas Arbeit könnte man einen Browser zumindest für einen kurzen Augenblick abschotten (und später ggf. nachbessern). Dabei gilt es jedoch zu beachten, dass ein Surfen noch immer möglich sein muss, ohne dass die Sperren dem Browsingvergnügen zu stark im Wege stehen.

Als besonders guten Ansatz erachte ich das „Click to play“ Feature, welches, ursprünglich von Opera entwickelt, mittlerweile den Weg in den Chrome Browser (Einstellungen–>Erweiterte Einstellungen anzeigen–>Inhaltseinstellungen–>Plugins–>Click To Play) und auch in die ersten Nightly Builds vom Firefox 14 geschafft hat (about:config –> plugins.click_to_play). Im Gegensatz zu NoScript – das mir persönlich etwas zu restriktiv ist, da es erstmal alle Skripte einer Webseite blockiert und von mir als Nutzer eine Einschätzung erfordert, ob die angesteuerte Webseite jetzt nicht geht, weil ein Skript fehlt, oder weil sie schlecht programmiert ist – erfordert das „Click To Play“-Feature von mir nur einen Klick, um gewünschte Plugins wieder zu aktivieren.

Das Youtube Video wird erst nach einem Klick angezeigt.

Dann wäre da noch diese Social Networking und Shared Services Daten – Epidemie. Solange ich bei Twitter/Facebook/Google+ und Co. angemeldet bin und auf Webseiten ein „Share“ oder „Like“ zu sehen ist, weiß der entsprechende Dienst natürlich sofort wo ich mich befinde und wer ich bin. Da hilft nur eins: Abmelden, alle Tabs schließen, Cache und Cookies leeren. Und im Google Chrome nicht vergessen sich aus dem Konto auszuloggen, ne? Wer hat denn gesagt dass Unidentifizierbarkeit benutzerfreundlich oder „sozial“ sein muss?

Browser Fingerprinting im Firefox erschweren

Im Firefox kann man noch einen Schritt tiefer in die Materie einsteigen und bestimmte Sprachelemente der Javascript Runtime blockieren oder den HTTP Anfrageheader modifizieren. Diese Möglichkeiten schreibe ich nur der Vollständigkeit halber auf. Auf die daraus resultierenden Nachteile gehe ich anschließend ein.

Mittels einer user.js Datei, die man im Profilordner ablegt (z.B. unter "C:\Benutzer\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\<profilordner>\user.js"), kann bspw. der Zugriff auf das Plugins Objekt, die erlaubten MimeTypes, o.a. verboten werden. Das ganze nennt sich CAPS (Configurable Security Policies) und kann hier nachgelesen werden.

Dann gäbe es da noch die Möglichkeit den HTTP Header zu modifizieren und bestimmte Elemente herauszufiltern. Mit der Erweiterung Modify Headers ist das z.B. relativ simpel. Anhand regulärer Ausdrücke werden bestimmte Elemente des Headers verändert, hinzugefügt oder gelöscht. Eine Liste der Header Elemente findet sich z.B. hier.

Fazit:

Diese Änderungen wirkten bei einem Skript wie Panopticlick Wunder, es werden fast keinerlei Daten mehr übertragen, so dass auch kaum noch Informationen gewonnen werden können. Aber zu welchem Preis? Natürlich führt eine Webseite nicht stets Böses im Schilde, wenn die Browserversion oder ein Plugin abgefragt wird. Meistens wird dies schlicht und einfach benötigt, damit die Seite auf all den vielen Geräten da draussen korrekt angezeigt werden kann. Verwehre ich den Zugriff auf Daten durch eine oder mehrere der oben genannten Methoden, so muss ich stets damit rechnen, dass anderswo eine gutmütige Webseite nicht mehr korrekt angezeigt werden kann.

Um in der Masse schwerer identifizierbar (aber nicht unentdeckbar) zu bleiben, verwende ich nur final Versionen der Browser, habe stets Adblock und Ghostery installiert, um den Großteil dieser Schnüffler von mir fern zu halten und habe (so denn verfügbar) das Click To Play – Feature aktiviert. Bisher habe ich kaum eine Webseite gefunden, deren Funktionalität ich dadurch zerstört hätte. Unidentifizierbar werde ich dadurch jedoch nicht und muss abschließend feststellen: Das Internet zu genießen UND unsichtbar zu sein ist eine Illusion die ich nur erzeugen kann, wenn ich Offline bleibe.

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte Dich auch interessieren...

2 Antworten

  1. 10. Juni 2012

    […] aber tun, wenn das Programm diese Option nicht anbietet, oder sie absolut nutzlos ist (wie z.B. bei Webbrowsern)? Dann nutzt man ein Tool wie z.B. Proxifier. Dieses schaltet sich tief zwischen Netzwerkstack, […]

  2. 29. Juni 2012

    […] ich mal den Chrome Browser gegen das Panopticlick Skript, um zu sehen, was er denn von sich aus offenbahrt. Dabei kam mir User Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 […]

Schreibe einen Kommentar

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