Empecemos por el principio: cómo es el sistema Face ID y cómo funciona:


A nivel de hardware, este sistema consta de un par de cámaras, una IR y otra RGB, y dos tipos de emisores IR: iluminación normal y un proyector de puntos especializado.
Desmontamos la carcasa de un iPhone X, retiramos todo lo innecesario y vemos el bloque de cámaras frontales al descubierto. La iluminación IR existe por separado, pero todos los demás componentes los tenemos en nuestras manos: están firmemente sujetos a este marco metálico.
Aquí vemos la cámara IR y el proyector de puntos IR. El funcionamiento de los sistemas TrueDepth y FaceID se basa precisamente en este par infrarrojo. Y el protagonista del artículo de hoy es precisamente el proyector de puntos.
Breve principio de funcionamiento de FaceID

El proyector de puntos IR hace precisamente lo que su nombre indica: emite decenas de miles de puntos infrarrojos al mundo exterior cuando se le ordena. Y la cámara IR, que es la que da esta orden, fotografía inmediatamente estos puntos.
Conociendo las características ópticas del proyector, la cámara y la distancia entre ellos, el ISP del procesador del iPhone puede estimar a qué distancia se encuentra cada punto. Yo mismo no entiendo completamente las matemáticas del proceso, y hacerle ingeniería inversa sería difícil, pero tomar una serie de imágenes con diferentes patrones de puntos permite adivinar con bastante precisión la posición de cada punto individual y, de este modo, crear un mapa de profundidad completo. Sin LIDAR y sin ToF.
Es precisamente el mapa de profundidad lo que permite que FaceID no se deje engañar por fotografías impresas. Una fotografía es plana, mientras que una cara tiene relieve, y para FaceID el mapa topográfico de la cara es más importante que su color.

Sin embargo, el sistema también tiene en cuenta el color de la cara. La cámara IR está sincronizada por hardware con la cámara RGB, y ambas cámaras graban la cara simultáneamente. Además, el iPhone puede parpadear no solo con el proyector IR, sino también con la iluminación IR, y grabar toda la cara en el espectro IR.
El mapa de profundidad en sí mismo es bastante tosco, y el análisis de la textura de la cara en imágenes IR y RGB mediante una red neuronal permite tanto refinar la profundidad como comprender mejor detalles como las expresiones faciales, tanto a la luz del día como en la oscuridad.
Si este sistema le resulta familiar, probablemente sea porque está directamente extraído de Kinect de Xbox 360. Solo que aquel Kinect era un armatoste enorme, y aquí se ha reducido al tamaño de una muesca en la pantalla de un smartphone.
Esto lo hizo la empresa PrimeSense, que desarrolló las tecnologías en las que se basa Kinect 1, y luego fue comprada por Apple por 350 millones de dólares. Entera, con todas las patentes, desarrollos, empleados y demás.
Desmontando las entrañas del proyector

Profundicemos en la ingeniería inversa: sacamos el proyector de puntos del bloque de cámaras del iPhone X y lo desmontamos en sus partes constituyentes. Consta de un cable FPC, un conjunto emisor y un conjunto óptico.
El cable es completamente pasivo y, por lo tanto, poco interesante. Está soldado al conjunto emisor y saca las señales a un conector FPC, que se conecta a la placa base del iPhone X. El conector tiene un paso de contacto de 0,35 mm, es personalizado (Apple, qué pillines) y parece que está fabricado por la empresa JAE.
Veamos los componentes principales de la óptica:

Y veamos qué hay dentro del emisor:

Y el papel del MOSFET y el chip misterioso me interesó. ¿Por qué? Porque no está claro qué hacen allí en realidad.
La primera opción obvia es que el chip misterioso sea una memoria para el número de serie y los datos de calibración. El chip tiene una interfaz I2C típica de memoria, y seguro que tiene memoria dentro. Los proyectores tienen números de serie, con los que se puede determinar incluso la fecha de producción, y si se sustituye todo el proyector, el iPhone verá una discrepancia en el número de serie y se negará a funcionar con la sustitución. Pero la EEPROM I2C más común se encuentra en un diminuto encapsulado WLCSP-4, e incluso se puede bloquear contra la reescritura si se desea mucho. Por lo tanto, el chip no puede ser una simple memoria. Seguro que hace algo más.

