<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wikimirror.piraten.tools/wiki/index.php?action=history&amp;feed=atom&amp;title=SN%3AAktionen%2FIdeen%2FAnonIPLog</id>
	<title>SN:Aktionen/Ideen/AnonIPLog - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wikimirror.piraten.tools/wiki/index.php?action=history&amp;feed=atom&amp;title=SN%3AAktionen%2FIdeen%2FAnonIPLog"/>
	<link rel="alternate" type="text/html" href="https://wikimirror.piraten.tools/wiki/index.php?title=SN:Aktionen/Ideen/AnonIPLog&amp;action=history"/>
	<updated>2026-06-01T01:31:42Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Piratenwiki Mirror</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wikimirror.piraten.tools/wiki/index.php?title=SN:Aktionen/Ideen/AnonIPLog&amp;diff=55641611&amp;oldid=prev</id>
		<title>imported&gt;Nobodystranger: hat „Sachsen/Piratenideen/AnonIPLog“ nach „SN:Aktionen/Ideen/AnonIPLog“ verschoben</title>
		<link rel="alternate" type="text/html" href="https://wikimirror.piraten.tools/wiki/index.php?title=SN:Aktionen/Ideen/AnonIPLog&amp;diff=55641611&amp;oldid=prev"/>
		<updated>2009-12-12T09:50:54Z</updated>

		<summary type="html">&lt;p&gt;hat „&lt;a href=&quot;/Sachsen/Piratenideen/AnonIPLog&quot; class=&quot;mw-redirect&quot; title=&quot;Sachsen/Piratenideen/AnonIPLog&quot;&gt;Sachsen/Piratenideen/AnonIPLog&lt;/a&gt;“ nach „&lt;a href=&quot;/SN:Aktionen/Ideen/AnonIPLog&quot; title=&quot;SN:Aktionen/Ideen/AnonIPLog&quot;&gt;SN:Aktionen/Ideen/AnonIPLog&lt;/a&gt;“ verschoben&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Problemstellung==&lt;br /&gt;
