Vamos começar do início: como é o sistema Face ID e como funciona:


Em termos de hardware, este sistema consiste num par de câmaras – IV e RGB – e dois tipos de emissores de IV – iluminação normal e um projetor de pontos especializado.
Retiramos a “pele” do iPhone X, removemos tudo o que é desnecessário e vemos o bloco de câmaras frontais em estado puro. A iluminação IV existe separadamente, mas todos os outros componentes estão nas nossas mãos – estão firmemente fixos nesta estrutura metálica.
Aqui vemos a câmara IV e o projetor de pontos IV. É nesta dupla infravermelha que assenta o funcionamento dos sistemas TrueDepth e Face ID. E o protagonista do artigo de hoje é precisamente o projetor de pontos.
Breve princípio de funcionamento do Face ID

O projetor de pontos IV faz precisamente o que o seu nome indica – cospe para o mundo exterior dezenas de milhares de pontos infravermelhos por comando. E a câmara IV, que dá esse comando, fotografa imediatamente esses pontos.
Conhecendo as características óticas do projetor, da câmara e a distância entre eles, o ISP no processador do iPhone consegue calcular a distância a que cada ponto se encontra. Eu próprio não compreendo completamente a matemática do processo, e fazer a engenharia inversa será difícil – mas tirar uma série de imagens com diferentes padrões de pontos permite adivinhar com bastante precisão a posição de cada ponto individual e, assim, criar um mapa de profundidade completo. Sem LIDAR e sem ToF.
É precisamente o mapa de profundidade que permite que o Face ID não seja enganado por fotografias impressas. Uma fotografia é plana – mas um rosto tem relevo, e para o Face ID, o mapa topográfico da cara é mais importante do que a sua cor.

No entanto, o sistema também analisa a cor do rosto. A câmara IV está sincronizada em termos de hardware com a câmara RGB, e ambas as câmaras fotografam o rosto simultaneamente. Além disso, o iPhone pode piscar não só o projetor IV, mas também a iluminação IV – e fotografar todo o rosto no espectro IV.
O mapa de profundidade em si é bastante grosseiro, e a análise da textura do rosto nas imagens IV e RGB por uma rede neural permite refinar a profundidade e compreender melhor detalhes como as expressões faciais – tanto à luz do dia como no escuro.
Se este sistema lhe parece familiar, provavelmente é porque foi retirado diretamente do Kinect da Xbox 360. Só que aquele Kinect era um trambolho enorme, e aqui foi reduzido ao tamanho de um recorte no ecrã de um smartphone.
Isto foi feito pela empresa PrimeSense, que desenvolveu as tecnologias na base do Kinect 1 – e que depois foi comprada pela Apple por 350 milhões de dólares. Por completo – com todas as patentes, desenvolvimentos, funcionários e outras entranhas.
A analisar as entranhas do projetor

Avançamos mais fundo na engenharia inversa: retiramos o projetor de pontos do bloco de câmaras do iPhone X e desmontamo-lo nas suas partes constituintes. É composto por um cabo FPC, um conjunto emissor e um conjunto ótico.
O cabo é totalmente passivo e, portanto, pouco interessante. É soldado ao conjunto emissor e envia sinais para o conector FPC, que se liga à placa principal do iPhone X. O conector tem um espaçamento de contactos de 0,35 mm, é personalizado (a Apple é uma chatice) e parece ter sido fabricado pela empresa JAE.
Vejamos os principais componentes óticos:

E vejamos o que está dentro do emissor:

E o papel do MOSFET e do chip misterioso despertou o meu interesse. Porquê? Porque não é claro o que é que eles andam ali a fazer.
A primeira hipótese óbvia é que o chip misterioso seja uma memória para o número de série e dados de calibração. O chip tem uma interface I2C típica de memória, e certamente que tem memória no interior. Os projetores têm números de série, através dos quais é possível determinar, entre outras coisas, a data de fabrico – e se o projetor for substituído na totalidade, o iPhone detetará uma incompatibilidade do número de série e recusar-se-á a funcionar com a substituição. Mas a EEPROM I2C mais comum encontra-se num minúsculo encapsulamento WLCSP-4 – e pode até ser bloqueada contra reescrita, se realmente se quiser. Portanto, o chip não pode ser apenas memória. Certamente que faz mais alguma coisa.

