\section{Grundlagen} \textit{Location privacy} wird von Duckham und Kulik (2006) durch \begin{quote}``... a special type of information privacy which concerns the claim of individuals to determine for themselves when, how, and to what extent location information about them is communicated to others. \citep{privacy}''\end{quote} definiert. Ein Anwender sollte in der Lage sein, den Zeitpunkt, wie und in welchem Umfang Positionsdaten über ihn verbreitet werden, selbst festzulegen. Es stellt sich die Frage, wie es dem Benutzer ermöglicht wird, diese drei Punkte zu kontrollieren. Dabei soll er den Zeitpunkt frei bestimmen können, wann und auf welche Art und Weise er die Daten versendet und wieviele andere Benutzer oder Institutionen darauf Zugriff haben. Im ersten Teil wird die aktuelle Ent\-wicklung von \textit{location privacy} Software auf mobilen Geräten aufgezeigt. Anhand der Definiton von \textit{location privacy} werden ebenfalls Anforderungen, die an ein Programm dieser Art gestellt werden analysiert und mögliche Ziele einer solchen Software beschrieben. \subsection{Aktuelle Entwicklungen} Nahezu alle aktuellen Smartphones sind mit dem \textit{Global Positioning System (GPS)} ausgestattet. Aufgrund dessen, gibt es für die verschiedenen Betriebssysteme mittlerweile eine Reihe von Anwendungen, die Funktionalitäten rund um die eigene Position bieten. So gibt es Software um sich Routen erstellen zu lassen, die eigene Position zu bestimmen oder um \textit{Geocaching} \citep{geocaching} zu betreiben.\newline Zum Beispiel bietet \textit{Google} den Dienst \textit{Google Latitude}\footnote{Google Latitude http://www.google.com/intl/en\_us/latitude/intro.html\newline[Online; letzter Aufruf 11.02.2010]} an. Bei diesem Programm ist es möglich die Position von Freunden, die diesen Dienst nutzen, auf einer Karte anzeigen zu lassen. Es besteht hierbei die Möglichkeit die eigene Position per \textit{GPS} oder mit Hilfe von Daten der \textit{GSM-Funkzellen} zu bestimmen.\newline Betrachtet man ein solches Programm unter den obigen Gesichtspunkten von Duckham und \mbox{Kulik}, so stellt man fest, dass der Anwender nur den Zeitpunkt zu dem die Positionsinformationen versendet werden, bestimmen kann. Nutzen Anwender die Software, so werden die Daten an den Anbieter eines solchen Dienstes gesendet. Diesem Anbieter obliegen die Rechte über die Daten ab diesem Zeitpunkt. Die einzige Einsicht die der Benutzer in diesen Vorgang hat, ist die Ausgabe von Positionsdaten anderer. Er hat keinerlei Kontrolle darüber, was mit den Daten nach dem Absenden passiert, da diese an den Anbieter gesendet werden, wo sie dann durch ein ihm unbekanntes System an die anderen Nutzer weitergereicht werden. Somit ergibt sich eine Informationsasymmetrie, da der Betreiber mehr Informationen über die Verarbeitung der Daten des Anwenders besitzt, wohingegen der Benutzer nicht im Genauen weiß, wie mit seinen Daten verfahren wird. Der Benutzer kann also weder festlegen wie, noch in welchem Umfang er die Daten versenden möchte, da er keinen Einblick in diesen Teil der Strukturen der Institution, die den Dienst zur Verfügung stellt, hat.\newline An genau diesem Punkt schließt die Arbeit \textit{Spontaneous Privacy-Aware Location Sharing} \citep{SPALS} an, hier werden die Daten über ein offenes und frei zugängliches System versendet. Da das zum Versenden genutzte System offen zugänglich ist, wird eine zusätzliche Verschlüsselung dieser Daten benötigt, ansonsten hätte jedermann Zugang zu ihnen. \newline Zum Verschleiern der Position nutzen Kido u.a. \citep{dummy} Datensätze die falsche Positionsangaben beinhalten. Diese werden an einen Dienst gesandt, welcher auf all diese Datensätze antwortet, egal ob diese richtige oder falsche Daten beinhalten. Nur der Client weiß, welche der em\-pfangenen Daten auf der eigentlichen Position basieren. Mit dieser Lösung ist es zwar möglich Positionsdaten zu verschleiern, allerdings wird hiermit nicht das Problem gelöst, dass der Nutzer keine Kontrolle darüber hat, wie seine Daten versendet und genutzt werden.\newline Einen anderen Ansatz verfolgen Gruteser und Grundwald \citep{kprivacy}. Sie versuchen mit Hilfe von \mbox{\textit{k-anonymity}} \citep{kanonymity} die Position zu verschleiern. Man versteht unter \textit{k-anonymity}, dass in einer Menge von $k$ Personen ein Teilnehmer nicht von den anderen $k-1$ Teilnehmern unterschieden werden kann. Gruteser und Grundwald haben hierfür einen \textit{quadtree} \citep{quadtree} genutzt um bestimmte Bereiche zu erstellen. Diese Bereiche haben nur eine Vorraussetzung, sie müssen $k$ Personen enthalten. Somit kann nicht festgestellt werden, welche Person eines Bereiches die Daten versandt hat. Allerdings kann dieses Vorgehen nicht für eine Anwendung mit der Funktionalität eines \mbox{Dienstes}, der gezielt Positionen einzelner andere Benutzer anzeigt, genutzt werden. Der Grund dafür ist, dass es mit diesem Ansatz nicht möglich ist Positionsdaten, von einzelnen Personen zu versenden. Zusätzlich ist auch hier nicht gegeben, dass die Anwender Einsicht in die Verwendung und Verbreitung ihrer Daten erhalten. \subsection{Vorraussetzungen} Im Rahmen der Datenübertragung sind alle modernen Geräte in der Lage, sowohl über den \textit{3G}-Standard sowie per \textit{WLAN} Daten zu übertragen. \newline Wenn nun ein sicherer Austausch von Positionsdaten erfolgen soll, so sind neben der Hardware, auch andere gegebene Rahmenbedingungen erforderlich. Da man durch Positionsdaten die aktuelle Position erfahren oder Bewegungsprofile erstellen kann, sollte der Zugang zu diesen nur dann erlaubt sein, wenn der Benutzer, der sie versendet, damit einverstanden ist. Somit ist gegeben, dass der Nutzer über das Ausmaß der Verbreitung seiner Daten die Kontrolle bewahren kann.\newline Der Anwender muss Daten zu jedem von ihm gewünschten Zeitpunkt versenden können. Es ist also notwendig, dass er in der Lage ist, die dafür benötigten Parameter sofort zu erstellen und weiterzugeben, um diesen Zeitpunkt frei wählen zu können.\newline Ist dies gegeben, werden die Daten im nächsten Schritt versendet. Auch hier ist erforderlich, dass der Anwender möglichst viel Kontrolle über seine Datensätze hat. Zur Wahrung dieser Kontrolle ist es notwendig, dass die Informationen mit einer möglichst transparenten und doch verlässlichen Methode verschickt werden. Zum weiteren Schutz der verschlüsselten Daten darf zur Übertragung der Informationen nicht ein zentraler Knoten genutzt werden, sondern im optimalen Fall ein ganzes Netzwerk von solchen Knotenpunkten. Bei diesem Netzwerk sind aller\-dings alle Knotenpunkte einsehbar, damit der Nutzer zu jedem Zeitpunkt weiß, was mit seinen Daten geschieht. Ist dies gegeben, so ist der Nutzer in der Lage zu kontrollieren, wie seine Daten versandt werden. \subsection{Ziele} Zusammenfassend kann gesagt werden, dass eine Software mit den beschriebenen Eigenschaften die Sicherheit der Daten in Bezug auf Zugänglichkeit und das Vermeiden von Datenspeicherung zum Ziel hat, ohne dabei die Benutzerfreundlichkeit einzuschränken. Die Inhalte der Anwendung müssen also soweit abstrahiert werden, so dass ein Benutzer ohne Fachkenn\-tnise alle Funktionen der Anwendung nutzen kann, ohne dass die obigen Punkte ausser Kraft treten. \newline Die Nutzung einer offenen Struktur zum Versenden der Daten ist von immenser Wichtigkeit, damit jeder Nutzer in diese Einsicht hat und sie frei genutzt werden kann. Es ist bei der Auswahl zu vermeiden, dass diese Struktur Restriktionen wie einen Benutzeraccount mit sich bringt. Ebenfalls sollte diese über ein Protokoll verfügen, das verlässlich, stabil und auch für langsame Netzwerke optimiert ist. Eine reibungslose Kommunikation kann somit garantiert werden. \newline Kommunikation zwischen verschiedenen Teilnehmern kann durch den Austausch von Chatnachrichten ermöglicht werden. Die Interaktion zwischen den Anwendern und somit der Nutzen des Dienstes kann hierdurch weiter gesteigert werden.\newline Durch die Nutzung einer für alle offenen Struktur ist es von Nöten, dass die Daten verschlüsselt werden. Da bei Verschlüsselungen der Austausch von Schlüsseln vorausgesetzt wird, ist die Nutz\-ung eines Verfahrens notwendig, mit welchem der Austausch von Schlüsseln auf einfache Weise möglich ist. Da diese Software für mobile Geräte ausgelegt ist, ist der spontane Austausch der benötigten Schlüssel im Interesse des Benutzers, da der Anwender die Nutzung eines solchen Dienstes nicht immer im Vorraus planen kann und möchte. Wollen Benutzer zum Beispiel eine ihnen fremde Stadt erkunden und dabei diesen Dienst verwenden, so kann mit dieser Lösung, ohne Vorarbeit, eine Sitzung erstellt und die Paramater dafür untereinander ausgetauscht werden. Eine Planung im Voraus wird somit nicht benötigt. Im gleichen Zug ist zu garantieren, dass die Schlüssel während des Austauschs nicht von unbefugten Personen abgefangen werden können.\newline Ist ein solches Verfahren gegeben, so kann ein Algorithmus genutzt werden, der sowohl sicher ist, als auch mit möglichst geringem Aufwand die Daten ver- und entschlüsselt. \newline Da Positionsdaten versendet werden, ist eine Visualisierung von Nöten. Somit ist die Fähigkeit andere Teilnehmer auf einer Karte anzuzeigen eine Funktion, welche als Teil dieser Anwendung gilt. Es wird also ein Format benötigt, welches auf dem mobilen Gerät darstellbar und einfach auf den neusten Stand zu bringen ist.\newline Benutzer die sich in größeren Entfernungen befinden sind für Programme dieser Art nur be\-grenzt interessant, da sie mit zunehmender Entfernung immer schwerer erreichbar sind. Deshalb werden nur Teilnehmer innerhalb eines bestimmten Radius angezeigt.\newline Ein weiterer Punkt ist die Plattformunabhängigkeit. Diese steht zwar nicht in Verbindung mit der Privatsphäre der Benutzer, allerdings sollte ein solches Programm unter möglichst vielen Plattformumgebungen lauffähig sein. Zum Einen wird somit der Aufwand der Implementierung verringert, da die mehrfache Ausführung dieser vermieden wird. Zum Anderen werden möglichst viele Benutzer erreicht und es kann eine Kommunikation unter Besitzern von unterschiedlichen Typen von Mobiltelefonen stattfinden.\newline Ebenfalls von Bedeutung ist die Modularität einer Anwendung. Ist diese gegeben, so fällt das Austauschen oder Erweitern von Programmteilen auch zu einem späteren Zeitpunkt leicht. So wäre es zum Beispiel denkbar verschiedene Algorithmen zur Verschlüsselung, oder ein anderes Protokoll zum Versenden der Daten zusätzlich zu implementieren. \subsection{Verfahren} Anhand der Anforderungen ist man nun in der Lage, geeignete Verfahren und Protokolle sowohl für Kommunikation als auch für Verschlüsselung zu wählen. Da mit mehreren Benutzern oder auch mehreren Benutzergruppen kommuniziert werden kann, können mehrere Schlüssel anfallen. Somit soll der Aufwand für den Anwender um diese Schlüssel zu speichern, zu löschen oder neu zuzuordnen, möglichst gering gehalten werden. Um den Schlüs\-sel\-aus\-tausch einfach zu gestalten, wird eine symmetrische Verschlüsselung genutzt.\newline Da der Schlüsselaustausch spontan durchführbar sein soll, muss dieser zu jedem Zeitpunkt mög\-lich sein, ohne dass dafür Vorbereitungen notwendig sind. So könnte man die Schlüssel per \textit{Bluetooth} übertragen, da eine solche Verbindung ohne Vorarbeit aufgebaut werden kann. Allerdings stellt \textit{Bluetooth} ein unsicheres Medium dar \citep{bluetooth}, da der \textit{Bluetooth-Sitzungs-PIN} per \textit{Daten-Phishing} wiederhergestellt werden kann. Eine andere Möglichkeit, die ebenfalls keine Vorarbeit benötigt, ist das Erstellen eines 2D-Barcodes\footnote{QR Code http://www.denso-wave.com/qrcode/qrstandard-e.html [Online; letzter Aufruf 11.02.2010]} aus einer Zeichenkette. Dieser kann fotographiert und wieder in eine Zeichenkette umgewandelt werden. Da keine Kommunikation über einen unsicheren Kanal zwischen den Geräten stattfindet sind die Barcodes optimal zum spontanen Schlüsselaustausch geeignet, da der Schlüssel auf Daten diesem Wege nicht abgefangen werden kann.\newline Wurden die Schlüssel erfolgreich zwischen den Benutzern ausgetauscht, so sind diese in der Lage das Versenden der Informationen über eine geeignete Struktur zu beginnen. Aufgrund der Möglichkeit, dass jeder Nutzer beliebig beitreten und Daten in dieser Struktur austauschen kann, fiel die Wahl zum Versenden der Daten auf das \textit{IRC}-Protokoll. Des Weiteren spricht für diese Entscheidung, dass das \textit{IRC}-Protokoll \citep{IRC} weit verbreitet ist und eine ausgedehnte Serverstruktur zu Grunde liegt. Auch die Stabilität und Verlässlichkeit des Protokolles ist gegeben. Da die \textit{IRC}-Server in Netzwerken organisiert sind führt der Ausfall eines Servers nicht zur Beendigung der gesamten Kommuniktion. Innerhalb der \textit{IRC}-Netzwerke werden verschiedene \textit{Channels} bereitgestellt, an welche Nachrichten gesendet werden können. Ein weiterer Vorteil dieses Protokolls ist, wenn Daten an mehrere Benutzer gesendet werden sollen ist es nur notwendig diese einmal an einen \textit{Channel} zu versenden. Jeder Benutzer in diesem \textit{Channel} kann diese Daten daraufhin empfangen. Zusätzlich steht es jedem Benutzer frei, eigene \textit{Channels} zu öffnen. Somit kann für eine Sitzung, innerhalb derer Daten ausgetauscht werden, ein \textit{Channel} eröffnet und nach Beendigung des Austausches wieder geschlossen werden. Es ergibt sich hier die Möglichkeit dynamisch \textit{Channels} zu diesem Zweck zu nutzen.\newline In der beschriebenen Software werden die Positionsdaten als Zeichenfolge an einen dieser \textit{Channels} gesendet und können dort von beliebig vielen anderen Instanzen der Software ausgelesen werden. Diese verarbeiten die Daten im Anschluss, so dass diese als Position auf einer Karte ausgegeben werden können. Beim Versenden der Textnachrichten ist die vorgehensweiße äquivalent.