La oss starte med begynnelsen: hvordan Face ID-systemet ser ut og hvordan det fungerer:


Maskinvaremessig består dette systemet av et par kameraer – IR og RGB, og to typer IR-emittere – vanlig bakgrunnsbelysning og en spesialisert punktprojektor.
Hvis vi stripper ned en iPhone X og fjerner alt unødvendig, ser vi blokken med frontkameraer i ren form. IR-bakgrunnsbelysning eksisterer separat, men alle de andre komponentene har vi i hendene – de er sikkert festet i denne metallrammen.
Her ser vi IR-kameraet og IR-punktprojektoren. Det er på dette infrarøde paret at arbeidet til TrueDepth- og Face ID-systemene er basert. Og hovedpersonen i dagens historie er nettopp punktprojektoren.
Kort prinsipp for hvordan Face ID fungerer

IR-punktprojektoren gjør akkurat det navnet tilsier – den spytter ut titusenvis av infrarøde punkter i omgivelsene på kommando. Og IR-kameraet, som gir denne kommandoen, fotograferer punktene umiddelbart.
Ved å kjenne de optiske egenskapene til projektoren, kameraet og avstanden mellom dem, kan ISP-en i iPhone-prosessoren anslå hvor langt hvert punkt er unna. Jeg forstår ikke matematikken i prosessen fullt ut selv, og det vil være vanskelig å reverse engineere den – men å ta en serie bilder med forskjellige punktmønstre gjør det mulig å gjette posisjonen til hvert enkelt punkt ganske nøyaktig og dermed lage et komplett dybdekart. Uten LIDAR og uten ToF.
Det er dybdekartet som gjør at Face ID ikke lar seg lure av utskrevne bilder. Et fotografi er flatt – mens et ansikt har relieff, og for Face ID er det topografiske kartet over ansiktet viktigere enn fargen.

Systemet ser imidlertid også på fargen på ansiktet. IR-kameraet er maskinvaremessig synkronisert med RGB-kameraet, og begge kameraene tar bilde av ansiktet samtidig. Og iPhone kan også blinke ikke bare med IR-projektoren, men også med IR-bakgrunnsbelysning – og ta bilde av hele ansiktet i IR-spekteret.
Dybdekartet i seg selv er ganske grovt, og analyse av ansiktsteksturen i IR- og RGB-bilder ved hjelp av et nevralt nettverk gjør det mulig å både forbedre dybdenøyaktigheten og bedre forstå detaljer som ansiktsuttrykk – både i dagslys og i mørket.
Hvis dette systemet virker kjent for deg, er det sannsynligvis fordi det er direkte hentet fra Kinect fra Xbox 360. Bare den Kinect var en enorm sak, mens her er den krympet ned til størrelsen på en utskjæring i en smarttelefonskjerm.
Dette ble gjort av selskapet PrimeSense, som utviklet teknologien bak Kinect 1 – og deretter ble kjøpt opp av Apple for 350 millioner dollar. Hele selskapet – med alle patenter, utviklingsarbeid, ansatte og annet innmat.
Vi undersøker innmaten i projektoren

Vi går dypere inn i reverse engineering: vi tar ut punktprojektoren fra kamerablokken til iPhone X og demonterer den i komponenter. Den består av en FPC-flekskabel, en emitterenhet og en optisk enhet.
Flekskabelen er helt passiv og derfor lite interessant. Den er loddet til emitterenheten og leder signaler til en FPC-kontakt, som kobles til hovedkortet i iPhone X. Kontakten har en kontaktavstand på 0,35 mm, er spesialtilpasset (Apple-luringer), og ser ut til å være laget av selskapet JAE.
La oss se på hovedkomponentene i optikken:

Og la oss se hva som er inni emitteren:

Og rollen til MOSFET og den mystiske chipen interesserte meg. Hvorfor? Fordi det er uklart hva de egentlig driver med der.
Det første åpenbare alternativet er at den mystiske chipen er et minne for serienummer og kalibreringsdata. Chipen har et I2C-grensesnitt som er typisk for minne, og det er definitivt minne inni. Projektorer har serienumre, som blant annet kan brukes til å bestemme produksjonsdatoen – og hvis projektoren byttes ut i sin helhet, vil iPhone se et avvik i serienummeret og nekte å fungere med utskiftningen. Men den vanligste I2C EEPROM finnes i en liten WLCSP-4-pakke – og den kan til og med blokkeres mot overskriving hvis man virkelig ønsker det. Derfor kan ikke chipen bare være et minne. Den gjør definitivt noe mer.