A segunda hipótese óbvia é que o chip misterioso seja um controlador de lasers, e o MOSFET – a sua chave. E sim, o MOSFET é realmente controlado pelo chip. Só que o chip também não pode ser algo tão crítico como um controlador de laser.
Em primeiro lugar, o MOSFET está no corte do cátodo comum do conjunto de lasers – e os 4 ânodos separados saem diretamente para o cabo e vão mais para dentro da placa multicamadas do iPhone. E, em segundo lugar, ao longo da recolha de dados para a engenharia inversa, deparei-me com várias instruções de técnicos de reparação chineses.

Eles não esclareceram diretamente a essência da questão, mas muitas dessas instruções diziam: para reparar um projetor “avariado”, é necessário desmontá-lo, retirar o MOSFET e substituí-lo por uma ponte entre o dreno e a fonte. No final, o projetor com a ponte no interior funcionará, e a funcionalidade do Face ID será restaurada. E se o projetor com uma ponte em vez do MOSFET funciona normalmente, então o que é que este MOSFET estava ali a fazer?
E ocorreu-me: essa era a essência da reparação. O MOSFET é controlado pelo chip – portanto, por ordem do chip, pode interromper o circuito de alimentação do laser e, assim, estragar o projetor. E esta reparação elimina essa interrupção.
Que importância tem o nome?
Assim que ficou claro que o chip misterioso em conjunto com o MOSFET impede o funcionamento normal do projetor, surgiu a pergunta – porque é que ele faz isto? Porque é que colocam um chip num projetor que mata o projetor?
Em busca de respostas, fui ver o firmware do bloco ISP no processador do iPhone – é ele que comunica através de I2C com os sensores das câmaras e com o projetor.
Primeiro, descarreguei a imagem de firmware do iOS 15 para o iPhone X, fresquinha. As imagens de firmware para iPhone são, na essência, ficheiros zip. Lá dentro, encontrei o firmware ISP pretendido – sob a forma de um ficheiro Firmwareisp_bniadc-nike-d22.im4p
. De um ficheiro im4p comprimido, foi extraído um binário, no formato Mach-O com código AArch64 no interior. Mach-O, ao contrário de uma “imagem de firmware típica para um microcontrolador desconhecido” – é um formato de ficheiro executável documentado, semelhante a PE ou ELF. Não há adivinhações sobre a estrutura do ficheiro, a arquitetura do processador ou o endereço para o qual o código precisa de ser carregado. Basta colocar o ficheiro no Ghidra e tudo se organiza sozinho. Agradável.

Depois, o instinto falou mais alto e decidi vasculhar firmwares mais antigos. E na imagem de firmware do iOS 13 encontrei o ficheiro adc-nike-d22. Até o tamanho era quase o mesmo. Só que no firmware mais recente havia mais código – e no antigo havia menos código, mas havia símbolos. Todos os nomes das funções no sítio. Verifiquem sempre as versões antigas!
No firmware do ISP há muita informação, incluindo a forma como o iPhone comunica através de I2C com diferentes chips – com sensores de câmaras, com PMU de câmaras, com chips de controlo de flashes e focagem automática. De lá também, graças aos símbolos, foi possível extrair os “nomes” de diferentes partes constituintes do sistema – e parte deles correlaciona-se com materiais de outras partes do firmware, bem como de outros engenheiros reversos e técnicos de reparação. Por exemplo, o sensor da câmara IV – é o STMicroelectronics VD56G0 “Savage”. Todo o sistema TrueDepth no código chama-se “Pearl”, e aos seus módulos principais são dados nomes de personagens de “Romeu e Julieta”. O projetor IV chama-se “Romeu”, a câmara IV – “Julieta” e a iluminação IV chama-se “Rosaline”. O controlador de lasers, que reside na placa principal do iPhone e alimenta tanto os lasers dentro de “Romeu”, como o laser dentro da iluminação “Rosaline”, chama-se “Rigel”.
O chip misterioso que nos interessa? Também tem um nome. No código chamam-lhe “MamaBear”, abreviadamente “MB”, e parece que a sua funcionalidade é bastante simples. Ele reside no barramento I2C. Armazena dados OTP, incluindo o número de série e várias calibrações. Liga e desliga o MOSFET por comando. E também mede… capacitância? Não temperatura, não está sequer ligado a um termístor NTC, mas sim capacitância. Só que capacitância de quê?
A trágica morte de Romeu

