Tracking via SSL Session Resumption und SSL Session-ID
Beim Aufbau einer verschlüsselten HTTPS-Verbindung wird eine sogenannte Session initialisert. Diese Session kann für 48h genutzt werden. Das beschleunigt das Laden der Webseite bei erneutem Zugriff, da die Details der Verschlüsselung zwischen Browser und Webserver nicht jedes mal neu ausgehandelt werden müssen. Da diese Session eindeutig ist, kann sie für das Tracking genutzt werden. Das Verfahren ist im
RFC 5077 beschrieben.
Die SSL-Session-ID kann von nahezu allen Webserven für das Tracking der Zugriffe genutzt werden.
IBM WebSphere,
Apache und andere bieten eine API für den Zugriff auf die SSL Session-ID. Einige Webshops sind für das Tracking via SSL Session-ID vorbereitet (z.B. die
xtcModified eCommerce Shopsoftware).
Dieses Tracking-Verfahren ist so gut wie nicht nachweisbar, da es vollständig durch den Webserver realisiert wird und keine Spuren im Browser hinterlässt.
Gegen das Tracking via SSL Session Identifiers kann man sich ab
Firefox 36.0 schützen, indem man unter
"about:config" eine neue Variable vom Type
Boolean anlegt:
security.ssl.disable_session_identifiers = true
Tracking via HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS) wurde als Schutz gegen den
ssl-stripe Angriff eingeführt, den Moxie Marlinspike auf der Black Hack 2009 vorstellte. Der Angriff wurde beispielsweise 2012 von mehreren
Bad Tor Exit Nodes aktiv genutzt.
Als Schutz gegen ssl-stripe Angriffe sendet der Webserver beim Aufruf einer Webseite einen zusätzlichen HSTS-Header, um dem Browser mitzuteilen, dass diese Website für eine bestimmte Zeit immer via HTTPS aufgerufen werden soll. Das verhindert ein Downgrade auf unverschlüsselte HTTP-Verbindungen.
S. Greenhalgh hat ein Verfahren publiziert, wie man
HSTS für das Tracking von Surfern verwenden kann. Es steht eine
Testseite für HSTS Super-Cookies bereit, die dieses Verfahren demonstriert.
Ob man HSTS im Browser deaktiviert, um sich gegen ein bisher nur theoretisch relevates Trackingverfahren zu schützen, oder ob man HSTS aktiviert, um sich gegen ssl-stripe Angriffe zu schützen (Standard im Firefox), ist also eine Wahl zwischen Skylla und Charybdis.
Meine Überlegungen dazu:
- In der Regel nutzt man nur eine begrenzte Anzahl von Websites regelmäßig, bei denen sensitive Informationen durch SSL-Verschlüsselung wirklich geschützt werden müssen (E-Mail Provider, Website der Bank, Diskussionsforen, bevorzugte Suchmaschine....). Mit NoScript oder HTTSEverywhere kann man SSL-Verschlüssung für diese Websites erzwingen und ist damit auch ohne HSTS gegen ssl-stripe Angriffe geschützt.
- Unter der Adresse about:config kann man folgende Variable auf true setzen:
privacy.clearOnShutdown.siteSettings = true
Damit werden beim Schließen des Browsers alle gespeicherten HSTS-Werte gelöscht und ein langfristiges Tracking wird verhindert. Während einer Surf-Session ist der HSTS-Schutz aktiv.
- Innerhalb einer Surf-Session kann man alle Super-Cookies bei Bedarf mit der Tastenkombination STRG-SHIFT-ENTF löschen. Zum Löschen der HSTS-Werte ist unter Details die Option "Website-Einstellungen" zu aktivieren.