Location Sharing: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
 
Line 17: Line 17:
=== Backend ===
=== Backend ===


Das Backend wurde auf einem Linux-vServer in NodeJS umgesetzt. Verwendet wurden hier eine REST-Architektur und MongoDB für den Datenbestand. Zusätzlich zur HTTP-Kommunikation zwischen Server und Clients wird der Apple Push Notification Service (APNS) in Anspruch genommen. Jegliche Kommunikation zwischen zwei Parteien (Client-Server, Server-APNS, APNS-Client) wird TLS-gesichert, um Vertraulichkeit, Integrität und Authentizität der Daten auf dem Übertragungskanal zu erreichen.
Das Backend wurde auf einem Linux-vServer in NodeJS umgesetzt. Verwendet wurden hier eine REST-Architektur und MongoDB für den Datenbestand. Zusätzlich zur HTTPS-Kommunikation zwischen Server und Clients wird der Apple Push Notification Service (APNS) in Anspruch genommen. Jegliche Kommunikation zwischen zwei Parteien (Client-Server, Server-APNS, APNS-Client) wird TLS-gesichert, um Vertraulichkeit, Integrität und Authentizität der Daten auf dem Übertragungskanal zu erreichen.


=== Frontend ===
=== Frontend ===

Latest revision as of 18:09, 23 October 2016

User Interface

Motivation

Die Möglichkeit, seinen eigenen Standort mit anderen zu teilen, kann in einigen Szenarien sehr hilfreich sein. Viele Nutzer, die sich gegenseitig über ihren Standort informieren möchten, wickeln die Kommunikation zumeist über einen Chat ab, in der manuell der Standort erfragt wird und die Gegenseite eine kurze Beschreibung ihres Aufenthaltsortes abgibt. Diese Art und Weise des „Location Sharings“ bringt einige Nachteile mit sich. Die Verzögerung zwischen Abfrage des Standortes und der Antwort ist üblicherweise höher als bei automatischen Standortermittlungen. Zudem besteht grundsätzlich die Abhängigkeit von der Gegenseite, da der Nutzer aktiv antworten muss. Insbesondere bei mehrfachen Abfragen hintereinander wird der Aufwand für beide Nutzer recht hoch. Wünschenswert ist daher eine Lösung, die all diese Probleme adressiert.

Die Standortfreigabe ist praktisch, erfordert allerdings einen guten Schutz der sensiblen Daten vor Dritten. Eine kurze Analyse der Situation auf dem Markt der Softwareprodukte zur Standortfreigabe zeigt jedoch, dass sämtliche Apps den Nutzer auffordern, sensible Daten dem Anbieter preiszugeben bzw. keine Transparenz darüber bieten, wie diese Daten, insbesondere den Standortdaten, weiterverarbeitet werden. Damit einhergeht, dass, selbst wenn ein Nutzer dem Anbieter vertraut, nicht eingeschätzt werden kann, wie sicher die persönlichen Daten bezüglich Zugriffen durch Dritte sind. Schließlich sind viele der Softwareprodukte hinsichtlich der Benutzerfreundlichkeit verbesserungswürdig.

Zielstellung

Dieses Thema beschäftigt sich mit dem Entwurf eines Systems, das zunächst die durch mobile Clients auf der Plattform iOS ermittelten Standortdaten ohne notwendiges Vertrauen an einen Server übermittelt. Der Server übernimmt die Weiterleitung dieser Daten an den Anfragenden.

Interessant ist dabei die Sicherheit des Systems, insbesondere die durch Verschlüsselung erreichte Ende-zu-Ende-Vertraulichkeit der Übertragung. Auf diese Art und Weise soll Vertraulichkeit bei dem Austausch von Standortdaten erreicht werden. Ein Nutzer soll dem Anbieter in diesem Punkt nicht vertrauen müssen. Ein weiterer Fokus wird darauf gelegt, so wenig identifizierende Daten zu erheben wie möglich, um eine Pseudonymität der Nutzer sicherzustellen und gleichzeitig die gewünschte Funktionalität zu gewährleisten. Schließlich soll das User Interface übersichtlich und intuitiv gestaltet werden.

Umsetzung

Backend

Das Backend wurde auf einem Linux-vServer in NodeJS umgesetzt. Verwendet wurden hier eine REST-Architektur und MongoDB für den Datenbestand. Zusätzlich zur HTTPS-Kommunikation zwischen Server und Clients wird der Apple Push Notification Service (APNS) in Anspruch genommen. Jegliche Kommunikation zwischen zwei Parteien (Client-Server, Server-APNS, APNS-Client) wird TLS-gesichert, um Vertraulichkeit, Integrität und Authentizität der Daten auf dem Übertragungskanal zu erreichen.

Frontend

Entwickelt wurde auf Clientseite eine iOS-App, die auf mehreren iPhone 7 mit iOS 10 betrieben wurde. Zur Umsetzung wurde die Programmiersprache Swift verwendet und unter den eingesetzten Bibliotheken befindet sich beispielsweise libsodium, welche die kryptografischen Operationen zum Erreichen von Vertraulichkeit während der Kommunikation zur Verfügung stellt. Die sensiblen Daten auf dem Endgerät des Nutzers werden mit Hilfe der Keychain-API in iOS geschützt. Das User Interface ist sehr einfach und klar strukturiert.

Nachrichtenaustauschprotokoll

Der Nachrichtenaustausch zwischen Clients und Server erfolgt gemäß folgender API:

API.png

Die vollständige Definition der Requests und Responses findet sich hier: API

Ausblick

Die Implementation konnte nur im Ansatz umgesetzt werden und sollte zunächst sowohl auf Client- als auch auf Serverseite vervollständigt werden.

Zur Erzielung einer weitgehenden Plattformunabhängigkeit wäre eine Implementation unter Android wünschenswert. Darüber hinaus könnte die Entwicklung eines Web- bzw. Desktopclients in Erwägung gezogen werden.

Interessant wäre eine Untersuchung, inwieweit das Kommunikationsprotokoll so modifiziert werden kann, dass eine Auswertung der Standortinformationen in gewissem Maße für den Server möglich wird, ohne jedoch die angestrebten Schutzziele abschwächen zu müssen. Auf diese Weise wäre es beispielsweise möglich, Standortdaten von sich nah beieinander befindlichen Nutzern serverseitig proaktiv an die entsprechenden Clients zu pushen.