Pourquoi Apple a ajouté une puce à l’iPhone qui désactive Face ID

Catégorisé comme Hardware, News
Save and Share:

Commençons par le début : à quoi ressemble le système Face ID et comment fonctionne-t-il :

Tout le matériel nécessaire au fonctionnement de FaceID se trouve précisément dans cette encoche de l’écran

Matériellement, ce système se compose de deux caméras : IR et RGB, et de deux types d’émetteurs IR : un éclairage standard et un projecteur de points spécialisé.

Débarrassons un iPhone X de sa coque, retirons tout ce qui est superflu, et nous voyons le bloc des caméras frontales à nu. L’éclairage IR existe séparément, mais tous les autres composants sont entre nos mains — ils sont solidement fixés dans ce cadre métallique.

Ici, nous voyons la caméra IR et le projecteur de points IR. Le fonctionnement des systèmes TrueDepth et FaceID repose précisément sur ce duo infrarouge. Et le protagoniste de notre récit d’aujourd’hui est justement le projecteur de points.

Principe de fonctionnement simplifié de FaceID

Points émis par l’iPhone X — photo issue de cette source.

Le projecteur de points IR fait exactement ce que son nom indique — il projette sur commande des dizaines de milliers de points infrarouges dans le monde environnant. Et la caméra IR, qui donne cet ordre, photographie aussitôt ces points.

Connaissant les caractéristiques optiques du projecteur, de la caméra et la distance qui les sépare, l’ISP dans le processeur de l’iPhone peut évaluer à quelle distance se trouve chaque point. Je ne comprends pas moi-même complètement les mathématiques du processus, et les inverser serait difficile — mais la prise d’une série d’images avec différents motifs de points permet de deviner avec une grande précision la position de chaque point individuel, et de créer ainsi une carte de profondeur complète. Sans LIDAR et sans ToF.

C’est précisément la carte de profondeur qui permet à FaceID de ne pas être trompé par des photos imprimées. Une photographie est plate — alors qu’un visage a du relief, et pour FaceID, la carte topographique du visage est plus importante que sa couleur.

Schéma fonctionnel de la caméra de référence PrimeSense

Cependant, le système regarde aussi la couleur du visage. La caméra IR est synchronisée matériellement avec la caméra RGB, et les deux caméras filment le visage simultanément. De plus, l’iPhone peut clignoter non seulement avec le projecteur IR, mais aussi avec l’éclairage IR — et filmer tout le visage dans le spectre IR.

La carte de profondeur elle-même est assez grossière, et l’analyse de la texture du visage sur les images IR et RGB par un réseau neuronal permet à la fois d’affiner la profondeur et de mieux comprendre les détails tels que les expressions faciales — aussi bien à la lumière du jour que dans l’obscurité.

Si ce système vous semble familier, c’est probablement parce qu’il est directement tiré du Kinect de la Xbox 360. Sauf que ce Kinect était un énorme machin, alors qu’ici, il a été réduit à la taille de l’encoche dans l’écran du smartphone.

C’est la société PrimeSense qui a fait cela, celle qui a développé les technologies à la base du Kinect 1 — et qui a ensuite été rachetée par Apple pour 350 millions de dollars. Entièrement — avec tous les brevets, les travaux de développement, les employés et autres composants internes.

Démontage des entrailles du projecteur

Allons plus loin dans le reverse engineering : retirons le projecteur de points du bloc de caméras de l’iPhone X et démontons-le en pièces détachées. Il se compose d’un câble FPC, d’un ensemble émetteur et d’un ensemble optique.

Le câble est entièrement passif, et donc peu intéressant. Il est soudé à l’ensemble émetteur, et achemine les signaux vers le connecteur FPC, qui se connecte à la carte mère de l’iPhone X. Connecteur avec un pas de contact de 0,35 mm, personnalisé (ces enfoirés d’Apple), et il semble qu’il soit fabriqué par la société JAE.

Examinons les principaux composants optiques :

Projecteur en coupe : photo issue de cette source, légendes personnelles

Et regardons ce qu’il y a à l’intérieur de l’émetteur :