Det andre åpenbare alternativet er at den mystiske chipen er en driver for lasere, og MOSFET er bryteren for den. Og ja, MOSFET styres faktisk av chipen. Men chipen kan heller ikke være noe kritisk viktig som en laserdriver.
For det første sitter MOSFET i bruddet på den felles katoden til laser-enheten – og 4 separate anoder går direkte til flekskabelen og videre inn i dypet av det lagdelte iPhone-kortet. Og for det andre kom jeg over forskjellige instruksjoner fra kinesiske reparatører underveis i datainnsamlingen for reverse engineering.

De klargjorde ikke essensen i spørsmålet direkte, men i mange av disse instruksjonene ble det sagt: for å reparere en «ødelagt» projektor, må du demontere den, fjerne MOSFET og erstatte den med en jumper mellom dren og kilde. Projektoren vil til slutt fungere med en jumper inni, og Face ID-funksjonaliteten vil bli gjenopprettet. Men siden projektoren fungerer normalt med en jumper i stedet for MOSFET, hva gjorde egentlig denne MOSFET-en der?
Og det slo meg: det var poenget med reparasjonen. MOSFET styres av chipen – derfor kan den etter ønske fra chipen bryte strømforsyningen til laseren og dermed ødelegge projektoren. Og denne reparasjonen fjerner dette bruddet.
Hva navnet mitt betyr for deg
Nå som det ble klart at den mystiske chipen i kombinasjon med MOSFET hindrer normal drift av projektoren, oppstår spørsmålet – hvorfor gjør den det? Hvorfor setter de en chip i projektoren som dreper projektoren?
For å finne svar lette jeg i firmwaren til ISP-blokken i iPhone-prosessoren – det er den som kommuniserer med kamerasensorene og projektoren via I2C.
Først lastet jeg ned et firmware-image for iOS 15 for iPhone X, en ganske ny en. Firmware-images for iPhone er i utgangspunktet zip-filer. Inni fant jeg den ønskede ISP-firmwaren – i form av filen Firmwareisp_bniadc-nike-d22.im4p
. Fra den komprimerte im4p-filen ble binærfilen pakket ut, i Mach-O-format med AArch64-kode inni. Mach-O, i motsetning til et typisk «firmware-image for en ukjent mikrokontroller» – er et dokumentert format for en kjørbar fil, som ligner på PE eller ELF. Ingen gjetting om filstrukturen, prosessorarkitekturen eller adressen som koden skal lastes inn i. Du bare slipper filen inn i Ghidra, og alt faller på plass av seg selv. Deilig.

Så tok instinktet overhånd, og jeg bestemte meg for å saumfare eldre firmwareversjoner. Og i et firmware-image for iOS 13 fant jeg filen adc-nike-d22. Størrelsen var til og med nesten den samme. Men i den nye firmwaren var det mer kode – og i den gamle var det mindre kode, men det var symboler. Alle funksjonsnavnene var på plass. Sjekk alltid eldre versjoner!
ISP-firmwaren inneholder mye informasjon, inkludert hvordan iPhone kommuniserer via I2C med forskjellige chips – med kamerasensorer, med PMU-er for kameraer, med chips for blitsstyring og autofokus. Derfra, takket være symbolene, klarte jeg å hente ut «navnene» på forskjellige komponenter i systemet – og noen av dem stemmer overens med materialer fra andre deler av firmwaren, samt fra andre reverse engineers og reparatører. For eksempel er IR-kamerasensoren en STMicroelectronics VD56G0 «Savage». Hele TrueDepth-systemet kalles «Pearl» i koden, og hovedmodulene har fått navn etter karakterer fra «Romeo og Julie». IR-projektoren kalles «Romeo», IR-kameraet – «Juliet», og IR-bakgrunnsbelysningen kalles «Rosaline». Laserdriveren, som sitter på hovedkortet i iPhone og forsyner både lasere inni «Romeo» og laseren inni bakgrunnsbelysningen «Rosaline», kalles «Rigel».
Den mystiske chipen som interesserer oss? Den har også et navn. I koden kalles den «MamaBear», kort sagt «MB», og det ser ut til at funksjonaliteten er ganske enkel. Den sitter på I2C-bussen. Den lagrer OTP-data, inkludert serienummer og forskjellige kalibreringer. Den slår av og på MOSFET på kommando. Og den måler også… kapasitans? Ikke temperatur, den er ikke engang koblet til en NTC-termistor, men nettopp kapasitans. Men kapasitansen til hva?
Romeo sin tragiske død

