Institut für Parallele und Verteilte Systeme Universität Stuttgart Universitätsstraße 38 D–70569 Stuttgart Bachelorarbeit Nr. 147 Vertrauen Jenseits Datenschutz und Datensicherheit Mark Aukschlat Studiengang: Softwaretechnik Prüfer/in: Prof. Dr.-Ing. habil. Bernhard Mitschang Betreuer/in: Dipl.-Inf Christoph Stach Beginn am: 2014-06-19 Beendet am: 2014-12-19 CR-Nummer: D.4.6, K.6.5 Kurzfassung Smartphones sind zu einem festen Bestandteil des heutigen Lebens geworden. Besonders auf Grund der breit gefächerten Möglichkeiten durch Software von Drittanbietern, sogenannte Applikationen oder Apps erfreuen sie sich großer Beliebtheit. Doch neben ihrem Nutzen bringen die Apps auch Probleme mit sich, da jeder sie erstellen kann. Manche Apps bieten nur eine mangelhafte Funktionalität, andere richten Schaden an oder stehlen die privaten Daten des Benutzers. Bevor eine App installiert wird, sollte man sich die Frage stellen, ob man dieser App überhaupt vertraut. Dazu wird in dieser Arbeit ergründet, was es bedeutet einer App zu vertrauen. Es werden bereits bestehende Vertrauenssysteme sowie Metriken betrachtet und mit der TriMetrik eine eigene Metrik für das Vertrauen in eine App aufgestellt. Mit TriTrust werden zudem Konzept zur Umsetzung dieser Metrik vorgestellt. 3 Inhaltsverzeichnis 1. Einleitung 9 1.1. Ausgangssituation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2. Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2. Definition von Trust 13 2.1. Grundlegende Definition von Vertrauen . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2. Definitionen von Vertrauen in der Informatik . . . . . . . . . . . . . . . . . . . . . . . 16 2.3. Definition von Vertrauen in eine App . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.4. Definition Reputation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3. Related Work 21 3.1. Reputationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2. Vertrauenssysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.3. Vertrauen in das Android-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.4. Vertrauen in die App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5. Vertrauen in den Entwickler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4. Anforderungen und Umsetzungen 29 4.1. Grundaussage einer Vertrauensmetrik . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2. Die Faktoren und Bereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.3. Reputation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4. Nutzerverhalten der App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.5. Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.6. Kontroll- und Datenflussanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.7. Vertrauen in andere Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 5. TriMetrik 51 5.1. Ergebnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2. Bereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.3. Ratings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.4. Nutzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.5. Permissions und Riskrating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5.6. Problemmeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6. TriTrust 63 6.1. Ist-Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.2. Mögliche Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5 6.3. Kooperation mit Privacy-Systemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7. Implementierung 71 7.1. Ansatz und Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.2. Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 8. Bewertung 75 8.1. Erfüllung der Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8.2. Erfüllung der Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 9. Zusammenfassung und Ausblick 77 A. Anhang 81 A.1. Kritische Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 Literaturverzeichnis 83 6 Abbildungsverzeichnis 4.1. Kategorien des Vertrauens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.2. Vertrauensfaktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.3. Reputation im Play Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4. Problemmeldung für Apps von TrustGo . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.5. Windows Problemmeldung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.6. TaintDroid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.7. Beeinflussung des Vertrauens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1. Ist-Zustand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.2. M1 - Erweiterung des Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.3. M2 - Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.4. M3 - Erweiterung des App-Marktplatzes . . . . . . . . . . . . . . . . . . . . . . . . . 65 6.5. Einschränkung der Resource/Permissions . . . . . . . . . . . . . . . . . . . . . . . . . 68 7.1. Einfügen in den Play Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.2. Übersichtanzeige Vertrauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.3. Detailanzeige Gefahrenpotenzial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Tabellenverzeichnis 4.1. Übersicht Vertrauens-Faktoren in anderen Metriken . . . . . . . . . . . . . . . . . . . 34 4.2. Übersicht Ansätze für Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.1. Problemmeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.1. Zugriff auf Faktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 A.1. Kritische Permissions Gefahrenpotenzial . . . . . . . . . . . . . . . . . . . . . . . . . 81 A.2. Kritische Permissions private Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 7 1. Einleitung 1.1. Ausgangssituation In der heutigen Zeit sind Smartphones zweifellos ein fester Bestandteil unseres Lebens geworden. Wir tragen diese kleinen Geräte immer bei uns und viele Menschen wirken fast verloren, wenn sie ihr Mobiltelefon nicht bei sich haben. Laut einer eMaketer-Studie1 wird davon ausgegangen, dass im Jahr 2014 weltweit über 1,75 Milliarden Menschen ein Smartphone besitzen. Das Leistungsspektrum der Smartphones hat dabei ständig zugenommen und ist inzwischen mit dem von Desktop-PCs zu vergleichen. Ein Smartphone verbindet die Möglichkeiten der Telekommunikati- on eines herkömmlichen Mobiltelefons mit den Funktionen eines PDA oder Tablett-Computers. Die Erwartungshaltung an ein jedes Smartphone umfasst dabei, dass es auch als mobiles Medienabspiel- gerät, zur Verwaltung von Terminen und Kontakten, als Navigationsgerät, Spielkonsole, Foto- und Videokamera oder gar mittels NFC zum Bezahlen an der Kasse verwendet werden kann. Die Vielseitigkeit von Smartphones wird dabei durch ein breites Angebot an Software von Drittan- bietern unterstützt. Diese mobilen Applikationen, auch Apps genannt, können dabei nicht nur von Firmen stammen, sondern auch von privaten Entwicklern. Alleine der Google Play Store2, der offizielle App-Marktplatz für Smartphones mit dem Android-OS, beinhaltet über 1,3 Millionen Apps. Insgesamt gibt es für Geräte mit dem Android-OS über 30 App-Marktplätze, wobei der Amazon Appstore3 oder der von Samsung speziell für seine eigenen Smartphones gedachte Store Samsung Apps4 zu den bekannteren zählen. Geräte mit dem Android-OS dominieren dabei den Markt. Laut einer IDC-Studie5 ist auf 84,4% der im dritten Quartal 2014 verkauften Geräte Android installiert. Das hohe Angebot der Apps wird dabei durch die Vielzahl an Märkten unterstützt, wobei hohe Sicherheitsmaßnahmen bei diesen Märkte nicht garantiert sind. Auch wenn der Play Store die Kontrolle von eingestellten Apps verschärft, fallen sie doch im Vergleichsweise zum App-Store von Apple noch gering aus. Auf Grund des hohen Marktanteils von Android, der Vielzahl an Apps und des offenen Sicherheitskonzept von Android wird sich diese Arbeit vorwiegend mit Android Apps beschäftigen. Die Vielfalt an Apps bringt nämlich auch ihre Probleme mit sich. Viele Apps sind niedriger Qualität und bringen nicht die erwarteten Funktionalitäten mit sich. Manche Apps sind sogar schadhafter 1http://goo.gl/wpACCI 2https://play.google.com/store 3http://www.amazon.com/mobile-apps/b?node=2350149011 4http://apps.samsung.com 5http://www.idc.com/prodserv/smartphone-os-market-share.jsp 9 1. Einleitung Natur. Nicht immer sind sich die Benutzer im Klaren, welche Rechte eine App, die sie auf ihrem Gerät installieren, besitzt und was die App mit diesen Berechtigungen anstellen kann. Dabei kommt es oft zur unerwünschten Verwendung privater Daten wie etwa Fotos, Kontaktdaten oder Nachrichten durch die App. Diesem Missbrauch ist der Benutzer sich meist nicht bewusst oder kann ihn nicht verhindern, solange er die App weiter verwenden will [Bac12]. Die Bedrohungen durchApps für den Benutzer lassen sich dabei in zwei grundsätzlich unterschiedliche Gefahrenquellen zusammenfassen. Zum einen müssen das System und seine Daten vor Manipula- tion oder ungewollten Zugriffen geschützt werden. Sicherheitslücken in Apps oder dem mobilen Betriebssystem werden von Angreifern gezielt ausgenutzt, um vom Nutzer unbemerkt Aktionen durchzuführen, die eigentlich nicht legitimiert sind und potenziell Schaden anrichten können. Hierbei spricht man von Information Security. Uscilowski [Usc13] stellte dabei fest, dass das Wachstum vom Schadsoftware für mobile Geräte überproportional stärker ist als für Desktop-PCs. Erst allmählich reagieren die Hersteller von Sicher- heitssoftware auf diese neuartigen Gefährdungen. Zunehmend entwickelt sich ein Markt für mobile Sicherheitssoftware. Einige der größten Anbieter für Computer-Security wie etwa Kaspersky6, Avira7 und McAfee8 brachten Programme für mobile Plattformen heraus. Das andere Problem ist, dass dem Nutzer die Möglichkeit geboten werden muss reglementieren zu können, in welchem Umfang und auf welche Art der Daten eine App legal zugreifen darf. Funktionen dieser Art werden als Data Privacy zusammengefasst. Mit AppGuard [BGH+13] oder Dr. Android and Mister Hide [JMV+12] gibt es bereits Ansätze dazu, die dem Benutzer erlauben einer App den Zugriff auf Daten zu verweigern und wenn nötig zufällig oder bewusst falsch generierte Daten an die App zu liefern, wodurch keine privaten Informationen verraten werden. Jedes System setzt dabei auf andere Ansätze und Strategien [SM13]. Die bisherigen Lösungsansätze konzentrieren sich meistens jedoch nur auf eine der Gefahrenquel- len, was aus Benutzersicht nicht zufriedenstellend ist. Aus diesem Grund führten Stach und Mit- schang [Sta13a] [Sta13b] [SM+14] die Privacy Managment Platform (PMP), ein kontextsesitives und absturzsicheres Berechtigungssystem für Android ein. Mit PMP lassen sich Berechtigungsan- passungen zur Laufzeit bewerkstelligen, private Daten auf Wunsch beliebig randomisieren und der Nutzer wird jederzeit über die Konsequenzen seiner Einstellungen auf den Leistungsumfang einer App informiert. Mittels eines sicheren Datencontainers (SDC) lässt sich die PMP leicht um wichtige, die Information Security betreffende, Funktionen erweitern. 1.2. Problemstellung Security- und Privacy-Systeme bieten dem Benutzer also Möglichkeiten, die Berechtigungen einer App einzuschränken. Wenn eine App keine Berechtigungen besitzt, kann sie auch keinen Schaden anrichten. Schränkt man die Berechtigungen einer App – in Android Permissions genannt – ein, 6http://www.kaspersky.com/de/android-security 7http://www.avira.com/android-phone/download-at 8http://home.mcafee.com/store/mobile-security 10 1.2. Problemstellung leidet darunter eigentlich immer auch die Funktionalität der App. Wer nicht Gefahr laufen will, dass eine App den eigenen Standort an Dritte sendet, verbietet ihr die Verwendung von Permissions zur Standortbestimmung. Dadurch ist die Privacy gewährt, aber etwa eine Navigations-App wird nutzlos, da sie den Benutzer nicht zum Ziel lotsen kann ohne seine Position zu kennen. Um dieser Problematik entgegen zu wirken, muss man sich die Frage stellen, ob man einer App (und ihrem Entwickler) vertrauen kann. Das Vertrauen spielt in der Informatik bereits in vielen Bereichen wie dem Onlinehandel oder in Netzwerken eine große Rolle [AG07]. Es gilt nun auch eine Lösung zu finden, um das Vertrauen in eine App zu berechnen. Dabei sollte allen Bereiche Beachtung geschenkt werden, die dafür eine Rolle spielen könnten. Neben der Frage nach der Funktionalität der App sollten ihre Bedrohungen für das System und die Daten auf dem Smartphone analysiert werden. Es sollten einerseits Empfehlungen abgegeben werden, ob eine App auf Grund des für sie berechneten Vertrauens installiert werden kann oder ob man es besser lassen sollte. Andererseits könnten auch Überlegungen angestellt werden, sodass begründete Security- und Privacy-Maßnahmen unternommen werden können, will man die App trotz des niedrigem Vertrauen nutzen. Yan et al. untersuchten die Auswirkung eines angezeigten Vertrauens-Wertes auf die Bereitschaft von Benutzern eine App weiter zu verwenden. Dabei wurde festgestellt, dass Benutzer bei einem niedrigen Vertrauens-Wert tatsächlich bereit waren die Benutzung einer App nicht fortzusetzen. Außerdem bestand ein nicht zu vernachlässigendes Interesse über die Berechnung des Vertrauens- Wertes. Die Einführung eines solchen spielt auch aus Sicht des gewöhnlichen Smartphone-Nutzers eine Rolle [YLNY13]. In dieser Arbeit wird der aktuelle Stand der Forschung bezüglich Technik zum Thema Vertrauen analysiert und kritisch bewertet. Dabei wird ein eigener Best-of-BreedAnsatz, der allenAnforderungen für die nachvollziehbare Berechnung eines Vertrauens-Wertes entspricht, entwickelt. Außerdem werden eine Metrik, Konzeptvorschläge zur Umsetzung der Metrik und ein Prototyp für eines der Konzept vorgestellt. Gliederung Die Arbeit ist in folgender Weise gegliedert: Kapitel 2 – Definition von Trust: Zunächst wird der Begriff Vertrauen definiert, wie er im gesell- schaftlichen Sinne, im weiten Gebiet der Informatik und auf Android App bezogen verstanden wird. Dabei wird abschließend für das Vertrauen eine eigene Definition gegeben. Kapitel 3 – Related Work: In Kapitel 3 werden bereits bestehende Ansätze und Techniken vorge- stellt. Neben Vertrauens- werden auch Security- und Privacy-Systeme aufgezählt, da später eine Kombination dieser mit dem entwickelten Vertrauens-System diskutiert wird. Kapitel 4 – Anforderungen und Umsetzungen: In Kapitel 4 werden die Anforderungen an eine Vertrauens-Metrik für Android Apps aufgezählt. Dabei wird betrachtet, wie die in Kapitel 3 vor- gestellten Systeme das Vertrauen berechnen. Aus diesen Erkenntnissen werden Überlegungen aufgestellt, wie eine eigene Metrik aussehen müsste. 11 1. Einleitung Kapitel 5 – TriMetrik: Kapitel 5 setzt die Überlegungen aus Kapitel 4 in eine eigene Metrik, die TriMetrik um. Kapitel 6 – TriTrust: Es werden in Kapitel 6 Konzepte präsentiert, wie die in Kapitel 5 aufgestellte Metrik mit einem Vertrauens-System (TriTrust) realisiert werden kann. Kapitel 7 – Implementierung: Kapitel 7 beschreibt die Implementierung eines Prototypen für eines der Konzepte aus Kapitel 6. Kapitel 8 – Bewertung: Abschließend wird eine Bewertung der Metrik durchgeführt, ob sie allen Anforderungen entspricht. Kapitel 9 – Zusammenfassung und Ausblick: Fasst die Ergebnisse der Arbeit zusammen, ver- gleicht das Erreichte mit den Zielen und stellt Anknüpfungspunkte für zukünftige Weiterent- wicklung von Metrik und Konzept vor. 12 2. Definition von Trust Ziel dieser Arbeit ist es, eine Metrik aufzustellen, um das Vertrauen in eine App zu berechnen. Auch wenn primär Android Apps in dieser Arbeit betrachtet werden, ist diese Definition für das Vertrauen in eine App betriebssystemunabhängig. Bevor jedoch Methoden und Konzepte zur Berechnung und Modellierung von Vertrauen betrachtet werden, muss definiert werden, was überhaupt unter Vertrauen verstanden wird und wie dieses Phänomen auf eine App angewandt werden kann. Dazuwird in Unterkapitel 2.1 zunächst ergründet, auf welche Arten Vertrauen grundlegend verstanden wird. Außerdem wird betrachtet, welche Eigenschaften Vertrauen besitzt und wie diese verwendet werden können, um eine Definition und später auch die Metrik aufzustellen. Im Anschluss werden in Unterkapitel 2.2 einige Definition betrachten, die bereits für Vertrauen in der Informatik gemacht wurden. In Unterkapitel 2.3 wird betrachtet, wie in anderen Arbeiten Vertrauen in Appen definiert wird. Mit Hilfe dieser Definitionen, aber auch den in den vorherigen Unterkapiteln gewonnenen Erkenntnissen wird eine eigene Definition für das Vertrauen in eine App gegeben. Abschließend wird in Unterkapitel 2.4 der Begriff der Reputation definiert, da er in den folgenden Kapiteln eine Rolle spielen wird und oft falsch verwendet oder verstanden wird. 2.1. Grundlegende Definition von Vertrauen Zahlreiche Definitionen beschäftigt sich mit der Thematik des Vertrauens. Sie alle aufzuzählen würde den Rahmen dieser Arbeit sprengen und viel Redundanz schaffen. Im Folgenden beschränkt sich dieses Arbeit auf drei Definitionen nach Gambetta, Josang sowie von Grandison und Sloman. Diese Definitionen zählen zu den ammeisten zitierten und geben einen guten Überblick über das Verständnis von Vertrauen. Aus ihnen werden grundlegende Erkenntnisse über das Vertrauen gewonnen, die später für unsere Problemstellung erweitert werden. Zunächst betrachten wir die Definition von Gambetta et al. [Gam88]: Definition 2.1.1 (Vertrauen nach Gambetta et al. [Gam88]) Eine besondere Ebene der subjektiven Wahrscheinlichkeit mit welcher ein Agent annimmt, dass ein anderer Agent oder eine Gruppe von Agenten eine bestimmte Aktion ausführt, in zweierlei Hinsicht, bevor er solche Aktionen beobachten kann (oder unabhängig von seiner Möglichkeit jemals eine solche Aktion beobachten oder herbeiführen zu können) und in einem Kontext in welchem dies seine eigenen Aktionen beeinflusst. 13 2. Definition von Trust Vertrauen ist nach Gambetta also eine subjektive Annahme, die ein Agent von einem anderen Agenten oder einer Gruppe von Agenten hat. Gambetta definiert diese Annahme direkt in einer „Wahrschein- lichkeit“, also in welchem Maße wir annehmen, dass der Agent so handelt wie angenommen. Diese Annahme wird um die Bedingungen erweitert, dass der Agent der Vertrauen hat, noch nie den anderen Agenten eine solche Aktion hat ausführen sehen und die Aktion des anderen Agenten die Aktionen des vertrauenden Agenten beeinflusst. Wir haben also als Eigenschaften für das Vertrauen erhalten, dass dieses eine subjektive Annahme mit Wahrscheinlichkeit ist, welche die Aktionen anderer Betrifft. Dabei spielt die Unwissenheit (der Agent hat nie eine solche Aktion gesehen und könnte sie eventuell auch niemals sehen) genauso wie die Tatsache, dass der Vertrauende selber durch diese Aktion betroffen ist. Weitere Eigenschaften von Vertrauen lassen sich aus der Definition von Jøsang [Jøs96] ziehen. Dabei sei angemerkt, dass in dieser Definition und in weiteren von Entitäten die Sprache ist, welche sich jedoch nur in der Bezeichnung, nicht aber in der Bedeutung vom Agenten unterscheiden. In diesem Kapitel wird um Kontinuität zu bewahren der Begriff des Agenten weiterhin verwendet werden – die Verwendung des Begriffes Entität wird in den zitierten Definitionen jedoch belassen. Definition 2.1.2 (Vertrauen nach Jøsang [Jøs96]) Der Glaube dass sie [die Entität in die man Vertrauen hat] in ihrem Verhalten keine bösartige Absichten hat. In dieser Definition bedeutet Vertrauen die Annahme, dass ein Agent in seinem Verhalten keine bösartigen Absichten hat. Weniger als eine Eigenschaft für Vertrauen direkt ändert diese Definition unseren Kontext. Nach Gambette konnte ein Agent noch eine Handlung durchführen oder eben nicht und über die Konsequenzen ist nichts weiter bekannt. Nun kann klar definiert durch die Aktionen eines Agenten Schaden entstehen. Vertrauen bedeutet also auch zu glauben, dass ein Agent keinen Schaden anrichtet. Aus der Definition von Grandison und Sloman [GS00] lassen sich noch weitere Erkenntnisse über das Vertrauen gewinnen: Definition 2.1.3 (Vertrauen nach Grandison und Sloman [GS00]) Der feste Glaube in die Kompetenz einer Entität verlässlich, sicher und zuverlässig in einem spezifizierten Kontext zu agieren. Diese Definition verfeinert noch die Bedingungen für das Verhalten eines Agenten, aber auch die Umgebung. Es gibt einen klar spezifizierten Kontext, in dem die Fähigkeit des Agenten bewertet wird, verlässlich, sicher und zuverlässig zu agieren. Vertrauen ist in dieser Definition also der Glaube daran, ob und wie der Agent dazu fähig ist. Ob er eine Aktion durchführt und ob diese schädlich sein könnte, wird nun also um die Qualität erweitert, mit welcher der Agent die Aktion durchführt. Neben diesen Erkenntnissen zum Vertrauen lassen sich noch ein paar grundlegende Eigenschaften für Vertrauen festlegen. Diese entspringen den Definitionen und mögen offensichtlich erscheinen, doch in der späteren Diskussion für eine eigenen Definition in Unterkapitel 2.3 und bei der Aufstellung der Metrik in Kapitel 5 wird auf diese zurückgegriffen und so ist eine formale Festlegung hilfreich. 14 2.1. Grundlegende Definition von Vertrauen 2.1.1. Eigenschaften von Vertrauen Gutscher et al. [GHS08] sowie Yan undHoltmanns [YH08] versuchten die Eigenschaften von Vertrauen zu formalisieren. Hier ist eine Auflistung dieser Eigenschaften gegeben, welche sich aus beiden Versuchen zusammensetzt1. (1) Vertrauen ist gerichtet: Vertrauen ist eine gerichtete Beziehung zwischen einem Vertrauendem (trustor) und einem Vertrautem (trustee). (2) Vertrauen ist nicht symmetrisch: Wenn A Vertrauen in B hat, impliziert das nicht notwendi- gerweise, dass B Vertrauen in A hat. (3) Vertrauen kann transitiv sein: Aus „A vertraut B“ und „B vertraut C“ kann „A vertraut C“ folgen, muss aber nicht. Dies darf nicht als Fakt genommen werden, sondern muss von Fall zu Fall neu entschieden werden. (4) Vertrauen ist subjektiv: Vertrauen ist eine persönliche Meinung, ein subjektives Phänomen, das von verschiedenen Faktoren und Bedingungen abhängt. (5) Vertrauen ist kontextabhängig: Vertrauen ist eine subjektive Meinung von einer Entität in einem bestimmten Kontext. (6) Vertrauen ist messbar: Vertrauenswerte können verwendet werden um die verschiedenen Vertrauensgrade zu beschreiben, die eine Entität von einer anderen hat. (7) Vertrauen ist abhängig von der Vergangenheit: Vergangene Erfahrungen können Einfluss auf den aktuellen Vertrauenswert haben. (8) Vertrauen ist dynamisch: Vertrauen ändert sich über die Zeit hinweg durch Erfahrungen oder Informationen, die ich mit der anderen Entität gemacht oder über sie erhalten werden. (9) Vertrauen kann eine zusammengesetzte Eigenschaft sein: Vertrauen ist eine Zusammen- setzung vieler Attribute: Verlässlichkeit, Zuverlässigkeit, Ehrlichkeit, Aufrichtigkeit, Sicherheit, Kompetenz und Pünktlichkeit, welche abhängig von der Umgebung in welcher Vertrauen spezifi- ziert wird, beachtet werden müssen. Aus der Definition 2.1.1 von Gambetta lässt sich dabei folgende Ergänzung für diese Liste machen, auf die später zugreifen werden wird: (10) Unwissen verlangt Vertrauen: Wenn alle Fakten bekannt sind, wird Vertrauen nicht benötigt oder es ist von geringerer Bedeutung. Je weniger von einem Agenten bekannt ist, desto wichtiger ist, welches Vertrauen man in ihn hat. 1Eigenschaften aus Gutscher: (2); (3); (8); Eigenschaften aus Yan: (1); (4); (5); (6); (7); (8); (9) 15 2. Definition von Trust Eine wichtige Eigenschaft in dieser Liste ist hierbei Eigenschaft (6). Dass Vertrauen messbar ist, ist Voraussetzung dafür, dass man Vertrauen modellieren und berechnen kann. Ohne diese Eigenschaft wäre die Aufstellung einer Metrik eine fruchtlose Arbeit. Alle Arbeiten - wie auch diese hier - die sich mit der Berechenbarkeit und Metriken für Vertrauen beschäftigen, begründen sich auf dieser Eigenschaft. In den folgenden Unterkapiteln wird auf diese Liste zurückgegriffen, um Definitionen zu be- und ergründen. Nachdem grundlegende Definitionen von Vertrauen analysiert wurden und die benötigten Eigen- schaften von Vertrauen formal aufgestellt wurden, werden im folgenden Unterkapitel 2.2 Definitionen für Vertrauen im Feld der Informatik betrachtet und erörtert welche Informationen daraus für eine eigene Definition gewonnen werden können. 2.2. Definitionen von Vertrauen in der Informatik Ein Ansatz für Vertrauen Multi-Agent Systeme stammt von Mui et al. [MMH02a]. Sie definieren Vertrauen dabei wie folgend: Definition 2.2.1 (Vertrauen in Multi-Agent Systemen nach Mui et al. [MMH02a]) Die subjektive Wahrnehmung eines einzelnen Agenten von einem anderen Agenten, die durch die bisheri- gen Begegnungen der beiden miteinander geprägt wurde. Die Subjektivität des Vertrauens in dieser Definition ist nichts Neues. Interessanter ist in diesem Fall, dass zur Bildung von Vertrauen bereits Interaktion zwischen den beiden Akteuren geherrscht haben muss. Dies ist problematisch, wenn man es auf die Problemstellung dieser Arbeit beziehen will, da man den Vertrauenswert für eine App auch zu Rate ziehen will, um zu entscheiden, ob man diese überhaupt installieren will. Hat man also keine eigenen Erfahrungen mit dem anderen Agenten gemacht, muss man sich auf die Erfahrungen anderer verlassen. Hierbei wird Eigenschaft (3) von Vertrauen verwendet. Wenn andere Personen der App vertrauen und diesen Personen vertraut wird, folgt, dass man der App vertrauen kann. Betrachtet man nicht die Meinung einer einzelnen Person, sondern die Meinung der breiten Masse, wird dieses Meinungsbild auch als Reputation aufgegriffen. Eine ausführliche Erläuterung zur Reputation und welche Rolle sie für das Vertrauen spielt, wird in Unterkapitel 2.4 erläutert. Eine weitere Definition für Vertrauen stammt von Corritore et al. [CKW03] und bezieht sich auf On-line Systeme: Definition 2.2.2 (Vertrauen in On-line Systemen nach Corritore et al. [CKW03]) Die zuversichtliche Erwartung, dass in einer risikobehafteten Situation online nicht jemandes Schwach- stellen ausgenutzt werden. In dieser Definition findet man wieder die Möglichkeit Schaden zuzufügen und ob dies geschehen wird, als zentralen Punkt des Vertrauens. Während nach Eigenschaft (8) Vertrauen eine zusammengesetzte 16 2.3. Definition von Vertrauen in eine App Eigenschaft ist, beziehen sich diese Definitionen nur auf einen einzelnen Punkt. Dies kann jedoch daher rühren, dass der Kontext keine anderen Bedingungen verlangt oder manche Bedingungen als selbstverständlich angesehen werden. In der eigenen Definition für Vertrauen in Appen wird später darauf geachtet, eine möglichst genaue Definition aufzustellen, um keinen Spielraum für Mutmaßungen zu zulassen. Die Rolle von Schadpotenzial und Sicherheit spielt in der Definition für Vertrauen eine große Rolle. Für Yan und Holtmanns [YH08] „geht Vertrauen über die Security hinaus. Vertrauen ist eine erweiterte Lösung für Security.“ Vertrauen ist also eine Lösung jenseits von unbegründeten Security- und (um der Problemstellung aus Kapitel 1 zu entsprechen) Privacy-Maßnahmen. Hat man Vertrauen in einen Agenten, dass er einem keinen Schaden zufügen kann, sind die Security- und Privacy-Maßnahmen weniger bis gar nicht von Nöten. Im Umkehrschluss spielt Vertrauen eine geringere Rolle (zumindest unter diesen Bedingungen), wenn man erhöhte Security- und Privacy- Maßnahmen anwenden. Es besteht also ein Zusammenhang zwischen Security, Privacy und Vertrauen. Dies entspricht der Kontext-Eigenschaft (5) von Vertrauen. Natürlich ist es Ziel dieser Arbeit die Richtung zu Betrachten, in der das Vertrauen die wichtigere Rolle spielt, trotzdem werden in Ka- pitel 5 und 6 Überlegungen angestellt, wie das Vertrauen eine geringere Rolle spielen kann, wenn Securtiy- und Privacy-Maßnahmen erhöht werden oder wie es genutzt werden kann, um diese gezielter einzusetzen. Nachdem in Unterkapitel 2.1 der Begriff des Vertrauen in seiner grundlegenden Bedeutung ergründet und die Eigenschaften von Vertrauen betrachtet wurden, sowie in diesem Unterkapitel Definitionen für Vertrauen in der Informatik analysiert wurde, wird nun in Unterkapitel 2.3 eine Definition für das Vertrauen in eine App gegeben werden. 2.3. Definition von Vertrauen in eine App Definitionen für das Vertrauen in App sind noch nicht sehr zahlreich. Für unsere Metrik ist es unerlässlich eine eigene Definition aufzustellen, die als Orientierung für die Faktoren eine Rolle spielt, die in die Metrik einfließen. Um diese eigene Definition aufstellen zu können, wird die Definitionen von Yan et al. [YZD12] betrachtet und dann um die Erkenntnisse erweitert, die in diesem Kapitel gewonnen wurden. Yan et al. definieren das Vertrauen in eine App dabei wie folgt: Definition 2.3.1 (Vertrauen in eine App nach Yan et al. [YZD12]) Der Glaube des Benutzers an eine App eine Aufgabe wie erwartet zu erfüllen. In dieser Definition steht ausschließlich die Funktionalität der App im Vordergrund. Doch wenn es um das Vertrauen in eine App geht, spielen andere Faktoren eine Rolle. Die Definition 2.1.2 von Jøsang für Vertrauen und die Definition 2.2.2 von Corritore et al. für Vertrauen in On-line Systemen beziehen sich wie oben bereits erörtert auf die Möglichkeit und die Bereitschaft des Trustee dem Trustor Schaden zuzufügen. Auch wenn diese es nicht Ziel dieser Arbeit ist eine Security-Lösung zu finden, sollte dieser Aspekt nicht vollständig ignoriert werden. Der Glaube an eine App, kein Schadpotenzial zu besitzen, sollte auf jeden Fall Teil des Vertrauens in eine App sein. 17 2. Definition von Trust Die Bedenken bezüglich der Sicherheit einer App lassen sich auch auf deren Umgang mit privaten Daten erweitern. In einer Umfrage des PewResearchCenter gaben 57% der Teilnehmer an, eine App nicht installiert zu haben, da sie der App zu viel Zugriff auf persönliche Daten gewähren müssten oder eine App wieder deinstalliert zu haben, weil sie herausfanden, wie viele Daten von der App gegen den Willen der Benutzer weitergeleitet wurden, [pew12]. Der Umgang einer App mit privaten Daten spielt also bei vielen Benutzern eine Rolle, wenn es um das Vertrauen in eine App geht. Manche Anwendungen brauchen jedoch den Zugriff auf private Daten, um ihre Funktionalität erfüllen zu können. Da viele kostenlose Appen erst durch Werbung kostenlos bleiben, sind viele Benutzer auch bereit ihre privaten Daten gegen die kostenlose App quasi einzutauschen. Folglich muss der Umgang einer App mit privaten Daten nicht unbeding für das Vertrauen in die App eine Rolle spielen. Es greift dabei Eigenschaft (4) von Vertrauen und zwar, dass dieses subjektiv ist und von den Ansichten des Einzelnen abhängt. Definition 2.3.2 (Vertrauen in eine App) Einer App wird vertraut, wenn sie die versprochenen Funktionalitäten bietet, private Daten nicht gegen den Wunsch des Benutzers weitergibt und möglichst geringes Potenzial besitzt, um Schaden anzurichten. Die TriMetrik, welche in Kapitel 5 aufgestellt wird, orientiert sich an dieser Definition 2.3.2. Dabei entspricht die Definition den Eigenschaften des Vertrauen und den Ansprüchen und Vorstellungen, die heutzutage in Bezug auf App herrschen. Zum Abschluss des Kapitels wird in Unterkapitel 2.4 noch der Begriff der Reputation definiert. 2.4. Definition Reputation Die Reputation eines Agenten wird gelegentlich mit dem Vertrauen in einen Agenten gleichgesetzt. Dies ist jedoch eine falsche Verwendung des Begriffs und es soll im Folgenden eine klare Definition für die Reputation einer App geliefert werden, um später Verwirrung zu vermeiden. Dazu wird zunächst ein Vergleich zwischen den Definitionen von Mui et al. [MMH02a] für Vertrauen in einem Multi-Agent System und die Reputation eines Agenten in einem solchen System gezogen. Die Definition für Vertrauen wurde bereits als Definition 2.2.1 gegeben und analysiert. Zur Erinnerung sei sie noch einmal gegeben: „Die subjektive Wahrnehmung eines einzelnen Agenten von einem anderen Agenten, die durch die bisherigen Begegnungen der beiden miteinander geprägt wurde.“ Vergleichen wir dies nun mit der Definition für die Reputation: Definition 2.4.1 (Reputation eines Agenten in einem Mulit-Agent System nach Mui [MMH02a]) Die Wahrnehmung, die von einem anderem Agenten durch dessen vergangene Aktionen über seine Intentionen und Normen gewonnen wurde. Auffällig bei dieser Definition ist es, dass es bei der Reputation nicht mehr um die Wahrnehmung des einzelnen geht, sondern von allen Agenten, die mit dem Agenten interagiert haben. Während das Vertrauen also die subjektive Wahrnehmung eines Einzelnen ist, ist die Reputation der Eindruck der breiten Masse. Die Reputation ist also der Ruf, den ein Agent bei der Allgemeinheit besitzt, den 18 2.4. Definition Reputation er durch seine Taten gewonnen hat. Dies unterscheidet sich klar vom Vertrauen. Ist sein Verhalten einem anderen Agenten gegenüber immer gutartig, hat dieser ein großes Vertrauen in ihm, ist sein Verhalten gegenüber einem weiteren Agenten immer bösartig, hat dieser ein geringes Vertrauen in ihm. Die Reputation des Agenten würde in diesem Fall mittelmäßig sein. Einen ähnlichen Ansatz lässt sich auch bei Yan et al. [YZD12] finden, wenn man seine Definition für das Vertrauen in eine App mit der Reputation mit der Definition für die Reputation einer App vergleicht. Die Definition für Vertrauen wurde ebenfalls in Definition 2.3.1 gegeben, sie sei aber auch zur Erinnerung wieder gegeben: „Das Glauben des Benutzers an eine App eine Aufgabe wie erwartet zu erfüllen.“ Unter der Reputation verstehen sie: Definition 2.4.2 (Reputation einer App nach Yan) Das öffentliche Vertrauen, berechnet aus direktem oder indirektem Wissen oder Erfahrungen. Nach dieser Definition wird Reputation mit dem öffentlichen Vertrauen gleichgesetzt, was in diesem Fall dem Glauben, berechnet durch gesammelte Informationen ist, ob die App ihre Funktionalität ist, wenn man beide Definitionen miteinander verknüpft. Reputation kann also mehr als Vertrauen sein und weniger. Für die Metrik wird die Reputation als Teil des persönlichen Vertrauens betrachtet. Durch Bewertungen und Berichte anderer wie etwa ein Rating in einem App-Marktplatz bildet sich die öffentliche Meinung einer App. Dieser so entstandene Wert wird in diesem Dokument als Reputation einer App verwendet. Dazu sei Definition 2.4.3 gegeben: Definition 2.4.3 (Reputation einer App) Die öffentliche Meinung von einer App, entstanden durch Bewertungen oder Berichte über die App. Für das persönliche Vertrauen spielen jedoch andere Faktoren noch eine Rolle. Reputation beeinflusst das Vertrauen in eine App, jedoch können eigene Erfahrungen, das persönliche Vertrauen in den Entwickler und andere Faktoren eine Rolle spielen. Welche Faktoren dies im Detail sind, darauf wird in Kapitel 5 genauer eingegangen. In Kapitel 3 werden nun Ansätze und Methoden zum Thema Reputation und Vertrauen, sowie auch inhaltlich verwandte System, die später noch eine Rolle spielen, betrachtet. 19 3. Related Work Vertrauen spielt in der Informatik schon lange eine große Rolle. Marsh stellte 1994 eines der ersten Konzepte eines berechenbaren Vertrauens-Wertes vor und seitdem wurden viele weitere Ansätze in diesem Gebiet geliefert [Mar94]. In diesem Kapitel werden einige der bisherige Ansätze zu Vertrauen und verwandten Themen be- trachtet. Zunächst werden in Unterkapitel 3.1 Reputationssysteme betrachtet, welche Stärken und Schwächen diese besitzen und wo sie bereits im Einsatz sind. Anschließend werden Frameworks und andere Ansätze für Vertrauens-Systeme in Unterkapitel 3.2 vorgestellt. Die darauf folgenden Unterkapitel beschäftigen sich mit Ansätzen für das Android System und dafür geschriebene Apps. Dabei wird zunächst in Unterkapitel 3.3 die Sicherheit des Systems und der Daten vor Zugriffen durch Apps durch Security- und Privacy-Systeme analysiert. In Unterkapitel 3.4 werden Systeme behandelt, welche sich mit dem Vertrauen in eine App direkt beschäftigen. Abschließend wird der Aspekt des Vertrauens in den Entwickler einer App und welche Aufgaben es dort zu bewältigen gibt in Unterkapitel 3.5 behandelt. 3.1. Reputationssysteme Geht es um die Berechnung von Vertrauenswerten, spielen Reputationssysteme oft eine Rolle. In Definition 2.4.2 auf Seite 19 wird die Reputation einer App als ihr öffentliches Vertrauen bezeichnet. Fallen andere Einflussfaktoren, wie sie in Unterkapitel 2.4 etwa für eine App erläutert wurden, weg, kann es sogar sein, dass Vertrauen und Reputation äquivalent sind. Mui et al. geben in [MMH02b] eine Übersicht über die verschiedenen Typologien von Reputation. Außerdem präsentieren sie ein Framework für den Test der verschiedenen Typologien in Hinblick auf die Überlebensfähigkeit eines Agenten in einer evolutionären Version des unvollständige-Information- Spiels. Die selben Autoren beschäftigen sich mit bestehenden Vertrauens- und Reputationsmodelle. Dabei stellen sie fest, dass keine Unterscheidung zwischen dem Vertrauens- und dem Reputations-Wert gemacht werden und dass die soziologischen Eigenschaften von Vertrauen nicht beachtet werden. Er- gänzend präsentieren sie ein eigenes Modell, welches zwischen Reputation und Vertrauen differenziert und somit dieser Schwäche beikommt [MMH02a]. Hoffman et al. [HZNR09] und Fraga et al. [FBM12] geben eine Taxonomie über die Angriffsmethoden und Ziele auf Reputations- und Vertrauenssysteme. Hoffman et al. überprüfen zusätzlich existierende Systeme auf ihre Anfälligkeit für die vorgestellten Angriffe. 21 3. Related Work Malik und Bouguettaya entwarfen mit RATEWeb ein Reputationssystem für Web-Services in Hinsicht darauf, wie hoch die Qualität der Services ist, die diese anbieten. Dabei wird für Nutzer, welche Bewertungen von Services abgeben ein Glaubwürdigkeitswert berechnet. Gibt eine Benutzer viele Bewertungen ab, die als Fake identifiziert werden, sinkt die Glaubwürdigkeit des Nutzers und somit der Einfluss seiner Bewertungen auf die Reputation eines Service [MB09]. Hussain et al. stellen Mechanismen vor, wie etwa das FC direct trust value-based decision making methodology und die FC reputation-based trust decision making methodology, mit deren Hilfe ein Vertrauens- beziehungsweise ein Raputationswert für einen Agenten berechnet werden kann. Au- ßerdem können Aussagen darüber getroffen werdem, wie sich dieser Wert zu einer bestimmten Zeit entwickeln wird [HCH08]. 3.2. Vertrauenssysteme Liu et al. präsentieren mit StereoTrust ein gruppenbasiertes Vertrauensmodel. In diesem werden unbekannte Agenten auf Grund von ähnlichen Eigenschaften (Stereotypen genannt) in Gruppen mit Agenten eingeteilt, mit denen bereits Interaktion bestand. Das Vertrauen, das man in die bekannten Agenten setzt, wird dabei auf die anderen Agenten der Gruppe angewandt, wenn man einen Ver- trauenswert braucht, da man mit diesen interagieren will. Stehen Informationen von Dritten über die Agenten zur Verfügung, wird die Erweiterung d-StereoTrust verwendet, welche mit Hilfe dieser Informationen jede Gruppe in eine gute und schlechte Subgruppe einteilen und eine noch genauere Einschätzung des Vertrauenswertes zulassen [LDRL09]. Trust ME von Huerta-Canep et al. ist ein Vertrauens-System für mobile Umgebungen. Dabei wird der Vertrauenswert in einen anderen Agenten aus drei Quellen berechnet. Erstens persönlichen Erfahrungen mit dem anderen Agenten. Zweitens Informationen dritter Agenten über den anderen Agenten (Reputation). Und drittens Ähnlichkeit von Interessen mit dem anderen Agenten, die man durch direkte Kommunikation mit diesem erfährt. Diese Vielfältigkeit an Quellen zeichnet diesen Ansatz aus [HCLH11]. Jiang et al. entwickelten ein Framework, welches ebenfalls Vertrauenswert in mobilen Umgebun- gen berechnet. Das Vertrauensmodell erweitert dabei den vorhandenen Security Manager. Für die Berechnung des Vertrauenswertes werden Erfahrungen und Empfehlungen verwendet [JK07] 3.3. Vertrauen in das Android-System Im Folgenden werden die Ansätze, die sich mit Android im Speziellen beschäftigen, betrachtet. Auch hier gibt es bereits eine große Zahl an Ideen und Methoden. Dabei unterteilt man Systeme in drei große Bereiche, wie das Vertrauen in eine App gesteigert werden kann. Dies wären Privacy (das Vertrauen in die eigene Urteilskraft), Security (das Vertrauen in das System) und Vertrauen (in eine App). Auch wenn es wie bereits angesprochen das Ziel dieser Arbeit ist, nach Lösungen jenseits von Security und Privacy zu suchen, wird auf diese beiden Gebiete eingegangen und mögliche brauchbare Ansätze für ein Vertrauens-System analysiert. 22 3.3. Vertrauen in das Android-System Diese werden betrachtet, da ein Einsatz dieser Systeme das Vertrauen in Apps bezüglich Gefahrenpo- tenzial und Umgang mit privaten Daten in sofern steigern kann, dass die App dann keine Möglichkeit mehr hat Schaden anzurichten, da sie überwacht. Dies steigert vielleicht nicht das Vertrauen in die App, aber man muss sich um diesen Aspekt keine Gedanken mehr machen. 3.3.1. Privacy - Vertrauen in die eigene Urteilskraft Mit einem Privacy-System wird dem Nutzer ein Berechtigungssystems gegeben. Mit diesem muss der Nutzer nur die „richtigen“ Entscheidungen treffen und er kann den Apps vertrauen. Wenn er beispielsweise nicht will, dass eine App seinen Standort kennt - er also allen Apps, die diese Berechtigung beinhalten misstraut -, sein Berechtigungssystem ihm aber gestattet dieses Permissions zu entziehen oder falsche Daten zu senden, dann geht von der App keine Gefahr mehr, bezogen auf diesen Punkt aus. Beresford et al. setzen mit MockDroid [BRSS11] direkt am Android OS an und modifizieren dieses. So werden Zugriffe auf Permissions auf Systemebene im Package Manager abgefangen und wenn gewünscht mit falschen Daten, sogenannter Mocked Data, getäuscht. Der Benutzer wird über die Notificationbar informiert, wenn eine App auf eine Permission zugreift, welche Mocked Data zu- rückliefert. So kann eine Verbindung zwischen möglicher fehlender Funktionalität und Mocked Data hergestellt werden und die Permissions gegebenenfalls angepasst werden, wenn man Funktionalität höher als Privacy schätzt. Das Problem von MockDroid ist, dass das Betriebssystem umgeschrieben werden muss. Um das Android OS modifizieren zu können, muss ein Benutzer Root-Rechte besitzen. Android basiert zwar auf dem quelloffenen Linux-Kernel, ist ein Open-Source-System und seine Anpassbarkeit wird als einer der größten Vorteile genannt, doch frei von Problemen ist ein Root-Zugriff nicht. Meist geht ein Garantieverlustmit demRooten einher,Malwaremit Root-Zugriff kann höheren Schaden anstellen und ein fehlerhafter Root-Vorgang kann sogar das Gerät zerstören. Gerade für unsichere oder unwissende Benutzer wäre deswegen ein System sicherer, das keine Root-Rechte oder eine Veränderung der Firmware benötigt. Solche Systeme werden im Folgenden betrachtet. Diese Systeme modifizieren nicht das OS sondern die App an sich. AppGuard von Backes et al. [BGH+13] [BGH+12] nutzt Inline Reference Monitoring (IRM) um eine vordefinierte Anzahl von Policies durchzusetzen. Dazuwerden die Binärdatein der App umgeschrieben, sodass vor jeder sicherheitsrelevanten Operation ein Sicherheitsmonitor aufgerufen wird. Dieser Monitor gleicht dann mit den gegebenen Policies ab und entscheidet, ob die Funktion durchgeführt wird oder ein alternativer Code ausgeführt wird, der dann gegebenenfalls Mocked Data zurückliefert, damit die App nicht abstürzt. Xu et al. entwickelten mit Aurasium [XSA12] ein System, welches ebenfalls eine App umschreibt, um Funktionsaufrufe der Android API abzufangen und mit den Policies abgeglichen wird. Die App wird damit in eine Sandbox gepackt. Dabei wird Aurasium im selben Prozess wie die App ausgeführt, die sie überwacht und hat keinen eigenständigen Manager in einem seperaten Prozess. Dr. Android and Mr. Hide von Jeon et al.[JMV+12] baut explizit auf einen Service namens Mr. Hide, der in einem eigenen Prozess läuft. Apps werden mit Hilfe von Dr. Android (Dalvic Rewriter für 23 3. Related Work Android) umgeschrieben, sodass all ihre API Aufrufe an Mr. Hide umgeleitet werden. Dort wird dann mit Hilfe der dort definierten Policies bestimmt, welche Informationen und Funktionen die App verwenden darf. Dafür wurden ebenfalls die fine-grained (zu dt. fein granulare) Permissions eingeführt. Mit diesen lassen sich detailliertere Bestimmungen über die Rechte von Apps machen, als mit den herkömmlichen Permissions. Ein weiterer Ansatz ist die von Stach und Mitschang entwickelte PrivacyManagment Platform (PMP) [SM+14] [Sta13a] [SM13] [Sta13b]. Die PMP führt dabei Ressources ein, welche die herkömmlichen Permissions von Android ersetzen und dient dabei als Handler zwischen App und OS. Will eine App auf solche Ressourcen zugreifen, muss sie beim PMP nachfragen, welches die Anfrage weiterleitet und Daten zurückgibt oder diese verweigert, beziehungsweise falsche Daten zurücksendet, die keine privaten Informationen preisgeben. Es können neue Ressourcen leicht in die PMPApp geladen werden, wodurch sich eine feinere Granularität und eine größere Varianz als mit den statischen Android Permissions erreichen lässt. Der Nachteil aus aktueller Sicht ist jedoch, dass Entwickler ihre Apps auf diese Ressourcen ausgelegt schreiben müssen. Eine jede beliebige App lässt sich mit PMP nicht kontrollieren. 3.3.2. Security - Vertrauen in das System Wenn entweder sichergestellt werden kann, dass keine Schadsoftware auf dem Gerät ausgeführt werden kann oder dass das System einen Angriffe frühzeitig erkennt und verhindert, dann kann man den Apps in Hinsicht darauf vertrauen, dass sie keinen Schaden anrichtet. Sun und Tan [ST14] entdeckten, dass Native Libraries von Androids Sicherheitsüberprüfung nicht ausreichend beachtet werden. Mit NativeGuard schufen sie ein Sicherheits-Framework, welches Native Libraries von den anderen Komponenten in einer Android App isoliert, indem es sie in einer eigenen App laufen lässt, welche nicht die Permissions der eigentlichen App besitzt und somit nicht auf diese zugreifen kann. Dafür müssen weder Veränderungen am OS noch am Quellcode der App vorgenommen werden. TrustDroid von Bugiel et al. [BDD+11] ist eine „praktische und leichtgewichte Domänenisolation in Android“. Im Android OS ist keine Isolation zwischen Daten und Appen gegeben, was zum Beispiel bei einem Smartphone welches privat und geschäftlich verwendet wird, wünschenswert wäre. TrustDroid überwacht dabei die Inter-Process Comunication (IPC), den Zugriff auf Dateien und den Zugang zum Netzwerk. Dadurch werden Apps und Daten aus einer Domäne vor Apps aus einer anderen Domäne geschützt. Einen ähnlichen Ansatz verfolgen Russello et al. mit MOSES [RCCF12]. Sie setzen jedoch auf noch mehr Feingranularität bei der Festlegung welche Daten etc. in welche Domäne fallen, beziehungsweise in welches Security Profile, wie es dort heißt. Dabei ist MOSES kontextsensitiv und kann automatisch das Security Profile dem Kontext anpassen. QUIRE von Dietz et al. [DSP+11] verwendet Provenance um die Herkunft eines Aufrufs in der IPC zu überwachen. Sollte eine App mit wenigen oder keinen kritischen Permissions versuchen auf eine App zuzugreifen, die jene Permissions gegeben hat, schreitet QUIRE ein. Die App, auf welche zugegriffen wird, kann diesen Aufruf dann nur mit jenen Permissions bearbeiten, die der aufrufenden App zur Verfügung stehen. 24 3.4. Vertrauen in die App Die Ausnutzung einer App durch eine andere, die weniger Permissions hat, nennt sich Privilege Escalation Attack und wird in 3.4.2 noch weiter betrachtet. Das nächste Unterkapitel beschäftigt sich nun mit Systemen, die zur Bestimmung des Vertrauens in eine App dienen. 3.4. Vertrauen in die App Um das Vertrauen eine App zu bestimmen gibt es zwei Möglichkeiten. Entweder man vertraut der App, weil dieser App andere Nutzer vertrauen (Unterkapitel 3.4.1) oder man vertraut der App, da man diese analysiert (Unterkapitel 3.4.2 und 3.4.3). Außerdem werden in diesem Unterkapitel bereits bestehende Vertrauensmetriken aufgeführt (Unterkapitel 3.4.4). 3.4.1. Reputationssysteme für Android Apps Reputationssysteme wurden in Unterkapitel 3.1 ausführlich besprochen. Da die meisten App- Marktplätze über ein eigenes Rating-System verfügen, spielen Reputationssysteme für Android Apps eine eher geringe Rolle. Ein erwähnenswerter Ansatz wäre AppAware. Girardello und Michahelles entwickelten AppAware, ein System für ein implizites Rating von Android Apps. Dieser implizite Wert für die Apps berechnete sich daraus, wie viele Benutzer eine App installierten und diese dann updateten oder wieder deinstallierten. Gerade bei Apps mit noch wenigen Downloads erhielten sie dadurch mehr Feedback als durch das Rating-System des Google Play Store [GM10b]. 3.4.2. Analysesysteme Ein möglicher Ansatz um festzustellen, ob man in eine App Vertrauen haben kann oder nicht, sind Analysesysteme, in denen das Verhalten einer App betrachtet wird. Dabei beobachten wir, ob die App Aktionen durchführt, die als schädlich oder ungewollt gelten. Solche Aktionen führen zu einem Vertrauensverlust. App Analysen werden dabei einerseits auf dem Kontrollfluss einer App ausgeführt, andererseits lässt sich auch der Informationsfluss analysieren. Ein bekanntes Problem in Android stellen Privilege Escalation Attacks dar, welche von Davi et al. erstmals beschrieben wurden. In diesen wird eine Schwäche von Android ausgenutzt, in der eine App mit weniger Permissions Zugriff auf die Komponenten einer privilegierten App hat - also eine App, die über mehr Permissions verfügt. Die zugreifende App kann auf diese Weise Permissions benutzen, die ihr nicht gewährt wurden. Dadurch kann Schaden entstehen, der sich rein durch die Analyse der Permissions wie in Unterkapitel 3.4.3 beschrieben, nicht erahnen lässt. Außerdem kann eine App auf möglicherweise sensitive Daten einer anderen App zugreifen [DDSW11]. 25 3. Related Work Zhongyang et al. entwickelten mit DroidAlarm ein statisches Analysewerkzeug für den Kontrollfluss zwischen Apps, um die Gefahr von Privilege Escalation Attacks auf Grund von Capability Leaks herauszufinden [ZXMX13] TaintDroid ist ein von Enck et al. entwickeltes Werkzeug zur effizienten, systemweiten Überwachung des Informationsflusses. Private oder sensitive Daten werden dabei markiert und wenn diese Daten von einer App weitergegeben werden, wird der Benutzer darüber informiert [EGC+14]. 3.4.3. Risikoabschätzung durch Permissions Neben der dynamischen Flussanalyse lässt sich noch eine statische Analyse bezüglich der Permissions durchführen, welche eine App besitzt. Felt et al. führten eine Studie durch, wie weit Smartphone-Nutzer auf Permissions achten und sich mit diesen auskennen. Sie stellten dabei fest, dass über der Hälfte der Benutzer nicht einmal bewusst war, dass Informationen über die Permissions während der Installation im Store angezeigt werden. Lediglich 20% der Teilnehmer wussten, was ein Großteil der Permissions, die Privacy- oder Security- Risiken mit sich ziehen können, überhaupt bedeuten. Knapp ein Viertel der Probanden gab an, sich über unbekannte Permissions in Reviews der App informiert zu haben. Felt sieht deshalb Reviews, im Idealfall von einem kleinen Expertenkreis geschrieben, als wichtigen ersten Schritt zur Verständlichkeit der Bedeutung von Permissions für den durchschnittlichen Benutzer [FGW11]. Chia et al. stellten fest, dass eine positive Korrelation zwischen der Anzahl der Permissions, die eine App verlangt, und ihrer Popularität sowie einem guten Rating besteht. Dies führen sie darauf zurück, dass mehr Permissions für eine breitere und bessere Funktionalität sorgen und die Beliebtheit einer App sich mehr auf die Funktionalität, denn die Sicherheit bezieht. Sie sehen daher ernste Probleme, dass Benutzer dazu neigen Permissions einfach zu akzeptieren, da sie daran gewöhnt sind, dass Apps viele Permissions verlangen. Somit würde das ganze Permission-System seinen Sinn verlieren [CYA12]. Auf Grund der angezweifelten Effektivität des Permission-Systems wurden einige Versuche gestartet die Permissions zu analysieren, die vonApps verlangt werden und eine Erkenntnis daraus zu gewinnen, ob die Apps ein Risiko darstellen. Enck et al. entwarfen Kirin, ein System, welches dem Benutzer während des Installationsprozesses Empfehlungen gibt, ob er diesen wirklich fortsetzen will. Ummögliche schadhaften Apps identifizieren zu können, wurde ein neunteiliger Regelsatz1 aufgestellt, welche Kombinationen von Permissions eine App nicht besitzen darf, da diese Permissions als potenzielle Angriffspunkte für schadhaftes Vorgehen dienen [EOM09]. Sarma et al. schlugen eine Risikoerkennung für Apps durch Permissions vor, die über einen einfachen Regelsatz hinaus geht. Sie betrachteten dabei nicht nur die Permissions der zu überprüfenden App, sondern auch jene Permissions anderer Apps in dieser Kategorie. Dadurch werden seltene Permissions in den Kategorien identifiziert, welche als Risikosignal dienen [SLG+12]. 1Zwei dieser Regeln sind nicht mehr aktuell, da es die enthaltenen Permissions nicht mehr gibt. 26 3.5. Vertrauen in den Entwickler Peng et al. führten eine Risk-Score für Apps ein, die ebenfalls auf deren Permissions und jenen Permissions von anderen Apps in der Kategorie beruht. Zur Berechnung der Risk-Score werden Probabilistische Generative Modelle verwendet. Monotonie ist bei der Berechnung für Peng et al. dabei wichtig, sodass die Risk-Score immer durch das Entfernen einer Permissions gesenkt wird. Zusätzlich lässt sich mit Hilfe der Risk-Score ein Ranking unter den Apps berechnen, sodass das Risiko der App im Vergleich zu anderen Apps gesehen werden kann [PGS+12]. Felt et al. analysierten die Android API und stellten ein Mapping zwischen Permissions und API Aufrufen imQuellcode her.Mit diesemHilfe diesesMappings entwickelten sie Stowaway, einWerkzeug umApps zu finden, welchemehr Permissions verlangen, als sie tatsächlich benötigen. In ihrem Testsatz verwendeten etwa ein Drittel der Apps mehr Permissions als sie brauchten, was Felt et al. darauf zurückführen, dass die Android API nicht ausreichend dokumentiert ist [FCH+11]. 3.4.4. Vertrauensmetriken für eine App Um eine Vertrauensmetrik für Android Apps aufzustellen wurden bereits mehrere Ansätze gemacht. Die hier kurz angeschnittenen Ansätze werden in Kapitel 4 weiter vertieft. Yan et al. entwickelten mit TruBeRepec ein Analysesystem, welches die Nutzung einer App durch Benutzer misst und dadurch das Vertrauen des Benutzers in diese App zu messen. Um die Nutzungs- daten in einen Vertrauenswert umzuwandeln, wurde eine Studie durchgeführt, wie das Vertrauen der Benutzer in eine App und ihre Benutzung dieser zusammenhängen [YLNY13]. MAETROID von Dimi et al. welches den Entscheidungsprozess des Analytic Hierarchy Process nutzt, um das Vertrauen von Apps zu bestimmen. Dazu analysieren sie zum einen statische Eigenschaften, schlagen aber auch ein Feedback-System bezüglich Fehlverhalten der App vor. Mit Hilfe dieser Rück- meldungen wird das statisch berechnete Ergebnis gegebenenfalls angepasst [DMM+12] [DMM+13]. Kuehnhausen und Frost berechnen das Vertrauen in eine App aus den Ratings, Reviews und Permissi- ons, welche eine App erhalten hat, beziehungsweise besitzt. Dabei schlagen sie Zuversicht-Metriken für die drei Bereiche vor, um daraus den Vertrauenswert berechnen zu können [KF13]. Wenn einer App vertraut wird, dann muss sichergegangen werden, dass es sich auch wirklich um diese App handelt, wenn man sie herunterläd. Zhou et al. weisen darauf hin, dass viele populäre Appen mit ähnlichem oder gleichen Namen in abgeänderter Form auf Third Party Stores hochgeladen werden. Diese Apps stammen von anderen Entwicklern und verlangen oft mehr Permissions als die original Apps. Um solche umpaketierten Apps zu entdecken, entwickelten sie DroidMoss, welches eine Fuzzy Hashing Technik verwendet, um Unterschiede vom Umpaketieren der Apps zu finden [ZZJN12]. 3.5. Vertrauen in den Entwickler Einer App kann auch vertraut werden, wenn man Vertrauen in ihren Anbieter oder Entwickler hat. In diesem Falle gilt es jedoch sicherzustellen, dass die App auch garantiert von diesem Entwickler stammt. 27 3. Related Work Barrera et al. haben das Signierungsverfahren für Apps unter Android analysiert und ein eigenes, sichereres alternatives Verfahren vorgestellt [BMCO14] [BCMO12]. Im nächsten Kapitel werden die in Unterkapitel 3.4, speziell in Unterkapitel 3.4.4 genauer betrachtet, um die Anforderungen und Möglichkeiten für eine Vertrauens-Metrik und ein Vertrauens-System für Android Apps zu ergründen. 28 4. Anforderungen und Umsetzungen In Kapitel 3 wurde einen Überblick geliefert, welche Systeme und Theorien bereits bezüglich Repu- tation und Vertrauen bestehen. Außerdem wurden verwandte Ansätze sowie nützliche Werkzeuge vorgestellt. Ziel dieses Kapitel ist es die vielversprechendsten Ansätze zu analysieren, welche sich mit dem Vertrauen in eine App beschäftigen und die jeweiligen Metriken kritisch zu bewerten. Daraus werden die Anforderungen für eine Vertrauensmetrik gewonnen und Überlegungen angestellt, welche Werte in eine eigene Metrik einfließen können. Die Umsetzung der Entscheidungen für die Metrik erfolgt nicht in diesem sondern in Kapitel 5. Zunächst werden in Unterkapitel 4.1 die Systeme und Metriken grundlegend betrachtet. WelchenWert liefern die Metriken dem Benutzer zurück, welche Eigenschaften einer App werden dafür betrachtet und welche Aussage kann dadurch über das Vertrauen in eine App getroffen werden? In Unterkapitel 4.2 werden die jeweiligen Faktoren betrachtet, die in die Metrik einfließen können und welche Bereiche sie beeinflussen. Ausführlich wird dann in den Unterkapiteln 4.3 bis 4.5 un- tersucht, wie die Faktoren Reputation, Nutzung und verlangte Permissions einer App in die Metrik einfließen. Den Ansatz der Kontroll- und Datenflussanalyse, welcher in keiner der bestehenden Vertrauensmetriken Verwendung findet, wird in Unterkapitel 4.6 untersucht. Abschließend wird in Unterkapitel 4.7 überlegt, wie andere Elemente wie der Entwickler oder der App-Marktplatz, aus welchem die App bezogen wird, das Vertrauen in die App beeinflussen können. 4.1. Grundaussage einer Vertrauensmetrik Die erste Überlegung bezüglich einer Metrik sollte sein, welche Aussage mit ihr getroffen werden soll. Eine Metrik für das Vertrauen in eine App sollte dem Betrachter eine Aussage geben können, ob er diese App installieren will oder es lieber lassen sollte. Die Entscheidung des Installierens oder nicht Installieren wird aber auch oft dadurch beeinflusst, dass sich viele andere Apps finden lassen, welche dieselbe Aufgabe erfüllen. Es gilt also zu ergründen, wie der Wert einer Metrik aussehen sollte, damit er auf beide Probleme angewendet werden kann. Als nächstes stellt sich natürlich die Frage, was das Vertrauen in eine App bedeutet und wie eineMetrik dieses berechnen könnte. In Kapitel 2 wurde in der Definition 2.3.2 auf Seite 18 für den Ansatz diese Arbeit bestimmt, dass einer App vertraut wird, wenn sie die versprochenen Funktionalitäten bietet, private Daten nicht gegen den Wunsch des Besitzers weitergibt und möglichst niedriges Potenzial besitzt, um Schaden anzurichten. Um dafür eine Metrik aufstellen zu können, müssen messbare Werte - im Folgenden Faktoren genannt - gefunden werden, durch welche sich Werte für das Vertrauen in die drei Bereiche aus der Definition errechnen lassen. 29 4. Anforderungen und Umsetzungen In diesem Unterkapitel wird die Fragestellung der am besten geeignetenWerteskala für die Metrik und welche Aussage aus dem Ergebnis der Metrik getroffen werden kann behandelt. Außerdem werden Überlegungen angestellt, wie die drei Bereiche aus der Definition zueinander in Relation gestellt werden und der individuellenWichtigkeit eines Benutzers angepasst werden können. Mit den Faktoren beschäftigt sich, wie in der Einleitung des Kapitels angekündigt, erst das nächste Unterkapitel 4.2. 4.1.1. Die Werteskala Um eine ideale Werteskala für unsere Metrik zu finden, werden nun einige Überlegungen angestellt. Es wird aber auch auf die bereits in Unterkapitel 3.4.4 vorgestellten Metriken eingegangen werden und diese auf ihre Tauglichkeit überprüft. Der einfachste Ansatz für das Ergebnis der Metrik wäre eine binäre Entscheidung, die Vertrauen oder kein Vertrauen zurückliefert. Dies ist jedoch ein sehr simpler Ansatz und es fällt schwer eine Grenze zu ziehen. Wo setze ich diesen absoluten Bruch an? Sollen wir eher einer App misstrauen oder riskieren zu naiv zu sein? Und wie verhalten sich zwei Apps zueinander, denen beiden vertraut wird? Für welche sollte ich mich entscheiden? Eine binäre Entscheidung liefert für unsere Anforderungen keine zufriedenstellende Werteskala. Dini et al. [DMM+13] gehen lediglich einen Schritt weiter. Sie unterteilen das Maß des Vertrauens in eine trinäre Entscheidung. Einer App wird entweder als vertrauenswürdig (d.h.: „Die App funktioniert korrekt und sollte keine bösartigen Funktionalitäten verbergen.“), nicht vertrauenswürdig (d.h.: „Die App könnte die Sicherheit des Smartphones gefährden.“) oder trügerisch (d.h.: „Weder funktioniert die App korrekt, noch ist sie sicher“). Hier ergibt sich wie bei einer binären Entscheidung das Problem, dass die einzelnen Kategorien zu weit gefasst sind. Der Vorteil einer groben Kategorisierung ist jedoch, dass dieMetrik eine klare und unmissverständliche Aussage trifft. Dies dient also als eine einfache Orientierung für den Betrachter des Ergebnisses. Die am feinsten gegliederte Skala der aufgeführten Metriken ist jene im Prozentbereich, wie sie Yan et al. [YLNY13] beziehungsweise Kuehnhausen und Frost [KF13] verwenden. Sie lässt uns einen großen Spielraum bei der Bewertung des Vertrauensmaßes. Jedoch muss hier darauf geachtet, dass beim Benutzer keine Verwirrung entsteht. Was bedeutet beispielsweise ein Vertrauen von 60%? Ist dies ein guter Vertrauenswert oder ein schlechter? Die in dieser Arbeit verwendete Lösung ist ein Hybrid aus einer Einteilung in Kategorien und einem parallel berechneten prozentualen Vertrauenswert. Die Kategorien geben einen Anhaltspunkt wie eine App einzuordnen ist und welche Gründe für einen gesenkten Vertrauenswert gesorgt haben. Der prozentualeWert sorgt für eine feinere Granularität, um innerhalb der Kategorien eine Unterscheidung zu ermöglichen. Diese Lösung verbindet die Vorteile beider Ansätze: Der Benutzer kann einschätzen, was der Vertrau- enswert bedeutet, den er bekommt. Aber Apps, die nur aus einem einzelnen oder wenigen Gründen in eine schlechtere Kategorien gerutscht sind, lassen sich leichter als solche erkennen. Außerdem wird dem Benutzer eine Möglichkeit geboten Apps zu vergleichen, welcher eher zu vertrauen ist, selbst wenn beide in einer guten Kategorie eingeordnet sind. 30 4.1. Grundaussage einer Vertrauensmetrik Im Google Play Store müssen Apps in vier Bewertungsstufen eingeteilt werden1. Diese beschäftigen sich jedoch mit dem Inhalt einer App wie anzügliche Inhalte und Glücksspiel. Einzig das Abrufen und Veröffentlichen des Standortes spielt in dieser Bewertung und auch in unserer eine Rolle. Ansonsten sind diese Bewertungen für unseren Ansatz nicht zu gebrauchen. Deswegen werden zum Zweck der Einordnung fünf eigens aufgestellte Kategorien verwendt (siehe Abbildung 4.1), welche die Vertrauenswürdigkeit einer App repräsentieren sollen. Diese Kategorien sind: • K1: Volles Vertrauen: Aus keinem der einzelnen Bereiche gibt es Grund Bedenken bezüglich des Vertrauens in die App zu haben. Um in diese Kategorie fallen zu können, muss die App durchweg sehr gut bewertet sein und darf keinerlei Permissions besitzen, welche die Security oder Privacy gefährden können. • K2: Hohes Vertrauen: Die App hat keine perfekte Bewertung oder besitzt kritische Permissi- ons bezüglich Privacy und Security. Die Nutzung und die Bewertung lassen trotzdem darauf schließen, dass die Funktionalität der App gut ist und ein erhöhtes Gefahrenpotenzial oder eine Weitergabe privater Daten wurde nicht festgestellt. • K3: Geringe Bedenken: Funktionalität, Gefahrenpotenzial oder Umgang mit privaten Daten geben Anlass zu geringen Bedenken. Das Rating und die Nutzung kann Hinweise auf kleine Mängel an der Funktionalität geben. Die Permissions der App können verdächtig erscheinen. Daten wie Standort und Telefon-ID werden an Werbeserver weitergegeben. • K4: Größere Bedenken: Diese Kategorie besagt, dass entweder die Funktionalität wahrscheinlich deutliche Mängel aufweist, ein erhöhtes Schadpotential besteht oder private Daten, die über Werbezwecke hinaus gehen wahrscheinlich an Dritte weitergegeben werden. • K5: Geringes Vertrauen: In dieser Kategorie landen Apps mit wahrscheinlich stark eingeschränk- ter Funktionalität, mit gemeldeten Fehlverhalten, was das Schadpotenzial angeht und der wahrscheinlichen Weitergabe privater Daten wie persönlichen SMS oder den gespeicherten Kontakten im Smartphone. Es ist dabei eher unwahrscheinlich, dass eine App in Kategorie K1 landet, da viele Apps kritische Permissions benötigen, um ihre Funktionalität umsetzen zu können. Ein volles Vertrauen kann einer App jedoch nicht geschenkt werden, wenn sie auch nur das geringste Potenzial besitzt, Schaden anzurichten. Diese Kategorie dient primär dazu, dass eine vollständige Definition des Wertebereichs besteht. Realistisch gesehen ist Kategorie K2, welche ein hohes Vertrauen bedeutet, der beste Wert den eine App erreichen kann. Auf Grund verschiedener Faktoren kann eine App in die Kategorien K3 bis K5 eingeordnet werden. Kategorie K5 kommt dabei der Empfehlung gleich, die App in keinem Fall zu installieren. Um eine solche Empfehlung geben zu können, sollten begründete Zweifel vorliegen der App nicht zu vertrauen. Deswegen wird dieser Kategorie nur erreicht, wenn eine aktive Rückmeldung zum Fehlverhalten der App vorhanden ist und nicht ausschließlich auf Grund von Vermutungen. Dazu mehr in Unterkapitel 4.2. 1http://goo.gl/Bd7tm0 31 4. Anforderungen und Umsetzungen Volles Vertrauen Wahrsch. deutliche Mängel in der Funktionalität Wahrsch. eingeschränkte Funktionalität Besitzt kritische Security Permissions Erhöhtes Schadpotenzial Hohe Anzahl gemeldeten Fehlverhaltens Besitzt kritische Privacy Permissiosn Weitergabe von privaten Daten I Weitergabe von privaten Daten II Könnte kleine Mängel in der Funk -tionalität haben Wahrsch. kleine Mängel in der Funktionalität Geringes Schadpotenzial Adware mit Weitergabe privater Daten K1 K2 K3 K4 K5 Abbildung 4.1.: Die Kategorien, in welche eine App fallen kann. Eine App fällt dabei in die schlechteste Kategorie, in die sie in einem der drei Bereiche eingeordnet wurde. Besitzt eine App beispielsweise gute Ratings und wird viel genutzt, fällt sie also in Kategorie K2 bezüglich der Funktionalität. Gibt die App den Standort zu Werbezwecken an Werbeserver weiter landet sie in KategorieK3 bezüglich demUmgangmit privatenDaten.Wurde häufiger Guthabenverlust gemeldet, wodurch der Verdacht sich verstärkt, dass die App heimlich im Hintergrund SMS an Premiumnummern schickt, fällt sie im Gefahrenpotenzial in Kategorie K5. Damit fällt die App im gesamten Vertrauen in Kategorie K5. Aus diesem Beispiel wird ersichtlich, dass kein klares Mapping zwischen Vertrauenswert und der Ver- trauenskategorie, in welche die App fällt, möglich ist. Durch ihr relativ gutes Abschneiden in Hinblick auf Funktionalität und Umgang mit privaten Daten kann der Vertrauenswert der App immer noch vergleichsweise hoch sein. Aus diesem Grund spielt in solchen Sonderfällen die Vertrauenskategorie eine sehr wichtige Rolle. Da dieseMetrik nicht den Anspruch stellt als Sicherheitssoftware zu agieren, sondern nur den Verdacht liefert, dass eine App Schaden anrichten kann, bleibt es darüber hinaus dem Benutzer überlassen der App trotzdem zu vertrauen. Hierbei ist jedoch die Kommunikation wichtig, aus welchem Grund die App in die schlechte Kategorie fällt und warum ihr Vertrauenswert trotzdem so hoch ist. 32 4.1. Grundaussage einer Vertrauensmetrik Um den Einfluss der einzelnen Bereiche möglichst stark zu halten wird für den Vertrauenswert der App die Summe der einzelnen Vertrauenswerte in die Bereiche verwendet. Für Funktionalität, Gefahrenpotenzial und Umgang mit privaten Daten wird also ebenfalls ein Vertrauenswert auf der Skala von 0 bis 100% berechnet. Nachdem mit dieser Hybridlösung der Wertebereich der Skala festgelegt wurde, wird im nächs- ten Unterkapitel über die Gewichtung diskutiert, mit welcher die drei Bereiche Einfluss auf den Vertrauenswert nehmen. 4.1.2. Individualität des Vertrauens Wie bei der Aufstellung der Definition für Vertrauen in eine App schon festgestellt wurde, ist Vertrauen eine individuelle Ansicht. Die drei Bereiche Funktionalität, Gefahrenpotenzial und Umgang mit privaten Daten können dabei für jeden Benutzer von unterschiedlicher Wichtigkeit sein. Manche Benutzer legen mehr Wert auf hohe Funktionalität als auf ein niedriges Gefahrenpotenzial, andere sind darauf bedacht, dass ihre privaten Daten nicht in die Hände Dritter gelangen. Deswegen sollte dem Nutzer die Möglichkeit geboten werden die Bereiche zu gewichten. Für die Metrik in dieser Arbeit stehen dem Benutzer vier Stufen der Wichtigkeit zur Verfügung: • W1: Sehr wichtig: Dieser Bereich ist dem Benutzer sehr wichtig. Er wird deutlich stärker gewichtet. • W2: Wichtig: Der Bereich spielt für den Benutzer bei einer App eine Rolle. Dies ist die Standar- deinstellung und sorgt für eine gleichmäßige Gewichtung, wenn keine Anpassungen an der Gewichtung durch den Benutzer durchgeführt wurden. • W3: Weniger Wichtig: Der Bereich ist dem Benutzer weniger wichtig als die anderen. Er wird bei der Berechnung des Vertrauenswertes schwächer gewichtet. • W4: Unwichtig: Fließt nicht in die Berechnungmit ein. Sorgt damit auch nicht für die Einordnung in die Kategorien. Die Gewichtungen W1 bis W3 bestimmen dabei primär den Einfluss, den ein Bereich auf den Vertrau- enswert nimmt. Die Gewichtungen stehen für den Multiplikationsfaktor, mit welchem die Bereiche bei der Aufsummierung verrechnet werden. Lediglich wenn ein Bereich mit W4 gewichtet ist sorgt er nicht mehr dafür, dass eine App auf Grund der Kategorie in diesem Bereich in diese Gesamtkategorie abrutscht. Selbst wenn aus dem obigen Beispiel das Gefahrenpotenzial mitW3 gewichtet wäre und beide anderen Bereiche mitW1, würde die App trotzdem in Kategorie K5 fallen. Ein anderes Vorgehen würde die Idee hinter den Kategorien zunichtemachen. Nachdem die Werteskala für Vertrauenswert und Vertrauenskategorien aufgestellt wurde und die Verrechnung und Gewichtung der einzelnen Bereiche dafür bestimmt wurde, werden nun die Faktoren betrachtet, die Einfluss auf das Vertrauen in eine App beziehungsweise einen der drei Bereiche der App haben. 33 4. Anforderungen und Umsetzungen Metrik von Ratings Permissions Nutzung Problemmeldungen Yan et al. [YLNY13] ja nein ja nein Kuehnhausen et al. ja ja nein nein Dini et al. [DMM+13] ja ja nein ja Tabelle 4.1.: Übersicht welche Vertrauens-Faktoren in den betrachteten Metriken ein Rolle spielen. 4.2. Die Faktoren und Bereiche In den betrachteten Metriken spielen unterschiedliche Faktoren eine Rolle bezüglich des Vertrauens in eine App. Aus ihnen lassen sich Werte bezüglich des Vertrauens in eine App berechnen. Eine kurze Übersicht, welche Faktoren von wessen Metrik verwendet wurden, liefert Tabelle 4.1. Diese Faktoren werden im Folgenden ausführlich erklärt und Überlegungen angestellt, welche unserer drei Bereiche (Funktionalität; Gefahrenpotenzial; Zugriff auf private Daten) durch sie beeinflusst werden. Ratings spielen bei Yan et al. [YLNY13] wie auch bei Kuehnhausen und Frost [KF13] eine Rolle. Über diese subjektive Bewertung der App durch Benutzer lassen sich primär Schlüsse über die Funktionalität der App ziehen. Eine schadhafte App tendiert dazu ein schlechteres Rating zu haben, aber es fällt eher schwer dies bewerten zu können. Über den Umgang der App mit privaten Daten lassen sich ebenfalls eher keine Schlüsse ziehen, da die wenigstens Nutzer Einsicht in diese Vorgänge haben und so ein Einfluss auf ihre Bewertung für die App unwahrscheinlich erscheint. Eine ausführliche Überlegung zu Ratings findet sich in Unterkapitel 4.3.1. Permissions werden von Kuehnhausen und Frost [KF13] sowie Dini et al. [DMM+13] in der Metrik verwendet. Man könnte die Permissions verwenden, um eine Aussage über die Funktionalität der App zu machen (zum Beispiel wäre es für eine Foto-App hinderlich nicht die CAMERA Permission zu besit- zen), doch dieser Ansatz ist sehr wage und wird nicht weiter verfolgt. Einen besseren Anhaltspunkt liefern die Permissions für das Gefahrenpotenzial. Auch lassen sich Schlüsse für den Umgang mit privaten Daten ziehen, da ein Missbrauch hier nur möglich ist, wenn die App dazu auch die nötigen Permissions besitzt um darauf zugreifen zu können. Wie dies in der Metrik umgesetzt wird, wird in Unterkapitel 4.5 erläutert. Durch dieNutzung der App versuchen Yan et al. [YLNY13] auf die Funktionalität der App zu schließen. Wird eine App viel genutzt, kann davon ausgegangen werden, dass sie die Funktionalität bietet, die der Nutzer von ihr erwartet. Hier greift für Gefahrenpotenzial und Missbrauch privater Daten dieselbe Argumentation wie bei der Reputation. Wenn Benutzer das eine oder andere feststellen hören sie eventuell auf die App zu nutzen, [pew12]. Jedoch ist es unmöglich festzustellen, ob dies die Gründe dafür sind. Wie die Nutzung in die Metrik einfließt, erörtert Unterkapitel 4.4. Um die Unzufriedenheit von Benutzern mit einer App genauer ergründen zu können, reicht es nicht aus nur die Reputation oder die Nutzung zu betrachten. Deswegen sollte man ihm die Möglichkeit der Problemmeldung gewähren. Dini et al. [DMM+13] lassen in ihrem Ansatz die Benutzer zu 34 4.2. Die Faktoren und Bereiche FUNKTIONALITÄT GEFÄHRDUNGS- POTENZIAL ZUGRIFF AUF PRIVATE DATEN RATING Nutzung PROBLEM-MELDUNGEN PERMISSIONS VERTRAUEN DATENFLUSS- ANALYSE Abbildung 4.2.: Faktoren, die das Vertrauen in eine App beinflussen und mit welchen messbaren Werten sie zusammenhängen. verschiedenen Fehlverhalten der App eine Rückmeldung machen. Je nachdem, welche Möglichkeiten zur Problemmeldung dem Benutzer gegeben werden, können dieses alle drei Bereiche beeinflussen. Gedanken dazu, welche Fragen beim Feedback gestellt werden und wie diese dann in der Metrik umgesetzt werden, finden sich in Unterkapitel 4.3.3. Ein Ansatz, der bei keiner der betrachteten Metriken eine Rolle spielt ist die Flussanalyse. Mit Hilfe der Datenflussanalyse von TaintDroid [EGC+10] [EGC+14] lassen sich private Daten markieren (orig. taint Data), sodass ein ungewollter Zugriff und Missbrauch dieser Daten bemerkt wird. Solche Zugriffe verletzen eventuell den Wunsch des Benutzers, wie die App mit seinen privaten Daten umgeht. Mit der Kontrollflussanalyse lassen sich die in Unterkapitel 3.4.2 erwähnten Privilege Escalation Attacks entdecken, über welche Daten und Permissions von Apps genutzt werden können, die eigentlich keinen Zugriff darauf haben sollten, was das Gefahrenpotenzial wie den Umgang mit privaten Daten betrifft. Wie die Entdeckungen durch Flussanalyse in die Metrik einfließen können, wird in Unterkapitel 4.6 beschrieben. Insgesamt bieten sich also fünf messbare Faktoren an, die für unsere Metrik eine Rolle spielen. All diese Faktoren beeinflussen, wie bereits beschrieben, einen oder mehrere unserer drei Bereiche. Abbildung 4.2 fasst diese Zuordnung noch einmal zusammen. Nun werden die verschiedenen Faktoren ausführlich analysiert. Begonnen wird mit der Reputation einer App, welche Ratings, Reviews und Problemmeldungen umfasst. 35 4. Anforderungen und Umsetzungen Abbildung 4.3.: Anzeige von Ratings und Reviews im Google Play Store. Diese können als Quelle für eine Vertrauensmetrik verwendet werden. 4.3. Reputation Reputation ist ein wichtiger Faktor, um das Vertrauen in eine App berechnen zu können. Drei Faktoren lassen sich für die Reputation in eine App zurate ziehen: Ratings, Reviews und Problemmeldungen. Diese lassen sich in strukturierte und unstrukturierte Daten unterteilen, wobei Ratings und Problem- meldungen in erstere und Reviews in letztere Kategorie fallen. Ratings werden in den meisten Fällen auf einer Skala von einem bis fünf Sternen abgegeben, Problemmeldungen sind vorwiegend eine binäre Entscheidung (eine Problemmeldung wurde abgegeben oder nicht). Reviews im Gegensatz sind Fließtexte, denen kein direkter Wert entnommen werden kann. Eine tiefgehende Analyse des Textes muss durchgeführt werden, um eine Erkenntnis daraus gewinnen zu können. Ratings und Reviews lassen sich leicht aus den verschiedenen App-Marktplätzen beziehen, etwa dem Google Play Store (Siehe Abbildung 4.3). Für Problemmeldungen besteht keine solche Quelle, vor allem, wenn man selber auswählen will, welche Probleme betrachtet werden sollen. Hierfür ist ein eigenes System beziehungsweise Konzept nötig. Für Ratings und Reviews könnte auch ein eigenes System verwendet werden, doch gerade die Vielzahl an Bewertungen in den App-Marktplätzen stellen einen Vorteil da, der mit einem eigenen System nur schwer zu erreichen wäre. Dass Reputationssysteme einige Schwächen haben wurde in Unterkapitel 3.1 bereits angesprochen. Angriffe, um die Bewertung einer App gezielt besser oder schlechter zu machen stellt ein Problem dar. Es gibt Möglichkeiten ein eigenes System gegen solche Angriffe robuster zu machen und Ansätze, Daten anderer Systeme zu interpretieren, wenn über deren Sicherheit gegen solche Angriffe keine Aussage gemacht werden kann. Wie diese Probleme in den bereits bestehenden Systemen behandelt wurden, wird im Folgenden beschrieben, wenn auf die einzelnen Werte eingegangen wird. Zunächst werden nun Ratings betrachtet und wie sie Einfluss auf das Vertrauen in eine App nehmen können. 4.3.1. Rating Wie bereits erwähnt stellt ein App-Store eine gute Quelle für die Ratings einer App dar. Natürlich lässt sich hier nur schwer feststellen, wie und ob das System gegen Angriffe gesichert ist. Um eine 36 4.3. Reputation Bewertung abgeben zu können, muss man nur ein Google-Profil besitzen und die App auf einem Gerät installiert haben. „Bad Mouthing“, das Senken der Wertung einer App durch zahlreiche Abgabe fälschlich schlechter Bewertungen, und „Ballot-Stuffing“, die Erhöhung der Wertung einer App durch bewusst zu gute Bewertungen, stellen dadurch durchaus mögliche Angriffsmethoden dar. Was jedoch für eine Quelle wie den Play Store spricht, ist seine hohe Anzahl an Nutzern. Je mehr Personen eine App bewerten, desto mehr „falsche Bewertungen“ werden benötigt, um eine Auswir- kung zu haben. Diese Überlegung lässt sich mit dem Ansatz von Kuehnhausen und Frost [KF13] kombinieren. Sie berechnen, welche Zuversicht man in das Rating haben kann und verwenden dazu unter anderem die Anzahl der Ratings für eine App. Dafür verwenden sie die Studentsche t-Verteilung und kommen zu guten Ergebnissen. Als zweites Maß für die Zuversicht in das Rating wird die Verteilung der Ratings von Kuehnhausen und Frost [KF13] verwendet. Dabei wird betrachtet, ob die Ratings sich gleichmäßig verteilen (nicht zu hohe Zuversicht in den Wert des Rating), gegen einen Wert (hohe Zuversicht) korrekt oder gegen zwei Werte (kaum Zuversicht) tendieren. Die Werte für die Zuversicht in das Rating werden anschließend mit dem durchschnittlichen Rating der App verrechnet und daraus ergibt das Vertrauen in eine App bezüglich der Ratings. Diese Metrik kommt dem Problem von falschen Bewertungen teilweise bei und gibt durch die Analyse der Verteilung der Ratings einen guten Anhaltspunkt, ob der Wert der Ratings aussagekräftig ist. Aus diesem Grund wird die Metrik für Ratings von Kuehnhausen und Frost [KF13] für die Metrik in dieser Arbeit übernommen. Angemerkt werden sollte, dass eine Metrik bezüglich der Ratings immer an Aussagekraft verliert, wenn nicht genug Ratings für eine App vorliegen. Laut der Analyse des Google Play Stores von AppBrain.com gab es Ende November 2014 über eine halbe Millionen Apps mit weniger als drei Ratings, was vierzig Prozent der Apps ausmacht. Von diesen lässt sich eher kein verlässlicher Wert für das Vertrauen gewinnen. Kuehnhausen und Frost [KF13] wählen in ihrer Metrik die Mindestanzahl von sieben Ratings für eine App. Ansonsten ist das Vertrauen in eine App auf Grund der Ratings in ihrer Metrik 0. Einer App nicht zu vertrauen, da eine Aussage über ihre Vertrauenswürdigkeit nicht möglich ist, ist besser, als ihr unbegründet zu vertrauen. Ist das Vertrauen in die Funktionalität einer App durch diesen Grund 0, sollte dem Benutzer jedoch auf jeden Fall kommuniziert werden, warum dies der Fall ist. Im Folgenden werden einige Gedanken zu Reviews angestellt und wie sie für das Vertrauen einer App eine Rolle spielen könnten. 4.3.2. Reviews Kuehnhausen und Frost [KF13] verwenden Reviews als Faktor für ihren Vertrauenswert. Sie analysie- ren die Reviews auf Schreibfehler und die Anzahl der lobenden und kritisierendenWorte. Mit ersterem stellen sie fest, ob das Review selber vertrauenswürdig ist, wobei eine bessere Rechtschreibung ein höheres Vertrauen bewirkt. Mit der Anzahl der lobenden oder kritisierendenWorte wird die Stimmung des Reviews erfasst und aus dieser das Vertrauen in die App aufgrund des Reviews berechnet. 37 4. Anforderungen und Umsetzungen Diese Berechnung ließe sich noch erweitern. Im Google Play Store etwa lassen sich Reviews von anderen Benutzern bewerten. Einem sehr positiv bewertetem Review könnte trotz Schreibfehlern Vertrauen geschenkt werden. Eine stärkere Gewichtung eines solchen Reviews wäre auch eine Überlegung. Ebenfalls könnten die Reviews nach bestimmten Schlagwortenwie zumBeispiel „Virus“ oder ähnlichen Warnungen gesucht werden und bei einer entsprechend hohen Anzahl der Vertrauenswert bezüglich Gefahrenpotenzial gesenkt werden. Die Reviews leiden jedoch unter demselben Problem wie die Permissions, nicht jede App besitzt Reviews. Dabei wiegt die Zahl der Apps ohne Reviews noch schwerer. In der Testmenge von Kuehn- hausen und Frost [KF13] besaßen über 58% der Apps keine Reviews. Auf Grund des großen Mangels an Reviews und der Tatsache, dass unstrukturierte Daten schwerer zu erfassen sind und keine für diese Arbeit zufriedenstellenden Werte lieferte, wurde entschieden, dass Reviews nicht in die Metrik mit einfließen. Aus diesem Grund finden sie auch nur an dieser Stelle der Vollständigkeit halber Erwähnung. 4.3.3. Problemmeldungen Reviews stellen für den menschlichen Benutzer gesehen eine gute Informationsquelle dar. Die textuelle Beschreibung kann hinweise auf Schwächen einer Apps hinweisen und auch aus anderen Gründen vor ihr warnen. Die automatische Analyse solcher Texte liegt jedoch jenseits des Umfang dieser Arbeit. Eine Möglichkeit gezielte Informationen über eine App beziehen zu können bieten dabei Problemmel- dungen. MAETROID, das von Dini et al. [DMM+13] entworfene System, verwendet Problemmeldun- gen, um den statisch berechneten Vertrauenswert in eine App dynamisch anpassen zu können. Zu diesem Zweck kann ein Benutzer zu fünf möglichen, festgestellten Fehlverhalten der App Rückmel- dung geben, ob diese gar nicht, selten oder oft aufgetreten sind. Die möglichen Fehlverhalten wurden dabei danach ausgewählt, dass sie gute Indikatoren für Malware Apps darstellen. Diese möglichen Fehlverhalten sind dabei Abstürze, erhöhter Batterieverbrauch, Usability, Guthabensverlust (durch SMS) und Bugs. Ziel dieser Metrik sollte es jedoch sein ein Fehlverhalten einem der drei Bereiche zuweisen zu können und nicht eine allgemeine Aussage zu tätigen. Abstürze, Usability und Bugs lassen sich dabei der Funktionalität der App zuordnen. Erhöhter Batterieverbrauch und Guthabensverlust (durch SMS) betreffen das Gefahrenpotenzial der App. Für dieses lassen sich noch die Möglichkeiten Versteckte Installation oder Deinstallation von Apps sowie Gebühren durch Netzwerkaufkommen hinzufügen. Die Datenflussanalyse durch TaintDroid lässt sich verwenden, um Problemmeldungen bezüglich des Umgangs mit privaten Daten abzugeben. Da der Benutzer ohne ein Werkzeug keine Einsicht besitzt was mit seinen Daten geschieht, benötigt er ein Hilfsmittel um bessere Rückmeldung geben zu können. Die Möglichkeit von TaintDroid werden nicht an dieser Stelle, sondern in Unterkapitel 4.6 behandelt. 38 4.3. Reputation Abbildung 4.4.:Möglichkeiten in der TrustGo App entdeckte Probleme einer App zu melden. Durch diese direkte Bewertung bezüglich des Fehlverhaltens einer App kann guter Rückschluss auf die App in den drei Bereichen gezogen werden und das Vertrauen der App kann in Kategorie K4 fallen, denn hier verlassen wir das Feld der Spekulationen wie bei den Ratings und Reviews. Trotzdem bleibt es natürlich in den meisten Fällen die subjektive Wahrnehmung von Benutzern. Für die Metrik dieser Arbeit wurden nun spezielle Rückmeldungen festgelegt. Da es kein System gibt, das genau diese abfragt, sollte ein eigenes geschaffen werden. Dazu gibt es zwei verschiedene Möglichkeiten. Der eine Ansatz ist es dem Benutzer eine Meldemöglichkeit zu gewähren, die dieser wahrnehmen kann, wenn er will. Ein Beispiel dafür wäre die Meldefunktion der App TrustGo2 wie in Abbildung 4.4 zu sehen. Bei dieser kann mit einer Meldung ein Fehlverhalten der App gemeldet werden. Im Gegensatz zur ausschließlichen Meldung von Fehlverhalten beinhaltet MAETROID die Mög- lichkeit auch abzusenden, dass alles mit dem System in Ordnung ist. Dadurch besitzt die von Di- ni et al. [DMM+13] vorgeschlagene Rückmeldung auch die Möglichkeit des positiven Feedbacks. Dazu muss eine App jedoch bei jeder Meldung auf alle vorhandenen Rückmeldepunkte bewertet werden und ein Benutzer kann eine App nur ein einziges Mal bewerten. Für die Metrik dieser Arbeit wird der Ansatz von Dini et al. [DMM+13] gewählt. Will ein Benutzer eine App bewerten, wird er zumindest zu allen Möglichkeiten aus einem der drei Bereiche befragt, zu dem er ein Problem melden will. Pro Benutzer gibt es auch nur eine Rückmeldung, sollte der Benutzer eine neue Problemmeldung senden, werden die Werte der alten Problemmeldung denen der neuen angepasst. 2http://www.trustgo.com/ 39 4. Anforderungen und Umsetzungen Abbildung 4.5.: Ein Beispiel für eine Windows Problemmeldung, bei welcher nach der Erlaubnis des Benutzers zusätzliche Informationen mitgesendet werden. Überlegenswert wäre auch eine Problemmeldung, welche vorgefallene Probleme automatisch sammelt und nachdem der Benutzer es legitimierte an einen Server schickt. Vergleichbar mit der Windows Problemmeldung (siehe Abbildung 4.5). Dazu können die Ergebnisse von TaintDroid für private Daten oder logcat-Informationen3 bezüglich Abstürzen einer App mitgeschickt werden. Dadurch lassen sich präzisere Aussagen treffen, als nur durch die Vermutungen des Benutzers. Das Problem ist, dass sich jedoch nicht alle vorgeschlagenen Probleme systematisch feststellen lassen. Es ist für die möglichen messbaren Werte auf jeden Fall ein guter Ansatz, der weiter verfolgt werden sollte. In dieser Arbeit wird er jedoch keine Verwendung finden. Angriffe auf das System mit unberechtigten Problemmeldungen sollten natürlich verhindert werden. Dazu gibt es zwei wichtige Verteidigungsmechanismen. Zum einen sollte immer klar sein, von wem die Problemmeldung kommt. Dazu empfiehlt sich zum Beispiel die Verknüpfung mit der Problemmel- dungen mit dem Google-Account (ohne welchen die Person sowieso keine Android Apps verwenden könnte). Darüber hinaus schlagen Dini et al. [DMM+13] einen Zeitfaktor als Bremse vor. Werden massenhaft Problemmeldungen in kurzer Zeit abgegeben, ist davon auszugehen, dass es sich dabei um kein gewöhnliches Benutzerverhalten, sondern um einen Angriff handelt. Die Effektivität dieses Ansatzes bewiesen sie in mehreren Experimenten. Eine weitere Möglichkeit, um vor falschen Meldungen zu schützen, stellt die Überprüfung dar, ob eine Problemmeldung überhaupt Sinn macht. Guthabensverlust durch von der App versendete SMS ist nicht möglich, wenn diese App gar nicht die Permissions besitzt SMS versenden zu können. Mit diesen Vorkehrungen sind die Problemmeldungen gegen die meisten Angriffe robust. 3siehe: http://developer.android.com/tools/help/logcat.html 40 4.4. Nutzerverhalten der App Wie aus dem Nutzerverhalten einer App Schlüsse auf deren Funktionalität gezogen werden können, wird im nächsten Unterkapitel betrachtet. 4.4. Nutzerverhalten der App Einen Anhaltspunkt für die Qualität und Funktionalität einer App gibt das Nutzerverhalten. Wenn eine App gut ist und die Funktionalitäten bietet, die sie verspricht, wird ein Benutzer sie auch verwenden, so der Grundgedanke. Eine App benutzen, heißt Vertrauen in sie haben. Daraus lässt sich ein Wert gewinnen. Eine sehr grobe Lösung bieten Girardello und Michahelles [GM10b] [GM10a]. Sie entwickelten eine App namens AppAware, welche von Benutzern auf ihrem Smartphone installieren wird. Diese App überwacht, wennApps installiert, deinstalliert und upgedatet werden. Entsprechend der letzten Aktion eines Benutzers bei einer App bekommt diese einen Wert zugewiesen (deinstalliert 0,0; installiert 0,9; Update 1,0). Aus den Rückmeldungen aller Benutzer für eine App wird der Mittelwert berechnet. Wenn auch simpel, stellt die Überlegung von Girardello und Michahelles einen guten Ansatz dar. Für die Metrik würde es sich also anbieten zu messen, wie oft eine App wieder deinstalliert oder geupdatet wurde und daraus auf die QUalität und Funktionalität der App zu schließen. Jedoch weisen Girardello und Michahelles selber auf die Schwäche hin, dass ihre Metrik darauf baut, dass schlechte Apps auch wirklich deinstalliert werden. Da die meisten Updates von Apps über den Play Store komplett automatisch oder ohne allzu großes Mitwirken des Benutzers vonstattengehen, ist das Update einer App auch nicht zwangsweise ein gewichtiger Faktor für das Vertrauen in die App. Für die Metrik ist dieser Ansatz weniger zu gebrauchen. Eine Verfeinerung sollte also in Betracht gezogen werden, in welcher analysiert wird, ob eine App nach der Installation auch wirklich genutzt wird und wenn ja wie oft und wie viel. Mit dieser Fragestellung beschäftigt sichwie bereits erwähnt TruBeRepec von Yan et al. [YLNY13]. Sie führten eine großangelegte Benutzerstudie durch, um herauszufinden, wie das Nutzerverhalten mit dem Vertrauen in eine App zusammen hängt und stellten mit Hilfe dessen eine komplexe Metrik aufgestellt. Für das Nutzerverhalten einer App fließen etwa die Anzahl der Nutzungen, die Zeit der Nutzung und die Nutzungshäufigkeit der jeweiligen App, aber auch aller anderen Apps als Vergleichspunkt ein. Informationen wie genutzte und vorhandenen Feature einer App spielen ebenfalls eine Rolle. Dieses Herangehen benötigt eine Vielzahl an Informationen über die App und das Verhalten des Nutzers. Für diese Arbeit verwenden wir einen simpleren Ansatz als Yan et al. [YLNY13]. Dazu wird in einer abgewandelten Funktion ihres Ansatzes für Nutzungsverhalten (siehe Gleichung (5.21) auf Seite 56) die relative Nutzung einer App durch einen Benutzer berechnet. Unterschiedliche Benutzer verwenden ihr Smartphone unterschiedlich oft und lange, deswegen stellt ein absoluter Wert der Nutzung einer App kein gutes Maß dar. Es sollte also betrachtet werden, wie oft ein Benutzer eine App im Vergleich zu anderen Apps verwendet. Dadurch ist es egal, ob ein Benutzer sein Smartphone ständig in der Hand hat oder nur wenige Male am Tag benutzt. Ein Problem stellt hier dar, dass manche Apps nur eine bestimmte Zeit am Tag verwendet werden, wie etwa eine Wecker-App, die meistens nur einmal am Abend gestellt und sonst nicht verwendet 41 4. Anforderungen und Umsetzungen wird, egal wie oft man das Smartphone verwendet. Dadurch ergibt sich für einen Viel- und einen Wenig-Nutzer der gleiche absolute aber ein unterschiedlicher relativer Wert. Bei der Aufstellung dieser Metrik machen wir die Annahme, dass sich das Verhältnis der Smartphone- Nutzer-Typen bei ähnlichen Apps ähnlich verhält. Diese muss jedoch nicht den Tatsachen entsprechen und sollte mit einer Studie unterstützt oder widerlegt werden. Sollte sie widerlegt werden, wäre eine Lösung die Benutzer in verschieden Kategorien einzuteilen und ihren relativen Nutzungswert mit einem Parameter zu versehen, sollte zwischen den einzelnen Benutzerkategorien eine eindeutige Differenz bestehen. Dadurch läuft man jedoch wieder Gefahr den Wert zu verfälschen. Aus diesem Grund geht diese Arbeit dem naiven Ansatz nach. Um die relative Nutzung in einen aussagekräftigen Wert umzuwandeln wird zunächst der Mittelwert der relativen Nutzung aller Benutzer, welche die App installiert haben berechnet. An dieser Stelle kann die Deinstallation einer App mit einbezogen werden. Dazu in Unterkapitel 4.4.1 mehr. Die relativen Nutzung einer App mit der irgendwelcher Apps zu vergleichen würde kein aussa- gekräftiges Ergebnis liefern. Vergleicht man eine Wetter-App mit einer Spiele-App, wird letztere im Normalfall eine höhere Nutzung aufweisen. Deswegen sollte eine App mit jenen Apps aus der selben Kategorie verglichen werden. Dies führt zu einem Ranking unter den Apps, wobei der relativ am meisten genutzten App am meisten vertraut wird und der am wenigsten genutzten App am wenigsten. In jeder Kategorie gibt es also eine App geben, der auf Grund ihrer Nutzung zu fast 100% in ihre Funktionalität vertraut wird. Dieser Wert wird jedoch durch die Ratings und Problemmeldungen verrechnet. Dass eine App also zu einem Zeitpunkt der Berechnung scheinbar volles Vertrauen erhält, nur weil sie besser als der Rest abschneidet wird wieder relativiert durch andere Faktoren. Würden diese jedoch nicht mit eingerechnet werden, müsste man bei einem Ranking sehr vorsichtig sein. Ist eine App vertrauenswürdiger als der Rest, bedeutet dies nicht, dass sie vertrauenswürdig ist. Im nächsten Unterkapitel wird die Deinstallation und die Nichtnutzung einer App in deren Vertrau- enswert bezüglich der Nutzung einfließen können und ob zwischen diesen eine Unterscheidung gemacht werden sollte. 4.4.1. Deinstallation und Nichtnutzung der App Insgesamt wurden zwei Gründe ausgemacht, dass das Vertrauen in eine App auf Grund ihrer Nutzung gegen Null strebt oder diesen Wert auch erreicht. Dies wäre eine Deinstallation der App durch den Benutzer oder wenn dieser die App lange Zeit nicht mehr verwendet. Die Frage, die sich stellt ist, ob beide Fälle gleich stark gewichtet werden sollen, oder ob sogar innerhalb der Fälle Unterscheidungen gemacht werden sollte. Für eine stärkere Gewichtung der Deinstallation spricht, dass dies ein aktives Vorgehen ist, mit welchem man sich der App entledigt. Es muss Gründe geben, dass die App wieder deinstalliert wurde. Jedoch sind diese Gründe nicht unbedingt klar. Dass es sich auf fehlende Funktionalität oder andere Gründe zurückführen lässt, muss nicht der Fall sein. Dass eine App direkt deinstalliert wird und der Benutzer sie nicht einfach vergisst und nicht mehr nutzt, ist in diesem Fall eine Spekulation. 42 4.4. Nutzerverhalten der App Diesem Problem ließe sich mit einer Nachfrage beikommen. Wenn der Benutzer eine App deinstalliert kann eine Abfrage stattfinden, warum er dies tut. In Frage kämen Auswahlmöglichkeiten wie: • App bietet nicht die versprochene/erwartete Funktionalität. • App ist schadhaft. • App missbraucht private Daten. • Der Speicherplatz wurde benötigt. • Kein bestimmter Grund. • Keine Angabe. Die ersten drei Möglichkeiten könnten auch detaillierter gehalten werden, vergleichbar mit den Pro- blemmeldungen aus Unterkapitel 4.3.3 und 4.6.2. Wichtig ist auch, dass dem Benutzer die Möglichkeit gegeben werden sollte, keine Angabe machen zu können, wenn er nicht will - wobei die Unterschei- dung, zwischen keine Angabe machen wollen und keinen bestimmten Grund haben, hervorzuheben ist (letzteres ist immer noch eine Aussage für manche). Wenn ein Benutzer längere Zeit eine App nicht verwendet, könnte ihm auch eine solche Nachfrage gestellt werden. Die Punkte der schadhaften App und missbrauchten Daten würden dann wahrschein- lich herausfallen, da eine solche App mit hoher Wahrscheinlichkeit sofort deinstalliert wird, wenn der Benutzer sie entdeckt. Dieses Herangehen hat jedoch seine Probleme. Die für die Metrik vorgeschlagenen Problemmeldungen sind ein passives Meldesystem. Der Benutzer kann sich entscheiden ein Fehlverhalten der App zu melden, wenn er dies für angemessen hält. Die Abfrage zur Deinstallation oder bei Nichtnutzung einer App sind jedoch aktiv und können dem Benutzer das Gefühl geben, dass sie ihm aufgezwungen werden. Gerade wenn eine App lange nicht mehr genutzt wird, kann eine Nachfrage in diesem Fall als sehr aufdringlich empfunden werden oder gar als Aufforderung die App mehr zu verwenden missverstanden werden kann. Der Standpunkt dieser Arbeit ist es, dass der Benutzer gewillt sein muss, Probleme mit der App zu melden und er nicht das Gefühl haben soll, dass er dazu gezwungen wird. Folglich wird keine Abfrage bezüglich der Gründe für Deinstallation oder Nichtnutzung einer App stattfinden. Da sich dann nur über die Gründe spekulieren lässt, werden Deinstallation und Nichtnutzung gleich stark gewichtet, wenn sie in den Vertrauenswert einfließen. Nachdem die Nutzung einer App und deren Einfluss auf das Vertrauen in die Funktionalität einer App analysiert wurde, werden nun die Erkenntnisse behandelt, die aus den Permissions einer App gezogen werden können. 43 4. Anforderungen und Umsetzungen Metrik von Skala Einbezogene Werte Peng et al. Ranking mit Prozentangabe Permissions der App; Wert anderer Apps mit denen verglichen wird Enck et al. binäre Entscheidung Neunteiliger Regelsatz (Zwei davon nicht mehr aktuell) Sarma et al. binäre Entscheidung 26 Permissions (als kritisch eingestuft); Anfor- derung kritischer Permissions durch andere Apps Tabelle 4.2.: Übersicht über die verschiedenen Ansätze für Metriken für das Risiko durch Permissions 4.5. Permissions Permissions geben einen Anhaltspunkt, welcher Schaden durch eine App entstehen kann. Es bietet sich also an, zu betrachten, welche Permissions Gefahrenpotenzial beherbergen oder dazu genutzt werden können, um die privaten Daten des Benutzers zu entwenden. Eine Liste dieser Permissions, die aus [SLG+12] übernommen und leicht modifiziert ist, findet sich in Anhang A.1. Wie Chia et al. [CYA12] jedoch feststellten steigt die Anzahl der verlangten Permissions mit der Funktionalität einer App. Somit ist eine reine Betrachtung der verlangten Permissions kein gutes Maß. Welche Aussage für die Metrik jedoch gemacht wird, ist dass eine App, die eine kritische Permission besitzt, nicht in Vertrauenskategorie K1 fallen kann. Es wurden bereits einige Versuche unternommen, um das Risiko durch eine App auf Grund ihrer Per- missions zu bewerten. Enck et al. [EOM09] stellten zum Beispiel neun Regeln auf, welche Permissions oder Kombinationen dieser enthielten, die oft von schadhaften Apps verwendet wurden. Der aktuell am meisten genutzte Ansatz ist es, Permissions zu identifizieren, welche auf alle Apps oder auf die Apps in einer Kategorie bezogen selten sind. Peng et al. [PGS+12] verwenden Bayes Modelle, um Apps zu identifizieren, deren Zusammensetzung der verwendeten Permissions selten ist. Sarma et al. [SLG+12] identifizieren seltene kritische Permissions und Kombinationen seltener Permissions, um eine App als verdächtig zu markieren. Für die Metrik in dieser Arbeit gehen wir einen ähnlichen, wenn auch simpleren Ansatz. Es bietet sich an zu betrachten, wie wahrscheinlich die einzelnen kritischen Permissions für eine App in ihrer jeweiligen Kategorie sind und daraus einen Mittelwert zu berechnen. Ein weiterer Punkt, der ein Gespür dafür gibt, ob eine App mehr Permissions verlangt, als sie braucht ist die Anzahl der durchschnittlichen kritischen Permissions in der Kategorie. Dazu bietet sich die Metrik für das Vertrauen in die Anzahl der Permissions von Kuehnhausen und Frost [KF13][KF13]. Aus dieser Kombination der Wahrscheinlichkeit der kritischen Permissions und der Anzahl der kritischen Permissions, die eine App verlangt, lässt sich ein guter Wert dafür gewinnen, wie es um ihr Gefahrenpotenzial steht und ob sie mehr Zugriff auf private Daten verlangt, als in ihrer Kategorie gewöhnlich ist. 44 4.6. Kontroll- und Datenflussanalyse Um das Gefahrenpotenzial zu kategorisieren, wird betrachtet, wie selten die kritischste Permission einer App in der Kategorie ist. Dafür müssen Werte für die Zuordnung festgelegt werden. Der Ansatz von Sarma et al. schlägt dafür vor, von der Installation einer App abzuraten, wenn sie eine Permissions besitzt, die weniger als 2% der restlichen Apps die Permissions verlangen. Dies wird jedoch über alle Apps im Appshop gesehen. Das Ziel von Sarma et al. ist es auch möglichst wenige Meldungen zu erzielen. Außerdem wollen Sarma et al. wie beschrieben nur eine binäre Entscheidung, ob eine App bösartig oder nicht ist. Durch das Gefahrenpotenzial kann eine Aufteilung auf die drei Kategorien K2, K3 und K4 stattfinden. Es stehen primär Zahlen für die Verteilung von Permissions über alle Apps und nicht jene in einer speziellen Kategorie zur Verfügung. Darüber hinaus kann sich die Wahrscheinlichkeitsverteilung über die Permissions verändern. Für diese Arbeit wird die Verteilung: Wahrscheinlichkeit der Permissions ≤ 5% Ô→ K2; 5%