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 [email protected] 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