Svaret på dette spørsmålet får vi igjen hjelp til å finne av kinesiske skjemaer. I skjemaet fra JCID ser vi at det er tre kontakter i «Romeo»-modulen for å koble emitterenheten til den optiske enheten. En – jord, og de to andre går direkte til «MamaBear»-chipen. Disse kontaktene går gjennom en spesiell adapter på siden av den optiske enheten og ender opp på toppen av den – på det diffraktive optiske elementet.
Den diffraktive stråledeleren er ikke-styrbar og reagerer ikke på strøm. Men den har kapasitans. Og ved hjelp av de tre linjene kan denne kapasitansen måles. Men hvorfor?
Saken er hvor viktig rolle denne diffraktive stråledeleren spiller. Mønsteret av punkter som brukes av projektoren, bestemmes av plasseringen av ørsmå laser-«groper» på VCSEL-krystallen. Og så multipliseres dette mønsteret av et diffraksjonselement, som lager hundrevis av stråler av lys fra én stråle.

Så hva skjer hvis dette diffraksjonselementet rives av?
Strålene vil ikke deles opp. I stedet for hundrevis av laserstråler vil det være én stråle – men hundre ganger kraftigere. Og dette er tross alt en laser. Infrarød laser er farligere enn rød, fordi mennesker ikke ser den – og derfor ikke instinktivt vil snu blikket bort selv fra en farlig kraftig lyskilde. Og det er en ikke-null sjanse for at det karakteristiske punktmønsteret i et slikt tilfelle vil bli brent inn i netthinnen til brukeren.
For å forhindre dette er det behov for en drapschip. Etter at den er slått på, overvåker den kontinuerlig kapasitansen til diffraksjonselementet – og hvis elementet viser seg å være brukket av eller skadet, går kapasitansen utenfor det tillatte området, og chipen kobler umiddelbart ut MOSFET og bryter strømforsyningen til VCSEL. Og siden elementet er plassert på toppen av den optiske enheten, er det nesten umulig å skade resten av enheten ved et slag uten å ødelegge den og forstyrre kontakten.
Etter en nødavstengning av laseren brenner chipen en OTP-flagg i seg selv, som indikerer projektoren som defekt – noe som betyr at den brutte strømforsyningen for alltid vil forbli brutt. Ingen kommandoer fra ISP vil lenger ha makt over den. MOSFET vil alltid være stengt, og projektoren vil aldri fungere igjen.
«MamaBear»-chipen, som navnet antyder – er en beskyttelseschip. Det er en «killswitch» for nødstop av laseren. Den dreper projektoren for å hindre at en skadet laseranordning lyser brukeren i øynene. Og «Juliet»-modulen, som er igjen uten sin partner «Romeo», mister meningen med livet – og hele TrueDepth-systemet går til grunne.
Hverdagen til teknoprester

Men denne beskyttelsesmekanismen har en svakhet. Faktum er at punktprojektoren sitter på den øvre kanten av enheten, og ved siden av høyttaleren. Hvis det kommer væske inn i iPhone, er et av de vanligste stedene for dette – akkurat der. Og kapasitive sensorer er følsomme for strømledende væsker. Derfor skjer det ofte at Face ID slutter å fungere etter at enheten har falt i vann – selv om vanninntrengningen er minimal og det ikke er andre skader. Bare «Romeo» misforsto situasjonen og utførte en unødvendig Roskomnadzor.
Slike enheter bringes inn til reparasjon. Ofte til uoffisiell reparasjon. Og siden iPhone sjekker serienumrene på reservedeler (hei, Apple), er det ikke mulig å bare bytte ut hele kamerablokken med en fungerende blokk fra en donor. Telefonen vil avvise den nye blokken, og Face ID vil fortsatt ikke fungere. Det betyr at du på en eller annen måte må reparere den gamle. Men hvordan kan du «gjenopplive» en projektor som bevisst har satt seg selv ut av spill?
Produsenter av uoffisielle verktøy for reparasjon har funnet opp en hel rekke forskjellige ritualer for dette. Og dyktige teknoprester-reparatører følger dem trofast og utfører mikrokirurgi på dette komplekse og kalibrerte optiske systemet. Det kreves ufattelig dyktighet – komponentene inni er bare noen få millimeter store, og optikken er ekstremt følsom. Hvis kalibreringen forskyves for mye på grunn av kirurgiske inngrep, vil ikke systemet fungere. Det finnes ingen verktøy for programvarekalibrering (hei, Apple) – du må enten finne en måte å komme tilbake til de opprinnelige parameterne, ellers må du klare deg uten Face ID.

Hvordan fungerer det? Vel, først må du lese OTP-dataene fra den originale «MamaBear»-chipen.
Dataene kan leses selv om projektoren anser seg selv som defekt. For å lese ut dataene lager kineserne spesielle «reparasjons»-programmerere – som leveres med sett med kontakter-adaptere, og fungerer med en rekke forskjellige komponenter fra forskjellige iPhone-modeller, inkludert projektorer.
Og så må du gjøre to ting – håndtere MOSFET-en som bryter strømforsyningen, og erstatte den originale beskyttelseschipen. Og her er det mange forskjellige metoder.