La segunda opción obvia es que el chip misterioso sea un controlador de láseres, y el MOSFET su interruptor. Y sí, el MOSFET está realmente controlado por el chip. Solo que el chip tampoco puede ser algo tan crítico como un controlador de láser.
En primer lugar, el MOSFET está en la interrupción del cátodo común del conjunto de láseres, y 4 ánodos separados salen directamente al cable y continúan hasta las entrañas de la placa multicapa del iPhone. Y en segundo lugar, mientras recopilaba datos para la ingeniería inversa, me topé con varias instrucciones de maestros de reparación chinos.

No aclararon directamente la esencia del asunto, pero en muchas de estas instrucciones se decía: para reparar un proyector «roto» hay que desmontarlo, quitar el MOSFET y sustituirlo por un puente entre el drenaje y la fuente. Al final, el proyector funcionará con un puente en su interior, y la funcionalidad de FaceID se restablecerá. Y si el proyector con un puente en lugar del MOSFET funciona normalmente, ¿qué hacía allí ese MOSFET?
Y se me ocurrió: ahí estaba la clave de la reparación. El MOSFET está controlado por el chip, por lo que a voluntad del chip puede interrumpir el circuito de alimentación del láser y, por lo tanto, averiar el proyector. Y esta reparación elimina esa interrupción.
¿Qué me dice tu nombre?
Una vez que quedó claro que el chip misterioso, junto con el MOSFET, impide el funcionamiento normal del proyector, surge la pregunta: ¿por qué hace esto? ¿Por qué se instala en el proyector un chip que lo mata?
Para encontrar respuestas, consulté el firmware del bloque ISP en el procesador del iPhone: es él quien se comunica por I2C con los sensores de las cámaras y con el proyector.
Primero descargué la imagen del firmware de iOS 15 para iPhone X, recién salida del horno. Las imágenes del firmware para iPhone son básicamente archivos zip. Dentro encontré el firmware ISP buscado, en forma de archivo Firmwareisp_bniadc-nike-d22.im4p
. Del archivo im4p comprimido se extrajo un binario, en formato Mach-O con código AArch64 en su interior. Mach-O, a diferencia de una típica «imagen de firmware para un microcontrolador desconocido», es un formato de archivo ejecutable documentado, similar a PE o ELF. No hay que adivinar la estructura del archivo, la arquitectura del procesador o la dirección en la que hay que cargar el código. Basta con meter el archivo en Ghidra y todo se organiza solo. Un placer.

Luego, el instinto hizo lo suyo y decidí destripar firmwares más antiguos. Y en la imagen del firmware de iOS 13 encontré el archivo adc-nike-d22. Incluso el tamaño era casi el mismo. Solo que en el nuevo firmware había más código, y en el antiguo había menos código, pero había símbolos. Todos los nombres de las funciones en su sitio. ¡Comprueba siempre las versiones antiguas!
En el firmware del ISP hay mucha información, incluyendo cómo se comunica el iPhone por I2C con diferentes chips: con los sensores de las cámaras, con la PMU de las cámaras, con los chips de control de los flashes y el enfoque automático. De ahí mismo, gracias a los símbolos, fue posible extraer los «nombres» de diferentes partes componentes del sistema, y parte de ellos se corresponden con materiales de otras partes del firmware, así como de otros ingenieros inversos y reparadores. Por ejemplo, el sensor de la cámara IR es STMicroelectronics VD56G0 «Savage». Todo el sistema TrueDepth en el código se llama «Pearl», y sus módulos principales reciben nombres de personajes de «Romeo y Julieta». El proyector IR se llama «Romeo», la cámara IR «Juliet», y la iluminación IR se llama «Rosaline». El controlador de láseres, que reside en la placa base del iPhone y alimenta tanto los láseres dentro de «Romeo» como el láser dentro de la iluminación «Rosaline», se llama «Rigel».
¿El chip misterioso que nos interesa? También tiene nombre. En el código lo llaman «MamaBear», abreviado «MB», y parece que su funcionalidad es bastante sencilla. Reside en el bus I2C. Almacena datos OTP en su interior, incluyendo el número de serie y varias calibraciones. Enciende y apaga el MOSFET por orden. Y también mide… ¿capacitancia? No la temperatura, no está conectado a un termistor NTC en absoluto, sino precisamente la capacitancia. Pero ¿la capacitancia de qué?
La trágica muerte de Romeo