Et le rôle du MOSFET et de la mystérieuse puce a attiré mon attention. Pourquoi ? Parce qu’on ne voit pas ce qu’ils peuvent bien faire là.

La première hypothèse évidente — la mystérieuse puce est une mémoire pour le numéro de série et les données de calibrage. La puce possède une interface I2C typique pour la mémoire, et il y a certainement de la mémoire à l’intérieur. Les projecteurs ont des numéros de série, qui permettent notamment de déterminer la date de fabrication — et si l’on remplace le projecteur entièrement, l’iPhone constatera une non-concordance du numéro de série et refusera de fonctionner avec le remplacement. Mais la plus simple des EEPROM I2C se trouve dans un minuscule boîtier WLCSP-4 — et on peut même la protéger contre la réécriture, si on le souhaite vraiment. Par conséquent, la puce ne peut pas être une simple mémoire. Elle fait certainement autre chose.

Schéma de brochage du projecteur par des maîtres chinois de JCID. Les inscriptions sont bancales, mais globalement concordantes.

Deuxième hypothèse évidente — la mystérieuse puce est un pilote de lasers, et le MOSFET est son interrupteur. Et oui, le MOSFET est bel et bien commandé par la puce. Sauf que la puce ne peut pas non plus être quelque chose d’aussi crucial qu’un pilote de laser.

Premièrement, le MOSFET est placé dans l’interruption de la cathode commune de l’ensemble laser — et 4 anodes séparées sortent directement sur le câble et continuent vers les profondeurs de la carte multicouche de l’iPhone. Et deuxièmement, au cours de la collecte de données pour le reverse engineering, je suis tombé sur différentes instructions de réparateurs chinois.

Le MOSFET est remplacé par un fil soigné

Elles n’ont pas directement éclairci le fond du problème, mais dans nombre de ces instructions, il était dit : pour réparer un projecteur « cassé », il faut le démonter, retirer le MOSFET et le remplacer par un pont entre le drain et la source. Le projecteur finira par fonctionner avec un pont à l’intérieur, et la fonctionnalité FaceID sera restaurée. Et si le projecteur avec un pont à la place du MOSFET fonctionne normalement, alors que faisait ce MOSFET là ?

Et j’ai eu une illumination : c’était là tout l’intérêt de la réparation. Le MOSFET est commandé par la puce — par conséquent, sur ordre de la puce, il peut interrompre le circuit d’alimentation du laser, et casser ainsi le projecteur. Et cette réparation supprime cette interruption.

Qu’y a-t-il dans un nom ?

Maintenant qu’il est devenu clair que la mystérieuse puce associée au MOSFET empêche le fonctionnement normal du projecteur, la question se pose — pourquoi fait-elle cela ? Pourquoi installe-t-on dans le projecteur une puce qui tue le projecteur ?

Pour trouver les réponses, je me suis plongé dans le firmware du bloc ISP dans le processeur de l’iPhone — c’est lui qui communique en I2C avec les capteurs des caméras et avec le projecteur.

J’ai d’abord téléchargé une image du firmware iOS 15 pour l’iPhone X, toute fraîche. Les images du firmware pour iPhone — ce sont en fait des fichiers zip. À l’intérieur, j’ai trouvé le firmware ISP recherché — sous la forme d’un fichier Firmwareisp_bniadc-nike-d22.im4p. À partir du fichier im4p compressé, j’ai extrait un binaire, au format Mach-O avec du code AArch64 à l’intérieur. Mach-O, contrairement à une « image de firmware typique pour un microcontrôleur inconnu » — est un format de fichier exécutable documenté, semblable à PE ou ELF. Pas de devinettes sur la structure du fichier, l’architecture du processeur ou l’adresse à laquelle il faut charger le code. On se contente de jeter le fichier dans Ghidra et tout se met en place tout seul. C’est agréable.

Puis l’instinct a pris le dessus, et j’ai décidé de décortiquer des firmwares plus anciens. Et dans l’image du firmware iOS 13, j’ai trouvé le fichier adc-nike-d22. Même la taille était presque la même. Sauf que dans le nouveau firmware, il y avait plus de code — et dans l’ancien, il y avait moins de code, mais en revanche, il y avait des *symboles*. Tous les noms de fonctions étaient en place. Vérifiez toujours les anciennes versions !