Üblicherweise legen Webserver bei jeder Anfrage nach einer von ihnen bereitgehaltenen Seite einen Eintrag im Logfile an, der u.a. die IP-Adresse des Anfragenden enthält. Obwohl in der Rechtssprechung noch umstritten, können diese als personenbeziehbare und damit besonders schützenswerte Daten gesehen werden. Eine Nichterhebung wäre also geboten.&lt;br /&gt;
&lt;br /&gt;
Dem entgegen steht aber das Bedürfnis der Betreiber durch statistische Erhebungen bzgl. der Nutzung ihre Seiten zu verbessern, sowie massenhaft auftretende Zugriffe durch einzelne Nutzer (DoS) zu erkennen.&lt;br /&gt;
&lt;br /&gt;
Als guter Kompromiß erscheint eine Anonymisierung der aufgezeichneten IP-Adressen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Lösungsansätze==&lt;br /&gt;
===Maskierung===&lt;br /&gt;
&lt;br /&gt;
Ausnullen von Adreßbits - siehe [http://www.saechsdsb.de/ipmask] - gleichwertig ist das Weglassen dieser Bits&lt;br /&gt;
&lt;br /&gt;
Je mehr Bits ausgenullt werden, desto wahrscheinlicher ist es, daß zwei IP-Adressen aufeinander fallen. Dies erschwert die statistische Auswertung bzw. macht sie unmöglich.&lt;br /&gt;
&lt;br /&gt;
:+: einfach&lt;br /&gt;
:-: Behinderung der statist. Auswertung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hashing===&lt;br /&gt;
&lt;br /&gt;
Auf die IP-Adresse wird eine Hash-Funktion (z.B. MD5, SHA-1) angewendet, um sie zu verschleiern.&lt;br /&gt;
&lt;br /&gt;
Da lediglich etwa 4 Mrd. IP-Adressen existieren und moderne Rechner sehr leistungsfähig geworden sind ([http://www.pc-hilfen.net/uploads-f49/nvidia-cuda-programme-tools-t45.html GPUs errechnen ca. 300 Mio. MD5-Hashes pro Sekunde]), ist in diesem Fall die Erstellung einer vollständigen Abbildungstabelle &amp;quot;IP-Adresse =&amp;gt; Hash&amp;quot; in kürzester Zeit möglich.&lt;br /&gt;
&lt;br /&gt;
:+: Standardimplementierung für Hashes verfügbar&lt;br /&gt;
:-: geringer Aufwand zur Deanonymsierung&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hashing mit Salt===&lt;br /&gt;
&lt;br /&gt;
Durch Hinzunehmen (z.B. Anhängen oder Einmischen) einer zufälligen Komponente vor dem Hashen ([http://de.wikipedia.org/wiki/Salt_(Kryptologie) Salt]) löst sich das Problem des möglichen Brute-Force-Angriffs. Der verwendete zufällige Teil sollte keinesfalls abgespeichert werden und ist regelmäßig (täglich?) zu ändern. Eine zu häufige Änderung würde allerdings wieder zu Problemen in der Auswertung führen - Daten, die während des Wechsels erhoben wurden, werden fehlerhaft/unvollständig ausgewertet.&lt;br /&gt;
&lt;br /&gt;
:+: Standardimplementierung für Hashes verfügbar&lt;br /&gt;
&lt;br /&gt;
:+: Einfache Klasse in Ruby verfügbar. [http://github.com/haibaer76/anoniplog Sourcecode auf github]. Hängt Zufallsstring (Salt) an übergebene IP und berechnet anschließend SHA1-Summe. Salt ändert sich nach vorgegebenem Timeout&lt;br /&gt;
&lt;br /&gt;
===XOR-Maskierung===&lt;br /&gt;
&lt;br /&gt;
Webserver sind ggf. stark ausgelastet. Der zusätzliche Berechnungsaufwand zur IP-Anonymisierung im Logfile mittels Hash-Funtionen ist daher nicht wünschenswert. Eine weitere Möglichekit wäre die nötige zufällige, später zu verwerfende Komponente stattdessen ähnlich einem [http://de.wikipedia.org/wiki/One_Time_Pad OTP] zu nutzen. Das heißt jede gelogte IP-Adresse wird mit den gewählten Zufallsbit XOR-verknüpft und so unkenntlich gemacht. Die Zufallsbits werden nach einem festen Zeitintervall erneuert.&lt;br /&gt;
&lt;br /&gt;
Der &amp;quot;Berechnungsaufwand&amp;quot; (einfache XOR-Verknüpfung) ist hier deutlich geringer, die erzielte Sicherheit sollte ausreichend sein. Durch gezielte &amp;quot;Angriffe&amp;quot; (Zugriffe zu fester Zeit über bekannte IP) läßt sich die Anonymisierung brechen. Bleibt die Frage nach dem Angreifermodell...&lt;br /&gt;
&lt;br /&gt;
:+: einfach, geringe Rechenlast&lt;br /&gt;
:-: schwächerer Schutz (ausreichend?)&lt;br /&gt;
&lt;br /&gt;
===Binary Random Permutation (BRP)===&lt;br /&gt;
&lt;br /&gt;
Für jede neu im Logfile gefundene IP wird eine neue zufällige anomyme IP gewürfelt. Zur Zuordnung bereits aufgetauchter IPs hält der Algorithmus eine Zuordnung (IP =&amp;gt; rndIP) vor.&lt;br /&gt;
&lt;br /&gt;
:+: gut dokumentiert/&amp;quot;zitierfähig&amp;quot;&lt;br /&gt;
:-: ggf. großer Speicherbedarf&lt;br /&gt;
&lt;br /&gt;
==offene Fragen==&lt;br /&gt;
&lt;br /&gt;
* Filterung in Echtzeit bei Logerstellung oder Anonymisierung vorhandener Logfiles?&lt;br /&gt;
* IPv6-Parsing&lt;br /&gt;
* Zeilenumbrüche innerhalb einer IP?&lt;br /&gt;
* nötige Qualität des Zufalls (random vs. urandom)&lt;br /&gt;
* valide IPs als Ergebnis der Anonymisierung nötig? (z.B. wegen statistischer Auswertungssoftware)&lt;br /&gt;
&lt;br /&gt;
==Material==&lt;br /&gt;
&lt;br /&gt;
===IP-Adressen===&lt;br /&gt;
*[http://www.phys.uu.nl/~wwwfi/ipv6/IPv6_ars.htm IPv6]&lt;br /&gt;
*[http://stackoverflow.com/questions/319279/how-to-validate-ip-address-in-python How to validate IP address in Python?]&lt;br /&gt;
&lt;br /&gt;
===Beispiele für Log-Einträge===&lt;br /&gt;
&lt;br /&gt;
xyz.xyz.xyz.xyz ist jeweils die zu anonymisierende Herkunfts-IP&lt;br /&gt;
&lt;br /&gt;
*Apache Access Log&lt;br /&gt;
:&amp;lt;pre&amp;gt;xyz.xyz.xyz.xyz - - [11/Oct/2009:09:42:00 +0200] &amp;quot;GET / HTTP/1.1&amp;quot; 200 1774 &amp;quot;-&amp;quot; &amp;quot;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Apache Error Log&lt;br /&gt;
:&amp;lt;pre&amp;gt;[Sun Oct 11 09:42:06 2009] [error] [client xyz.xyz.xyz.xyz] File does not exist: /var/www/munin/favicon.ico&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*E-Mail-Log&lt;br /&gt;
*...&lt;br /&gt;
&lt;br /&gt;
==Implementierungen==&lt;br /&gt;
* [http://flaim.ncsa.illinois.edu/ C++-Log-Anonymisierungs-Framework]&lt;br /&gt;
* [http://github.com/haibaer76/anoniplog Prototyp]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sachsen]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Nobodystranger</name></author>
	</entry>
</feed>