Android Q: toutes les nouvelles fonctionnalités de sécurité et de confidentialité à venir sur Android 10

Chez Google I/O, nous avons découvert les améliorations apportées par Android Q. De nouvelles fonctionnalités et améliorations en matière de sécurité et de confidentialité sont omniprésentes dans le nouveau système d'exploitation Android.

Chaque nouvelle version du système d'exploitation Android apporte des améliorations à presque tous les aspects, de la conception aux fonctionnalités, en passant par les API, etc. Lors de Google I/O plus tôt ce mois-ci, nous avons découvert toutes les améliorations qu'Android Q va apporter, et bien sûr, de nouvelles annonces en matière de confidentialité et de sécurité n’ont pas été laissées de côté lors de la conférence. La sécurité de la plateforme est l'un des aspects les plus importants d'un OS, en particulier pour un OS que nous emportons partout avec nous dans nos poches. Si Android n’était pas sécurisé, nous ne lui confierions pas deux fois moins de fonctions que nous. Les paiements NFC seraient hors de question, le partage de fichiers serait pour le moins douteux et la connexion à d’autres appareils serait carrément une folie. Malgré le problème de longue date de la fragmentation des versions, Google a extrêmement bien réussi à maintenir le nombre de problèmes de sécurité au minimum.

Android est devenu un système d'exploitation à la fois riche en fonctionnalités et hautement sécurisé. Mais il y a bien sûr toujours place à l’amélioration. De nombreux facteurs contribuent à cette sécurité, et certains d'entre eux sont améliorés d'une manière ou d'une autre avec Android Q.


Chiffrement

Étant l'une des méthodes de sécurité les plus élémentaires, il est important que chaque appareil prenne en charge un cryptage fort. De nos jours, de nombreux constructeurs OEM expédient leurs appareils avec du matériel de chiffrement dédié. Bien que cela soit bénéfique, cela coûte également cher. En tant que tel, le matériel dédié a généralement été limité aux appareils de niveau moyen à élevé. Cela ne veut pas dire que les appareils bas de gamme ne peut pas prend en charge le chiffrement, mais sans chiffrement accéléré par le matériel, l'expérience utilisateur globale est dégradée en raison de temps de lecture/écriture lents. C'est là qu'Adiantum entre en jeu.

Adiantum

En février, Google a annoncé Adiantum comme alternative algorithme de cryptage pour les téléphones bas de gamme qui ne prennent pas en charge les jeux d'instructions AES classiques. Adiantum est spécialement conçu pour fonctionner sans aucun matériel dédié. Il constitue une alternative plus légère au cryptage AES standard d'Android. Les benchmarks de Google dites-nous qu'il est en fait 5 fois plus rapide qu'AES, l'inconvénient étant qu'il compromet légèrement la sécurité. Cela en fait le candidat idéal pour les téléphones bas de gamme, tels que ceux alimentés par Android Go Edition. Adiantum est également destiné à des produits tels que les montres intelligentes et une variété d'appareils Internet des objets.

Jusqu’à présent, Adiantum était facultatif; les fabricants pouvaient l'activer sur les appareils lancés avec Android Pie, mais ce n'était pas l'algorithme de cryptage par défaut. Désormais, Adiantum est inclus nativement dans Android Q. Cela signifie que tous les appareils lancés avec Q devront crypter les données utilisateur, sans exception. Par conséquent, les appareils lancés avec Android Q sont assurés d'avoir un cryptage de stockage, que ce soit via Adiantum ou non.

Bibliothèque de sécurité Jetpack

Jetpack est un ensemble de bibliothèques de support Android, et l'un des ajouts les plus récents est en alpha: la bibliothèque de sécurité Jetpack. La bibliothèque simplifie le processus de sécurisation de votre application en gérant des éléments tels que la gestion des magasins de clés sauvegardés sur le matériel et en générant et en validant des clés.

TLS1.3