Du kan for eksempel legge inn en jumper i stedet for MOSFET, som på bildet over i artikkelen, og erstatte «MamaBear»-chipen ved å lodde av den originale FPC-flekskabelen og erstatte den med en spesiell flekskabel med en kinesisk jukse-chip.
Den originale «MamaBear»-chipen kan forbli inni og rope maktesløst om at projektoren absolutt ikke skal fungere. Men den har ikke lenger en MOSFET for å slå av projektoren med tvang, og iPhone ser på sin side bare den kinesiske chipen – som gir ut en kopi av de originale dataene som er lagt inn av programmereren, og rapporterer at projektoren er helt i orden.

Eller du kan rive ut «MamaBear»-chipen helt og sette inn en kinesisk erstatning to-i-ett på dens vanlige plass – den både lukker MOSFET-kontaktene og gir en kopi av OTP-dataene til telefonen.

Og det finnes et alternativ med minimal lodding. En «adapter» med en jukse-chip, som settes mellom den originale flekskabelen og hovedkortet i iPhone.
Den løser ikke problemet med MOSFET, men kineserne har også funnet en original tilnærming til det ved å lage «høyspent»-programmerere.
Vet du hvordan du kan «unbricke» og overskrive forskjellige ATtiny-er ved hjelp av en spesiell høyspentprogrammerer? Her er situasjonen helt annerledes. Den kinesiske høyspentprogrammereren «programmerer» brutalt og irreversibelt MOSFET-en inni projektoren til en kortslutning mellom dren og kilde.
I det siste trinnet av reparasjonen kobler vi projektoren til programmereren igjen og laster inn dumpen som ble lagret i første trinn. Og projektoren er klar til å fungere, og utgir seg for å være original og umodifisert.
Alle disse forskjellige anordningene lages og markedsføres av forskjellige selgere av reparasjonsutstyr. Alle slags jukse-chips fungerer bare med «egne» programmerere, og programmererne har ofte DRM-funksjoner som kontobinding og et begrenset antall «reparasjoner», som du må betale for å fylle på.
Vet reparatørene at de med sin reparasjon fullstendig ødelegger systemet som Apple har laget for å beskytte brukerens øyne? Egentlig ikke. De er ikke reverse engineers – de er sjamaner. De forstår ikke hvordan ting fungerer. De har ritualer og de har resultater, og det er nok for dem. Og smarte reverse engineers fra Kina er tilbakeholdne med å dele hemmelighetene sine med offentligheten. Det jeg har beskrevet i denne artikkelen, er i sin helhet bare kjent for Apple-ingeniører og et dusin kinesere «i gamet». Og meg. Og deg, nå.
Hvorfor Apple er noen idioter
Vet du hva, jeg kan ikke klandre Apple-ingeniørene for mye for at deres «killswitch» er for aktiv og ødelegger projektorer som fortsatt kunne ha fungert. Lasere er et farlig tema, og ideen om å beskytte brukeren mot «verste scenarioer» er helt fornuftig. Selv om implementeringen av denne beskyttelsen krever forbedringer.
Men Apples politikk for å bekjempe uoffisielle reparasjoner – er det verste av alt ondt. Hvis TrueDepth-blokker kunne byttes ut fritt fra enhet til enhet, uten å tenke på serienumre, ville det praktisk talt ikke vært noen mening i de grusomme, forvrengte reparasjonsritualene. Hvorfor drive med forvrengt mikrokirurgisk lodding og danse med programmerere, hvis du kan ta en fullt fungerende TrueDepth-blokk fra en annen «donor» med knust skjerm, sette den inn i kundens telefon, fullstendig gjenopprette funksjonaliteten og leve lykkelig videre? Det ville vært enklere for reparatørene og tryggere for enhetseierne.
Men historien om Apples idiotiske anti-reparasjonsatferd viser tydelig at dette ikke kommer til å skje. Vel, med mindre forskjellige «Right to Repair»-bevegelser i USA eller EU gjør seriekobling av reservedeler ulovlig. Og det er mulig nå. I vitsen om at EU legger til flere nyttige funksjoner i nye iPhone-modeller enn Apple selv, er det en veldig stor dose sannhet. Så vi får følge med på lovgivningsinitiativer.
Artikkelen er oversatt fra russisk. Artikkelen er skrevet av: acc0unt. Vi har forsøkt å bevare den originale stilen og formuleringene til forfatteren så godt som mulig under oversettelsen.