Dans le firmware ISP, il y a beaucoup d’informations, notamment sur la façon dont l’iPhone communique en I2C avec différentes puces — avec les capteurs des caméras, avec les PMU des caméras, avec les puces de gestion des flashs et de l’autofocus. De là aussi, grâce aux symboles, il a été possible d’extraire les « noms » de différentes parties constitutives du système — et une partie d’entre eux correspondent aux documents provenant d’autres parties du firmware, ainsi que d’autres reverse engineers et réparateurs. Par exemple, le capteur de la caméra IR — c’est le STMicroelectronics VD56G0 « Savage ». Tout le système TrueDepth dans le code s’appelle « Pearl », et ses principaux modules portent des noms de personnages de « Roméo et Juliette ». Le projecteur IR s’appelle « Romeo », la caméra IR — « Juliet », et l’éclairage IR s’appelle « Rosaline ». Le pilote de lasers, qui se trouve sur la carte mère de l’iPhone et qui alimente à la fois les lasers à l’intérieur de « Romeo » et le laser à l’intérieur de l’éclairage « Rosaline », s’appelle « Rigel ».

La mystérieuse puce qui nous intéresse ? Elle a aussi un nom. Dans le code, on l’appelle « MamaBear », en abrégé « MB », et il semble que sa fonctionnalité soit très simple. Elle vit sur le bus I2C. Elle stocke en elle des données OTP, y compris le numéro de série et différents calibrages. Elle active et désactive le MOSFET sur commande. Et elle mesure aussi… une capacité ? Pas la température, elle n’est même pas connectée à une thermistance NTC, mais précisément une capacité. Mais la capacité de quoi ?

La tragique disparition de Roméo

La réponse à cette question nous est à nouveau apportée par les schémas chinois. Dans le schéma de JCID, on voit que dans le module « Romeo », il y a trois contacts pour la liaison de l’ensemble émetteur avec l’ensemble optique. Un — la masse, et deux autres vont directement à la puce « MamaBear ». Ces contacts passent par un adaptateur spécial sur le côté de l’ensemble optique, et arrivent sur son sommet — sur l’élément optique diffractif.

Le séparateur de faisceau diffractif n’est pas contrôlable, et ne réagit pas au courant. Mais il a une capacité. Et à l’aide de ces trois lignes, on peut mesurer cette capacité. Mais pourquoi ?

L’importance de ce séparateur diffractif est en jeu. Le motif de points utilisés par le projecteur est défini par l’emplacement de minuscules lasers-« cuvettes » sur le cristal VCSEL. Et ensuite, ce motif est multiplié par l’élément diffractif, qui transforme un faisceau de rayons en des centaines de faisceaux de rayons.

Comparaison de l’emplacement des lasers d’anode « SPARSE » et des points projetés

Et donc, qu’arrivera-t-il si l’on arrache cet élément diffractif ?

Les rayons ne seront pas séparés. Au lieu d’une centaine de faisceaux laser, il y aura un seul faisceau — mais cent fois plus puissant. Et c’est quand même un laser. Un laser infrarouge est plus dangereux qu’un rouge, car l’homme ne le voit pas — et ne détournera donc pas instinctivement le regard, même d’une source de lumière dangereusement puissante. Et il y a une chance non nulle que le motif caractéristique de points se retrouve alors brûlé dans la rétine de l’utilisateur.

Pour éviter cela, il faut une puce tueuse. Après la mise en marche, elle surveille constamment la capacité de l’élément diffractif — et si l’élément s’avère arraché ou endommagé, la capacité sort des limites autorisées, et la puce coupe aussitôt le MOSFET et interrompt l’alimentation du VCSEL. Et comme l’élément se trouve au sommet de l’ensemble optique, il est pratiquement impossible d’endommager le reste de l’ensemble par un choc sans le casser lui-même et sans interrompre le contact.