Cependant, le stockage n’est pas le seul domaine dans lequel le cryptage a été amélioré. La communication avec d'autres appareils a été considérablement améliorée, avec l'introduction de Prise en charge de TLS 1.3 par défaut. TLS 1.3 est la dernière norme cryptographique de réseau, finalisée par l'IETF en août 2018. TLS 1.3 offre plus de confidentialité pour les échanges de données en chiffrant davantage de négociations de négociation. En plus de cela, il est plus rapide que TLS 1.2 car un aller-retour complet est supprimé de la poignée de main d'établissement de la connexion. Associé à des algorithmes modernes plus efficaces, cela permet d'augmenter la vitesse jusqu'à 40 %.

TLS 1.3 dans Google Chrome. Source: Google.

TLS est désormais mis à jour directement depuis Google Play car il fait partie du composant « Conscrypt ». Vous pouvez en savoir plus à ce sujet et sur Project Mainline ici.

Étant donné que nous faisons quotidiennement confiance à de nombreuses transactions sensibles sur nos appareils, le TLS mis à niveau est plus important que jamais. Stocker des cartes d'embarquement - et même permis de conduire numériques à un moment donné dans le futur - sur Android signifie que tous les appareils doivent crypter les données des utilisateurs du mieux qu'ils peuvent. Adiantum et le cryptage forcé ouvriront la voie au stockage des données, même les plus sensibles, sur les appareils les moins chers. Mais le cryptage n’est pas le seul moyen par lequel Google augmente la sécurité d’Android dans la version Q.


Modifications des autorisations et de la confidentialité dans Android Q

Stockage limité

Scoped Storage est une nouvelle protection utilisée pour empêcher les applications de lire/écrire des fichiers dans un stockage externe qui ne sont pas contenus dans leur propre répertoire spécifique à l'application en bac à sable. L'objectif de Google est triple: une meilleure attribution des applications qui contrôlent quels fichiers, la protection des données des applications et la protection des données des utilisateurs.

Google double l'API MediaStore pour le contenu audio, vidéo et image partagé. Par défaut, toutes les applications peuvent insérer, modifier ou supprimer leurs propres fichiers dans le MediaStore. Images, MediaStore. Vidéo et MediaStore. Collections audio sans avoir besoin d'aucune autorisation. Android Q ajoute également un nouveau MédiaStore. Téléchargements collection pour stocker le contenu téléchargé par l'utilisateur, auquel toutes les applications utilisant l'API MediaStore peuvent contribuer. Bien que les fichiers stockés dans les répertoires spécifiques aux applications en bac à sable soient supprimés lors de la désinstallation, tous les fichiers ajoutés aux collections MediaStore persistent au-delà de la désinstallation.

Pour accéder à des fichiers créés par une autre application, que le fichier se trouve dans l'une des collections MediaStore ou en dehors de celles-ci, l'application doit utiliser Storage Access Framework. De plus, les métadonnées EXIF ​​des images sont supprimées, sauf si votre application dispose de la nouvelle autorisation ACCESS_MEDIA_LOCATION. Dans Android Q, les applications peuvent également contrôler sur quel périphérique de stockage placer le média en interrogeant son nom de volume à l'aide de getExternalVolume().

Google a initialement imposé des restrictions de stockage étendu sur toutes les applications dans Android Q, quels que soient leurs niveaux d'API cibles, mais après commentaires, la société est donner plus de temps aux développeurs pour faire des ajustements. Tous les détails sur les modifications apportées au stockage étendu peuvent être trouvés sur cette page, et vous pouvez en savoir plus sur les recommandations de Google sur les bonnes pratiques en matière de stockage partagé en je regarde ce Google I/O parler.

Avertissements pour les applications ciblant le niveau d'API

Cependant, les restrictions d'autorisation ne s'arrêtent pas là. L'installation d'une application qui cible un niveau d'API inférieur à 23 (Android Lollipop ou version antérieure) entraînera l'affichage par le système d'exploitation d'un avertissement à l'utilisateur si ladite application demande des autorisations sensibles lors de l'installation. Avant l'installation, les utilisateurs auront la possibilité de spécifier manuellement les autorisations qu'ils souhaitent accorder à l'application avant de continuer. Ainsi, Android Q ne permet plus aux applications de contourner les autorisations d'exécution.