A resposta a esta pergunta é-nos novamente dada pelos esquemas chineses. No esquema da JCID, é visível que no módulo “Romeu” existem três contactos para ligar o conjunto emissor ao conjunto ótico. Um – terra, e os outros dois vão diretamente para o chip “MamaBear”. Estes contactos passam por um adaptador especial na lateral do conjunto ótico e vão parar ao topo do mesmo – ao elemento ótico de difração.
O divisor de feixe de difração não é controlável e não reage à corrente. Mas tem capacitância. E com a ajuda dessas três linhas, esta capacitância pode ser medida. Mas para quê?
A questão é a importância que este divisor de difração desempenha. O padrão de pontos utilizado pelo projetor é definido pela localização de minúsculos lasers-“covinhas” no cristal VCSEL. E depois este padrão é multiplicado por um elemento de difração, que transforma um feixe de luz em centenas de feixes de luz.

E isso significa, o que acontecerá se este elemento de difração for arrancado?
Os feixes não serão divididos. Em vez de uma centena de feixes de laser, haverá um feixe – mas cem vezes mais potente. E isto é, afinal, um laser. Um laser infravermelho é mais perigoso do que um vermelho, porque uma pessoa não o vê – e, portanto, não desviará instintivamente o olhar, mesmo de uma fonte de luz perigosamente potente. E há uma hipótese não nula de que o padrão caraterístico de pontos acabe por ser queimado na retina do utilizador.
Para evitar que isto aconteça, é necessário um chip assassino. Após a ligação, monitoriza constantemente a capacitância do elemento de difração – e se o elemento estiver partido ou danificado, a capacitância sai dos limites permitidos e o chip desliga imediatamente o MOSFET e interrompe a alimentação do VCSEL. E como o elemento está no topo do conjunto ótico, é praticamente impossível danificar o resto do conjunto com um impacto sem o partir e sem interromper o contacto.
Após o desligamento de emergência do laser, o chip queima uma flag OTP, que designa o projetor como defeituoso – o que significa que a alimentação interrompida permanecerá interrompida para sempre. Nenhum comando do ISP terá mais poder sobre ele. O MOSFET estará sempre fechado e o projetor nunca mais funcionará.
O chip “MamaBear”, como o nome sugere – é um chip de proteção. É um “killswitch” para paragem de emergência do laser. Ele mata o projetor para impedir que um dispositivo laser danificado brilhe nos olhos do utilizador. E o módulo “Julieta”, ficando sem o seu “Romeu” correspondente, perde o sentido da vida – e todo o sistema TrueDepth torna-se inútil.
O dia a dia dos tecnossacerdotes
Mas este esquema de proteção tem uma falha. A questão é que o projetor de pontos está na extremidade superior do dispositivo, e perto do altifalante. Se entrar líquido no interior do iPhone, um dos locais mais frequentes para tal é precisamente ali. E os sensores capacitivos são sensíveis a líquidos condutores de eletricidade. Por conseguinte, acontece frequentemente que o Face ID se estraga após a queda do dispositivo na água – mesmo que a entrada de água seja mínima e não haja outros danos. Simplesmente o “Romeu” interpretou mal a situação e fez um disparate.
Estes dispositivos são levados para reparação. Frequentemente para reparação não oficial. E como o iPhone verifica os números de série das peças (olá, Apple), não é possível simplesmente trocar todo o bloco de câmaras por um bloco funcional de um doador. O telefone rejeitará o novo bloco e o Face ID continuará a não funcionar. Por conseguinte, é necessário reparar de alguma forma o antigo. Mas como é possível “ressuscitar” um projetor que se desativou intencionalmente?
Os fabricantes de ferramentas não oficiais para reparação inventaram para isso toda uma série de rituais diferentes. E os técnicos de reparação com mãos de fada seguem-nos religiosamente e realizam microcirurgia neste sistema ótico complexo e calibrado. A destreza das mãos necessária é inimaginável – os componentes no interior têm apenas alguns milímetros de tamanho, e a ótica é extremamente sensível. Se a calibração se desviar demasiado devido a intervenções cirúrgicas, o sistema não funcionará. Não existem ferramentas para recalibração de software (olá, Apple) – ou encontra uma forma de atingir os parâmetros originais ou fica sem Face ID.

Como é que isto funciona? Bem, primeiro é necessário ler os dados OTP do chip original “MamaBear”.
Os dados são legíveis mesmo que o projetor se considere avariado. Para ler os dados, os chineses fazem programadores de “reparação” especiais – que são fornecidos com conjuntos de conectores-adaptadores e funcionam com toda uma série de componentes diferentes de diferentes modelos de iPhone, incluindo projetores.
E depois é preciso fazer duas coisas – resolver o problema do MOSFET que interrompe a alimentação e substituir o chip de proteção original. E aqui existem muitos métodos diferentes.

