Sécurité du système et du noyau

Au niveau du système d'exploitation, la plate-forme Android assure la sécurité du noyau Linux, ainsi qu'une fonctionnalité de communication inter-processus (IPC) sécurisée pour permettre une communication sécurisée entre les applications exécutées dans différents processus. Ces fonctionnalités de sécurité au niveau du système d'exploitation garantissent que même le code natif est contraint par le bac à sable de l'application. Que ce code soit le résultat du comportement d'une application incluse ou d'une exploitation d'une faille d'application, le système est conçu pour empêcher l'application malveillante de nuire à d'autres applications, au système Android ou à l'appareil lui-même. Pour connaître les paramètres requis, consultez le document de définition de compatibilité Android (CDD).

Sécurité Linux

Le noyau Linux est la base de la plate-forme Android. Le noyau Linux est utilisé depuis des années dans des millions d'environnements sensibles à la sécurité. Au fil de son histoire, Linux a été constamment étudié, attaqué et corrigé par des milliers de développeurs. Il est devenu un kernel stable et sécurisé, approuvé par de nombreuses entreprises et professionnels de la sécurité.

En tant que base d'un environnement d'informatique mobile, le noyau Linux fournit à Android plusieurs fonctionnalités de sécurité clés, y compris les suivantes:

  • Un modèle d'autorisations basé sur l'utilisateur
  • Isolement des processus
  • Mécanisme extensible pour l'IPC sécurisé
  • Possibilité de supprimer les parties inutiles et potentiellement non sécurisées du kernel

En tant que système d'exploitation multi-utilisateur, l'objectif de sécurité fondamental du kernel Linux est d'isoler les ressources utilisateur les unes des autres. La philosophie de sécurité de Linux consiste à protéger les ressources des utilisateurs les unes des autres. Linux:

  • Empêche l'utilisateur A de lire les fichiers de l'utilisateur B
  • Assure que l'utilisateur A n'épuise pas la mémoire de l'utilisateur B
  • Assurez-vous que l'utilisateur A n'épuise pas les ressources de processeur de l'utilisateur B.
  • Assurez-vous que l'utilisateur A n'épuise pas les appareils de l'utilisateur B (téléphonie, GPS et Bluetooth, par exemple).

Bac à sable d'application

La sécurité des applications Android est assurée par le bac à sable d'application, qui isole les applications les unes des autres et protège les applications et le système contre les applications malveillantes. Pour en savoir plus, consultez la section Bac à sable de l'application.

Partition système et mode sans échec

Les différentes partitions protégées par l'intégrité contiennent le noyau d'Android, ainsi que les bibliothèques du système d'exploitation, l'environnement d'exécution de l'application, le framework d'application et les applications. Cette partition est définie en lecture seule. Lorsqu'un utilisateur démarre l'appareil en mode sans échec, les applications tierces peuvent être lancées manuellement par le propriétaire de l'appareil, mais elles ne le sont pas par défaut.

Autorisations du système de fichiers

Dans un environnement de type UNIX, les autorisations du système de fichiers garantissent qu'un utilisateur ne peut pas modifier ni lire les fichiers d'un autre utilisateur. Dans le cas d'Android, chaque application s'exécute en tant que propre utilisateur. Sauf si le développeur partage explicitement des fichiers avec d'autres applications, les fichiers créés par une application ne peuvent pas être lus ni modifiés par une autre application.

Security-Enhanced Linux

Android utilise Security-Enhanced Linux (SELinux) pour appliquer des règles de contrôle des accès et établir un contrôle d'accès obligatoire (mac) sur les processus. Pour en savoir plus, consultez Linux à sécurité renforcée dans Android.

démarrage validé

Android 7.0 et versions ultérieures sont compatibles avec le démarrage validé strictement appliqué, ce qui signifie que les appareils compromis ne peuvent pas démarrer. Le démarrage validé garantit l'intégrité du logiciel de l'appareil à partir d'une racine de confiance matérielle jusqu'à la partition système. Au cours du démarrage, chaque étape vérifie de manière chiffrée l'intégrité et l'authenticité de l'étape suivante avant de l'exécuter.
Pour en savoir plus, consultez la section Démarrage validé.

Cryptographie

Android fournit un ensemble d'API cryptographiques à utiliser par les applications. Cela inclut les implémentations de primitives cryptographiques standards et couramment utilisées telles que AES, RSA, DSA et SHA. De plus, des API sont fournies pour les protocoles de niveau supérieur tels que SSL et HTTPS.

Android 4.0 a introduit la classe KeyChain pour permettre aux applications d'utiliser le stockage des identifiants système pour les clés privées et les chaînes de certificats.

En mode root

