Si es un dispositivo Android 8+, TEE es un requisito obligatorio para que los OEM obtengan la licencia de Servicios Móviles de Google (GMS) para dispositivos que tengan aplicaciones de Google preinstaladas.
En Configuración > Seguridad > Avanzado > Cifrado y credenciales > (ALMACENAMIENTO DE CREDENCIALES) Tipo de almacenamiento > Respaldado por hardware
Si dice respaldado por hardware, entonces TEE está presente.
De forma programática, puedes usar isInsideSecureHardware()
que devuelve verdadero si la clave reside dentro de TEE o SE.
Si deseas verificar explícitamente si es SE, utiliza setIsStrongBoxBacked
en el keyGenParameterSpecBuilder
, la generación de clave fallará con una StrongBoxUnavailableException
si StrongBox no es compatible.
Los SoC Qualcomm Snapdragon y Samsung Exynos contienen TEE integrado y arrojan una excepción de StrongBox no disponible pero devuelven verdadero para isInsideSecureHardware. El chip Titan M de Google y el chip Knox de Samsung son TEEs discretos (llamados strongbox) que contienen SE en su interior.
1 votos
Trusty es una especie de implementación de referencia de un sistema operativo de TEE. Pero muchos OEM han estado utilizando sus propias implementaciones de código cerrado, incluyendo QSEE, Kinibi, TEEGris, iTrustee, etc. No creo que encuentres una pista sobre la implementación subyacente en un dispositivo no rooteado. Una posibilidad es que el nombre de los HAL(s) (bloques binarios) del proceso (generalmente un servicio
init
) que interactúa con el hardware de TEE pueda incluir alguna pista. Sin embargo, en un dispositivo rooteado, hay mayores posibilidades de obtener una pista, por ejemplo, a partir del nombre o hexdump de alguna partición relacionada con TEE. Incluso ejecutarstrings
en dicha partición puede ayudar.