S'il s'agit d'un appareil Android 8+, TEE est une exigence obligatoire pour les OEM afin d'obtenir une licence Google Mobile Services (GMS) pour les appareils qui ont des applications Google préinstallées.
Dans Paramètres > Sécurité > Avancés > Cryptage et informations d'identification > (CREDENTIAL STORAGE) Storage type > Supporté par le matériel
S'il est indiqué que le matériel est soutenu, alors TEE est présent.
De manière programmatique, vous pouvez utiliser isInsideSecureHardware()
qui renvoie vrai si la clé réside dans TEE ou SE.
Si vous voulez vérifier explicitement si c'est SE, utilisez setIsStrongBoxBacked
sur le keyGenParameterSpecBuilder
la génération de clés échouera avec un StrongBoxUnavailableException
si StrongBox n'est pas supporté.
Les SoCs Qualcomm Snapdragon et Samsung Exynos contiennent un TEE intégré et ils lèvent l'exception StrongBox unavailable mais renvoient true pour isInsideSecureHardware. La puce Titan M de Google et la puce Knox de Samsung sont des TEE discrets (appelés strongbox) qui contiennent un SE à l'intérieur.
1 votes
Trusty est une implémentation de référence d'un TEE OS. Mais de nombreux OEM ont utilisé leurs propres implémentations à code source fermé, notamment QSEE, Kinibi, TEEGris, iTrustee, etc. Je ne pense pas que vous trouverez un indice sur l'implémentation sous-jacente sur un appareil non rooté. Il est possible que le nom du processus HAL(s) (blobs binaires) (généralement un nom de fichier de type
init
) interagissant avec le matériel TEE peut inclure des indications. Sur un appareil enraciné, cependant, il y a plus de chances d'obtenir un indice, par exemple à partir du nom ou de l'hexdump d'une partition liée à TEE. Même en exécutantstrings
sur une telle partition peut aider.