Privacy Extensions (IPv6)
Privacy Extensions ist eine Erweiterung (RFC 4941) für die Stateless Address Autoconfiguration (SLAAC) von IPv6, um IPv6-Adressen zu bilden, die keinen Rückschluss auf den Nutzer zulassen. Privacy Extensions ist ein Verfahren, um den Hostanteil der IPv6-Adressen zu anonymisieren.
Hinweis: Privacy Extensions war in vielen Betriebssystemen lange nicht aktiviert. Inzwischen haben sich die Privacy Extensions als Standardeinstellung in "fast" allen Betriebssystemen etabliert.
Warum Privacy Extensions?
In der ursprünglichen Fassung von SLAAC erzeugt der IPv6-Host seine IPv6-Adresse aus einem Präfix und seinem eigenen Interface Identifier, der seine MAC-Adresse (Hardware-Adresse des Netzwerkadapters) enthält. In der Mitte der Hardware-Adresse werden zwei feste Bytes (ff:fe) eingefügt. Das siebte Bit im ersten Byte der MAC-Adresse wird umgekehrt.
- 00:0C:F1:8E:C1:D8 (MAC-Adresse)
- 020c:f1ff:fe8e:c1d8 (Interface Identifier einer IPv6-Adressen, hintere 64 Bit)
Eine gewisse Ähnlichkeit ist nicht zu leugnen. Das bedeutet, am Interface Identifier kann man einen bestimmten Host erkennen, weil der sich wegen der festen MAC-Adresse nie ändert. Auch wenn man das Netz wechselt oder sich der Präfix aus einem anderen Grund ändert. Der Interface Identifier bleibt immer gleich. Und bei IPv6 gibt es kein NAT hinter dem man sich wie bei IPv4 verstecken kann.
Ein Traum für Werbeleute, Geheimdienste und Ermittlungsbehörden. Jeder Internet-Nutzer wäre anhand seiner IPv6-Adresse identifizierbar, solange er das Gerät nicht mit anderen teilt. Außerdem kann man aus dem Interface Identifier auch den Hersteller oder das Gerät ablesen. Daraus können Werbefachleute durchaus ablesen, um welche Klientel es sich handelt. Deswegen gab und gibt es Bedenken bezüglich des Datenschutzes und der Privatsphäre bei der Nutzung von IPv6-Adressen.
Abhilfe schafft Privacy Extensions. Dahinter verbirgt sich ein Mechanismus, damit man Personen nicht am Interface Identifier wiedererkennen kann. Die Lösung liegt darin, diesen regelmäßig zu wechseln. Mit Privacy Extensions wird es dem Endgerät bzw. Anwender überlassen, ob es sich seine globale IPv6-Adresse mit oder ohne Privacy Extensions generiert.
Wie funktioniert Privacy Extensions?
Weil globale IPv6-Adressen durch den Interface Identifier nachverfolgbar sind wurden die Privacy Extensions entwickelt. Privacy Extensions heben die Kopplung von Interface Identifier und MAC-Adresse auf und erzeugen mehr oder weniger zufällige Interface Identifier. Privacy Extensions geht sogar noch einen Schritt weiter und erzeugt periodisch neue Adressen mit verändertem Interface Identifier. Anschließend werden mit diesen wechselnden Adressen ausgehende Verbindungen hergestellt. Auf diese Weise wird auf IP-Ebene die Erstellung von Bewegungsprofilen verhindert. Damit wird die Anonymität, wie bei IPv4 durch NAT, teilweise wieder hergestellt. Sofern Privacy Extensions aktiviert ist passiert das automatisch und regelmäßig. Darum kümmert sich das Betriebssystem.
Oft findet man den Hinweis, dass der Interface Identifier bei Privacy Extensions zufällig erzeugt wird. Das ist allerdings nicht richtig. Die Vorgehensweise ist wie folgt. Zum aktuellen NTP-Zeitstempel mit 64 Bit kommt die MAC-Adresse hinzu und dann macht man daraus einen SHA1-Hash mit einer Länge von 64 Bit. Fertig ist der "zufällig" Interface Identifier. Zusammen mit dem globalen Präfix wird daraus eine globale temporäre IPv6-Adresse.
Eine temporäre IPv6-Adresse bleibt solange bestehen, wie sie benutzt wird. Wenn eine neue erzeugt wird, wird die alte als "deprecated" gekennzeichnet. Die neue Adresse wird dann für alle neuen ausgehenden Verbindungen benutzt. Und die alte nur noch so lange, wie sie von eingehenden Verbindungen benutzt wird (temporary deprecated). In der Regel verfallen alle temporären Adressen automatisch beim Ausschalten eines Clients. Wird ein Client nie ausgeschaltet, beispielsweise ein Smartphone oder Tablet, dann wird eine "deprecated" IPv6-Adresse unter Umständen erst nach mehreren Tagen endgültig gelöscht.
Eine Identifikation eines IPv6-Nutzers kann nur noch über den Präfix erfolgen, aber der kann sich natürlich auch ändern, wenn zum Beispiel der Provider diesen regelmäßig wechselt. Man kann höchstens das Netz identifizieren, aber nicht mehr eine einzelne Person oder ein einzelnes Gerät.
Privacy Extensions in Servern und Routern
Privacy Extensions haben sich als Standardeinstellung bei allen Betriebssystemen etabliert. Aber, es gibt Situationen, in denen sie besser abgeschaltet werden. Denn die Adressverschleierung erschwert das System- und Netzmanagement. Beispielsweise bei zentralen Servern und Routern. Hier sind wechselnde IPv6-Adressen nicht gewünscht.
Datenschutz und Privatsphäre mit Privacy Extensions ist nur die halbe Wahrheit
Dass Privacy Extensions die Privatsphäre schützen ist leider nur die halbe Wahrheit. Zwar wechselt Privacy Extensions ständig den Hostanteil einer IPv6-Adresse, doch der Präfix bleibt gleich. In kleinen privaten und lokalen Netzen, wo es viel Datenverkehr von wenigen Clients gibt, wäre ein bestimmter Client immer noch über den Präfix (vordere 64 Bit) einer IPv6-Adresse identifizierbar.
Bei privaten Internet-Zugängen ist der Internet-Provider für die Zuteilung des IPv6-Präfixes zuständig. Manche der ISPs gehen auch über die normierten Verhaltensweisen hinaus und verbessern damit den Datenschutz erheblich, in dem sie den Internet-Zugangs-Routern ihrer Kunden regelmäßig ein neues Präfix mitteilen.
Warum gibt es die globale IPv6-Adresse mit konstantem Interface Identifier, wenn es doch Privacy Extensions gibt?
Die eigentliche Frage ist, was bringt es überhaupt die MAC-Adresse in den Hostanteil zu integrieren? Mit Privacy Extensions wäre dieser Schritt doch überflüssig.
Prinzipiell macht es durchaus Sinn einen festen Interface Identifier zu haben. Damit wäre ein Host von außen mit einer festen IPv6-Adresse erreichbar, wenn diese explizit für einen Dienst benötigt wird. Beispielsweise, weil man Dienste nach außen anbieten will oder weil man Ende-zu-Ende-Dienste nutzen will, für die eine globale, aber nicht temporäre Adresse vorteilhaft wäre, wie man es sich von IPv6 verspricht. Typischerweise für VoIP, SIP und Messaging. Bei IPv4 besteht das Problem, wegen dem Adressmangel, dass durch private Adressen und der damit verbundenen NAT-Umgebung ein Host keine eigene öffentliche Adresse hat. Weil dadurch keine echten Ende-zu-Ende-Dienste genutzt werden können, müssen für viele Kommunikationsprotokolle Umgehungsmechanismen für NAT geschaffen werden. Bei IPv6 kann man darauf verzichten, aber nur deshalb, weil es globale IPv6-Adressen mit konstantem Interface Identifier gibt.
Es sollte so sein, dass nur bei abgehenden Verbindungen, zum Beispiel beim Zugriff aufs Web, die temporäre IPv6-Adresse verwendet wird. Hier will man die Identifizierung anhand der IPv6-Adresse vermeiden.
Woran liegt es wenn Privacy Extensions nicht funktioniert?
Prinzipiell ist es so, dass Privacy Extensions in der Standardeinstellung bei allen Betriebssystemen aktiviert ist. Trotzdem wird man im einen oder anderen System trotzdem eine link-lokale IPv6-Adresse mit einem EUI-64-Suffix finden. Also ohne Privacy Extensions. Die Frage ist warum?
Privacy Extensions hat nichts mit dem Local Scope bzw. link-lokalen Adressen zu tun. Privacy Extensions ist nur dann aktiv, wenn ein Host einen globalen Prefix zugewiesen bekommen hat (Global Scope). Und erst dann wird ein zufälliges Suffix gebildet. Und erst danach wird je nach Einstellung eine zusätzliche temporäre link-lokale IPv6-Adresse gebildet oder die EUI-64-Adresse ersetzt.
Für den Local Scope hat Privacy Extensions keinerlei Bedeutung. Für link-lokale Adressen
ist das auch sinnlos, weil diese Adressen nur innerhalb des selben Netzsegments gültig sind und dort die Maschine sowieso anhand ihrer MAC-Adresse identifizierbar ist. Also, ohne globalen Prefix funktioniert Privacy Extensions nicht.
Aufgaben und Übungen mit dem Raspberry Pi
Wer mit IPv6 experimentieren will, der kann das zum Beispiel auf einem Raspberry Pi tun. Dazu gibt es ein paar Aufgaben und Übungen speziell für IPv6.
- IPv6 auf dem Raspberry Pi einschalten und konfigurieren
- IPv6 Privacy Extensions im Raspberry Pi aktivieren
- Feste IPv6-Adresse für den Raspberry Pi einrichten
- IPv6-Tunnel für SixXS mit aiccu einrichten (Raspberry Pi)
- IPv6-Firewall für einen IPv6-Tunnel einrichten (Raspberry Pi)
- IPv6-Gateway einrichten (Raspberry Pi)