Mal wieder: Piwik und anonymisierte IPs
von André BräklingMittlerweile hat sich ja in Deutschland herumgesprochen, dass hierzulande die Speicherung von IP-Adressen und deren Weiterverarbeitung durchaus problematisch sein könnte. Besonders kritisch ist die Übermittlung der Nutzerdaten an Dritte… vor allem, wenn diese Dritten im außereuropäischen Ausland sitzen. Als Alternative zum beliebten Google Analytics habe ich hier deshalb vor einiger Zeit die Open-Source-Lösung Piwik empfohlen. Da diese aber auch die IP speichert, habe ich zusätzlich einen Hack, der genau das verhindert, vorgestellt. Mittlerweile habe ich ein paar neue Erkenntnisse sammeln können, die ich euch natürlich nicht vorenthalten möchte.
In den Kommentaren zum Piwik-Hack hat Martin Gamnitzer zurecht darauf hingewiesen, dass diese frühe Anonymisierung der IP diverse Weiterverarbeitungen (z.B. durch das GeoIP-Plugin) verhindert. In seinem Blog stellt er deswegen einen alternativen Weg zur Entfernung der IP vor. Er löscht sie erst, bevor sie in die Datenbank geschrieben wird, und kann sie so zunächst für alle nötigen Bearbeitungsschritte verwenden. Um die Bastelei im Code zu verhindern, hat er auch ein passendes Plugin erstellt. Wer die IP also erstmal benötigt, der sollte sich dort unbedingt umsehen.
Aber vorsicht: Solltet ihr z.B. für die lokale Zuordnung der IP auf externe Dienste zurückgreifen, dann wäre dies aufgrund der Weitergabe an Dritte wieder höchst problematisch.
Vielleicht gibt es aber auch da eine Lösung. Kürzlich bin ich im law blog auf die Folien eines sehr interessanten Vortrags mit dem Titel “Allzu sorglose Weitergabe von IP-Adressen?” von Joerg Heidrich (Heise Zeitschriften Verlag) und Dr. Christoph Wegener (Horst Görtz Institut für IT-Sicherheit) auf dem 17. DFN Workshop (letzter Eintrag) gestoßen.
Interessant sind dabei die Informationen auf Folie 21:
Durch “Nullen” des/der letzten Oktetts einer IP-Adresse werden
die IP-Adressen entsprechend anonymisiert
Als Vorteile dieser Vorgehensweise nennen die Autoren folgendes:
- Bei ausreichender Nullung Keinerlei Personenbezug mehr herstellbar
- Beim Geo-IP-Verfahren bringt die Nullung des letzten Oktetts keine wesentlichen Nachteile (vgl. Kühn, DuD 2009, 747ff)
Nun bleibt natürlich die Frage, was man als “ausreichende Nullung” versteht. Spätestens seit Panopticlick (Erläterung bei BasicThinking) wissen wir, dass ein Benutzer auch ohne IP nachverfolgt werden kann. Ohne rechtliche Absicherung, d.h. ohne eine klare Rechtssprechung, kann ich hier (insbesondere als juristischer Laie) nur Vermutungen anstellen.
Für eine dauerhafte Speicherung ist die Löschung des letzten Oktetts sicherlich zu wenig. Wir reden hier von 28 = 256 möglichen Variationen… zumindest kleine Webseiten können auf dieser Basis einen User sicherlich gut identifizieren, größere müssten eben den Fingerprint zu Hilfe nehmen. Natürlich ist bei so einer Verfremdung die Rückverfolgung der IP auf den Anschlussinhaber theoretisch fast unmöglich, aber das ist für den normalen Webmaster auch die Rückverfolgung der kompletten IP. Dummerweise reicht diese “theoretische Unmöglichkeit” aber anscheinend nicht aus, zumal ein Tracking und die Kombination z.B. mit Kommentaren unter Zuhilfenahme des “Browser-Fingerabdrucks” tatsächlich möglich wäre.
Würden wir die letzten beiden Oktette nullen, dann würde sich die Wahrscheinlichkeit der Wiedererkennung deutlich verändern: 216 = 65536 Möglichkeiten. Mit dem Browser-Fingerprint immer noch nachvollziehbar, aber das wäre (zumindest bei recht geringer Besucherzahl) wohl auch ein Großteil der Besucher bei komplett genullter IP.
Mein Gedanke wäre es nun, die IP in zwei Schritten zu anonymisieren:
- Zum frühen Zeitpunkt meiner bisherigen Piwik-IP-Nullung (IP = 0.0.0.0) wird nur das letzte Oktett auf 0 gesetzt (also die letzte Position der IP). Dadurch kann die IP laut des obigen Zitates noch für GeoIP verwendet werden. Nutze ich für die Lokalisierung einen Dienst, so erhält dieser nur die verfremdete IP… also nicht den “Browser-Fingerprint” des Nutzers. Anonymität wäre also weitgehend gegeben.
- Zur Speicherung der IP anonymisiere ich nun auch das vorletzte Oktett. Somit verringere ich die Möglichkeit der theoretischen Zuordnung des Besuchers massiv, aber gleichzeitig verringere ich auch die Anzahl der fehlerhaft als “Unique” erkannten Besucher im Vergleich zum vollständigen “Nullen”.
Wer bis hierhin gelesen hat, der möchte sicher auch wissen, wie dies möglich ist. Beginnen wir bei der Nullung des letzten Oktetts:
- Öffne im Piwik-Verzeichnis die Datei
1/core/Tracker/Visit.php
- Suche dort nach
'location_ip' => $userInfo['location_ip'],
- Ersetze diese Zeile durch
'location_ip' => ip2long(preg_replace('/(\d+)\.(\d+)\.(\d+)\.(\d+)/i', '$1.$2.$3.0', $userInfo['location_ip'])),
Nun müssen wir natürlich auch Martins Code anpassen:
- Öffne im Piwik-Verzeichnis die Datei
1/core/Tracker/Visit.php
- Dort suchst Du nach
Piwik_Tracker::getDatabase()->query( "INSERT INTO [...] ");
- Direkt vor dieser Zeile baust Du folgenden Code ein:
$ipHelper = $this->visitorInfo['location_ip']; $this->visitorInfo['location_ip'] = ip2long(preg_replace('/(\d+)\.(\d+)\.(\d+)\.0/i', '$1.$2.0.0', long2ip($ipHelper))); - Und direkt danach wieder diesen Code:
$this->visitorInfo['location_ip'] = $ipHelper;
Damit haben wir folgendes erreicht:
- Piwik arbeitet intern mit einer IP, die im letzten Oktett genullt ist.
- Piwik speichert eine IP, die in den letzten beiden Oktetts genullt ist.
Ist das rechtlich ausreichend? Ehrlich gesagt habe ich keine Ahnung. Nach den oben zitierten Folien könnte es wohl passen, aber bis wir eine eindeutige Rechtssprechung haben, ist wohl nichts wirklich sicher.
Jedenfalls spiele ich den Ball jetzt an Martin zurück... in der Hoffnung, dass er die Zeit und Lust hat, dies in ein Plugin zu packen. Mir fehlt gerade leider beides