Sicherheit auf Android-Geräten

Adobe AIR 2.5 und höher

Wie bei allen Computergeräten erfüllt AIR auch unter Android die Regeln des nativen Sicherheitsmodells. Gleichzeitig gelten in AIR jedoch auch eigene Sicherheitsregeln, die Entwicklern dabei helfen, sichere Anwendungen mit Internetzugang zu erstellen.

Da AIR-Anwendungen unter Android das Android-Paketformat verwenden, fällt die Installation unter das Android-Sicherheitsmodell. Das AIR-Anwendungsinstallationsprogramm wird nicht verwendet.

Das Android-Sicherheitsmodell umfasst drei Hauptaspekte:

  • Berechtigungen

  • Anwendungssignaturen

  • Benutzer-IDs für Anwendungen

Android-Berechtigungen

Zahlreiche Android-Funktionen werden vom Berechtigungsmechanismus des Betriebssystems geschützt. Zur Verwendung einer geschützten Funktion muss der AIR-Anwendungsdeskriptor deklarieren, dass die Anwendung die entsprechenden Berechtigungen benötigt. Wenn ein Benutzer versucht, die Anwendung zu installieren, zeigt das Android-Betriebssystem alle erforderlichen Berechtigungen an, bevor die Installation fortgesetzt wird.

Bei den meisten AIR-Anwendungen müssen die Android-Berechtigungen im Anwendungsdeskriptor angegeben werden. Standardmäßig sind keine Berechtigungen enthalten. Die folgenden Berechtigungen sind für geschützte Android-Funktionen erforderlich, die über die AIR-Laufzeitumgebung verfügbar sind:

ACCESS_COARSE_LOCATION
Ermöglicht der Anwendung den Zugriff auf WLAN- und Mobilfunk-Standortdaten über die Geolocation-Klasse.

ACCESS_FINE_LOCATION
Ermöglicht der Anwendung den Zugriff auf GPS-Daten über die Geolocation-Klasse.

ACCESS_NETWORK_STATE und ACCESS_WIFI_STATE
Ermöglicht der Anwendung den Zugriff auf Netzwerkinformationen über die NetworkInfo-Klasse.

CAMERA
Ermöglicht der Anwendung den Zugriff auf die Kamera.

INTERNET
Ermöglicht der Anwendung, Netzwerkanfragen zu senden. Ermöglicht auch das Remote-Debugging.

READ_PHONE_STATE
Ermöglicht der AIR-Laufzeitumgebung, den Ton stummzuschalten, wenn ein Anruf eingeht.

RECORD_AUDIO
Ermöglicht der Anwendung den Zugriff auf das Mikrofon.

WAKE_LOCK und DISABLE_KEYGUARD
Ermöglicht der Anwendung, zu verhindern, dass das Gerät in den Standbymodus wechselt, indem die Einstellungen der SystemIdleMode-Klasse verwendet werden.

WRITE_EXTERNAL_STORAGE
Ermöglicht der Anwendung, auf die externe Speicherkarte des Geräts zu schreiben.

Anwendungssignaturen

Alle Anwendungspakete, die für die Android-Plattform erstellt werden, müssen signiert sein. Da AIR-Anwendungspakete unter Android im nativen APK-Format von Android erstellt werden, entsprechen die Signaturen den Android-Konventionen und nicht den AIR-Konventionen. Das Signieren von Code unter Android und AIR weist zwar Ähnlichkeiten, aber auch deutliche Unterschiede auf:

  • Unter Android überprüft die Signatur, dass der private Schlüssel sich im Besitz des Entwicklers befindet, er überprüft jedoch nicht die Identität des Entwicklers.

  • Bei Anwendungen, die über Android Market angeboten werden sollen, muss das Zertifikat mindestens 25 Jahre gültig sein.

  • Das Migrieren der Paketsignatur zu einem anderen Zertifikat wird unter Android nicht unterstützt. Wenn ein Update mit einem anderen Zertifikat signiert ist, muss die ursprüngliche Anwendung deinstalliert werden, bevor die aktualisierte Anwendung installiert werden kann.

  • Zwei Anwendungen, die mit demselben Zertifikat signiert sind, können eine gemeinsame ID angeben, sodass sie auf den Cache und die Datendateien der jeweils anderen Anwendung zugreifen können. (Eine solche gemeinsame Nutzung ist in AIR nicht möglich. )