Comme CopperheadOS, Android Q d'origine permet désormais à l'utilisateur de désactiver toutes les autorisations dangereuses demandées avant d'exécuter une application pour la première fois. Cela s'applique uniquement aux applications ciblant le niveau d'API 22 ou inférieur, c'est-à-dire avant l'introduction des autorisations d'exécution (dans Android Marshmallow.)

Éventuel SYSTEM_ALERT_DEPRECATION en faveur de l'API Bubbles

L'API Bulles en action. Source: Google.

L'autorisation de superposition (SYSTEM_ALERT_WINDOW) ne peut plus être accordée pour les applications exécutées sur Android Q (Go Edition). Pour les appareils non-Go Edition, Google pousse les développeurs vers la nouvelle API Bubbles. L'API Bubbles est une fonctionnalité introduite dans Android Q Bêta 2 qui permet des fonctionnalités similaires aux têtes de discussion de Facebook Messenger. Les notifications des applications apparaissent sous forme de petites bulles sur les bords de l'écran, qui se dilatent lorsque l'utilisateur les appuie. Au sein de la bulle, une application peut afficher une activité.

Ce changement était nécessaire car permettre aux applications de dessiner librement des superpositions sur d'autres applications présente des risques de sécurité évidents. L'infâme "Cape et poignard" L'exploit a largement utilisé cette faiblesse. La fonctionnalité de l'API de superposition a été restreinte dès Android Oreo, mais maintenant l'édition Go d'Android Q a complètement supprimé l'accès à l'API avec un version future pour la déprécier complètement.

Restrictions de lancement d’activités en arrière-plan

Les applications en arrière-plan ne peuvent plus lancer automatiquement une activité lorsque le téléphone est déverrouillé, quel que soit leur niveau d'API cible. Il existe toute une liste de conditions dans lesquelles les applications peuvent désormais lancer des activités, que vous pouvez lire ici. Les applications en arrière-plan qui ne remplissent pas ces conditions et souhaitent lancer une activité en urgence devront désormais en informer l'utilisateur via une notification. Si la notification est créée avec une intention plein écran en attente, l'intention est lancée immédiatement si l'écran est éteint, ce qui est utile pour les alarmes ou les appels entrants.

Restriction d'accès au presse-papiers en arrière-plan

L'accès au presse-papiers en arrière-plan est ce n'est plus possible. Toute application qui n'est pas au premier plan ou définie comme méthode de saisie par défaut ne pourra en aucun cas lire votre presse-papiers. Cela frappe particulièrement durement les applications telles que les gestionnaires de presse-papiers. Google affirme que ce changement n'affecte que les applications qui ciblent exclusivement Android Q, mais nos tests indiquent que la restriction n'est pas discriminatoire; aucune application que nous avons essayée ne pouvait voir le presse-papiers.

Bien entendu, ce changement est logique. Nous copions souvent des informations sensibles dans le presse-papiers, comme des mots de passe et des détails de carte de crédit, mais il est toujours dommage de voir les gestionnaires de presse-papiers tomber à l'eau.

Accès à la localisation uniquement lorsqu'une application est en cours d'utilisation

Nouvelles options d'autorisation de localisation

Un nouveau paramètre activé par l'utilisateur permet uniquement aux applications d'atteindre votre position lorsque l'application est en cours d'utilisation. La dernière version bêta d'Android Q a également ajouté une notification vous rappelant si vous avez accordé à une application un accès permanent à l'emplacement.

Les rôles

Les rôles

Une nouvelle API "Rôles" a été ajoutée. Les rôles sont essentiellement groupes avec accès aux autorisations prédéfinies. Par exemple, les applications dotées du rôle de galerie peuvent avoir accès à vos dossiers multimédias, tandis que les applications dotées du rôle de numérotation peuvent être en mesure de gérer les appels. Les applications auxquelles l'utilisateur attribue un certain rôle doivent également disposer des composants requis. Les applications dotées du rôle de galerie, par exemple, doivent disposer du filtre d'intention d'action. Android.intention.action.PRINCIPAL et le filtre d'intention de catégorie android.intent.category. APP_GALERIE pour apparaître en tant qu'application de galerie dans les paramètres.

