Sécurité sur les périphériques Android

Adobe AIR 2.5 et les versions ultérieures

Sur Android, comme pour tout autre périphérique, AIR se conforme au modèle de sécurité natif. AIR gère par ailleurs ses propres règles de sécurité, qui ont pour objet de faciliter la programmation d’applications connectées à Internet sécurisées.

Etant donné que les applications AIR sur Android utilisent le format de package Android, l’installation relève du modèle de sécurité d’Android. Le programme d’installation des applications AIR n’est pas utilisé.

Le modèle de sécurité d’Android s’articule autour de trois éléments fondamentaux :

  • Droits

  • Signatures d’application

  • ID utilisateur d’application

Autorisations Android

De nombreuses fonctionnalités d’Android sont protégées par le mécanisme de droits du système d’exploitation. Pour utiliser une fonctionnalité protégée, le descripteur d’application AIR doit déclarer que l’application nécessite le droit requis. Lorsqu’un utilisateur tente d’installer l’application, le système d’exploitation Android indique tous les droits requis à l’utilisateur avant que l’installation ne débute.

La plupart des applications AIR doivent spécifier les droits Android dans le descripteur d’application. Aucun droit n’est accordé par défaut. Les fonctionnalités Android protégées qui sont proposées par le moteur d’exécution d’AIR nécessitent les droits suivants :

ACCESS_COARSE_LOCATION
Permet à l’application d’accéder aux données de localisation du réseau WIFI ou cellulaire via la classe Geolocation.

ACCESS_FINE_LOCATION
Permet à l’application d’accéder aux données GPS via la classe Geolocation.

ACCESS_NETWORK_STATE et ACCESS_WIFI_STATE
Permet à l’application d’accéder aux informations du réseau via la classe NetworkInfo.

CAMERA
Permet à l’application d’accéder à la caméra.

INTERNET
Permet à l’application d’effectuer des requêtes réseau. Permet également de procéder au débogage à distance.

READ_PHONE_STATE
Permet au moteur d’exécution d’AIR de désactiver l’audio lorsqu’il se produit un appel entrant.

RECORD_AUDIO
Permet à l’application d’accéder au microphone.

WAKE_LOCK et DISABLE_KEYGUARD
Permet à l’application d’empêcher le périphérique d’entrer en mode de veille à l’aide des paramètres de la classe SystemIdleMode.

WRITE_EXTERNAL_STORAGE
Permet à l’application d’écrire sur la carte mémoire externe du périphérique.

Signatures d’application

Tous les packages d’application destinés à la plate-forme Android doivent impérativement être signés. Etant donné que les applications AIR sur Android sont mises en package au format APK Android natif, elles sont signées conformément aux conventions Android, plutôt qu’aux conventions AIR. Bien qu’Android et AIR utilisent la signature de code de manière similaire, il existe des différences non négligeables :

  • Sur Android, la signature vérifie que le développeur dispose de la clé privée, mais celle-ci n’est pas utilisée pour vérifier l’identité du développeur.

  • Pour les applications destinées au marché Android, le certificat doit être valide pendant 25 ans au moins.

  • Android ne prend pas en charge la migration de la signature d’un package vers un autre certificat. Si une mise à jour est signée par un autre certificat, les utilisateurs doivent désinstaller l’application d’origine pour pouvoir installer l’application mise à jour.

  • Deux applications signées par le même certificat peuvent spécifier un ID partagé qui les autorise à accéder aux fichiers de données et au cache de l’autre application. (Ce type de partage n’est pas géré par AIR. )

ID utilisateur d’application

Android utilise un noyau Linux. A chaque application installée est affecté un ID utilisateur de type Linux, qui détermine ses droits pour des opérations telles que l’accès aux fichiers. Les fichiers stockés dans les répertoires d’application, de stockage d’application et les répertoires temporaires sont protégés par des droits de système de fichiers. Les fichiers écrits dans un emplacement de stockage externe (en d’autres termes, la carte SD) peuvent être lus, modifiés et supprimés par d’autres applications ou par l’utilisateur lorsque la carte SD est montée en tant que périphérique de stockage de masse sur un ordinateur.

Les cookies associés aux requêtes Internet ne sont pas partagés entre applications AIR.

Confidentialité de l’image d’arrière-plan

Lorsqu’un utilisateur fait passer une application en arrière-plan, certaines versions d’Android effectuent une capture d’écran qu’elles utilisent comme miniature dans la liste des applications récentes. Cette capture d’écran est stockée dans la mémoire du périphérique et tout attaquant qui contrôle physiquement ce dernier peut y accéder.

Si l’application affiche des informations confidentielles, celles-ci ne doivent pas figurer sur la capture d’écran d’arrière-plan. L’événement deactivate distribué par l’objet NativeApplication indique qu’une application est sur le point de passer en arrière-plan. Effacez ou masquez toute information confidentielle à l’aide de cet événement.

Données chiffrées sur Android

Les applications AIR sur Android disposent des options de chiffrement proposées par la base de données SQL intégrée pour enregistrer les données chiffrées. Pour une sécurité optimale, basez la clé de chiffrement sur un mot de passe que l’utilisateur devra saisir lors de chaque exécution de l’application. Une clé de chiffrement (ou un mot de passe) enregistrée localement est difficile, voir impossible à cacher à un attaquant qui a accès aux fichiers d’application. Si l’attaquant est en mesure de récupérer la clé, le chiffrement des données ne permet aucune autre protection que la sécurité du système de fichiers basée sur l’ID utilisateur fournie par le système Android.

Il est possible d’utiliser la classe EncryptedLocalStore pour enregistrer les données, mais celles-ci ne sont pas chiffrées sur les périphériques Android. Le modèle de sécurité d’Android repose sur l’ID utilisateur de l’application pour protéger les données des autres applications. Les applications qui utilisent un ID utilisateur partagé et qui sont signées avec le même certificat de signature de code font appel au même magasin local chiffré.

Important : sur un téléphone associé à une racine, toute application s’exécutant avec des privilèges racines peut accéder aux fichiers d’autres applications. Les données enregistrées à l’aide du magasin local chiffré ne sont donc pas sécurisées sur un périphérique associé à une racine.