Android - TEE introduction

Le TEE

Le TEE est une zone sécurisée du processeur principal qui :

  • Fonctionne sur son propre système d’exploitation (OS sécurisé)
  • Est complètement isolée du système “Android normal” (appelé REE - Rich Execution Environment)
  • Ne peut être accédée que par des applications de confiance (Trusted Applications) ou par des drivers de confiance.

La problématique

Le TEE est née d’une problématique : comment protéger des données dans un environnement par définition hostile ?

Pour répondre a ce besoin, il a été crée : les enclaves

Les enclaves

🚧

Une enclave est une zone sécurisée dans votre appareil mobile qui isole les données sensibles. Elle fonctionne comme un environnement protégé où seules les applications autorisées peuvent accéder aux informations, avec une protection contre l’observation externe.

Uniquement un processus qui s’exécute à l’intérieur d’une enclave peut accéder aux données stockées dans cette même enclave.

Ces enclaves, on les retrouve aujourd’hui dans presque tous les systems:

  • Windows : VBS (Virtualization-Based Security)
  • Intel : SGX
  • Mac : SEP (Secure Enclave Processor)
  • Android: TEE

ARM TrustZone

Sur les puces ARM (qui équipent la majorités des smartphones), il y a une technologie nommé TrustZone.

L’idée est de diviser le processeur en deux mondes parallèles, il met en place un mécanisme d’enclave pour ainsi dire. C’est la que l’on va retrouver notre TEE.

TEE vs REE

On retrouve donc 2 mondes :

🌐 Normal World (REE)

Rich Execution Environment

  • l’OS Android
  • Les apps (Instagram, TikTok, etc.)

🔒 Secure World (TEE)

Trusted Execution Environment

  • Element signé uniquement
  • Gestion des clés cryptographiques
  • Biométrie (reconnaissance faciale/empreinte)
  • DRM (protection des contenus)

trustyOverview_900w-2278396950.png

Ici les zone EL0, EL1, EL3 peuvent etre rattaché à un principe plus connu sur Linux , celui des rings.

fbe48db127f37e2cad7d75cea065ee81-3707873915.png

SMC

A retenir dans ce schéma est que chaque instructions devant accéder a la TEE, dois impérativement passer par le : SMC

Voyez par exemple ce cas d’usage :

Le NS-bit :

Le NS-bit (Non-Secure bit) est comme un badge de sécurité qui accompagne chaque opération effectuée par le processeur. C’est un mécanisme fondamental qui permet de séparer logiquement les deux environnements.

Quand le processeur effectue une opération, le NS-bit se propage à travers tout le système :

  • Dans le bus système : Chaque transaction sur le bus (AXI/ACE) contient ce bit. Par exemple, quand le processeur veut lire une adresse mémoire, la requête inclut le NS-bit qui indique depuis quel monde elle provient.
  • Contrôleurs mémoire : Ils vérifient le NS-bit pour décider si l’accès est autorisé. Une zone mémoire peut être configurée pour n’accepter que les accès avec NS=0 (monde sécurisé uniquement).

🚧

NS = 0“Secure World” (TEE) 🔒

NS = 1“Normal World” (REE) 🌐

Le SCR (Secure Configuration Register) est un registre spécial accessible uniquement depuis le mode Monitor (EL3). Le bit NS de ce registre détermine dans quel monde le processeur s’exécute actuellement.

🎛️

Pour résumer :

  • NS = 0“Je suis dans le Secure World” (TEE) 🔒
  • NS = 1“Je suis dans le Normal World” (REE) 🌐

Ce bit est géré dans le registre SCR.NS (Secure Configuration Register)

La chaîne de confiance

Android utilise Verified Boot : à chaque étape du démarrage, une signature vérifie la suivante. C’est comme un contrôle d’identité en cascade !

🍋

Un composant n’est considéré “trusted” qu’après avoir été authentifié par le composant précédent.

Trusted OS

Le TEE, c’est pas juste une zone mémoire protégée… c’est un véritable système d’exploitation qui tourne en parallèle.

Chaque constructeur a son implémentation :

  • Google : Trusty (TOS)
  • Qualcomm : QSEE
  • Samsung : TEEGRIS

Ce Trusty kernel peut charger des Trusted Applications comme :

  • Keymaster : gestion des clés crypto
  • Gatekeeper : authentification biométrique
  • DRM : protection des contenus protégé

TEE vs Secure Element

Il faut différencier le Secure Element de la TEE ! Ces deux technologies sont complémentaires mais différentes :

🔒

Secure Element (SE)

  • Hardware dédié : micro-contrôleur physiquement isolé
  • Ressources limitées : quelques KB de RAM/ROM
  • Usage : stockage de clés …
  • Avantage : isolation physique totale
  • Inconvénient : très limité en puissance et taille

🗃️

TEE

  • Isolation logique : séparation par le NS-bit
  • Ressources partagées : accès au CPU/GPU principal
  • Usage : crypto complexe, biométrie, vidéo HD
  • Avantage : puissance de calcul élevée
  • Inconvénient : partage du hardware physique

Cas d’usage : Netflix et le TEE

Voici un exemple concret : Netflix.

Décodage vidéo sécurisé

Quand tu regardes un film en HD/4K sur Netflix, le décodage vidéo se fait directement dans le TEE ! Pourquoi ?

  • Empêcher la copie du flux vidéo
  • Respect des droits d’auteur
  • Conformité …

Si l’application détecte que ton telephone n’a pas de TEE fonctionnel.. La qualité de la vidéo ne dépassera pas 480p

ℹ️

Chaque film Netflix a sa clé AES unique fournie par Widevine. Cette clé :

  • Est stockée dans le TEE et n’en sort pas
  • Déchiffre le contenu directement dans le TEE
  • Envoie le flux déchiffré via un drivers vérifié

Pour reprendre notre schéma plus haut