Pode-se, por exemplo, colocar uma ponte em vez do MOSFET, como na foto acima no artigo, e substituir o chip “MamaBear”, desoldando o cabo FPC original e substituindo-o por um cabo especial com um chip de burla chinês.
O chip original “MamaBear” pode permanecer no interior e gritar impotente que o projetor não deve funcionar de forma alguma. Mas já não tem um MOSFET para desligar o projetor à força, e o iPhone, por sua vez, vê apenas o chip chinês – que envia uma cópia programada dos dados originais e informa que o projetor está mesmo, mesmo bom.

Ou pode-se arrancar o chip “MamaBear” por completo e colocar no seu lugar normal uma substituição chinesa dois-em-um – ela fecha os contactos MOSFET e envia uma cópia dos dados OTP para o telefone.

Bem, e existe uma variante com o mínimo de soldadura. Um “adaptador” com um chip de burla, que é colocado entre o cabo original e a placa principal do iPhone.
Não resolve o problema do MOSFET, mas os chineses também encontraram uma abordagem original para ele, criando programadores de “alta tensão”.
Sabem como é possível “desbloquear” e reescrever vários ATtiny com a ajuda de um programador especial de alta tensão? Aqui a situação é bem diferente. O programador de alta tensão chinês “programa” brutal e irreversivelmente o MOSFET no interior do projetor num curto-circuito entre o dreno e a fonte.
Na última etapa da reparação, ligamos o projetor ao programador mais uma vez e carregamos para ele o dump guardado na primeira etapa. E o projetor está pronto para funcionar, fazendo-se passar por original e não modificado.
Todos estes diferentes dispositivos são feitos e promovidos por diferentes vendedores de equipamento de reparação. Todos os tipos de chips de burla só funcionam com programadores “nativos”, e nos programadores existem frequentemente funcionalidades DRM, como a ligação a uma conta e um número limitado de “reparações”, para cujo reabastecimento é necessário pagar.
Será que os técnicos de reparação sabem que com a sua reparação destroem completamente o sistema inventado pela Apple para proteger os olhos do utilizador? Na verdade, não. Eles não são engenheiros reversos – são xamãs. Não compreendem os princípios de funcionamento. Têm rituais e têm resultados, e isso é-lhes suficiente. E os engenheiros reversos astutos da China partilham relutantemente os seus segredos com o público. O que descrevi neste artigo é conhecido na íntegra apenas pelos engenheiros da Apple e por uma dezena de chineses “dentro do assunto”. E por mim. E por si, agora.
Porque é que a Apple é monstruosa
Sabem, não posso culpar demasiado os engenheiros da Apple por o seu “killswitch” ser demasiado ativo e estragar projetores que ainda poderiam perfeitamente funcionar. Os lasers são um tema perigoso, e a ideia de proteger o utilizador de “piores cenários” é absolutamente sensata. Embora a implementação desta proteção exija melhorias.
Mas a política da Apple de luta contra as reparações não oficiais – é o pior de todos os males. Se os blocos TrueDepth pudessem ser trocados calmamente de dispositivo para dispositivo, sem olhar para os números de série, então praticamente não haveria sentido nos rituais de reparação horríveis e distorcidos. Para que se deformar com soldadura microcirúrgica e dançar com programadores, se for possível retirar de mais um “doador” com um ecrã partido um bloco TrueDepth absolutamente funcional, colocá-lo no telefone do cliente, restaurar totalmente a funcionalidade e viver descansado? Para os técnicos de reparação seria mais fácil, e para os proprietários dos dispositivos – mais seguro.
Mas a história do comportamento monstruoso anti-reparação da Apple mostra claramente que isto não vai acontecer. Bem, a menos que nos EUA ou na UE todos os tipos de movimentos “Right to Repair” tornem ilegal a ligação de peças sobresselentes por números de série. E isto é agora possível. Na piada sobre o facto de a União Europeia estar a adicionar mais funcionalidades úteis aos novos modelos de iPhone do que a Apple, há uma grande dose de verdade. Por isso, vamos ficar atentos às iniciativas legislativas.
Artigo traduzido do russo. Autor do artigo: acc0unt. Tentámos preservar o estilo original e o vocabulário do autor, tanto quanto possível na tradução.