Par défaut, sur Android, seul le noyau et un petit sous-ensemble des services principaux s'exécutent avec des autorisations racine. SELinux limite toujours les processus de l'espace utilisateur exécutés en tant qu'utilisateur racine. Le démarrage validé empêche un utilisateur ou un service disposant d'autorisations racine de modifier définitivement le système d'exploitation.

La possibilité de modifier un appareil Android dont ils sont propriétaires est importante pour les développeurs qui travaillent avec la plate-forme Android. Sur de nombreux appareils Android, les utilisateurs peuvent déverrouiller le bootloader pour permettre l'installation d'un autre système d'exploitation. Ces systèmes d'exploitation alternatifs peuvent permettre à un propriétaire d'obtenir un accès racine à des fins de débogage d'applications et de composants système, ou d'accéder à des fonctionnalités non présentées aux applications par les API Android.

Sur certains appareils, une personne disposant d'un contrôle physique de l'appareil et d'un câble USB peut installer un nouveau système d'exploitation qui fournit des droits d'administrateur à l'utilisateur. Pour protéger les données utilisateur existantes contre les menaces, le mécanisme de déverrouillage du bootloader exige que le bootloader efface toutes les données utilisateur existantes lors de l'étape de déverrouillage. L'accès racine obtenu en exploitant un bug du noyau ou une faille de sécurité peut contourner cette protection.

Le chiffrement des données à l'aide d'une clé stockée sur l'appareil ne protège pas les données de l'application contre les utilisateurs racine sur les appareils en mode root. Les applications peuvent ajouter une couche de protection des données à l'aide du chiffrement avec une clé stockée hors de l'appareil, par exemple sur un serveur ou avec un mot de passe utilisateur. Cette approche peut fournir une protection temporaire lorsque la clé n'est pas présente, mais à un moment donné, la clé doit être fournie à l'application et devient alors accessible aux utilisateurs racine.

Une approche plus robuste pour protéger les données contre les utilisateurs racine consiste à utiliser des solutions matérielles. Les OEM peuvent choisir d'implémenter des solutions matérielles qui limitent l'accès à des types de contenus spécifiques, tels que le DRM pour la lecture vidéo ou le stockage sécurisé lié à la technologie NFC pour Google Wallet. En cas de perte ou de vol d'un appareil, le chiffrement de l'espace de stockage garantit qu'il est impossible d'accéder aux données utilisateur sans connaître les identifiants de l'utilisateur sur l'écran de verrouillage.

Fonctionnalités de sécurité pour les utilisateurs

Chiffrement du stockage

Le CDD exige que tous les appareils lancés avec Android 10 ou version ultérieure, et la plupart des appareils lancés avec Android 6.0 ou version ultérieure, activent le chiffrement de l'espace de stockage par défaut.

L'implémentation actuelle du chiffrement de stockage d'Android est le chiffrement basé sur les fichiers associé au chiffrement des métadonnées. Le chiffrement basé sur les fichiers chiffre de manière transparente le contenu et les noms des fichiers sur la partition userdata, à l'aide de clés différentes pour différents répertoires. Il fournit des répertoires de stockage chiffrés par identifiant et par appareil pour chaque utilisateur, y compris les profils professionnels.

Le chiffrement des métadonnées complète le chiffrement basé sur les fichiers. Il chiffre tous les blocs de la partition userdata qui ne sont pas déjà chiffrés par le chiffrement basé sur les fichiers, à l'aide d'une clé qui n'est pas liée aux identifiants de l'écran de verrouillage d'un utilisateur, mais qui est toujours protégée par le démarrage validé.

Protection des identifiants sur l'écran de verrouillage

Android peut être configuré pour vérifier les identifiants d'écran de verrouillage fournis par l'utilisateur (code, mot de passe ou schéma) avant d'accorder l'accès à un appareil. En plus d'empêcher l'utilisation non autorisée de l'appareil, les identifiants de l'écran de verrouillage protègent la clé cryptographique des données chiffrées par identifiant. Un administrateur d'appareil peut exiger l'utilisation d'identifiants d'écran de verrouillage et/ou de règles de complexité des identifiants.

Administration des appareils

Android 2.2 et les versions ultérieures fournissent l'API Android Device Administration, qui offre des fonctionnalités d'administration des appareils au niveau du système. Par exemple, l'application de messagerie Android intégrée utilise les API pour améliorer la compatibilité avec Exchange. Via l'application de messagerie, les administrateurs Exchange peuvent appliquer des règles d'identifiants d'écran de verrouillage, y compris des mots de passe alphanumériques ou des codes numériques, sur tous les appareils. Les administrateurs peuvent également effacer à distance (c'est-à-dire rétablir les paramètres d'usine) les téléphones perdus ou volés.

En plus d'être utilisées dans les applications incluses avec le système Android, ces API sont disponibles pour les fournisseurs tiers de solutions de gestion des appareils. Pour en savoir plus sur l'API, consultez la section Administration des appareils.