summaryrefslogtreecommitdiffstats
path: root/ausarbeitung/Friend_Finder.tex
diff options
context:
space:
mode:
authorPatrick Hornecker2010-02-05 10:22:24 +0100
committerPatrick Hornecker2010-02-05 10:22:24 +0100
commit99e14a0d8f0447290eaff38be4e71afb63a3e332 (patch)
tree4326645e0fff19aa8136eac8777b304c99768eb3 /ausarbeitung/Friend_Finder.tex
parenttex source and barcode improvements (diff)
downloadfriendfinder-99e14a0d8f0447290eaff38be4e71afb63a3e332.tar.gz
friendfinder-99e14a0d8f0447290eaff38be4e71afb63a3e332.tar.xz
friendfinder-99e14a0d8f0447290eaff38be4e71afb63a3e332.zip
tex source and barcode improvements
Diffstat (limited to 'ausarbeitung/Friend_Finder.tex')
-rw-r--r--ausarbeitung/Friend_Finder.tex219
1 files changed, 119 insertions, 100 deletions
diff --git a/ausarbeitung/Friend_Finder.tex b/ausarbeitung/Friend_Finder.tex
index 641ee3b..e823035 100644
--- a/ausarbeitung/Friend_Finder.tex
+++ b/ausarbeitung/Friend_Finder.tex
@@ -1,17 +1,35 @@
\section{Friend Finder}
-Die Software die als praktischer Teil dieser Abschlussarbeit entwickelt wurde hat den Namen \textit{Friend Finder}. Im folgenden
-werden zuerst
-die verschiedenen Features des Programms vorgestellt. Im Anschluss werde die verwendeten Verfahren und Bibliotheken, welche zur
-Realisierung des Projektes verwendet wurden, erläutert. Im Abschnitt Implementierung wird kurz auf den Aufbau des Programmes
-eingegangen. Zuletzt wird unter Analyse der gemessene Datenverkehr des \textit{Friend Finders} besprochen.
+So gut wie alle Geräte der heutigen Generation von Smart Phones besitzen einen GPS Empfänger. Dieser kann auf unterschiedliche
+Art und Weiße genutzt werden. Von einfachem bestimmen der aktuellen Position, über Routing bis hin zu Freizeitaktivitäten wie
+\textit{Geocaching}. Eine weitere, interessante Möglichkeit wäre es, sich Freunde anzeigen zu lassen, die sich in
+einem bestimmten Radius um die eigene Position befinden. Mit diesen könnte man dann, ähnlich wie mit einem Chat Programm,
+Nachrichten austauschen.\newline
+Da es unter Datenschutzaspekten aber nicht wünschenswert ist das jeder Dritte die Position anderer ermitteln kann, sollten die
+Daten verschlüsselt versendet werden. Ansonsten könnte es zu Szenarien, wie das erstellen eines Bewegungsprofiles der Benutzer,
+kommen. Es muss somit gewährleistet sein, dass die gesendeten Daten nur dann lesbar sind, wenn der Nutzer dem einwilligt. \newline
+
+Mit einer solchem Programm wäre es zum Beispiel möglich, sich mit Freunden zum Essen zu verabreden, wenn diese sich in der Nähe
+der eigenen Position befinden. Der Nutzer sollte einfach nur den Radius wählen, innerhald dessen Personen sichtbar sind, und
+könnte diese dann per verschlüsselter Textnachricht anschreiben. \newline
+Eine andere Möglichkeit bestünde darin, dass man auf bestimmten Veranstaltungen wissen möchte wer teilnimmt. Dabei stellt
+der Nutzer allerdings fest das eine ihm bekannte Person die gleiche Software nutzt, aber für ihn nicht sichtbar ist. Der
+Benutzer muss nun die Möglichkeit haben dieser Person ohne aufwand den für die Verschlüsselung genutzen Schlüssel zu
+übergeben.\newline
+
+Eine ähnliche Software wurde schon im Paper \textit{Spontaneous Privacy-Aware Location Sharing} \citep{SPALS} beschrieben und
+implementiert. Allerdings lag bei dieser Arbeit der Focus auf einem effizienten Protokoll zur verschlüsselten
+Positionsübertragung. Der Aspekt, dass Nutzer nur innerhalb eines begrenzten Radius angezeigt werden, wurde hier nicht
+berücksichtigt. Auch die Software \textit{SmokeScreen} \citep{SmokeScreen} beschäftigt sich mit versenden privater Informationen
+innerhalb von Gruppen die der Nutzer festlegt. Allerdings bewegt sich \textit{SmokeScreen} nich im Rahmen von \textit{location
+awareness}. Somit sollte die Software ein effizientes Protokoll, eine sichere Verschlüsselung sowie die Möglichkeit der
+Einstellung durch den Anwender verbinden.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\subsection{Features}
+\subsection{Anforderungsanalyse}
-\textit{Friend Finder} hat bietet verschiedene Features, welche vom Nutzer angewendet werden können und komplett in \textit{C}
-implementiert wurden. Bei diesen Features handelt es sich um:
+Anhand der oben erstellten Szenarien sollte diese Software also folgende Funktionen besitzen:
\begin{itemize}
\item Versenden von Nachrichten
@@ -20,75 +38,62 @@ implementiert wurden. Bei diesen Features handelt es sich um:
\item Erstellen eines 2D-Barcodes
\end{itemize}
-\subsubsection{Nachrichten versenden}
-
-Der Nutzer kann hiermit Nachrichten verfassen und an einen, vorher festgellegten, Freund senden. Dieser kann wiederrum auf
-diese Nachrichten antworten. Die versendeten Textnachrichten werden vom Programm, mit einem vorher festgelegten \textit{private
-key} verschlüsselt. Damit nun die andere Person die erhaltene Nachricht entschlüsseln kann, muss er den selben \textit{private
-key} besitzen.
-
\subsubsection{Eigene Position senden}
-Mit \textit{Friend Finder} kann man die eigene Position im \textit{Latitude}/\textit{Longtitude} Format versenden. Auch hier
-werden die gesendeten Daten mit symmetrischen Verschlüsselungsverfahren für dritte unleserlich gemacht.
+Um den Standort anderer Nutzer zu sehen, muss das Programm in der Lage sein, auf einer Karte deren Position anzuzeigen. Damit
+für andere Nutzer die eigene Position sichtbar ist, muss diese in einem gängigen Format versendet werden. Hierfür fiel die Wahl
+auf das Standart Positions Format \textit{Latitude}/\textit{Longtitude}. Um Datensicherheit zu garantieren müssen diese
+Positionsdaten in verschlüsselter Form versendet werden.
\subsubsection{Position anderer Teilnehmer anzeigen}
-Zusätzlich zum senden der eigenen Position, kann man sich auch die Positionen der anderen Teilnehmer anzeigen lassen. Hierbei
-kann man wählen, ob man alle Nutzer innerhalb eines Radius von 100, 250 oder 1000 Metern sehen möchte. Dieser Radius geht von der
-momentanen Position des Nutzers aus.
+Um die Position anderer Teilnehmer zu visualisieren muss das Programm in der Lage sein, die eigehenden Positionsdaten sowohl zu
+entschlüsseln, als auch diese auf einer Karte darzustellen. Des weiteren muss ein Format für die Karte genutzt werden, welches auf
+dem mobilen Gerät darstelbar ist und man einfach auf den neusten Stand bringen kann. Es sollte auch möglich sein, nur
+Benutzer innerhalb einer bestimmten Entfernung anzuzeigen, da eine Person die sich in 6 Kilometer Entfernung aufhält für Dienste
+dieser Art nur begrenzt sinnvoll sind.
-\subsubsection{2D-Barcode}
+\subsubsection{Nachrichten versenden und empfangen}
-Da das Programm ein symmetrisches Verfahren anwendet, stellt sich die Frage wie man den \textit{private key} an andere Personen
- weitergeben kann, ohne dass dritte diesen auch erhalten können. Hier wäre ein Ansatz, dass man aus einer Zeichenketten einen
-\textit{2D-Barcode} erstellt und ihn von anderen Nutzern abfotographieren lässt. Diese können aus dem erhaltenen Barcode nun
-wieder die ursprüngliche Zeichenkette erstellen und haben somit den \textit{private key} erhalten. \newline
+Damit man mit anderen Nutzern, welche sich in der Nähe der eigenen Position befinden, auch Kommunizieren kann, muss die Software
+in der Lage sein Textnachrichten zu versenden und zu empfangen. Auch soll die Datensicherheit garantiert sein. Der Datenverkehr
+muss also auch bei dieser Funktion in verschlüsselter Form stattfinden.
-Dieser Programmteil kann anhanden einer solchen beliebigen Zeichenkette einen Barcode erstellen und ausgeben. Dieser könnte dann,
- wie schon erwähnt, mit einer entsprechenden anderen Software fotographiert und wieder umgewandelt werden.
+\subsubsection{2D-Barcode}
+
+Um einen Schlüssel an eine Person weiterzugeben, deren Positon man sehen oder mit ihr kommunizieren möchte, muss es eine
+Möglichkeit geben diesen Schlüssel auf einfach Weise weiterzugeben. Hierzu kann aus einer vorher festgelegten Zeichenkette einen
+2D-Barcode erstellt und angezeigt werden. Zur weitergabe des Schlüssels muss nun der andere Anwender diesen vom Display
+fotographieren oder per MMS versenden und auf dem anderen Gerät wiederherstellen.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Verwendete Verfahren und Bibliotheken}
-Um die Software, welche im Rahmen dieser Bachelor-Arbeit realisiert wurde, zu implementieren war die Nutzung verschiedener
-Bibliotheken nötig. Im folgenden werden die verwendeten Bibliotheken kurz erläutert.
+Die oben beschriebene Software wurde mit fast all diesen Funktionen, ausser das abfotographiern und umwandeln der 2D-Barcodes in
+einen Schlüssel, im Rahmen dieser Arbeit implementiert und hört auf den Namen \textit{Friend Finder}. Im folgenden Abschnitt wird
+die Implementierung und Funktionsweise der einzelnen Funktionen erläutert, sowie die zugrundeliegenden Bibliotheken vorgestellt.
+\newline
-\subsubsection{Versenden der Nachrichten}
+\textit{Friend Finder} wurde so konzipiert, dass die Graphische Darstellung ohne großen Aufwand vom den restlichen
+Teilen der Software abgekoppelt und durch eine andere, darstellende Bibliothek ersetzt werden kann. Somit
+könnte man \textit{Enlightenment} durch eine andere Art der Darstellung austauschen, ohne dabei die Funktionalität der
+zugrunde liegenden Komponenten zu zerstören. \newline
+Da das ver- und entschlüsseln der Daten möglichst wenig Rechenaufwand erzeugen und der Schlüsselaustausch nicht zu
+kompliziert sein soll, nutzt das Programm ein symmetrisches Verschlüsselungsverfahren. \newline
+\textit{Abbildung 3} zeigt den Kommunikationsaustausch von \textit{Friend Finder}. Der \textit{Message Sender} ist für das
+Versenden und Empfangen der Textnachrichten zuständig, \textit{Sender} sendet die eigene Position, \textit{Receiver} empfängt
+die Positionen der anderen Nutzer und sendet Acknowledgements an die teilnehmenden \textit{Sender}. Alle drei Teile geben ihre
+empfangenen Daten an die \textit{GUI} weiter, welche sie mit Hilfe von \textit{Enlightenment} ausgibt.
-Um Nachrichten zu versenden wurde für dieses Projekt die \textit{IRC-Client Bibliothek}\citep{libircclient} verwendet. Diese
-\textit{library} bietet verschiedene Funktionen um eine Verbindung mit einem \textit{IRC-Server} zu erstellen und Nachrichten an
-diesen zu senden, sowie eingehende Nachrichten zu empfangen. Des weiteren ist es mit Hilfe dieser Bibliothek auch möglich,
-Nachrichten zu versenden. \newline
-
-\subsubsection{Verschlüsselung der Daten}
-
-Zur Verschlüsselung der gesendeten Nachrichten wird die Bibliothek des \textit{OpenSSL-Projekts}\citep{OpenSSL} verwendet. Hierzu
-werden die Daten mit dem \textit{Blowfish-Algorithmus} verschlüsselt. Bei diesem Algorithmus handelt es sich um ein symmetrisches
-Verfahren, bei welchem alle Teilnehmer den gleichen privaten Schlüssel zum ver- sowie entschlüsseln nutzen. Die genutzte
-Implementierung enstammt der \textit{libcrypto} Bibliothek.
-
-\subsubsection{Erzeugen eines 2D-Barcodes}
-
-\subsubsection{Grafisches Benutzeroberfläche}
+\begin{figure}[h]
+\centering
+ \includegraphics[width=10cm]{Bilder/ablauf}
+ \caption{\textit{Friend Finder} Nachrichtenaustausch}
+\end{figure}
-Die Graphische Nutzeroberfläche wurde mit Hilfe von Bibliotheken aus dem \textit{Elementary}-Paket realisiert. Insbesondere sind
-wurden \textit{Elementary} und \textit{Evas} genutzt. \textit{Elementary} ist eine Sammlung von \textit{Widgets} für
-Benutzeroberflächen, welche einfach und schnell zu implementieren sind. Um das Zeichnen der Elemente auf verschiedenen Systemen
-kümmert sich \textit{Evas}.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%
-
-\subsection{Implementierung}
-
-Das Programm \textit{Friend Finder} ist so konzipiert, dass die Graphische Darstellung ohne großen Aufwand vom den restlichen Teilen
-der Software abgekoppelt werden kann und durch eine andere Bibliothek ersetzt werden kann. Dies hat zum Vorteil, dass man
-\textit{Enlightenment} durch eine andere Art der Darstellung austauschen kann, ohne dabei die Funktionalität der zugrunde liegenden
-Komponenten zu zerstören. Somit ist, was die Art der Darstellung angeht, schon von vornherein einfacher möglich die Software auf
-unterschiedlichen Plattformen zu konvertieren. \newline
-\textit{Friend Finder} ist an sich in fünf Submodule aufgeteilt. Diese wären
+\textit{Friend Finder} ist an sich in fünf Submodule aufgeteilt:
\begin{enumerate}
\item Graphische Benutzeroberfläche
@@ -98,17 +103,23 @@ unterschiedlichen Plattformen zu konvertieren. \newline
\item Erstellen eines Barcodes
\end{enumerate}
-\subsubsection*{Graphische Benutzeroberfläche}
+\subsubsection{Grafisches Benutzeroberfläche}
+
+Zum erstellen der Oberfläche wurde \textit{Enlightenment} verwendet. Diese Bibliothek stellt alle benötigten Funktionen bereit und
+bietet eine Fülle an vordefinierten Oberflächenelement. Der gesammte Programmcode der Benutzeroberfläche wurde in einer Datei
+zusammengefast (\textit{gui.c}). Diese Tatsache vereinfacht das Erhalten der Modularität, da einfach nur diese Datei
+durch eine andere ersetzen werden muss um einen anderen Typ von Oberfläche zu benutzen. \newline
+In der der Datei \textit{gui.c} sind alle Funktionen enthalten um die Oberflächenelement zu erzeugen und zu platzieren. Um die
+gewünschte Funktionalität der einzelnen Elemente zu realisieren wurden auch die Aufrufe der benötigten Funktionen aus anderen
+Modulen in dieser Datei implementiert. \newline
+Wie schon erwähnt, wurde die Graphische Nutzeroberfläche mit Hilfe von Bibliotheken aus dem \textit{Elementary}-Paket
+realisiert.
-Zum erstellen der Oberfläche wurde, wie schon erwähnt, \textit{Enlightenment} verwendet. Durch diese Bibliothek werden alle benötigten
-Funktionen bereitgestellt. Der gesammte Programmcode der Nutzeroberfläche wurde in eine Datei geschrieben (\textit{gui.c}). Diese
-Tatsache macht die erhaltung der Modularität einfacher, da man einfach nur diese Datei durch eine andere ersetzen muss um eine anderen
-Typ von Oberfläche zu nutzen. \newline
-Inner der Datei \textit{gui.c} sind alle Funktionen enthalten um die Oberflächenelement zu erzeugen und zu platzieren. Um die gewünschte
-Funktionalität der einzelnen Elemente zu realisieren wurden auch die Aufrufe der benötigten Funktionen aus anderen Modulen in dieser
-Datei implementiert.
+\subsubsection{Versenden der Nachrichten}
-\subsubsection*{Versenden von Textnachrichten}
+Um Daten im Allgemeinen zu versenden wurde das \textit{IRC}-Protokoll \citep{IRC} verwendet. Die
+Vorteile dieses Protokolles liegen in seiner weiten Verbreitung, einer ausgedehnten Serverstruktur, sowie in dessen
+Stabilität.\newline
In der Datei \textit{msg\_sender.c} sind alle Funktionen und Aufrufe implementiert, welche nötig sind um die Verbindung zum
\textit{IRC-Server} zu erstellen und die Nachrichten zu verschicken. Um eine Verbindung zu einem gegebenen \textit{IRC-Server} zu
@@ -117,48 +128,63 @@ den \textit{Nickname} des Benutzers oder die \textit{IP-Adresse} des Servers. Na
kann man nun durch das Aufrufen der Funktion "\textit{set\_txt\_msg(char* msg)}" die Nachricht versenden. Wird eine Nachricht
empfangen so wird diese an die Funktion "\textit{show\_message(char* msg)}" , welcher zur Benutzeroberfläche gehört, übergeben.
Bei der Implementerierung des Nachrichtenversandes ist eine Besonderheit zu erwähnen. Das genutzte Verschlüsselungsverfahren
-\textit{Blowfish} wurde seitens der \textit{OpenSSL} Bibliothek als \textit{Blockcipher} implementiert. Das bedeutet, das immer
-nur maximal 64 Bit Nachrichten verschlüsselt werden können. Da in der Programmiersprache \textit{C} dies genau acht Zeichen
-entspricht, werden alle zu sendenden Nachrichten in Blöcke der Größe acht aufgeteilt, versendet und beim Empfänger wieder
-zusammengesetzt. \newline
+\textit{Blowfish} wurde seitens der \textit{OpenSSL}\citep{OpenSSL} Bibliothek als \textit{Blockcipher} implementiert. Das
+bedeutet, das immer nur maximal 64 Bit Nachrichten verschlüsselt werden können. Da in der Programmiersprache \textit{C} dies genau
+acht ASCII-Zeichen entspricht, werden alle zu sendenden Nachrichten in Blöcke der Größe acht aufgeteilt, versendet und beim
+Empfänger wieder zusammengesetzt. \newline
Ein weiterer wichtiger Unterschied zu den Modulen Senden und Empfangen von \textit{GPS}-Positionen ist die Tatsache, dass bei
diesem Programmteil Sender und Empfänger in der gleichen Datei implementiert wurden. Der Grund hierfür ist, dass man hier nicht
zwischen mehreren Sendern oder Empfängern unterscheiden muss, und diese zwei Teile hier somit nicht komplett getrennt voneinander
-arbeiten müssen.
+arbeiten müssen.\newline
+
+Um Nachrichten zu versenden wurde für dieses Projekt die \textit{IRC-Client Bibliothek}\citep{libircclient} verwendet. Diese
+\textit{library} bietet verschiedene Funktionen um eine Verbindung mit einem \textit{IRC-Server} zu erstellen und Nachrichten an
+diesen zu senden, sowie eingehende Nachrichten zu empfangen.\newline
+Zur Ver- und Entschlüsselung der gesendeten Nachrichten, sowie der Positionsdaten wird die Bibliothek
+des \textit{OpenSSL-Projekts}\citep{OpenSSL}, namens \textit{libcrypto}, verwendet. Hierzu werden die Daten mit dem
+\textit{Blowfish-Algorithmus} verschlüsselt. Bei diesem Algorithmus handelt es sich um ein symmetrisches
+Verfahren, bei welchem alle Teilnehmer den gleichen privaten Schlüssel zum ver- sowie entschlüsseln nutzen.
-\subsubsection*{Versenden der eigenen Position}
+\subsubsection{Versenden der eigenen Position}
-Der benötigte Programmcode zum versenden der eigenen Position ist in der Datei \textit{sender.c} zu finden. Auch hier muss zuerst
-eine \textit{IRC-Session} initialisiert werden um danach die Position zu versenden. Der Ablauf beim senden der Positionen erfolgt
+Der benötigte Programmcode zum Versenden der eigenen Position ist in der Datei \textit{sender.c} zu finden. Auch hier muss zuerst
+eine \textit{IRC-Session} initialisiert werden um danach die Position zu versenden. Der Ablauf beim Senden der Positionen erfolgt
in einer vorgegebenen Reihenfolge. Zuerst wird der verschlüsselte Längengrad, danach der verschlüsselte Breitengrade gesendet.
Daraufhin werden solange keine Daten mehr gesendet, bis der Empfänger eine Bestätigung an den \textit{IRC-Kanal} sendet. Diese
-Bestätigung ist unverschlüsselt und stellt einfach nur den \textit{Nickname} des Senders dar. Kommt dieses
-\textit{Acknowledgement} beim Sender an, so versendet dieser wieder ein \textit{Latitude/Longtitude Paar}.
+Bestätigung ist unverschlüssel. Kommt dieses \textit{Acknowledgement} beim Sender an, so versendet dieser wieder ein
+\textit{Latitude/Longtitude Paar}.\newline
-\subsubsection*{Empfangen der eigenen Position}
+Auch hier wird, wie beim Versenden der Nachrichten zum verschlüsseln der \textit{Blowfish-Algorithmus} aus \textit{libcrypto},
+sowie \textit{libircclient} zum versenden der Daten genutzt.
+\subsubsection{Empfangen der eigenen Position}
noch nicht final....empfänger empfängt nachricht, ordnet sie, leitet sie zum zeichnen weiter....grob gesehen
-\subsubsection*{Erstellen eines Barcodes}
+\subsubsection{Erzeugen eines 2D-Barcodes}
Die Datei \textit{barcode.c} beinhaltet die Funktionen zum erstellen eines 2D-Barcodes. Hierzu wird die Funktion
"\textit{generate\_barcode(char* key)}", mit einer Zeichenkette als Übergabeparameter, aufgerufen. Aus dieser Zeichenkette wird
dann ein Barcode erstellt, welcher im darauf folgenden Schritt als \textit{.png} Datei auf das Speichermedium geschrieben wird.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Analyse}
-Im folgenden Teil wird der erzeugte Datenverkehr von \textit{Friend Finder} analysiert. Es wird hierbei vor allem ein
-die Packetgröße, sowie die Menge der versendeten Datenpakete analysiert. Der \textit{Traffic} wurde mit Hilfe des Programmes
-\textit{Wireshark} \citep{Wireshark} untersucht.\newline
+Das Ziel war es mit \textit{Friend Finder} Daten verschlüsselt zu übertragen. Es soll dabei ein möglichst geringer
+Berechnungsaufwand entstehen um die Daten zu verschlüsseln, sowie möglichst wenig Datenoverhead produziert und versendet werden.
+Dies ist notwendig, damit das Programm möglichst lange auf dem mobilen Gerät ausgeführt werden kann und nicht schon nach
+kurzer Zeit der Akku versagt. \newline
+
+Im folgenden Teil wird der erzeugte Datenverkehr von \textit{Friend Finder} analysiert. Ein Hauptaugenmerkt wird hierbei vor allem
+auf die Packetgröße, sowie die Menge der versendeten Datenpakete geworfen. Der \textit{Traffic} wurde mit Hilfe des Programmes
+\textit{Wireshark} \citep{Wireshark} untersucht.\newline
Die Analyse selbst ist in drei Teile aufgeteilt. Als erstes wird auf den allgemein entstehenden Datenverkehr eingegangen, welcher
bei Verbindungsaufbau, sowie bei Beenden der Verbindung entsteht. Der zweite Teil beschäftigt sich mit dem Versenden sowie
Empfangen von Nachrichten. Im letzten Teil dieser Analyse wird auch das dritte Feature, dass Versenden und Empfangen von
Positionen, unter die Lupe genommen.
-\subsubsection*{Allgemeiner Datenverkehr}
+\subsubsection{Allgemeiner Datenverkehr}
Wie bereits erwähnt wird zum Versenden der Nachrichten das \textit{IRC-Protokoll} \citep{IRC} verwendet. Dieses Protokoll basiert
\textit{TCP/IP} und führt somit bei Verbindungsaufbau einen \textit{TCP-Handshake} durch. Des weiteren werden
@@ -172,20 +198,20 @@ Wird eine bestehnde Verbindung beendet, so entsteht auch hier wieder Datenverkeh
Verbindung ein eigenes Verfahren nutz. Bei diesem wird ein Paket versendet welches angibt dass die Verbindung nun beendet wird.
Dieses Paket wird auch wieder bestätigt. Diese beiden Pakete werden von beiden Seiten der Kommunikation versandt.\newline
-\subsubsection*{Versenden und Empfangen von Nachrichten}
+\subsubsection{Versenden und Empfangen von Nachrichten}
Um das Versenden von Nachrichten zu evaluieren wurde "Hello World" als Testnachricht benutzt. Der \textit{Blockcipher} von
\textit{Friend Finder} teilt den Satz "Hello World" in zwei Teile auf: "Hello " und "World". Diese werden dann von \textit{TCP}
aufgrund der Fenstergröße in ein Paket gepackt. Das gesamte Paket hat die größe von 81 Bytes, wobei der \textit{TCP-Header} 32
-Bytes groß ist. Somit haben die Daten eine Größe von insgesamt 49 Bytes.\newline
+Bytes und der \textit{IP-Header} 20 Bytes groß ist. Somit haben die Daten eine Größe von insgesamt 29 Bytes.\newline
Beachtet man dass ein \textit{char} in \textit{C} die Größe von einem Byte hat und der Beispielsatz aus elf Zeichen besteht, so
-ist dieser unverschlüsselt 11 Byte groß. Somit vergrößern sich die Daten nach der Verschlüsselung um circa den Faktor 4,5.\newline
+ist dieser unverschlüsselt 11 Byte groß. Somit vergrößern sich die Daten nach der Verschlüsselung um circa den Faktor 2,6.\newline
Wenn $h$ die Größe des \textit{TCP-Headers} und $t$ die Anzahl der Zeichen der unverschlüsselten Nachricht ist, so ergibt sie die
-Länge der zu versendenden Nachricht aus: $h + (t * 4,5)$.
+Länge der zu versendenden Nachricht aus: $h + (t * 2,6)$.
-\subsubsection*{Versenden und Empfangen von Positionen}
+\subsubsection{Versenden und Empfangen von Positionen}
-\subsubsection*{Fazit der Auswertung}
+\subsubsection{Fazit der Auswertung}
Zur Analyse des Allgemeinen Datenverkehrs ist zu sagen dass Aufgrund der Tatsache dass das \textit{IRC-Protokoll}
auf \textit{TCP/IP} bassiert, eine großer Overhead an Paketen versandt wird. Somit werde wesentlich mehr Pakete als
@@ -196,10 +222,3 @@ Um den den von \textit{TCP} generierten Datenoverhead zu minimieren, wäre auch
interessant. Dies gilt weniger für das versenden der Textnachrichten sondern eher für das versenden der Positionen. Hier werden,
wenn mehrere User aktiv sind, ständig Positionsdaten und Acknowledgements zwischen Server und Clients ausgetauscht. Somit könnte
durch die Nutzung von \textit{UDP} hier einiges an versendeten Packeten gespart werden.\newline
-
-
-%streamcipher???
-%datenoverhead
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%