Mehr Sicherheit für iOS und Android-Apps

10 Handlungsprinzipien für App-Entwickler und -Architekten

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.

  • Als Grundlage kann empfohlen werden, dass Sie sowohl für die eingesetzten Geräte als auch für Apps mit schützenswerten Daten auf ein mindestens sechsstelliges alphanumerisches Kennwort zurückgreifen.

  • Eine Fingerabdruck-basierte Authentifizierung ist, am Beispiel von TouchID unter iOS, als Ergänzung zur Verbesserung der Benutzerakzeptanz zu empfehlen - für App und Gerät.

  • Verwenden Sie neben der Authentifizierung des Benutzers auch Merkmale des Endgerätes, wie zum Beispiel die Geräte-ID (UDID), die International Mobile Equipment Identity (IMEI) oder auch App spezifische Eigenschaften (VendorID), um einen Zugriff gegen ein Back-End-System oder einen API-Layer zu ermöglichen.

  • Trennen Sie die Authentifizierung an der App von den Anmeldeinformationen eines eventuell im Unternehmen befindlichen Back-End-Systems. Stellen Sie damit sicher, dass beispielsweise die SAP-Kennungen Ihrer Anwender nicht nach außen transparent sind.
    Führen Sie hierzu einen Benutzer ein und erweitern Sie dies um ein personenbezogenes Zertifikat, das im Rahmen eines Initialen Roll-Outs auf dem Endgerät installiert wird und allen Ihren Apps zur Verfügung steht.

  • Beachten Sie bei diesem Registrierungsprozess, dass die dafür notwendigen Kommunikationsparameter, zum Beispiel die URL zum Registrierungsdienst, durch den Anwender zur Laufzeit gepflegt werden. Dies ermöglicht Ihnen die vorherige persönliche Übergabe der notwendigen Informationen (eMail, Telefonisch, SMS) an den Anwender und dessen Verifizierung (bei Bedarf).
    Das vortäuschen falscher Identitäten (Spoofing) kann über diese Kombination erschwert werden. Auch die Erweiterung von App-Berechtigungen (Privilegien) wird durch das im Backe-End hinterlegte Rollenmodell verhindert.

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:

  • Als eine Maßnahme gilt das HSTS-Verfahren (Strict Transport Security). Vereinfacht ausgedrückt erzwingt dies die Verschlüsselung der Kommunikation über alle Ports des IP-Protokolls für alle im Zertikat enthaltenen Subdomains.

  • Das so genannte Certificate Pinning kann verwendet, um die Kompromittierung durch betrügerische Zertifikate zu verhindern. Dieses Verfahren hilft dabei "untergeschobene" Fremdzertifikate zu erkennen, da die Identität des eigentlich echten Zertikates bekannt ist.

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:

  • - Anwender spezifische Authentifizierungdaten (zum Beispiel Kennwort)

  • - entfernte Teilschlüssel (zum Beispiel per Webserver zum Download angebotene Schlüssel)

  • - eindeutige IDs (zum Beispiel UUID, MAC Adressen, VendorID)

  • - Hidden App-Keys (zum Beispiel Inhalte eines speziellen App spezifischen Strings)

  • - mathematische Formeln (zum Beispiel Schlüsselzahlen (Teile) auf Basis von Koordinaten auf einer elliptischen Kurve)

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.