Google s'est engagé à promouvoir l'équité raciale pour les communautés noires. Regarde comment.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Stockage adoptable

Android a toujours pris en charge les accessoires de stockage externe (tels que les cartes SD), mais ces accessoires étaient historiquement limités au simple stockage de fichiers, en raison de leur impermanence attendue et de la protection minimale des données offerte au stockage externe traditionnel . Android 6.0 a introduit la possibilité d' adopter des supports de stockage externes pour agir comme un stockage interne.

Lorsque le support de stockage externe est adopté, il est formaté et chiffré pour ne fonctionner qu'avec un seul appareil Android à la fois. Étant donné que le média est étroitement lié à l'appareil Android qui l'a adopté, il peut stocker en toute sécurité des applications et des données privées pour tous les utilisateurs.

Lorsque les utilisateurs insèrent un nouveau support de stockage (comme une carte SD) dans un emplacement adoptable, Android leur demande comment ils souhaitent utiliser le support. Ils peuvent choisir d'adopter le support, de le formater et de le crypter, ou de continuer à l'utiliser tel quel pour un stockage de fichiers simple. S'ils choisissent d'adopter, la plate-forme propose de migrer le contenu de stockage partagé principal (généralement monté sur /sdcard ) vers le support nouvellement adopté, libérant ainsi un espace précieux sur le stockage interne. Contrairement au stockage traditionnel, qui est limité à 2 To en raison de son utilisation du MBR , le stockage adoptable utilise GPT et a donc une limite de stockage de fichiers de ~ 9ZB.

Les applications peuvent être placées sur un support de stockage adopté uniquement lorsque le développeur a indiqué la prise en charge via l'attribut android:installLocation . Les nouvelles installations des applications prises en charge sont automatiquement placées sur le périphérique de stockage avec le plus d'espace libre, et les utilisateurs peuvent déplacer les applications prises en charge entre les périphériques de stockage dans l'application Paramètres . Les applications déplacées vers le média adopté sont mémorisées pendant l'éjection du média et reviennent lorsque le média est réinséré.

Sécurité

La plate-forme génère de manière aléatoire des clés de cryptage pour chaque appareil adopté et les stocke sur le stockage interne de l'appareil Android. Cela rend effectivement les supports adoptés aussi sûrs que le stockage interne. Les clés sont associées aux périphériques adoptés en fonction du GUID de partition adopté.

Si l'appareil est configuré pour utiliser le chiffrement basé sur fichier (FBE) sur son stockage interne, le stockage adoptable utilise à la fois le chiffrement FBE et les métadonnées . Sinon, le stockage adoptable utilise le chiffrement complet du disque (FDE).

La disposition sur disque du périphérique adopté reflète étroitement la partition de données interne, y compris les étiquettes SELinux, etc. Lorsque le multi-utilisateur est pris en charge sur le périphérique Android, le périphérique de stockage adopté prend également en charge le multi-utilisateur avec le même niveau d'isolement que l'interne. espace de rangement.

Étant donné que le contenu d'un périphérique de stockage adopté est fortement lié à l'appareil Android qui l'a adopté, les clés de chiffrement ne doivent pas être extractibles à partir du périphérique parent et, par conséquent, le périphérique de stockage ne peut pas être monté ailleurs.

Si votre appareil utilise FBE, consultez la documentation FBE et la documentation sur le chiffrement des métadonnées pour savoir comment configurer le chiffrement FBE et des métadonnées sur le stockage adoptable.

Performance et stabilité

Seuls les supports de stockage externes situés dans des emplacements stables, tels qu'un emplacement à l'intérieur d'un compartiment de batterie ou derrière un couvercle de protection, doivent être envisagés pour adoption afin d'éviter toute perte ou corruption accidentelle de données. En particulier, les périphériques USB connectés à un téléphone ou une tablette ne doivent jamais être considérés pour adoption. Une exception courante serait un lecteur USB externe connecté à un appareil de type téléviseur, car le téléviseur entier est généralement installé dans un emplacement stable.

Lorsqu'un utilisateur adopte un nouveau périphérique de stockage, la plate-forme exécute un benchmark et compare ses performances à celles du stockage interne. Si le périphérique adopté est nettement plus lent que le stockage interne, la plate-forme avertit l'utilisateur d'une expérience éventuellement dégradée. Cette référence a été dérivée du comportement d'E / S réel des applications Android populaires. Actuellement, l'implémentation AOSP avertit uniquement les utilisateurs au-delà d'un seul seuil, mais les fabricants de périphériques peuvent l'adapter davantage, par exemple en rejetant complètement l'adoption si la carte est extrêmement lente.

Les périphériques adoptés doivent être formatés avec un système de fichiers prenant en charge les autorisations POSIX et les attributs étendus, tels que ext4 ou f2fs . Pour des performances optimales, le f2fs fichiers f2fs est recommandé pour les périphériques de stockage Flash.

Lors de l'exécution de la maintenance d'inactivité périodique, la plate-forme émet FI_TRIM sur le support adopté, tout comme elle le fait pour le stockage interne. La spécification actuelle de la carte SD ne prend pas en charge la commande DISCARD ; mais le noyau retombe à la place sur la commande ERASE , que le micrologiciel de la carte SD peut choisir d'utiliser à des fins d'optimisation.

Essai

Pour tester que le stockage adoptable fonctionne, exécutez ce test CTS:

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

Pour vérifier le comportement des clés USB et des cartes SD lorsqu'un appareil ne dispose pas d'un emplacement intégré ou lorsque le connecteur USB est utilisé pour une connexion adb active, utilisez:

adb shell sm set-virtual-disk true