Wenn es um die Entwicklung einer großen, umfangreichen App geht, wird das Thema “Security” oft angesprochen – und dann doch heimlich, still und leise unter den Teppich gekehrt. Oberflächlich betrachtet ist das Thema ja auch komplex und wird umso komplexer je mehr man sich damit beschäftigt, mit Experten spricht und die Auswirkungen auf die App betrachtet.
Bezogen auf die “Mobile Security” werden drei verschiedene Aspekte unterschieden:
Die Frage nach der Sicherheit in der Datenübertragung ist verhältnismäßig einfach zu beantworten: Es gibt keine speziellen “mobilen” Anforderungen im Vergleich zu anderen, nicht-mobilen Datenverbindungen. Datenverbindungen müssen im Backend gesichert werden, z. B. gegen Man-in-the-Middle-Attacken oder Verbindungen über unsichere WiFis. Wenn du dich um deine Enterprise-Security-Standards kümmerst, musst du dir keine “mobile-spezifischen” Gedanken machen.
Aber wie sieht es mit der Geräte- und Datensicherheit aus?
Mit “Gerätesicherheit” meine ich die allgemeine Sicherheit deiner Geräte. Diese sollte mindestens durch einen individuellen Pin-Code zum Entsperren des Gerätes gewährleistet sein. Für die dienstliche Nutzung empfehlen sich Werkzeuge zum Verwalten der mobilen Geräte, sogenannte Mobile Device Management Tools. Diese kommen in allen möglichen Ausprägungen, von der einfachen Festlegung zur Passwortkomplexität und dem ferngesteuerten Löschen bei Verlust des Geräts bis hin zu Black oder White Listing von bestimmten Apps, Erzwingen von App-Updates und Nutzungsanalysen.
Nutze am besten einfache, integrierte Lösungen, für kleine Unternehmen z. B. aus der G-Suite oder Komplettlösungen wie MobileIron für multinationale Konzerne.
Behalte allerdings die typischen Risikoregeln im Hinterkopf: Sind die geltenden Regeln in Sachen Gerätesicherheit zu streng, werden die Nutzer einen Weg finden, sie zu umgehen – oder aufhören die Tools, die ihnen eigentlich helfen sollen, ihre Produktivität zu steigern, zu nutzen. Wäge also zwischen unbedingter Gerätesicherheit und der unkomplizierten Nutzung für die User ab.
Und damit sind wir auch schon bei dritten Punkt – und der ist um einiges interessanter:
Du hast dein Bestes getan und dein Gerät geschützt – genauso wie die Daten, die an dein Gerät oder deine App geschickt werden. Nun musst du diese Daten speichern und insbesondere die persönlichen und sensiblen Daten schützen und sicherstellen, dass sie durch keine andere App oder Nutzer gehackt werden können.
Die gute Nachricht ist, dass mobile Betriebssysteme bereits von vornherein sehr sicher sind. Die Isolation der Apps und Daten bieten bereits einen guten Schutz. Durch Sandboxing werden alle Daten in einem Container gespeichert, zu dem keine andere App Zugriff hat. Innerhalb dieser Sandbox wird die Ausführung von unsigniertem Code durch Mechanismen wie Integritätsprüfungen und ASLR verhindert.
Die Daten deiner App sollten so also ziemlich sicher sein.
Es besteht allerdings immer noch die Möglichkeit, dass sich ein Angreifer in dein gesichertes Gerät und die Sandbox hackt und so deine gespeicherten Daten auslesen kann. Willst du das vermeiden, solltest du deine Daten zusätzlich verschlüsseln.
Alle Daten auf deinem Gerät können verschlüsselt werden. Tatsächlich sind i-Devices standardmäßig seit iOS 8 verschlüsselt. Bei Android unterscheidet sich die Verschlüsselung zwischen Herstellern, Geräten und Betriebssystemversionen – trotzdem ist es immer noch Tatsache, dass die Mehrheit der Android-Handys gar nicht verschlüsselt ist.
Wenn du dich also nicht allein auf dein Betriebssystem und die Möglichkeiten deines Gerätes verlassen möchtest, solltest du dich selbst um Verschlüsselung und Sicherheit kümmern.
Der Standardweg hierfür wäre, entweder geeignete SDKs für verschlüsselte Datenbanken oder direkt die vom Betriebssystem implementierte Verschlüsselungs-API zu verwenden. iOS und Android bieten beide Standardmethoden, wie z.B. AES-256.
Das am häufigsten genannte Problem bei verschlüsselten Daten und Datenbanken ist die Geschwindigkeit. Besonders bei älteren Android-Telefonen kann die Ver- und Entschlüsselung beim Speichern und Laden von Daten Apps deutlich verlangsamen.
Wenn du zur Kompatibilität auch mit älteren Geräten gezwungen bist, musst du zwischen Komfort und Sicherheit abwägen: Wie wichtig sind die Daten? Wäre es möglich, nur die sensibelsten Daten zu verschlüsseln, um einige Prozesse zu beschleunigen?
Vielleicht solltest du auch die Notwendigkeit hinterfragen, große Datenmengen überhaupt auf dem Gerät zu speichern. Riesige Datenmengen benötigen starke und sichere Backend-Systemen.
Hälst du die Menge deiner gespeicherten Daten gering, werden auch die zu verschlüsselnden Daten reduziert.
Du solltest im Hinterkopf behalten, dass du im Submission-Prozess deiner iOS-App die Frage nach Export-Compliance für die USA beantworten musst. Da jede App über US-Server vertrieben wird und somit unter US-amerikanisches Recht fällt, muss deine Verschlüsselungsmethode idealerweise vorab schon vom Bureau of Industry and Security genehmigt werden – eine Genehmigung brauchst du aber in jedem Fall.
Viel Glück damit! Ich habe versucht, den Prozess zu verstehen, er erschien mir allerdings wie ein kafkaesker Alptraum.
Nein, im Ernst: Hinter diesem Prozess steckt jede Menge Bürokratie. Wenn du dich auf Massenmarkt- oder Open-Source-Standards verlässt und keine unbekannte Verschlüsselung nutzt, solltest du auch keine Probleme mit der Genehmigung bekommen.
Die letzte Entscheidung, die du nun treffen musst, ist die, wie du deinen Nutzern Zugriff auf die verschlüsselten Daten gewährst.
Ist die gesamte App oder nur der gesicherte Bereich durch Pin oder Passwort geschützt? Kann die Pin- oder Passwort-Eingabe zwischengespeichert werden oder muss der Nutzer die Daten jedes Mal neu eingeben, wenn die App geöffnet wird?
Ich habe mich sehr gefreut, als meine Banking-App den von TouchID geschützten Passwortspeicher einführte, weil er wirklich praktisch ist. Du legst das Passwort für die App einmal fest, speicherst es und hast Zugriff auf alle Informationen – einfach durch den Scan deines Daumenabdrucks über den die Fingerabdrucksensoren das ursprüngliche Passwort entschlüsseln.
Man muss natürlich beachten, dass der Daumen in diesem Fall für alle Apps als Master-Passwort fungiert. Aber die Daten sind sicher gespeichert, der Zugriff ist bequem und Hacker müssten sich nicht nur dein Gerät, sondern auch an deinen Daumen sichern – oder weniger blutig an deinen Fingerabdruck kommen.
Eine weitere Möglichkeit wäre ein Zwei-Faktor-Authentifizierung – bestehend z. B. aus der Kombination eines biometrischen Merkmals und eines einfach Pin-Codes. Immer noch einfach und bequem, aber noch schwieriger zu hacken.
Zusammenfassend kann man sagen: Nichts ist zu 100 % sicher. Vieles könnte aber ziemlich sicher und gleichzeitig bequem sein, was die Wahrscheinlichkeit erhöht, dass Sicherheitsfeatures auch tatsächlich verwendet werden – insbesondere bei so einfach und schnell zu nutzenden Geräten wie Smartphones.
Behalte also im Hinterkopf:
Überprüfe, welche Daten tatsächlich auf dem mobilen Gerät gespeichert werden sollen. Wäre es nicht auch in Ordnung, nur die wirklich benötigten Daten jederzeit abrufen zu können – vor allen Dingen, wenn du dich auf eine gute Internetverbindung verlassen kannst?
Überprüfe, welche Daten verschlüsselt werden sollen: alle oder nur einige? Handelt es sich bei all deinen Daten um sensible Daten? Vielleicht ist es nicht notwendig, alle Daten zu verschlüsseln, um deine App nicht zu verlangsamen?
Überprüfe, welche Methoden du für die Speicherung des Passwortes verwenden möchtest. Nutze Standardmethoden, die deine User schon kennen und die von den verwendeten Geräten ohne Probleme unterstützt werden. Verwende biometrische Methoden wie TouchID, um Passwörter abzufragen. Wenn dein Betriebssystem oder Gerät einen einfachen und bequemen Zugriff auf die Daten bietet, nutze ihn! Setze die Hürde für mehr Sicherheit auch für den Standardnutzer so niedrig wie möglich an.