La respuesta a esta pregunta nos la vuelven a dar los esquemas chinos. En el esquema de JCID se ve que en el módulo «Romeo» hay tres contactos para conectar el conjunto emisor con el conjunto óptico. Uno es tierra, y los otros dos van directamente al chip «MamaBear». Estos contactos pasan por un adaptador especial en el lateral del conjunto óptico y llegan a la parte superior del mismo, al elemento óptico difractivo.
El divisor de haz difractivo no es controlable y no reacciona a la corriente. Pero tiene capacitancia. Y con la ayuda de esas tres líneas, esta capacitancia se puede medir. Pero ¿para qué?
La cuestión es lo importante que es este divisor difractivo. El patrón de puntos utilizado por el proyector viene dado por la disposición de diminutos láseres-«hoyuelos» en el cristal VСSEL. Y luego este patrón se multiplica por un elemento difractivo, que convierte un haz de luz en cientos de haces de luz.

Entonces, ¿qué pasará si se arranca este elemento difractivo?
Los rayos no se dividirán. En lugar de cientos de haces de láser, habrá un haz, pero cien veces más potente. Y al fin y al cabo, sigue siendo un láser. Un láser infrarrojo es más peligroso que uno rojo, porque una persona no lo ve y, por lo tanto, no apartará instintivamente la vista ni siquiera de una fuente de luz peligrosamente potente. Y existe una probabilidad no nula de que el patrón característico de puntos acabe quemado en la retina del usuario en tal caso.
Para evitar esto, se necesita el chip asesino. Después de encenderse, supervisa constantemente la capacitancia del elemento difractivo, y si el elemento resulta arrancado o dañado, la capacitancia se sale de los límites permitidos, y el chip desconecta inmediatamente el MOSFET e interrumpe la alimentación del VCSEL. Y como el elemento está situado en la parte superior del conjunto óptico, es prácticamente imposible dañar el resto del conjunto con un golpe sin romperlo y sin interrumpir el contacto.
Tras la desconexión de emergencia del láser, el chip graba una bandera en la OTP que designa el proyector como defectuoso, lo que significa que la alimentación interrumpida permanecerá interrumpida para siempre. Ninguna orden del ISP tendrá ya poder sobre él. El MOSFET siempre estará cerrado, y el proyector no volverá a funcionar nunca más.
El chip «MamaBear», como sugiere el nombre, es un chip de protección. Es un «interruptor de seguridad» para la parada de emergencia del láser. Mata el proyector para evitar que un dispositivo láser dañado brille en los ojos del usuario. Y el módulo «Juliet», al quedarse sin su «Romeo» emparejado, pierde el sentido de la vida, y todo el sistema TrueDepth se vuelve inútil.
La rutina de los tecnosacerdotes
Pero este esquema de protección tiene un defecto. El caso es que el proyector de puntos está situado en el borde superior del dispositivo, y cerca del altavoz. Si entra líquido en el iPhone, uno de los lugares más frecuentes para ello es precisamente ahí. Y los sensores capacitivos son sensibles a los líquidos conductores de corriente. Por lo tanto, a menudo ocurre que FaceID se estropea después de que el dispositivo se caiga al agua, incluso si la entrada de agua es mínima y no hay otros daños. Simplemente «Romeo» no entendió bien la situación, y realizó una autocensura sin motivo.
Estos dispositivos se llevan a reparar. A menudo a reparaciones no oficiales. Y como el iPhone comprueba los números de serie de las piezas de repuesto (hola, Apple), no se puede simplemente cambiar todo el bloque de cámaras por un bloque funcional de un donante. El teléfono rechazará el nuevo bloque y FaceID seguirá sin funcionar. Por lo tanto, hay que reparar el antiguo de alguna manera. Pero ¿cómo se puede «resucitar» un proyector que se ha averiado intencionadamente a sí mismo?
Los fabricantes de herramientas no oficiales para la reparación han ideado toda una serie de rituales diferentes para ello. Y los tecnosacerdotes-reparadores habilidosos los siguen religiosamente y realizan microcirugía en este complejo y calibrado sistema óptico. Se necesita una habilidad inimaginable: los componentes interiores tienen un tamaño de pocos milímetros, y la óptica es extremadamente sensible. Si la calibración se desvía demasiado debido a las intervenciones quirúrgicas, el sistema no funcionará. No existen herramientas para la recalibración por software (hola, Apple): o encuentras la manera de entrar en los parámetros originales, o te quedas sin FaceID.