Après la coupure d’urgence du laser, la puce se grave un drapeau dans l’OTP, qui désigne le projecteur comme défectueux — ce qui signifie que l’alimentation interrompue restera interrompue à jamais. Plus aucune commande de l’ISP n’aura de pouvoir sur elle. Le MOSFET sera toujours fermé, et le projecteur ne fonctionnera plus jamais.

La puce « MamaBear », comme le suggère son nom — est une puce de protection. C’est un « killswitch » pour l’arrêt d’urgence du laser. Elle tue le projecteur pour empêcher un dispositif laser endommagé de briller dans les yeux de l’utilisateur. Et le module « Juliet », privé de son « Romeo » jumeau, perd son raison d’être — et tout le système TrueDepth devient inutilisable.

Le quotidien des technoprêtres

Mais ce schéma de protection a un défaut. Le fait est que le projecteur de points se trouve sur le bord supérieur de l’appareil, et à côté du haut-parleur. Si du liquide pénètre à l’intérieur de l’iPhone, l’un des endroits les plus fréquents pour cela — c’est précisément là. Et les capteurs capacitifs sont sensibles aux liquides conducteurs d’électricité. C’est pourquoi il arrive souvent que FaceID se casse après une chute de l’appareil dans l’eau — même si la pénétration d’eau est minime, et qu’il n’y a pas d’autres dommages. Simplement, « Romeo » a mal interprété la situation, et a commis un Roskomnadzor à tort.

Ces appareils sont apportés en réparation. Souvent en réparation non officielle. Et comme l’iPhone vérifie les numéros de série des pièces de rechange (salut, Apple), il est impossible de se contenter de remplacer tout le bloc de caméras par un bloc fonctionnel provenant d’un donneur. Le téléphone rejettera le nouveau bloc, et FaceID ne fonctionnera toujours pas. Il faut donc réparer l’ancien d’une manière ou d’une autre. Mais comment « ressusciter » un projecteur qui s’est volontairement mis hors service ?

Les fabricants d’outils de réparation non officiels ont inventé pour cela toute une série de rituels différents. Et les technoprêtres-réparateurs adroits les suivent religieusement, et pratiquent la microchirurgie de ce système optique complexe et calibré. Il faut une adresse des mains inimaginable — les composants à l’intérieur ont une taille de quelques millimètres, et l’optique est extrêmement sensible. Si le calibrage dérive trop fortement à cause des interventions chirurgicales, le système ne fonctionnera pas. Il n’existe pas d’outils de recalibrage logiciel (salut, Apple) — soit vous trouvez un moyen de retrouver les paramètres d’origine, soit vous resterez sans FaceID.

Programmateur « haute tension »

Comment cela fonctionne-t-il ? Eh bien, en premier lieu, il faut lire les données OTP de la puce « MamaBear » d’origine.

Les données sont lisibles même si le projecteur se considère comme défectueux. Pour la lecture des données, les Chinois fabriquent des programmateurs « de réparation » spéciaux — qui sont livrés avec des jeux de connecteurs-adaptateurs, et qui fonctionnent avec toute une série de composants différents de différents modèles d’iPhone, y compris les projecteurs.

Et ensuite, il faut faire deux choses — s’occuper du MOSFET qui interrompt l’alimentation, et remplacer la puce de protection d’origine. Et là, il existe de nombreuses méthodes différentes.

Câble avec une puce de leurre

On peut, par exemple, mettre un pont à la place du MOSFET, comme sur la photo plus haut dans l’article, et remplacer la puce « MamaBear », en dessoudant le câble FPC d’origine et en le remplaçant par un câble spécial avec une puce de leurre chinoise.

La puce « MamaBear » d’origine peut alors rester à l’intérieur, et crier impuissamment que le projecteur ne doit en aucun cas fonctionner. Mais elle n’a plus de MOSFET pour éteindre le projecteur de force, et l’iPhone de son côté ne voit que la puce chinoise — qui renvoie une copie des données d’origine versée par le programmateur, et signale que le projecteur est vraiment-vraiment en parfait état de marche.

On racle les anciens composants internes et on en met des nouveaux

