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 résulte d'un comportement d'application inclus ou d'une exploitation d'une faille d'application, le système est conçu pour empêcher l'application malveillante d'endommager d'autres applications, le système Android ou l'appareil lui-même. Consultez la section Configuration du kernel pour connaître les mesures que vous pouvez prendre pour renforcer le kernel sur vos appareils. Pour connaître les paramètres requis, consultez le document de définition de compatibilité Android (CDD).
Sécurité Linux
La plate-forme Android repose sur le noyau Linux. 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 de processus
- Mécanisme extensible pour l'IPC sécurisé
- Possibilité de supprimer les parties inutiles et potentiellement non sécurisées du noyau
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 (par exemple, la téléphonie, le GPS et le Bluetooth).
Application Sandbox
La sécurité des applications Android est assurée par le bac à sable de l'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 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 de 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 SELinux (Security-Enhanced Linux) pour appliquer des stratégies de contrôle des accès et établir un contrôle des 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 démarrage, chaque étape vérifie de manière cryptographique 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. Celles-ci incluent la mise en œuvre de primitives cryptographiques standards et couramment utilisées, telles que AES, RSA, DSA et SHA. En outre, des API sont fournies pour des 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 autres systèmes d'exploitation peuvent permettre à un propriétaire d'obtenir un accès root afin de déboguer des applications et des composants système ou d'accéder à des fonctionnalités non proposées par les API Android.
Sur certains appareils, une personne ayant le contrôle physique d'un appareil et un câble USB peut installer un nouveau système d'exploitation qui accorde des droits d'administrateur à l'utilisateur. Pour protéger les données utilisateur existantes contre toute compromission, le mécanisme de déverrouillage du bootloader nécessite 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 des utilisateurs root 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. Toutefois, à un moment donné, la clé doit être fournie à l'application pour qu'elle devienne 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 à certains types de contenus, tels que la DRM pour la lecture de vidéos ou le stockage sécurisé compatible NFC pour Google Wallet. En cas de perte ou de vol d'un appareil, le chiffrement du 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é utilisateur
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.
La mise en œuvre actuelle du chiffrement du stockage sur Android repose sur le chiffrement basé sur les fichiers combiné 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 toute utilisation non autorisée de l'appareil, les identifiants de l'écran de verrouillage protègent la clé cryptographique pour les données chiffrées par identifiant. L'utilisation d'identifiants d'écran de verrouillage et/ou de règles de complexité des identifiants peut être exigée par un administrateur de l'appareil.
Administration des appareils
Android 2.2 et versions ultérieures fournissent l'API Android Device Administration, qui fournit 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) des appareils 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.