¿Cómo funciona esto? Bueno, lo primero es leer los datos OTP del chip original «MamaBear».
Los datos son legibles incluso si el proyector se considera defectuoso. Para leer los datos, los chinos fabrican programadores de «reparación» especiales, que se suministran con juegos de conectores adaptadores y funcionan con toda una serie de componentes diferentes de diferentes modelos de iPhone, incluidos los proyectores.
Y luego hay que hacer dos cosas: solucionar el MOSFET que interrumpe la alimentación y sustituir el chip de protección original. Y aquí hay muchos métodos diferentes.

Se puede, por ejemplo, poner un puente en lugar del MOSFET, como en la foto anterior del artículo, y sustituir el chip «MamaBear», desoldando el cable FPC original y sustituyéndolo por un cable especial con un chip engañoso chino.
El chip original «MamaBear» puede permanecer dentro, y gritar impotentemente que el proyector no debe funcionar bajo ninguna circunstancia. Pero ya no tiene MOSFET para apagar el proyector a la fuerza, y el iPhone, por su parte, solo ve el chip chino, que devuelve una copia de los datos originales volcada por el programador, e informa de que el proyector está exactamente исправен.

O se puede arrancar el chip «MamaBear» por completo y colocar en su lugar habitual un sustituto chino dos en uno: también cierra los contactos MOSFET y devuelve una copia de los datos OTP al teléfono.

Y también hay una opción con un mínimo de soldadura. Un «adaptador» con un chip engañoso, que se coloca entre el cable original y la placa base del iPhone.
No resuelve el problema con el MOSFET, pero los chinos también han encontrado un enfoque original para ello, creando programadores de «alto voltaje».
¿Saben cómo se pueden «desbrickear» y reescribir los ATtiny con un programador especial de alto voltaje? Aquí la situación es muy diferente. El programador de alto voltaje chino «programa» de forma brutal e irreversible el MOSFET dentro del proyector en un cortocircuito entre el drenaje y la fuente.
En la última etapa de la reparación, volvemos a conectar el proyector al programador y volcamos en él el volcado guardado en la primera etapa. Y el proyector está listo para funcionar, haciéndose pasar por original y no modificado.
Todos estos diferentes dispositivos son fabricados y promovidos por diferentes vendedores de equipos de reparación. Todos los chips engañosos funcionan solo con programadores «nativos», y los programadores a menudo tienen funciones DRM como la vinculación a una cuenta y un número limitado de «reparaciones», para cuya recarga hay que pagar.
¿Saben los reparadores que con su reparación destruyen por completo el sistema diseñado por Apple para proteger los ojos del usuario? En realidad no. No son ingenieros inversos, son chamanes. No entienden los principios de funcionamiento. Tienen rituales y tienen resultados, y eso les basta. Y los astutos ingenieros inversos de China son reacios a compartir sus secretos con el público. Lo que he descrito en este artículo, se conoce en su totalidad solo por los ingenieros de Apple y una decena de chinos «en el ajo». Y por mí. Y por ti, ahora.
Por qué Apple son unos impresentables
Saben, no puedo culpar demasiado a los ingenieros de Apple por el hecho de que su «interruptor de seguridad» sea demasiado activo y averíe proyectores que bien podrían haber seguido funcionando. Los láseres son un tema peligroso, y la idea de proteger al usuario de los «peores escenarios» es absolutamente sensata. Aunque la implementación de esta protección requiera mejoras.
Pero la política de Apple de lucha contra las reparaciones no oficiales es el peor de todos los males. Si los bloques TrueDepth pudieran sustituirse tranquilamente de un dispositivo a otro, sin tener en cuenta los números de serie, prácticamente no tendría sentido realizar rituales de reparación tan espantosos y retorcidos. ¿Para qué retorcerse con soldadura microquirúrgica y bailar con programadores, si se puede quitar de otro «donante» con la pantalla rota un bloque TrueDepth absolutamente funcional, colocarlo en el teléfono del cliente, restaurar completamente la funcionalidad y vivir tranquilamente? Para los reparadores sería más fácil, y para los propietarios de los dispositivos, más seguro.
Pero la historia del comportamiento repugnante antirreparación de Apple muestra claramente que esto no va a ocurrir. Bueno, a menos que en EE.UU. o en la UE todos los movimientos «Right to Repair» ilegalicen la vinculación de piezas de repuesto por números de serie. Y esto ahora es posible. En la broma de que la Unión Europea añade más funciones útiles a los nuevos modelos de iPhone que Apple, hay una gran parte de verdad. Así que estaremos atentos a las iniciativas legislativas.
Artículo traducido del ruso. Autor del artículo: acc0unt. Hemos intentado conservar el estilo original y las formulaciones del autor en la medida de lo posible durante la traducción.