Touch ID

From The French Apple Wiki
Jump to navigationJump to search

Touch ID

[edit | edit source]

Touch ID est un scanner d'empreintes digitales équipant l'iPhone 5s et ultérieurs, l'iPad Air 2 et ultérieurs, ainsi que l'iPad mini 3 et ultérieurs. Le capteur est lié de manière unique à chaque appareil. Cela signifie que les capteurs Touch ID semblent être liés à des appareils spécifiques d'une manière similaire au chemin média protégé HDMI.

Cependant, il existe une API privée pour cela ; son fichier dylib se trouve dans Xcode 5 au chemin Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/PrivateFrameworks/BiometricKit.framework/BiometricKit.

À partir d'iOS 8, le dylib a été supprimé du SDK iOS et remplacé par un stub (contenant des symboles, mais pas de code). Le dylib peut toujours être obtenu facilement à partir du dyld_shared_cache sur l'appareil. Le code est ARM64, mais peut être désassemblé par des versions plus récentes d'IDA (6.4) ou par jtool de NewOSXBook.com.

Processus

[edit | edit source]

Processus d'enregistrement des empreintes digitales

[edit | edit source]

Apple a déposé une demande de brevet pour le processus suivant concernant Touch ID dans la demande de brevet Apple 20130308838.

  • Le capteur d'empreintes digitales détecte un objet à scanner (activé via l'« anneau métallique » autour du bouton d'accueil).
  • Le capteur d'empreintes digitales commence le scan - il prend essentiellement une photo du doigt (UIImage).
  • La photo est transférée au Processeur d'Enclave Sécurisée (SEP) via une ligne de données chiffrée (similaire au chemin média protégé HDMI).
  • Le SEP stocke cette photo comme un modèle. Ensuite, il construit une version à plus basse résolution : un histogramme des angles de crêtes les plus courants, le stockant avec le modèle à plus haute résolution dans l'Enclave Sécurisée.
  • Le SEP envoie la version à plus basse résolution au CPU principal.
  • Le CPU principal stocke la version à plus basse résolution dans une base de données (pour une authentification ultérieure).

Processus d'authentification des empreintes digitales

[edit | edit source]
  • Le capteur d'empreintes digitales détecte un objet à scanner (activé via l'« anneau métallique » autour du bouton d'accueil).
  • Le capteur d'empreintes digitales commence le scan - il prend essentiellement une photo du doigt (UIImage).
  • La photo est transférée au Processeur d'Enclave Sécurisée (SEP) via une ligne de données chiffrée (similaire au chemin média protégé HDMI).
  • Le SEP construit une version à plus basse résolution : un histogramme des angles de crêtes les plus courants.
  • Le SEP envoie la version à plus basse résolution au CPU principal.
  • Le principal compare la version à plus basse résolution pour des correspondances possibles dans sa base de données.
  • Le principal envoie les correspondances possibles au SEP ou l'authentification est rejetée si aucune correspondance n'est trouvée.
  • Le SEP prend les correspondances reçues par le CPU principal et compare l'image initiale aux versions à haute résolution des correspondances reçues du CPU principal.
  • L'accès est accordé en cas de comparaison positive ou rejeté en cas de comparaison négative.

Informations inférées

[edit | edit source]

Sur la base d'un dump de chaînes, voici ce qui est impliqué.

  • Son nom de code est « mesa ».
  • Il communique via XPC à un binaire qui gère l'accès à celui-ci.
  • Il y a des extensions de noyau pour s'interfacer avec lui.
  • L'extension de noyau communique avec le magasin de clés sécurisé pour définir et vérifier les empreintes digitales.
  • Le scanner d'empreintes digitales se calibre lui-même et possède un firmware pouvant être mis à jour.
  • Le scanner d'empreintes digitales utilise des formats d'images normaux (c'est-à-dire UIImage) avant de définir et de vérifier les empreintes digitales.
  • Il y a un verrouillage biométrique ainsi qu'un verrouillage par code.
  • La puce A7 contient un élément sécurisé commercialisé comme l'Enclave Sécurisée. Le dump de chaînes fait référence à SEP, le Protocole d'Élément Sécurisé. Cette puce provient probablement de NXP. Elle contient une sécurité physique pour s'assurer que les seules opérations de la puce impliquent la définition de nouvelles empreintes digitales et la vérification des empreintes digitales contre celles stockées en elle (c'est-à-dire défi-réponse). De cette manière, les données d'empreintes digitales ne peuvent pas être extraites d'elle.