Carreau Paramètres rapides Capteurs désactivés

Tuile Paramètres rapides des capteurs

Il existe une nouvelle vignette de paramètres rapides « Capteurs désactivés » qui désactive les lectures de tous capteurs (accéléromètre, gyroscope, etc.) sur votre appareil pour une véritable confidentialité. Cette vignette Paramètres rapides est masquée par défaut mais peut être activée en accédant aux « vignettes de développeur de paramètres rapides » dans les options du développeur.

Restrictions concernant /proc/net

Les applications ne peuvent plus accéder à proc/net, rendant des services comme netstat plus viables. Cela protège les utilisateurs contre les applications malveillantes qui surveillent les sites Web et les services auxquels ils se connectent. Les applications qui nécessitent un accès continu, telles que les VPN, doivent utiliser le Gestionnaire de statistiques de réseau et Gestionnaire de connectivité Des classes.

Adresses MAC aléatoires

Votre adresse MAC est un identifiant unique que les réseaux utilisent pour se souvenir de quel appareil il s'agit. Sous Android Q, chaque fois que vous vous connectez à un nouveau réseau, votre appareil utilise une nouvelle adresse MAC aléatoire. Par conséquent, les réseaux ne peuvent pas suivre votre position en faisant correspondre les réseaux WiFi auxquels vous vous connectez avec l'adresse MAC de votre téléphone. L'adresse MAC réelle d'usine de l'appareil peut toujours être obtenue par les applications via le getWifiMacAddress() commande.


Renforcement de la plate-forme dans Android Q

Un seul bug dans Android ne signifie pas que les attaquants ont désormais un accès complet au système d'exploitation ou qu'ils peuvent contourner n'importe quel système de sécurité. Cela est dû en partie à un certain nombre de mesures de protection telles que l'isolation des processus, la réduction de la surface d'attaque, la décomposition architecturale et l'atténuation des exploits. Ces garanties rendent les vulnérabilités plus difficiles, voire impossibles, à exploiter. Par conséquent, les attaquants ont généralement besoin d’une multitude de vulnérabilités avant de pouvoir atteindre leurs objectifs. Dans le passé, nous avons assisté à des attaques comme DRAMMER qui fonctionnent en enchaînant plusieurs exploits ensemble.

Android Q prend de telles protections et les applique également à des zones plus sensibles telles que les médias et les composants Bluetooth ainsi qu'au noyau. Cela apporte des améliorations notables.

  • Un bac à sable contraint pour les codecs logiciels.
  • Utilisation accrue de désinfectants en production pour atténuer des classes entières de vulnérabilités dans les composants qui traitent du contenu non fiable.
  • Shadow Call Stack, qui fournit une intégrité du flux de contrôle (CFI) vers l'arrière et complète la protection vers l'avant fournie par le CFI de LLVM.
  • Protection de la randomisation de la disposition de l'espace d'adressage (ASLR) contre les fuites à l'aide de la mémoire eXecute-Only (XOM).
  • Introduction de l'allocateur renforcé Scudo qui rend un certain nombre de vulnérabilités liées au tas plus difficiles à exploiter.

Cela fait beaucoup de jargon logiciel. L'essentiel est que, premièrement, les codecs logiciels s'exécutent désormais dans des bacs à sable qui ont moins de privilèges, ce qui signifie qu'il est il est moins probable qu'un logiciel malveillant puisse exécuter des commandes susceptibles d'endommager votre appareil, comme dans le cas de Trac en 2015.

Un bac à sable contraint pour les codecs logiciels. Source: Google.

Deuxièmement, Android vérifie désormais les accès hors limites aux tableaux à davantage d’endroits, ainsi que les débordements. Empêcher les débordements et demander aux processus d'échouer en toute sécurité réduit considérablement le pourcentage de vulnérabilités de l'espace utilisateur. Cela signifie que si un programme malveillant tente de provoquer un crash de quelque chose en tentant délibérément de accéder à des données qui n'existent pas, Android le reconnaîtra désormais et quittera le programme, au lieu de s'écraser.