Ou bien, on peut arracher la puce « MamaBear » entièrement, et mettre à sa place habituelle un remplacement chinois deux-en-un — il referme les contacts du MOSFET, et renvoie une copie des données OTP au téléphone.

Plaque d’adaptation avec une puce de leurre

Et il y a une variante avec un minimum de soudure. Un « adaptateur » avec une puce de leurre, qui se place entre le câble d’origine et la carte mère de l’iPhone.

Il ne résout pas le problème du MOSFET, mais les Chinois ont aussi trouvé une approche originale pour celui-ci, en fabriquant des programmateurs « haute tension ».

Vous savez comment on peut « dé-bricker » et réécrire des ATtiny à l’aide d’un programmateur haute tension spécial ? Ici, la situation est tout à fait différente. Le programmateur haute tension chinois « programme » brutalement et irréversiblement le MOSFET à l’intérieur du projecteur en court-circuit entre le drain et la source.

À la dernière étape de la réparation, nous reconnectons le projecteur au programmateur une nouvelle fois, et nous y versons le dump enregistré à la première étape. Et le projecteur est prêt à fonctionner, en se faisant passer pour un projecteur original et non modifié.

Tous ces différents dispositifs sont fabriqués et promus par différents vendeurs de matériel de réparation. Toutes sortes de puces de leurre ne fonctionnent qu’avec les programmateurs « natifs », et dans les programmateurs, il y a souvent des fonctions DRM telles que la liaison à un compte et un nombre limité de « réparations », pour le renouvellement desquelles il faut payer.

Les réparateurs savent-ils qu’ils détruisent complètement par leur réparation le système mis au point par Apple pour protéger les yeux de l’utilisateur ? En réalité, non. Ce ne sont pas des reverse engineers — ce sont des chamans. Ils n’ont pas de compréhension des principes de fonctionnement. Ils ont des rituels et des résultats, et cela leur suffit. Et les reverse engineers rusés de Chine partagent volontiers leurs secrets avec le public. Ce que j’ai décrit dans cet article, n’est connu dans son intégralité que des ingénieurs d’Apple et d’une dizaine de Chinois « dans le coup ». Et de moi. Et de toi, maintenant.

Pourquoi Apple sont des enfoirés

Vous savez, je ne peux pas trop blâmer les ingénieurs d’Apple pour le fait que leur « killswitch » soit trop actif, et qu’il casse des projecteurs qui pourraient encore parfaitement fonctionner. Les lasers — c’est un sujet dangereux, et l’idée de protéger l’utilisateur des « pires scénarios » est absolument saine. Même si la mise en œuvre de cette protection nécessite des améliorations.

Mais la politique d’Apple de lutte contre les réparations non officielles — c’est le pire de tous les maux. Si les blocs TrueDepth pouvaient être tranquillement remplacés d’un appareil à l’autre, sans tenir compte des numéros de série, il n’y aurait pratiquement aucun intérêt à ces rituels de réparation monstrueux et pervers. Pourquoi se livrer à des contorsions avec de la soudure microchirurgicale et danser avec des programmateurs, quand on peut prélever sur un « donneur » de plus avec un écran cassé un bloc TrueDepth absolument fonctionnel, le mettre dans le téléphone du client, restaurer complètement la fonctionnalité, et vivre tranquille ? Pour les réparateurs, ce serait plus simple, et pour les propriétaires d’appareils — plus sûr.

Mais l’histoire du comportement odieux d’Apple contre la réparation montre clairement que cela n’arrivera pas. À moins que, aux États-Unis ou dans l’UE, les différents mouvements « Right to Repair » ne rendent illégal le verrouillage des pièces de rechange par numéro de série. Et c’est possible actuellement. Dans la blague selon laquelle l’Union européenne ajoute plus de fonctionnalités utiles aux nouveaux modèles d’iPhone qu’Apple, il y a une très forte part de vérité. Alors nous allons suivre les initiatives législatives.

Article traduit du russe. Auteur de l’article : acc0unt. Nous avons essayé de conserver le style et les formulations originales de l’auteur, autant que possible lors de la traduction.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *