Stud.-Arbeit - Universität Tübingen

Transcription

Stud.-Arbeit - Universität Tübingen
Studienarbeit
Bild-Passwörter
für das Foto-PIN Verfahren
Rada Kancheva
Betreuer: Dr. B. Borchert
Prof. K. Reinhardt
Theoretische Informatik
Wilhelm-Schickard-Institut
Universität Tübingen
Ich erkläre hiermit, dass ich die vorliegende Arbeit selbständig verfasst und keine anderen
als die angegebenen Quellen und Hilfsmittel verwendet habe.
Tübingen, den 27. Januar 2012
Inhaltsverzeichnis
1. Motivation .............................................................................................................................. 1
2. Der Phishing-Angriff.............................................................................................................. 3
2.1 Das Konzept ..................................................................................................................... 3
2.2 Schutzmassnahmen........................................................................................................... 4
3. Auswahl der Methode für die Erweiterung ............................................................................ 5
4. Android................................................................................................................................... 7
4.1. Geschichte ....................................................................................................................... 7
4.2. Architektur..................................................................................................................... 11
4.2.1. Linux-Kernel........................................................................................................... 11
4.2.2. Android-Laufzeitumgebung.................................................................................... 11
4.2.3. Standardbibliotheken .............................................................................................. 11
4.2.4. Anwendungsrahmen................................................................................................ 12
4.2.5. Anwendungsschicht ................................................................................................ 12
4.3. Android-Komponenten.................................................................................................. 12
4.3.1. Activity ................................................................................................................... 13
4.3.2. View ........................................................................................................................ 13
4.3.3. Service..................................................................................................................... 14
4.3.4. Content Provider ..................................................................................................... 14
4.3.5. Intent ....................................................................................................................... 14
4.3.6. Broadcast Receiver ................................................................................................. 14
5. Vorraussetzungen ................................................................................................................. 16
5.1. Die Software .................................................................................................................. 16
5.2. SDK und JDK................................................................................................................ 16
5.3. Die Programmiersprache Java ....................................................................................... 16
6.1. Die Planung ................................................................................................................... 17
6.2. Die Ausführung ............................................................................................................. 17
6.3. Intern.............................................................................................................................. 20
7.Zusammenfassung................................................................................................................. 21
Literaturverzeichnis.................................................................................................................. 22
1. Motivation
Das Internet hat sich als Medium neben den klassischen Medien (Radio, Fernsehen, Presse)
gleichberechtigt etabliert. Online-Nutzung ist fester Bestandteil im privaten und beruflichen
Leben. Als Folge der Online-Präsenz werden Alltagsaktivitäten verstärkt über das Internet
ausgeübt. Für die Nutzung vieler, verschiedener Internet-Dienste wie z.B. E-Mail, InternetTelephonie, Online-Shopping oder Online-Banking, braucht man einen Internet-Account als
Zugangsberechtigung, welcher verschiedene Benutzerdaten enthält. Ü blicherweise muss sich
der Anwender beim Einloggen durch die Angabe von Benutzername und Kennwort
authentifizieren und somit ist es relativ leicht beispielsweise für einen Trojanervirus das
Passwort zu einem Online-Account abzulauschen: er muss lediglich „beobachten“, welche
Tasten der Benutzer drückt.
Da die Bedeutung und Nutzung von Mobiltelefonen sich in den letzten Jahren sehr stark
verändert hat, hat man eine Möglichkeit gesucht diese für die Sicherheit der Online-Dienste
zu benutzen. Früher wurden Mobiltelefone hauptsächlich zum Telefonieren oder SMSVerschicken verwendet, heute haben sie die meisten Funktionen eines privaten,
handelsüblichen Computers. Das Mobiltelefon hat sich zum Smartphone entwickelt und ist
fester Bestandteil unseres Lebens. Die Anzahl der Smartphone-Nutzer steigt jeden Tag an,
wodurch der Bedarf an neuen Programmen (sogenannten Applikationen oder Apps), welche
dem Nutzer zusätzliche Funktionen bieten, zunimmt. Jedes Smartphone ist heute mit einer
integrierten Kamera ausgerüstet. Diese setzt man für das Foto-PIN Verfahren ein, das im
nächsten Abschnitt näher erläutert wird.
Das heutige Verfahren verwendet das Abfotografieren von sog. QR-Codes (Quick Response).
Dieser enthält kodierte Daten, welche mittels des Fotohandy-PIN Programms entschlüsselt
werden, wodurch ein Nummernfeld mit vertauschten Ziffern auf dem Handy angezeigt wird.
Somit kann sich der Nutzer durch die Angabe seiner PIN oder seines Passworts auf eine
Tastatur mit leeren Feldern einloggen. Ein Trojaner, der diesen Vorgang beobachtet, kann
kein Nutzen davon ziehen, da er die Lokalisation der Zahlen auf dem Nummernfeld und somit
die Bedeutung der Klicks nicht kennt, bzw. nicht zurückverfolgen kann. Zwar ist die
Trojaner-Sicherheit gewährleistet, aber ein Betrüger könnte beispielsweise durch einen
Phishing-Angriff, den Benutzer auffordern seinen PIN ohne Fotohandy einzugeben und
könnte somit den PIN abhören.
Um dieses Phishing der PIN entgegenzuwirken, können solche Passwörter verwendet werden,
die aus Bildern oder Symbolen bestehen. Ein Trojaner kennt diese Symbole nicht, kann sie
deshalb nicht zur Auswahl stellen und das Abhören des Passworts ist somit nicht mehr
möglich.
1
Diese Studienarbeit befasst sich mit der Erweiterung des Fotohandy-PIN Programms durch
Bild-Passwörter, um die Möglichkeit des Phishing-Angriffs abzuwehren. Drei Varianten sind
denkbar:
1. Die Symbole werden kodiert zum Benutzer geschickt und mit dessen persönlichen
Schlüssel dekodiert.
2. Die Symbole werden in QR-Code umgewandelt.
3. Der Benutzer sucht sich eigene Symbole aus, die er später für sein PIN verwendet.
In dieser Arbeit wurde ein passendes Verfahren ausgesucht und daraufhin eine Applikation
für das Fotohandy-PIN Programm auf der Android-Plattform implementiert. Im Verlauf
dieser Ausarbeitung wird auf die Umsetzung für die Android-Plattform eingegangen und
einen Ü berblick über die Voraussetzung zum Erstellen von Applikationen gegeben. Die
Schritte der Durchführung werden erläutert und das Endergebnis vorgestellt.
2
2. Der Phishing-Angriff
Das weltweite Computernetzwerk Internet wurde vor ungefähr 15 Jahren gestartet und
gewinnt seitdem immer mehr an Bedeutung. Es wird von immer mehr Benutzer zum
Informieren, Kommunizieren und Datenaustausch genutzt. Mit dieser zunehmenden
Vernetzung wachsen und verbreiten sich jedoch Gefahren: Mehrfach täglich werden
Computerverbrechen begangen, die entweder den Rechner und dessen Daten im Visier haben,
oder den Computer als Instrument für das Verbrechen verwenden. Besonders in den letzten
Jahren sind die Angriffsformen, bei denen eine betrügerische Webseite oder E-Mail eingesetzt
wird, gestiegen. Durch diese so genannten Phishing-Angriffe können wichtige Informationen
geraubt werden, die wiederum zum Diebstahl von Daten verwendet werden können.
In diesem Abschnitt wird kurz der Phishing-Angriff vorgestellt und einige
Schutzmechanismen aufgelistet. Die Informationen wurden zum größten Teil aus [13]
entnommen
2.1 Das Konzept
Als Phishing bezeichnet man eine Form des Internet-Betrugs, dessen Ziel das Ausspionieren
von persönlichen Daten, Passwörter oder anderen Identifikationsmerkmale (z.B. PIN) ist. Die
so gewonnenen Daten können anschließend für illegale Zwecke verwendet werden. Der
Begriff stellt sich aus den englischen Wörtern „password“ (Passwort) und „fishing“(angeln)
zusammen.
Typische Phishing-Attacken sind oft als E-Mails oder Internetseiten eines bekannten und
vertrauenswürdigen Anbieters getarnt. E-Mails weisen gefälschte Absender auf wie
beispielsweise info@anbieter.de und haben einen dringenden Betreff wie beispielsweise
„Wichtige Aktualisierung“, um somit die Glaubwürdigkeit zu stützen. Die Gestaltung einer
Phishing-Seite ist meist sehr originalgetreu und beinhaltet das Logo des Anbieters oder
Links, welche zur Originalseite des Anbieters führen. In solchen Phishing-Attacken werden
vertrauliche Daten (Kennwort, Nummer einer Kreditkarte), Passwörter oder Geheimzahlen für
das Online-Banking angefordert, die in einem Formular oder Eingabefeld eingetippt werden
sollen. Gibt ein Benutzer diese Daten ein, werden sie vom Betrüger für eigene Zwecke
verwendet. Insbesondere die Passwörter von Bankkonten, sowie der Internetbank Paypal sind
Ziele der Betrüger. Nach solchen Angriffen ist es sehr schwer das Geld zurückzubekommen,
da die Phishing-Seiten nach wenigen Tagen oder Stunden durch den Betreiber vom Netz
gelöscht werden. Beliebte Angriffsziele sind außerdem die Passwörter von Versandhäusern
oder Auktionshäusern im Internet. Der Sender kann, wenn sein Opfer auf die PhishingAttacke hereingefallen ist, dessen Identität rauben, wobei ein Betrüger sich als das Opfer
3
ausgibt und mit dessen Account im Netz einkauft, Geschäfte tätigt oder Einträge manipuliert.
Abbildung 1 zeigt ein Beispiel einer typischen Phishing-Seite.
Abbildung 1: Beispiel einer Phishing-Seite[3]
Neben dem Ausspionieren von Daten ist ein Phishing-Angriff auch mit weiteren Gefahren
verbunden: Betrüger begleiten gefälschte E-Mails oder Seiten mit spezieller Schadsoftware,
die korrekte Website-Anfragen abfangen und auf gefälschte Seiten umleiten[9].
2.2 Schutzmassnahmen
Ein durch Phishing-Attacken verursachter Schaden kann für den Benutzer große finanzielle
Folgen haben. Zusätzlich muss der Benutzer Zeit und Energie aufbringen, um den Schaden zu
beheben. Oft muss man seine Identität nachweisen, erneut einen Account anlegen oder die
Rechte zurückfordern. Es gibt aber einige Möglichkeiten, um sich vor solchen Angriffen zu
schützen. Man kann natürlich auf die Auffälligkeiten achten, die oben beschrieben worden
sind, aber es ist zudem sinnvoll folgenden Regeln Beachtung zu schenken:
•
•
•
•
•
•
Betriebssystem und Browser sollten aktuell gehalten werden.
Antiviren- und Firewallsoftware sollten auf dem neuesten Stand sein.
URLs sollten von Hand eingegeben und nicht durch Verknüpfungen aufgerufen
werden.
Man sollte darauf achten, dass sichere Webseiten (HTTPS) besucht werden.
Konten und Auszüge sollten regelmäßig überprüft werden.
Verdächtige Emails sollten so schnell wie möglich Sicherheitsunternehmen und
lokalen Behörden gemeldet werden.
4
3. Auswahl der Methode für die Erweiterung
Für die Erweiterung des Foto-PIN Verfahrens durch die Verwendung von Bildern gab es drei
Möglichkeiten. In diesem Abschnitt werden diese Varianten näher erläutert und es werden die
Gründe dargelegt, weshalb Variante drei in diesem Projekt umgesetzt wurde.
Übertragung kodierter Symbole/Bilder
Die erste Variante befasst sich mit der Idee, die Symbole kodiert zum Benutzer zu
verschicken. Eine Bedingung dieses Verfahrens ist der vorherige Austausch eines Schlüssels
mittels einer gesicherten Leitung zwischen Benutzer und Anbieter. Mit diesem Schlüssel
werden anschließend die kodierten Bilder, welche der Anbieter dem Benutzer schickt, wieder
dekodiert und auf dem mobilen Gerät dargestellt.
Die enthaltene Information in Bilddaten ist im Vergleich zu Textdaten größer, weswegen eine
normale Datenübertragungsrate (für Global System for Mobile Communikations (GSM) 9,6
kBit/s[4]) zu großen Verzögerungen führen würde. Weiter fehlen dem Anbieter die
Informationen über den verfügbaren Speicher des mobilen Geräts und die Stabilität des
Netzwerks. Durch zu wenig Speicherplatz oder den Verlust der Internetverbindung könnten
Bilder verloren gehen oder fehlerhaft ankommen wodurch sich diese Variante als
impraktikabel erwies.
Umwandlung der Symbole/Bilder in QR Codes
Da die Quick Response Codes (QR-Codes) schon in dem Foto-PIN Verfahren zum Einsatz
kommen, ist die Idee, diese für die Erweiterung zu verwenden naheliegend. Zunächst wird der
QR-Code abfotografiert, dann werden die darin gespeicherten Daten mit Hilfe eines zuvor
zugesandten Schlüssels dekodiert. Eine Gefahr dieses Verfahrens ist das Zwischenschalten
eines Betrügers. Dieser könnte die Daten verändern oder durch ein Schädlingsprogramm
ergänzen und somit die Kontrolle über das gesamte mobile Gerät übernehmen. QR-Codes
können außerdem nur eine bestimmte Menge (max. 2953 Byte[8]) Daten darstellen, wodurch
nur kleine und einfache Bilder verwendet werden können, was wiederum der Qualität oder die
Wiedererkennungswert vermindern könnte.
Auswahl der Symbole/Bilder durch den Benutzer
Eine weitere Möglichkeit für die Erweiterung sieht vor, dass der Benutzer die Bilder selbst
erstellt und diese für sein PIN verwendet. Dabei befinden sich die Bilder auf dem Handy,
wodurch ein Datentransfer umgangen wird. Die Bilder sind selbst kreiert, also können sie
alles darstellen und müssen nicht klein oder einfach gehalten sein. Hier gibt es leider den
Nachteil, dass ein Trojaner, auf dem mobilen Gerät die Bilder und alle weiteren Daten
einsehen könnte. Diese Gefahr ist jedoch auch bei den vorherigen Varianten denkbar.
5
Begründung der ausgesuchten Methode
Wenn die Symbole nicht vom Benutzer selber erschaffen sind, hat er zu diesen keinen Bezug
und die Wahrscheinlichkeit steigt, dass er seinen PIN öfter vergisst. Genau dieses Problem
würde bei den ersten zwei Varianten auftreten, da sie erfordern würden, dass die Bilder schon
fest durch den Anbieter vorgegeben und in einer Datenbank aufbewahrt werden. Zusätzlich
müssten die notwendigen zehn Bilder zufällig aus dieser Datenbank ausgewählt werden,
wodurch Änderungen auf Serverseite notwendig wären.
Um dies zu umgehen, werden bei der dritten Variante die Bilder zusammen mit Ziffern in
einer Datenbank gespeichert. Wenn eine Kommunikation zwischen Anbieter und Nutzer
stattfindet, werden kodierte Ziffern ausgetauscht so wie es in dem vorhandenen Foto-PIN
Verfahren der Fall ist. Weiterhin werden keine großen Mengen an Daten über das Internet
verschickt. Außerdem hat der Benutzer die Möglichkeit sich eine Geschichte zu seiner PIN
auszudenken und diese Geschichte mit Bildern oder Symbolen darzustellen, wodurch er sich
seinen PIN besser merken könnte. Aus diesen Gründen fiel die Wahl auf die dritte Variante,
in welcher der Benutzer die Symbole oder Bilder selbst definieren muss.
6
4. Android
Android ist neben einem Betriebssystem, auch ein Software Plattform für mobile Geräte, eine
Laufzeitumgebung, ein Anwendungsframework und es bietet fertige Kernanwendungen an.
Diese sind miteinander abgestimmt, um Entwicklern maximalen Nutzen zu bieten: Die
Plattform ist quelloffen, leicht erweiterbar und man kann mit Kenntnissen in der JavaProgrammierung Applikationen nach Belieben ergänzen oder ersetzen. Der Entwickler
bekommt mit Android Freiheiten, die er auf anderen Plattformen nicht hat und erhält
Werkzeuge, mit denen er mobile Anwendungen außergewöhnlich komfortabel entwickeln
kann.
4.1. Geschichte
Das Android System wurde von der Open Handset Alliance (OHA) entwickelt. Diese wurde
2007 unter der Leitung von Google gegründet und ist ein Zusammenschluss vieler Firmen
(u.a. Software Hersteller, Marketing Firmen, Netzbetreiber, etc)[10]. Einige dieser Firmen
werden in Tabelle 1 aufgelistet.
Die erste Version von Android wurde im Februar 2009 veröffentlicht und konnte Anhänge in
einer MMS speichern[14]. Die darauffolgenden Versionen wurden mit neuen Funktionen
erweitert, beispielsweise mit Blitzlicht, Digitalzoom, Google TV. Zurzeit ist die Version 4.0
mit den Beinamen „Ice Cream Sandwich“ aktuell. Android 4.0 verbessert unter anderem
diversen Google-Diensten z.B. die Telefon-App, welche komplett überarbeitet wurde und
unter anderem eine neue Voice-Mail Funktion bietet. Zusätzlich gibt es eine neue Funktion,
die das Ü bertragen von Daten per Near Field Communication (NFC) ermöglicht[14]. "Face
Unlock" heißt die Sicherheitsfunktion, bei der das Telefon mit Hilfe seiner Kamera prüft, ob
es tatsächlich von seinem Besitzer gehalten wird und sich erst dann entsperrt. Zurzeit gibt es
Android 4.0 nur mit Konfigurationen für das Galaxy Nexus, aber die eingebauten
Konfigurationen für andere Geräte sollen demnächst folgen. Das am meisten genutzte
Android System ist noch die Version 2.3.3 mit fast 44% (siehe Abbildung 2). In dieser Grafik
sind die Android Geräte erfasst worden, die in einem 14-tägigen Zeitraum auf den Android
Market zugegriffen haben. Die Auswertung endete am 3. November 2011.
7
Netzbetreiber
Marketing-Unternehmen
Halbleiterindustrie
Geräte -Hersteller
Software-Firmen
• China Mobile
• Aplix
• AKM Semiconductors
• Acer
• Ascender Corporation
• China Unicom
• Borqs
• Audience
• ASUSTeK
• eBay
• KDDI
• Noser Engineering
• ARM Limited
• Garmin
• Esmertec
• NTT DoCoMo
• Omron Software
• Atheros Communications
• HTC
• Google
• Sprint Nextel
• Sasken Communication
Technologies Limited
• Broadcom Corporation
• Huawei Technologies
• LivingImage
• Ericsson Mobile Plattforms
• LG
• NMS Communications
• Intel Corporation
• Motorola
• Nuance Communications
• Marvell Technology Group
• Samsung Electronics
• PacketVideo
• Telecom Italia
• MIPS Technologies
• Sony Ericsson
• SkyPop
• Telefónica
• NVIDIA Corporation
• Toshiba
• SONiVOX
• Softbank
• SVOX
• T-Mobile
• Teleca
• The AstonishingTrible
• Vodafone
• Aplix
• Noser Engineering
• The Astonishing Tribe
• Wind River Systems
Tabelle 1: Ein Teil der Mitglieder der OHA [10]
8
Abbildung 2: Genutzte Android Systeme[14]
Die Anzahl der aktiven Geräte der Version 2.3.3 ist in den letzten Monaten stark angestiegen.
Wie in Abbildung 3 deutlich zu sehen ist, bauen die Versionen aufeinander auf, dies bedeutet,
dass Applikationen älterer Entwicklung auch auf neueren Versionen funktionsfähig sind. Vor
allem Softwareentwickler für Android die ihre Programme verkaufen, sollten dies beachten,
sodass möglichst viele Nutzer die Applikation auch verwenden können. Damit kann der
Umsatz maximiert werden, da der Benutzerkreis wesentlich größer wird.
Abbildung 3: Aktive Android Geräte[14]
Android ist momentan Marktführer und die Verkaufszahlen steigen rapide: Im Jahr 2009
wurden 8,7 Millionen Smartphones mit Android verkauft und 2010 sind sie auf 33,3
Millionen gestiegen.[11] Nach Aussage der Entwickler des mobilen Betriebssystems Andy
Rubin werden 700 000 Android-Handys am Tag aktiviert[12]. Auch in Deutschland bleibt
man diesem Trend treu.
9
Abbildung 4: Verbreitung der Smarphone-Betriebsysteme in Deutschland [5]
In diesem Zusammenhang ist die Erweiterbarkeit des Android-Systems durch die große
Menge an Applikationen zu erwähnen. Ca. 68 Prozent der Android-Apps können kostenlos
auf dem Android-Market erworben werden. Zurzeit stehen ca. 400.000 Anwendungen zur
Verfügung[6]. Der Android-Market ist damit der am schnellsten wachsende Softwaremarkt.
Der Umfang des App-Angebots zieht immer weitere Nutzer an. Deutschland ist bei Apps
bereits eines der absatzstärksten Länder(Abb.5).
Abbildung 5: Anzahl App-Downloads pro Einwohner[1]
Schon jetzt gibt es neben dem Android Market eine Reihe anderer Märkte und Plattformen
zum Herunterladen von Android-Applikationen wie beispielsweise „OnlyAndroid“ oder
„SlideME“[2]. Da Android eine offene Plattform ist ermöglicht es jedem in dieses Geschäft
einzusteigen, ohne irgendwelche Lizenzen zu bezahlen. Somit ist es wahrscheinlich, dass die
Entwicklung der Apps noch steigern wird. Die Alternativen verfügen jedoch nicht über die
Vielfalt, die der Google Android Market bietet.
10
4.2. Architektur
Im Folgenden wird eine Ü bersicht über die Architektur von Android dargestellt, die zum
besseren Verständnis des Systems beitragen soll, wie in [14] beschrieben.
4.2.1. Linux-Kernel
Die Grundlage eines Android Systems ist der Linux-Kernel Version 2.6. Dieser kümmert sich
um die Prozessverwaltung, Speicherverwaltung, Sicherheit, Netzwerk- und das
Energiemanagement. Außerdem übernimmt der Kernel die Hardwareabstraktion und stellt
damit eine einheitliche Schnittstelle zwischen Hardware und Software dar. D.h. verschiedene
Programme können nur darüber auf die Hardware zugreifen. Ein weiterer Vorteil ist, dass bei
einem anderen Handytyp lediglich die Hardwareabstraktion angepasst werden muss. Somit
bildet er eine sehr stabile Basis.
4.2.2. Android-Laufzeitumgebung
Die Hauptkomponente der Laufzeitumgebung ist die Dalvik Virtual Machine(DVM). Im
Gegensatz zur Java Virtual Machine (VM), welche auf einem Kellerautomaten basiert, ist die
DVM eine virtuelle Registermaschine, welche für mobile Geräte entwickelt wurde. Für jede
Android-Anwendung wird ein eigener Betriebsprozess gestartet und darin eine eigene DVM,
in welcher die Anwendung läuft. Dies erhöht die Sicherheit und Verfügbarkeit, da sich
Anwendungen keinen gemeinsamen Speicher teilen. Weiterhin verursacht ein sterbender
Prozess keinen Systemabsturz, lediglich die Beendigung der einen Anwendung. Allerdings
kostet das extra Ressourcen. Die Anwendungen selbst werden in Java implementiert und von
einem normalen Java-Compiler in Java-Bytecode zur Entwicklungszeit übersetzt. Durch das
dx-Tool, welches im Lieferumfang des Android Development Kit enthalten ist und als CrossAssembler dient, wird der Java-Bytecode in einen Android-eigenen Bytecode dem sog.
Dalvik-Bytecode transformiert. Somit entsteht aus herkömmlicher Java-Binärdatei (.class) ein
Dalvik Executable-Format (.dex). Die Dalvik VM liefert nicht alle Java APIs einer Java
Runtime. Die wichtigsten sind jedoch enthalten und eigene JAR Bibliotheken können durch
den Anwender hinzugefügt werden.
4.2.3. Standardbibliotheken
Die Bibliotheken sind in C oder C++ geschrieben, sorgen damit für eine hohe Performance
des Anwendungsrahmens und stellen alle erforderlichen Funktionalitäten für das AndroidLaufzeitsystem und den Betrieb der Android-Anwendungen bereit. Außerdem dienen sie als
Schnittstelle zwischen Anwendungsrahmen und Linux Kernel. Sie sind fester Bestandteil des
Systems und können von Anwendungsentwicklern nicht verändert werden.
Der Anwendungsrahmen von Android greift auf eine Menge Basisbibliotheken zu. Zwei
davon sind die OpenGL ES (Open Graphics Libary for Embedded Systems), welche für die
Realisierung der 3D-Grafiken benötigt wird und die Media Framework, die auf PacketVideo's
OpenCORE basiert und für das Multimedia-Verwaltung zuständig ist. Außerdem enthalten
11
die Standartbibliotheken die SQLite Paket, welches speziell für eingebetteten Einsatz
entwickelt wurde und eine relationale Datenbanksystem bereitstellt, die für jede Applikation
zugänglich ist.
4.2.4. Anwendungsrahmen
Der Anwendungsrahmen enthält die grundlegenden Bausteine und APIs, mit denen AndroidAnwendungen entwickelt werden. Hier wird den Entwicklern eine Menge von
Programmierschnittstellen zur Verfügung gestellt. Dadurch wird die Kommunikation
zwischen den einzelnen Anwendungen sowie zwischen Endanwender und Anwendung
realisiert. Dabei wird eine umfangreiche View System bereitgestellt, die zahlreiche
Oberflächenelemente für die Entwicklung verschiedener Applikationen enthält. Mit Hilfe des
Activity Managers wird der Lebenszyklus der Applikationen gesteuert. Der Content Provider
ermöglicht den Austausch von Daten und deren Zugriff. Damit ist diese Ebene des Systems
auch die wichtigste für alle Android-Anwendungen und die interessanteste für AndroidEntwickler.
4.2.5. Anwendungsschicht
Die Anwendungsschicht ist die oberste Schicht der Android-Architektur. Alle Android
Anwendungen befinden sich auf dieser Ebene. In dieser Schicht sind sowohl die
Standardanwendungen wie auch eigene Programme angesiedelt. Die wichtigsten
Anwendungen eines Smartphones werden bereits mitgeliefert darunter u.a Anwendungen für
das Telefonieren, für Kontakte, Kalender, Webbrowser und Google Maps. Alle Anwendungen
werden in Java geschrieben, verwenden die Android Runtime und greifen auf die darunter
liegende Schicht zu.
Eine Besonderheit von Android ist, dass Anwendungen nicht voneinander isoliert sind,
sondern über einfache Mechanismen miteinander gekoppelt werden können. Entwickler
können, wenn die Anwendungen entsprechend gebaut sind, einzelne Funktionalitäten anderer
Anwendungen für ihre Anwendung nutzen. Auf diese Weise können sie andere Anwendungen
als Dienste betrachten und bei Bedarf in die eigene Anwendung integrieren.
4.3. Android-Komponenten
Android gibt die Struktur und Kernbausteine einer Anwendung vor [7]. Jeder Entwickler soll
diese Bausteine und deren Kooperation kennen. Dabei ist es wichtig Android-Anwendungen
nicht isoliert zu betrachten, da sie mittels einfacher Mechanismen untereinander
kommunizieren können. Die Anwendungen sind „offen“, d.h. für die Entwicklung kann man
vorhandene Anwendungen verwenden oder für eigene Zwecke aufrufen. Um das zu erreichen
muss der Entwickler die Bausteine einer Android-Anwendung kennen. Im Folgenden wird auf
diese näher Eingegangen, basierend auf die Beschreibung aus [2] und [7].
12
Abbildung 6: Android Architektur[14]
4.3.1. Activity
Eine Activity ist der meist genutzte Baustein. Er trägt eine View, die das Layout und die
Bedienelemente der Oberfläche definiert. Die Activity selbst definiert, wie auf Ereignisse der
View reagiert wird (z.B. Klick eines Buttons) und kann die Inhalte der View verändern. Sie
ist damit ein Kernelement der Dialogsteuerung. Activities können miteinander verknüpft
werden und somit eine komplexe Anwendung bilden. Die Hauptactivity wird dem Benutzer
beim Starten der Anwendung präsentiert. Jede Activity besitzt einen eigenen Lebenszyklus,
wodurch sie unabhängig ist. Diese Unabhängigkeit hat zur Folge, dass Activities sich
gegenseitig aufrufen und verwenden können. Jede Activity kann eine andere aufrufen, um
bestimmte Tätigkeit zu erfüllen. Dabei wird die erste auf ein Stapel gelegt, welcher die
Aufgaben nachdem Prinzip „ last in, first out“ abarbeitet.
4.3.2. View
Der sichtbare Teil einer Activity bzw. die Benutzeroberfläche einer Android-Anwendung
wird auf einer View aufgebaut. Diese ist die Basisklasse aller Designelemente die Widgets,
die als Schnittstelle für den Kontakt mit dem Benutzer dienen. Werden mehrere Views in ein
Container zusammengesetzt, entsteht eine ViewGroup. Durch verschiedene Layouts wird die
Anordnung der Views in diesem Rahmen definiert und in eine XML-Datei eingegeben. Somit
wird festgelegt was später für den Benutzer sichtbar ist.
13
4.3.3. Service
Ein Service ist ein Dienst, welcher ohne Anzeigeelemente im Hintergrund einer Anwendung
läuft. Beispielsweise ermöglicht dies das Abspielen von Musik mittels des MP3-Players,
während andere Activities im Vordergrund sichtbar sind. Das Abspielen der Musik würde
man als Service realisieren. Activities können einen Service steuern, um zum Beispiel Musik
zu starten oder anzuhalten. Sie übernehmen die Bedienung des Players.
4.3.4. Content Provider
Content Provider ermöglichen den Datenzugriff und die Datenverwaltung. AndroidAnwendungen können ihre Daten in einer SQL-Datenbank speichern, die vom Framework
bereitgestellt wird und Activities können direkt auf diese Datenbank zugreifen. Wenn
allerdings Daten auch anderen Anwendungen zur Verfügung gestellt werden sollen, ist ein
Content Provider sehr nützlich. Er kann seine Daten einer oder mehrere Anwendungen zur
Verfügung stellen. Beispielsweise wird durch die Bereitstellung eines Content Providers
anderen Anwendungen die Kontaktverwaltung erlaubt und somit die Möglichkeit
bereitgestellt, selbst die Liste der Kontakte auszulesen oder zu ändern.
4.3.5. Intent
Eine weitere Möglichkeit Daten oder Nachrichten zwischen Activities auszutauschen sind die
Intents. Mit ihnen wird auch ein Ü bergang von einer Activity in eine andere ermöglicht. Sie
verbinden verschiedene Komponenten und können mit den sog. Broadcast Intents eine Brücke
zu der Android-Plattform bauen. Durch explizite oder implizite Intents werden die
Bestandteile einer Anwendung aneinandergekoppelt. Bei einem expliziten Intent wird ein
bestimmtes Android-Komponent angesprochen und bei einer impliziten wird die
Entscheidung dem System überlassen, welche Komponente für die Bearbeitung am besten
passt.
4.3.6. Broadcast Receiver
Wie oben erwähnt werden Ereignisse, die auf Systemebene verschickt werden, Broadcast
Intents oder Broadcasts genannt. Um diese abzufangen, werden Broadcast receiver verwendet.
Diese lauschen auf solche Ereignisse und reagieren entsprechend. Sie werden entweder
dynamisch, d.h. in eine Activity oder Service deklariert oder zum Zeitpunkt der Installation in
dem Android Manifest registriert.
14
Abbildung 7: Darstellung der Zusammenarbeit verschiedenen Komponenten[7]
15
5. Vorraussetzungen
Für die Entwicklung einer Android-Applikation werden einige Voraussetzungen benötigt.
Diese werden im Folgenden vorgestellt.
5.1. Die Software
Die Entwicklung der Android Anwendung wurde hier mit der Software Eclipse durchgeführt.
Eclipse ist ein flexibles und leistungsfähiges Open-Source-Framework für EntwicklungsUmgebungen. Sie ist in Java geschrieben und wird für die Entwicklung von Java
Anwendungen eingesetzt. Für Eclipse gibt es eine Vielzahl sowohl quelloffene als auch
kommerzielle Erweiterungen sogenannten Plug-Ins, die u.a auch für den Umgang mit anderen
Programmiersprachen, wie beispielsweise C, C++ oder Perl eingesetzt werden.
Für die Entwicklung Android kompatibler Anwendungen, muss eine fundamentierte Kenntnis
über objektorientiertes Programmieren in Java vorhanden sein.
5.2. SDK und JDK
SDK steht für Software Development Kit und beinhaltet eine Sammlung von Werkzeugen
und Anwendungen, welche für die Entwicklung von Software verwendet werden kann. Für
Android gibt es eine spezielle SDK, die sogenannte Android SDK. Diese wird benötigt um
Java-basierte Applikationen für die quelltextoffene Mobilplattform Android zu erstellen.
Darin sind ebenfalls die Dalvik VM zum Emulieren von mobilen Geräten und ein DebuggingSystem enthalten (als Plug-In für Eclipse). Um Javaprogramme entwickeln zu können, wird
das Java Development Kit (JDK) benötigt. Dieses sollte gleich mit Eclipse mitinstalliert
werden.
5.3. Die Programmiersprache Java
Java ist eine der bekanntesten Programmiersprachen. Viele Tools und Programme basieren
komplett oder teilweise auf Java. Ein Vorteil von Java ist die objektorientierte
Programmierung bei welcher Daten und die auf diese Daten anzuwendenden Operationen als
Einheiten, so genannte Klassen, betrachtet werden. Außerdem ist Java leicht zu erlernen. Ein
weiterer Vorteil ist, dass Java Multithreading unterstützt. Es können mehrere Aktionen die
parallel laufen, gleichzeitig ausgeführt werden. Daraus entstehen geringere Wartezeiten (z.B.
durch das Warten auf Benutzereingabe). Die Plattformunabhängigkeit ist auch ein Vorteil.
Java Programme werden in neutralem Code kompiliert und können von jeder Plattform,
welche Java unterstützt, interpretiert und ausgeführt werden.
16
6. Vorgehensweise
Nach der Auswahl der richtigen und passenden Variante für die Erweiterung und dem kurzen
Ü berblick der Architektur, Komponenten und Programmierungsvoraussetzungen von
Android, wird im Folgenden die Planung und Ausführung des Projektes dargestellt.
6.1. Die Planung
Das sichere und umfangreiche Fotohandy-PIN Programm wurde als Basis für die vorliegende
Arbeit verwendet. Dieses sollte mit der eigenen Applikation erweitert werden, welche eine
Auswahl an Symbolen bereitstellt. Bis zur Fertigstellung wurden mehrere Versionen realisiert
mit dem Versuch, eine benutzerfreundliche und leicht verständliche Anwendung zu kreieren.
Dies wird im nächsten Abschnitt ausführlicher vorgestellt.
Nach der vollständigen Implementierung der Applikation, wurde sie in den Gesamtcode des
Fotohandy-PIN Programms eingefügt. Die entsprechenden Klassen, mit dem die Applikation
zusammenarbeiten sollte, wurden ebenso erweitert, ohne Einfluss auf das Gesamtsystem zu
nehmen. Die Veränderungen sollten dabei möglichst minimal gehalten werden, um
Komplikationen mit anderen Anwendungen zu verhindern.
6.2. Die Ausführung
Anfangs gab es keine klare Vorstellung über das Aussehen der Anwendung. Man sollte durch
wenige Klicks auf das vorhandene Bilderverzeichnis oder auf eine Tastatur zugreifen können,
um die gewünschten Bilder bzw. Symbole auszuwählen. Nach der Auswahl sollten diese in
eine eigene Datenbank gespeichert werden und nach Wunsch wieder aufgerufen werden
können. Dabei wurden die Bilderdateien zuerst auf eine vordefinierte Größe skaliert und
quadratisch dargestellt. Danach wurden sie komprimiert und als Bytearray gespeichert. Da die
Bilder ausschließlich in der Applikation enthalten sind, bräuchte man keine Implementierung
auf Serverseite durchzuführen, sondern konnte den Bildern bzw. den Symbolen die Ziffern 0
bis 9 zuteilen. Es wurde geprüft, ob die entsprechende Auswahl schon in der Datenbank
vorhanden ist, um sichergestellt zu werden, dass es für jede Ziffer nur ein korrespondierendes
Bild oder Symbol gibt. Somit bleiben die Anforderungen für den Server unverändert, da
dieser bei einer Anfrage nur das Passwort aus kodierten Ziffern zugeschickt bekommt.
Die Zuweisung der Ziffern zu den Bildern bzw. Symbolen erfolgte zu Beginn des Projekts
durch das Klicken auf einen entsprechenden Knopf. Dabei wurde man mit Hilfe einer Intent
mit dem Tastatur oder dem Bilderverzeichnis verbunden, wodurch die Auswahl getroffen
werden konnte. Einen Ü berblick der gewählten Symbole konnte durch einen weiteren Knopf
dargestellt werden.
17
Abbildung 8: Darstellung der Benutzeroberfläche im ersten Stadium
Da es mehrere Möglichkeiten gab, wie man diesen Ü berblick dem Benutzer präsentieren
konnte, wurden zwei davon implementiert: eine Liste und ein GridView. Abbildung 8
veranschaulicht wie die Benutzeroberfläche dargestellt wurde.
Diese Anwendung erwies sich für den Benutzer als sehr aufwendig, da mehrere Schritte
durchgeführt werden mussten. Lediglich die Darstellung in einer Liste blieb für das weitere
Projekt erhalten.
Als nächste Möglichkeit wurde die Hauptactivity als Liste der Ziffern von 0 bis 9 dargestellt.
Bei einem Klick auf eine entsprechende Position erschien ein Fenster (AlertDialog) mit drei
Auswahlmöglichkeiten. Der Benutzer konnte sich entscheiden, ob er an dieser Stelle ein Bild
oder ein Symbol für die spätere Repräsentation in einem Tastaturfeld haben möchte.
Alternativ konnten die Ziffern beibehalten werden.
Problematisch war die Initialisierung der Liste. Diese wurde zunächst ausschließlich mit
Ziffern gefüllt, was benutzerunfreundlich war. Als Lösung dazu wurden direkt in der
Anwendung zehn zufälligen, möglichst kleine Bilder eingefügt, die später in die eigene
Datenbank gespeichert wurden. So hat der Benutzer eine Standardeinstellung und muss nicht
für jede Ziffer eine Auswahl treffen. Die daraus entstandene Benutzeroberfläche wird in
Abbildung 9 gezeigt.
Nach der Fertigstellung der Applikation, musste diese in den Code des Fotohandy-PIN
Programms an der passenden Stelle eingefügt werden. Dafür wurde die neue Anwendung
unter den Namen Bild-PIN in den erweiterten Einstellungen platziert. Es wurde eine weitere
Datenbank angelegt, welche zwei Tabellen enthielt. In der ersten Tabelle wurden vom
Benutzer ausgewählte Symbole gespeichert. Der Inhalt dieser Tabelle wurde auch bildlich für
den Benutzer in den erweiterten Einstellungen unter „Bild-PIN festlegen“ dargestellt. Die
zweite Tabelle wurde zunächst mit Informationen gefüllt, wenn ein neuer Account erstellt
wurde und der Bild-PIN aktiviert war, deren Aktivierung durch das Setzen einer Checkbox in
den erweiterten Einstellungen geschah. Diese enthält die User-ID des neuen Accounts und
18
Abbildung 9: Darstellung der überarbeiteten Benutzeroberfläche
die Symbole, welche den Benutzer für diesen Account definierte. Da die User-ID für jeden
Account als eindeutiger Schlüsselwert (Primärschlüssel) dient, ist er einmalig und garantiert
eindeutig. Die Daten aus dieser Tabelle werden für das Zeichnen des neuen Tastaturfeldes
verwendet.
Die Aktivierung des Bild-PINs anhand der Checkbox ist bei der Ausführung wichtig. Durch
das Abfragen des Zustands (gesetzt oder nicht gesetzt) wurde an mehrere Stellen in dem
schon vorhandenen Code des Fotohandy-PIN Programms eine Methode aufgerufen, welche
für das Zeichnen des Tastaturfeldes zuständig ist. Wenn der Benutzer den Bild-PIN aktiviert
und einen QR-Code abfotografiert, bekommt er die Ansicht wie in Abbildung 10 dargestellt.
Hat sich ein Benutzer für die Symbole seines Accounts entschieden, werden diese weiterhin
in dieser Form dargestellt. Wenn der Benutzer seinen PIN ändern möchte, hat er jene Bilder
zur Auswahl, welche er vorher festgelegte. Dies wurde zur eigenen Sicherheit des Benutzers
so implementiert, um Verwirrung zu vermeiden. Falls er neue Symbole möchte, müsste er den
Account neu anlegen.
Abbildung 10: Darstellung des Endergebnisses
19
6.3. Intern
Die in dem obigen Abschnitt beschriebene Applikation besteht aus insgesamt sieben Klassen
und einem Interface, welches einige Methoden zur Verfügung stellt. Die Funktionalität der
einzelnen Klassen wird im Folgenden kurz angerissen:
•
SymbolList: Dies ist die Hauptactivity der Bild-PIN Anwendung. Sie enthält einen
Adapter, der für die Darstellung der Liste verantwortlich ist. Hier wird der
entsprechende AlertDialog aufgerufen, welcher beim Klick für die vordefinierte
Position die Auswahlmöglichkeiten bereitstellt. Außerdem wurde hier eine Methode
definiert, welche die zehn zufälligen Bilder in der Datenbank speichert.
•
SymbolListAdapter: Diese Klasse dient als Brücke zwischen der Ansicht und den
darunterliegenden Daten. Hier wird festgelegt wie jede Zeile der obigen Liste
auszusehen hat bzw. was in jede Zeile mit welcher Reihenfolge eingefugt.
•
DatabaseBildPIN: Hier wird die Datenbank für die Anwendung angelegt. Alle
Tabellen und Methoden, welche auf die Tabellen zugreifen, werden an dieser Stelle
definiert.
•
Pictureselection: Durch ein Intent wird in dieser Klasse auf das vorhandene
Bilderverzeichnis zugegriffen und eine Auswahl getroffen. Diese Auswahl wird auf
die passende Form gebracht und dann zur Speicherung weitergegeben. Es wird
geprüft, ob das gewählte Bild in der Datenbank vorhanden ist. Ist dies der Fall, wird
dieses Problem dem Benutzer in Form einer Nachricht mitgeteilt.
•
Symbolselection: Es wird eine virtuelle Tastatur erstellt und auf die darauf ausgeübten
Klicks gelauscht. Wie in WaehleBild wird hier überprüft, ob das gewählte Symbol
bereits existiert und das Ergebnis dem Benutzer mitgeteilt.
•
SymbolTasturView: Hier wird die Tastatur gezeichnet, die der Benutzer nach dem
Abfotografieren als Ansicht bekommt.
•
SymbolData: Definiert was die Objekte der Liste enthalten werden, stellt ein
Konstruktor bereit und definiert die Funktionalität der Methoden, welche im Interface
enthalten sind.
20
7.Zusammenfassung
In dieser Arbeit wurde eine Erweiterung des Foto-PIN Verfahrens vorgestellt. Als Aufgabe
wurde das Ersetzen von Ziffern in Passwörtern durch Bilder oder Symbole gestellt. Somit
wurde erzielt die Gefahr des Phishings entgegenzutreten und die Sicherheit des OnlineAccounts zu verstärken.
Zunächst wurde das Konzept des Phishing-Angriffs erläutert und Beispiele solcher typischen
Attacken vorgestellt. Zusätzlich wurden die Gefahren, welche dieser Angriff mit sich bringt,
und einige einfache Schutzmaßnahmen dagegen erwähnt.
In einem zweiten Schritt wurden die verschiedene Möglichkeiten für die Erweiterung des
Foto-PIN Verfahrens dargelegt und anhand deren Vor- und Nachteile die passende Variante
ausgesucht.
Da die Arbeit die Implementierung einer Android-Anwendung voraussetzte, wurde ein
Ü berblick über die Entwicklung von Android und der Aufbau dessen Architektur gegeben. Es
wurden die wichtigsten Komponenten und Voraussetzungen vorgestellt, welche zur
Erstellung einer Anwendung benötigt werden. Die Errichtung der Applikation wurde
schrittweise beschrieben und die Funktionsweise der wichtigsten Klassen kurz geschildert.
Das Ziel der Arbeit wurde erreicht. Eine Anwendung mit benutzerfreundlicher Oberfläche zur
Auswahl von Symbolen oder Bildern wurde erfolgreich implementiert und mit möglichst
wenigen Veränderungen des vorhandenen Codes in das gegenwärtige Foto-PIN Verfahren
integriert. Durch das Zuweisen von Bildern bzw. Symbolen zu den Ziffern 0 bis 9 wurde,
ohne Veränderungen auf Serverseite, die Möglichkeit des Abhörens von Passwörtern effektiv
verhindert und somit die bessere Schutz der Benutzerdaten gewährleistet. Zu erforschen ist
jedoch noch, wie man das Verfahren gegen Trojaner auf dem mobilen Gerät erweitern kann,
um diese noch sicherer zu gestalten.
21
Literaturverzeichnis
(1) „App Märkte – Deutschland Im Vergleich.“ Mobile Zeitgeist. Web.
<http://www.mobile-zeitgeist.com/2011/11/14/app-markte-deutschland-imvergleich/>.
(2) Becker, Arno, und Marcus Pant. Android: Grundlagen Und Programmierung. 1st ed.
Heidelberg: Dpunkt-Verl., 2009. Buch.
(3) „BSI: Beispiele Phishing-Angriffe.“. BSI: Startseite BSI Für Bürger. Web.
<https://www.bsi-fuer-buerger.de/BSIFB/DE/GefahrenImNetz/Phishing/
BeispielePhishingAngriffe/Beispielephishingangriffe_node.html>.
(4) „Datenübertragung im Mobilfunknetz.“ Web
<http://www.elektronik-kompendium.de/sites/kom/0910141.htm>
(5) „Deutschland Ist in Der Hand Von Android.“ Smartphones, Tablets & Mehr | Stereopoly Das Web- & Gadget-Blog. Web.
<http://www.stereopoly.de/deutschland-ist-in-der-hand-von-android/>.
(6) „Google: Android Market Führt Erstmals Mehr Als 400.000 Apps. “ DSL, Handy Oder
UMTS Flatrate :: Alle Flatrates Auf FLAT.DE. Web.
<http://www.flat.de/news/handy/1918-google-android-market-fuehrt-erstmals-mehrals-400000-apps.html>.
(7) Hübner, Konrad, und Henning Böger. „Google Android – So funktioniert’s“. Artikel 2009
<http://it-republik.de/jaxenter/artikel/Google-Android-%96-So-funktioniert%92s2177.html>
(8) Kieseberg, Peter (et al). “QR Code Security.” Secure Business Austria. Web.
<http://www.sba-research.org>.
(9) Moore, Tyler, und Richard Clayton. “An Empirical Analysis of the Current State of
Phishing Attack and Defence”. Artikel
(10) „Open Handset Alliance – Wikipedia.“ Wikipedia – Die Freie Enzyklopädie. Web.
<http://de.wikipedia.org/wiki/Open_Handset_Alliance>.
(11) „Smartphone-Statistik Für Das Vierte Quartal 2010 - Blog Rund Ums Handy Von
Handysuche.net | Handysuche.net News.“ Handy-Suche Und Handy-Vergleich Zu
Aktuellen Handys, PDAs Und Smartphones. Web
<http://www.handysuche.net/news/index.php/smartphone-statistik-fuer-das-viertequartal-2010/>.
(12) „Täglich Werden 700.000 Android-Geräte Aktiviert.“ Handy Portal Inside-handy.de |
Handys, Tablets Und Tarife. Web.
<http://www.inside-handy.de/news/23670-jedes-geraet-zaehlt-nur-einmal-taeglichwerden-700-000-android-geraete-aktiviert>.
22
(13) „Was Ist Phishing.“ Antivirus Software Solutions for Home and for Business. Web
<http://www.avira.com/de/support-what-is-phishing>.
(14) „What Is Android?“ Android Developers Web
<http://developer.android.com>.
23