Troisièmement, Shadow Call Stack protège les adresses de retour en les stockant dans une pile fantôme distincte, les rendant inaccessibles aux programmes classiques. Les adresses de retour sont généralement des pointeurs vers des fonctions. Il est donc important de protéger ces adresses pour garantir que les attaquants ne puissent pas accéder aux fonctions qu'ils ne devraient pas pouvoir accéder.

Quatrièmement, ASLR est une méthode de protection qui randomise l'emplacement de stockage des programmes en mémoire, ce qui plus difficile de déterminer où les programmes sont stockés en mémoire en fonction de l'emplacement des autres programmes. La mémoire eXecute uniquement renforce cela en rendant le code illisible.

Enfin, Scudo est un allocateur de tas dynamique qui gère de manière proactive la mémoire de manière à rendre les vulnérabilités basées sur le tas beaucoup plus difficiles à exploiter. Vous pouvez en savoir plus à ce sujet ici.


Authentification

Mises à jour de BiometricPrompt dans Android Q

Google a introduit la nouvelle API BiometricPrompt il y a plus d'un an, en Aperçu du développeur Android P 2. Il s’agissait d’une invite Android générique pour les méthodes de déverrouillage biométrique. L'idée est que les appareils qui prennent en charge plus que la simple numérisation d'empreintes digitales, par ex. La numérisation de l'iris sur la gamme Galaxy S de Samsung pourra utiliser ces méthodes lorsque les applications demanderont une vérification.

Android Q ajoute une prise en charge robuste de la vérification du visage et des empreintes digitales, ainsi que l'extension de l'API pour prendre en charge l'authentification implicite. L'authentification explicite nécessite que l'utilisateur s'authentifie d'une manière ou d'une autre avant de continuer, tandis que l'authentification implicite ne nécessite plus d'interaction de l'utilisateur.

Flux implicite et explicite de l'API BiometricPrompt. Source: Google.

De plus, les applications peuvent désormais vérifier si un appareil prend en charge l'authentification biométrique via un simple appel de fonction, leur permettant de ne pas perdre de temps à invoquer un BiometricPrompt sur des appareils qui ne le font pas soutiens le. Une utilisation idéale serait si les applications souhaitent définir un paramètre « Activer la connexion biométrique » selon qu'un appareil prend en charge ou non l'authentification biométrique.

Les éléments constitutifs de la prise en charge de l’identification électronique

Plus tôt cette année, nous avons découvert des preuves que Google est travailler sur la prise en charge des identifiants électroniques sous Android. Chez I/O, Google nous a informé de l'avancée de la fonctionnalité. Google affirme travailler avec l'ISO pour normaliser la mise en œuvre des permis de conduire mobiles, et des passeports électroniques sont en préparation. Pour les développeurs, Google fournira une bibliothèque Jetpack afin que les applications d'identité puissent commencer à être créées.


Projet principal dans Android Q

Le projet Mainline est une entreprise majeure de Google visant à réduire la fragmentation de certains modules et applications du système. Google contrôlera les mises à jour d'environ 12 composants du système via le Play Store. Nous avons parlé en profondeur du projet Mainline dans un article précédent si vous souhaitez en savoir plus.


Conclusion

La sécurité a toujours été un élément essentiel du développement d'Android. Google a fait un travail impressionnant en gardant Android à jour avec les dernières fonctionnalités de sécurité, tout en apportant ses propres innovations. Ils poursuivent ce processus de développement avec Android Q, en le dotant de nombreuses fonctionnalités de sécurité conçues pour garantir que vos données sont plus sécurisées que jamais.


Source 1: Quoi de neuf dans la sécurité Android Q [Google]

Source 2: Sécurité sur Android: quelle est la prochaine étape [Google]

Source 3: Mettez en file d'attente les améliorations de renforcement [Google]

Avec la contribution de Mishaal Rahman et Adam Conway.