Benutzer-IDs für Anwendungen

Android nutzt einen Linux-Kernel. Jeder installierten Anwendung wird eine Benutzer-ID in Linux-Form zugewiesen, die ihre Berechtigungen für verschiedene Vorgänge festlegt, beispielsweise für den Zugriff auf Dateien. Dateien in der Anwendung, im Anwendungsspeicher und in temporären Verzeichnissen sind durch Dateisystemberechtigungen vor dem Zugriff geschützt. Dateien, die auf ein externes Speichermedium (also die SD-Karte) geschrieben werden, können von anderen Anwendungen oder vom Benutzer gelesen, geändert und gelöscht werden, wenn die SD-Karte als Massenspeichergerät auf einem Computer gemountet wird.

Bei Internetanforderungen erhaltene Cookies werden von AIR-Anwendungen nicht gemeinsam genutzt.

Datenschutz bei Verwendung von Hintergrundbildern

Wenn ein Benutzer die Anwendung in den Hintergrund verschiebt, erfassen manche Android-Versionen ein Bildschirmfoto, das als Miniaturansicht in der Liste der zuletzt verwendeten Anwendungen verwendet wird. Dieses Bildschirmfoto wird im Gerätespeicher des Geräts abgelegt und kann von Angreifern aufgerufen werden, die physischen Zugriff auf das Gerät haben.

Wenn Ihre Anwendung vertrauliche Informationen zeigt, sollten Sie darauf achten, dass diese Informationen nicht für das Bildschirmfoto erfasst werden. Das deactivate -Ereignis, das vom NativeApplication-Objekt ausgelöst wird, weist darauf hin, dass eine Anwendung nun in den Hintergrund geschaltet wird. Mithilfe dieses Ereignisses können Sie vertrauliche Informationen löschen oder ausblenden.

Verschlüsselte Daten unter Android

AIR-Anwendungen unter Android können die Verschlüsselungsoptionen der integrierten SQL-Datenbank verwenden, um verschlüsselte Daten zu speichern. Um für optimale Sicherheit zu sorgen, sollte der Verschlüsselungsschlüssel auf einem vom Benutzer eingegebenen Kennwort basieren, das bei jedem Ausführen der Anwendung eingegeben werden muss. Lokal gespeicherte Verschlüsselungsschlüssel oder Kennwörter lassen sich nur schwer oder gar nicht vor einem Angreifer verbergen, der Zugriff auf die Anwendungsdateien hat. Wenn der Eindringling den Schlüssel abrufen kann, bietet das Verschlüsseln der Daten keinen zusätzlichen Schutz. Die Daten sind dann nur durch die vom Android-Betriebssystem bereitgestellte Dateisystemsicherheit geschützt, die auf der Benutzerkennung basiert.

Die EncryptedLocalStore-Klasse kann zum Speichern von Daten verwendet werden, diese Daten werden auf Android-Geräten jedoch nicht verschlüsselt. Das Android-Sicherheitsmodell schützt die Daten mithilfe der Anwendungsbenutzer-ID. Anwendungen, die eine gemeinsame Benutzer-ID verwenden und mit demselben Codesignaturzertifikat signiert werden, nutzen denselben verschlüsselten lokalen Speicher.

Wichtig: Bei einem gerooteten Smartphone kann jede Anwendung mit Root-Berechtigung auf die Daten aller anderen Anwendungen zugreifen. Deshalb sind im verschlüsselten lokalen Speicher gespeicherte Daten auf einem gerooteten Gerät nicht sicher.