Mehr Sicherheit für iOS und Android-Apps

10 Handlungsprinzipien für App-Entwickler und -Architekten

16.01.2016 von Mark Zimmermann
Durch mobile Apps erweitert sich der Sicherheitsbedarf von Unternehmen über die Grenzen der eigenen Infrastruktur hinweg. War früher die Firewall die Linie der Verteidigung ist nun die Kommunikationsstrecke auf das Endgerät bis in eine App hinein abzusichern.

Das Besitzmodell von mobilen Endgeräten wechselt von einem COD (Company-owend-Device) zu einem BYOD (Bring-Your-Own-Device) beziehungsweise CYOD (Choose-Your-Own-Device)-Modell. Das Unterstützen der Work-Life-Balance soll hier mit einer Multi-Plattform-Strategie optimal unterstützt werden.

Dabei darf der Mobilitätsbegriff nicht auf Endgeräte alleine reduziert werden. Mobilität beschreibt den Kontext des Anwenders, das Endgerät "nur" die Gelegenheit der Nutzung. Aufgrund der Cloud Dienste sind die Endgeräte ferner in einem breiten Spektrum mit verschiedenen Betriebssystemen wie Android, iOS und Windows vertreten.
Faktoren wie Kommunikation in Echtzeit, Synchronisation zwischen Geräten und Back-End-Systemen stellen dabei nur einige der Herausforderungen auf der gesamten Kommunikationsstrecke von der App bis in das jeweilige Zielsystem dar.

Ohne professionelle Unterstützung verlieren Unternehmen gerade in dieser Spannweite zunehmend den Kampf um die Sicherheit ihrer Daten. Sie brauchen Best-Practice-Lösungen und Leitplanken, gerade in der Individualentwicklung. Dieser Artikel gibt 10 Handlungsempfehlungen für App-Entwickler und -Architekten in diesem Umfeld.

Authentifizierung für Geräte und APPs

Eine allgemein gültige Anforderung ist eine angemessene und ausreichende Authentifizierung.

Absicherung der Kommunikationsstrecke

Sicherheit umfasst die komplette Kommunikationsstrecke. Stellen Sie mit einer auf den Transportsicherheitsprotokollen SSL / TLS 1.2 aufbauenden Kommunikationsstrecke sicher, dass es zu keiner Manipulation oder Überwachung durch Dritte kommen kann. Unterbinden Sie die Möglichkeit mit einer schwächeren Verbindung Daten auszutauschen.

Unterbinden Sie Man-in-the-Middle-Angriffe. Hierzu gibt es verschiedene am Markt etablierte Techniken:

Datensicherheit und -schutz

Nutzen Sie immer die stärkste Geräteverschlüsselung der jeweiligen Plattform (bei iOS NSFileProtectionComplete), vertrauen Sie dieser jedoch nicht uneingeschränkt. Eine App-spezifische Verschlüsselung ist unerlässlich.

Diese Verschlüsselung der lokalen Datenablage darf nicht nur auf Faktoren basieren, die sich auf dem Endgerät befinden. Das hartcodieren dieser Informationen ist als grob fahrlässig zu bewerten, da Methoden für das Reverse-Engineering auch für Leien im Internet verfügbar sind. Ein oft gesehener Fehler ist die gefühlte Sicherheit von hartcodierten sicherheitsrelevanten Informationen durch eine selbst implementierte Verschleierung. So setzte sogar ein prominenter Hersteller, bis vor wenigen Monaten, noch auf eine BASE64 Verschleierung seiner wichtigsten Sicherheitsregeln.

Verwenden Sie für eine starke Verschlüsselung einen Schlüssel aus verschiedenen Teilen. Teile für eine Verschlüsselung können sich ergeben aus:

Die Kombination aus diesen Teilen sorgt nun dafür, dass die Daten nur in Kombination von Gerät, Anwender und Back-End zugreifbar sind. Fehlt eine Komponente ist es nicht möglich.

Verbinden Sie die entfernten Teilschlüssel (oder werden diese in Kombination zueinander gesetzt) mit der Notwendigkeit der zertifikatbasierten verschlüsselten Kommunikation, können Sie alleine durch das entfernen des Zertifikates den Schlüssel nachhaltig unbrauchbar machen. Die Unbrauchbarkeit eines Schlüssels ist, wie die Praxis der iOS Standardverschlüsselung zeigt, der beste und schnellste Weg die Daten unbrauchbar zu machen.

Die aktuellen Plattformen am Markt bieten Mechanismen für eine sichere Datenablage von Anmeldeinformationen, wie zum Beispiel Keychain in iOS. Verwenden Sie auch hier die jeweils höchsten Sicherheitseinstellungen (zum Beispiel thisdeviceOnly). Verschlüsseln Sie nicht nur Dateien sondern auch Datenbanken (beispielsweise SQLCipher).

