Au niveau du système d'exploitation, la plate-forme Android offre la sécurité du noyau Linux, ainsi qu'une fonction de communication inter-processus sécurisée (IPC) 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 limité par l'Application Sandbox. Que ce code soit le résultat d'un comportement d'application inclus ou de l'exploitation d'une vulnérabilité 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. Consultez Configuration du noyau pour connaître les mesures que vous pouvez prendre pour renforcer le noyau de vos appareils. Consultez le document de définition de compatibilité Android (CDD) pour connaître les paramètres requis.
Sécurité Linux
La base de la plateforme Android est le noyau Linux. Le noyau Linux est largement utilisé depuis des années et est utilisé dans des millions d'environnements sensibles en matière de sécurité. Grâce à son historique de recherches, d'attaques et de corrections constantes par des milliers de développeurs, Linux est devenu un noyau stable et sécurisé auquel de nombreuses entreprises et professionnels de la sécurité font confiance.
En tant que base d'un environnement informatique mobile, le noyau Linux fournit à Android plusieurs fonctionnalités de sécurité clés, notamment :
- Un modèle d'autorisations basé sur l'utilisateur
- Isolement des processus
- Mécanisme extensible pour un IPC sécurisé
- La possibilité de supprimer les parties inutiles et potentiellement non sécurisées du noyau
En tant que système d'exploitation multi-utilisateurs, l'un des objectifs fondamentaux de sécurité du noyau 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
- Garantit que l'utilisateur A n'épuise pas la mémoire de l'utilisateur B
- Garantit que l'utilisateur A n'épuise pas les ressources CPU de l'utilisateur B
- Garantit que l'utilisateur A n'épuise pas les appareils de l'utilisateur B (par exemple, téléphonie, GPS et Bluetooth)
Le bac à sable des applications
La sécurité des applications Android est renforcée par le bac à sable d'applications, qui isole les applications les unes des autres et protège les applications et le système contre les applications malveillantes. Pour plus de détails, consultez Application Sandbox .
Partition système et mode sans échec
Les différentes partitions protégées en intégrité contiennent le noyau d'Android ainsi que les bibliothèques du système d'exploitation, le moteur d'exécution des applications, le cadre 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 ne sont pas lancées par défaut.
Autorisations du système de fichiers
Dans un environnement de style UNIX, les autorisations du système de fichiers garantissent qu'un utilisateur ne peut pas modifier ou lire les fichiers d'un autre utilisateur. Dans le cas d'Android, chaque application s'exécute en tant que son propre utilisateur. À moins que le développeur ne partage explicitement des fichiers avec d'autres applications, les fichiers créés par une application ne peuvent pas être lus ou modifiés par une autre application.
Linux à sécurité améliorée
Android utilise Security-Enhanced Linux (SELinux) pour appliquer des politiques de contrôle d'accès et établir un contrôle d'accès obligatoire (mac) sur les processus. Voir Linux à sécurité améliorée sous Android pour plus de détails.
Démarrage vérifié
Android 7.0 et versions ultérieures prennent en charge le démarrage vérifié strictement appliqué, ce qui signifie que les appareils compromis ne peuvent pas démarrer. Le démarrage vérifié garantit l'intégrité du logiciel de l'appareil, depuis une racine matérielle de confiance jusqu'à la partition système. Lors du démarrage, chaque étape vérifie cryptographiquement l'intégrité et l'authenticité de l'étape suivante avant de l'exécuter.
Voir Démarrage vérifié pour plus de détails.
Cryptographie
Android fournit un ensemble d'API cryptographiques à utiliser par les applications. Celles-ci incluent des implémentations de primitives cryptographiques standard 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 informations d'identification du système pour les clés privées et les chaînes de certificats.
Enracinement des appareils
Par défaut, sur Android, seuls le noyau et un petit sous-ensemble des services principaux s'exécutent avec les autorisations root. SELinux restreint toujours les processus de l'espace utilisateur exécutés en tant que root. Le démarrage vérifié empêche un utilisateur ou un service disposant des autorisations root de modifier définitivement le système d'exploitation.
La possibilité de modifier un appareil Android qu'ils possèdent est importante pour les développeurs travaillant avec la plateforme Android. Sur de nombreux appareils Android, les utilisateurs ont la possibilité de déverrouiller le chargeur de démarrage afin de 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 root à 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 du contrôle physique d'un appareil et d'un câble USB est en mesure d'installer un nouveau système d'exploitation qui fournit des privilèges root à l'utilisateur. Pour protéger les données utilisateur existantes contre toute compromission, le mécanisme de déverrouillage du chargeur de démarrage nécessite que le chargeur de démarrage efface toutes les données utilisateur existantes dans le cadre de l'étape de déverrouillage. L'accès root obtenu en exploitant un bug du noyau ou une faille de sécurité peut contourner cette protection.
Le chiffrement des données avec une clé stockée sur l'appareil ne protège pas les données d'application des utilisateurs root sur les appareils rootés. Les applications peuvent ajouter une couche de protection des données en utilisant le chiffrement avec une clé stockée hors appareil, comme sur un serveur ou un mot de passe utilisateur. Cette approche peut fournir une protection temporaire pendant que la clé n'est pas présente, mais à un moment donné, la clé doit être fournie à l'application et elle devient alors accessible aux utilisateurs root.
Une approche plus robuste pour protéger les données des utilisateurs root consiste à utiliser des solutions matérielles. Les constructeurs OEM peuvent choisir de mettre en œuvre des solutions matérielles limitant l'accès à des types spécifiques de contenu, tels que les DRM pour la lecture vidéo ou le stockage de confiance lié au NFC pour le portefeuille Google. En cas de perte ou de vol d'un appareil, le cryptage du stockage garantit que les données utilisateur ne sont pas accessibles sans connaître les informations d'identification de l'écran de verrouillage de l'utilisateur.
Fonctionnalités de sécurité des utilisateurs
Cryptage du stockage
Le CDD exige que tous les appareils lancés avec Android 10 ou version ultérieure, ainsi que la plupart des appareils lancés avec Android 6.0 ou version ultérieure, activent le cryptage du stockage dès le départ.
L'implémentation actuelle du chiffrement du stockage sur Android est un 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 de données utilisateur, en utilisant différentes clés pour différents répertoires. Il fournit des répertoires de stockage cryptés par identifiants 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 crypte tous les blocs de la partition de données utilisateur qui ne sont pas déjà cryptés par un cryptage basé sur fichier, à l'aide d'une clé non liée aux informations d'identification de l'écran de verrouillage d'un utilisateur mais toujours protégée par Verified Boot.
Protection des informations d'identification de l'écran de verrouillage
Android peut être configuré pour vérifier les informations d'identification de l'écran de verrouillage fournies par l'utilisateur (code PIN, mot de passe ou modèle) avant de fournir l'accès à un appareil. En plus d'empêcher toute utilisation non autorisée de l'appareil, les informations d'identification de l'écran de verrouillage protègent la clé cryptographique des données cryptées par les informations d'identification. L'utilisation d'un identifiant d'écran de verrouillage et/ou de règles de complexité des identifiants peut être exigée par un administrateur de périphérique.
Administration des appareils
Android 2.2 et versions ultérieures fournissent l'API d'administration des appareils Android, qui fournit des fonctionnalités d'administration des appareils au niveau du système. Par exemple, l'application Android Email intégrée utilise les API pour améliorer la prise en charge d'Exchange. Grâce à l'application de messagerie, les administrateurs Exchange peuvent appliquer des politiques d'identification d'écran de verrouillage, notamment des mots de passe alphanumériques ou des codes PIN numériques, sur tous les appareils. Les administrateurs peuvent également effacer à distance (c'est-à-dire restaurer les paramètres d'usine par défaut) les combinés 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. Les détails sur l'API sont fournis dans Administration des appareils .