Verwenden Sie in Bezug auf den Datenschutz keine personenbezogenen Daten beziehungsweise schränken Sie die notwendigen Datenquellen und Zugriffe auf Sensoriken auf ein Mindestmaß ein.

Entwicklervorgaben

Auch ohne boshafte Absicht können Entwickler einige Fehler machen oder mögliche Datenabflüsse nicht bedenken.

Rooting-, Jailbreak- und App-Schutz

Sichere Distribution

User-Centric-Design

Ihr Anwender steht im Mittelpunkt. Eine App muss ihn bei seiner Arbeit unterstützen und dabei seine Herausforderungen und Probleme lösen. Nur wenn Sie den Anwender in den Mittelpunkt stellen erlangen Sie die Akzeptanz und die Usability, damit der Anwender Ihre App und die darin vorhandenen Sicherheitsmaßnahmen als Unterstützung und nicht als Behinderung ansieht.

Schatten-IT, also die Nutzung von nicht vorgesehenen (privaten) Tools, stellt ein enormes Risiko dar. Oft nutzen Mitarbeiter dies ohne boshafte Absicht. In vielen Fällen führen interne Regularien oder "low fun" Policies auf Endgeräten dazu, dass private Tools und Systeme als Alternative genutzt werden. Diese sind unberechenbar.

Stellen Sie daher für Ihre mobile Lösung immer den Anwender in den Fokus um diesen Themen entgegen zu wirken.

Schutz von Mitarbeiter und Unternehmen

Beachten Sie neben den Gefahren der Manipulation von Daten beziehungsweise dem Verlust selbiger auch die Sicherheit für Ihre Mitarbeiter beziehungsweise Sie als Unternehmer.

Sicherheit in den UI-Grundsätzen

Auch wenn Sie den Anwender in den Fokus Ihrer App heben (siehe Punkt 7), gibt es einige grundsätzliche Prinzipen um die Sicherheit einer App zu erhöhen. Verfolgen Sie hierzu das KISS Prinzip (Keep it simple and stupid). Dieses Prinzip beschreibt die Anforderung, Ihre UI und die dahinter liegende Architektur so einfach wie möglch zu gestalten. Komplexität führt oft zu einer Unübersichtlichkeit und damit zu Fehlern. Gerade in der späteren Wartung ist es wichtig zu wissen, was in welchem Architekturbaustein passiert.

Die gleiche Komplexitätsreduktion müssen Sie auch bei den möglichen Eintrittspunkten Ihrer Apps beziehungsweise Daten anwenden. Vor allem die Frage, inwiefern eine App mit Daten von außen versorgt (und gestartet) wird, ist hier zu betrachten. Dabei kann e sich zum Beispiel um Serverdienste in der App oder das Share/OpenIn-Sheet von anderen APPs handeln. Jeder Eintrittspunkt kann ein Risiko darstellen.
Validieren Sie die eingehenden Daten inklusive der jeweiligen Quellen auf Gültigkeit.

Diese Funktion kann natürlich noch erweitert werden um Validierungsprüfungen von Eingaben (Punkt 4) und Offlinefähigkeit (Punkt 3). Die eigentliche Verarbeitungslogik und Prozessintelligenz ist nicht in der App vorzuhalten. Stellen Sie immer die Notwendigkeitsfrage beim Umgang mit Daten und Informationen. Welche Daten und Informationen müssen "Wann" verfügbar sein?

Stetige Weiterbildung

Die hier aufgeführten Handlungsprinzipien müssen Sie stetig an neue Herausforderungen messen. Regelmäßige Prüfung des Status-Quo und die Erkenntnis von gelebten abzulassen und neue Verfahren aufzunehmen muss ebenso akzeptiert werden.

Schicken Sie Ihre verantwortlichen Mitarbeiter auf Weiterbildungen und Konferenzen. Nicht nur für die App-Entwicklung sondern auch zum Thema Cybersecurity. Verfolgen Sie ferner einschlägige Twitter Accounts und Webseiten um am "Puls der Zeit" zu sein.

Fazit

Entwickeln Sie Ihre Apps mit einem agilen Team und fester Teilnahme des jeweiligen Fachbereichs. Begleiten Sie die Menschen bei ihrer Arbeit und lassen Sie Feedbackschleifen durch Referenzgruppen zu. Mobile Apps entstehen in kürzester Zeit. Verfallen Sie bei der Entwicklung nicht in althergebrachte Muster wie Lastenheft, Wasserfall-Projekt, Ergebnisübergabe. Zusammen mit den Handlungsprinzipien sind Sie auf einem guten Weg. (bw)