Hvorfor Apple tilføjede en chip til iPhone, der ødelægger Face ID

Kategoriseret som Hardware, Uncategorized @da
Save and Share:

Lad os starte fra begyndelsen: hvordan Face ID-systemet ser ud, og hvordan det fungerer:

Alt det nødvendige hardware til FaceID sidder lige i denne udskæring i skærmen

Hardwaremæssigt består dette system af et par kameraer – IR og RGB, og to typer IR-emittere – almindelig baggrundsbelysning og en specialiseret punktprojektor.

Vi fjerner “skindet” fra en iPhone X, fjerner alt det overflødige, og ser blokken af frontkameraer i sin rene form. IR-baggrundsbelysningen eksisterer separat, men alle de andre komponenter har vi i hænderne – de er sikkert fastgjort i denne metalramme.

Her ser vi IR-kameraet og IR-punktprojektoren. Det er på dette infrarøde par, at TrueDepth- og FaceID-systemernes arbejde er baseret. Og hovedpersonen i dagens historie er netop punktprojektoren.

Kort princip for FaceID’s funktion

Punkter udsendt af iPhone X – foto herfra.

IR-punktprojektoren gør præcis det, som navnet antyder – den spytter på kommando titusindvis af infrarøde punkter ud i den omgivende verden. Og IR-kameraet, som giver denne kommando, fotograferer straks disse punkter.

Ved at kende de optiske karakteristika for projektoren, kameraet og afstanden mellem dem, kan ISP’en i iPhone-processoren estimere, hvor langt hvert punkt er væk. Matematikken i processen forstår jeg heller ikke selv fuldt ud, og det vil være svært at reverse engineer – men at tage en serie billeder med forskellige punktmønstre gør det muligt at gætte positionen af hvert enkelt punkt ret præcist, og dermed skabe et helt dybdekort. Uden LIDAR og uden ToF.

Det er dybdekortet, der gør det muligt for FaceID ikke at blive narret af printede fotografier. Et fotografi er fladt – men et ansigt har relief, og for FaceID er det topografiske kort over ansigtet vigtigere end dets farve.

Blokdiagram over PrimeSense referencekamera

Systemet kigger dog også på ansigtets farve. IR-kameraet er hardwaremæssigt synkroniseret med RGB-kameraet, og begge kameraer optager ansigtet samtidig. Og iPhone kan også blinke ikke kun med IR-projektoren, men også med IR-baggrundsbelysningen – og optage hele ansigtet i IR-spektret.

Dybdekortet i sig selv er ret groft, og analyse af ansigtets tekstur i IR- og RGB-billeder ved hjælp af et neuralt netværk gør det muligt både at præcisere dybden og bedre forstå detaljer som mimik – både i dagslys og i mørke.

Hvis dette system virker bekendt for dig, er det nok fordi det direkte er taget fra Kinect fra Xbox 360. Men den Kinect var en enorm kasse, og her er den blevet reduceret til størrelsen af en udskæring i en smartphoneskærm.

Det blev gjort af virksomheden PrimeSense, som udviklede teknologien bag Kinect 1 – og derefter blev købt af Apple for 350 millioner dollars. Hele virksomheden – med alle patenter, udviklinger, medarbejdere og andre indmad.

Vi undersøger punktprojektorens indmad

Vi går dybere i reverse engineering: vi tager punktprojektoren ud af iPhone X-kamerablokken og skiller den ad i dens bestanddele. Den består af et FPC-flexkabel, en emitterenhed og en optisk enhed.

Flexkablet er fuldstændig passivt og derfor ikke særlig interessant. Det loddes til emitterenheden og fører signaler til et FPC-stik, som tilsluttes iPhone X-bundkortet. Stikket har en kontaktafstand på 0,35 mm, er specialfremstillet (Apple, de slyngler), og ser ud til at være lavet af virksomheden JAE.

Lad os se på de vigtigste optiske komponenter:

Projektor i snit: foto herfra, mine underskrifter

Og lad os se på, hvad der er inde i emitteren:

Og MOSFET’ens og den mystiske chips rolle interesserede mig. Hvorfor? Fordi det er uklart, hvad de overhovedet laver der.

Den første oplagte mulighed er, at den mystiske chip er hukommelse til serienummer og kalibreringsdata. Chippen har en typisk I2C-interface for hukommelse, og der er helt sikkert hukommelse indeni. Projektorer har serienumre, som man blandt andet kan bruge til at bestemme produktionsdatoen – og hvis projektoren udskiftes helt, vil iPhone se et uoverensstemmende serienummer og nægte at arbejde med udskiftningen. Men den mest almindelige I2C EEPROM findes i et lille WLCSP-4-hus – og den kan endda blokeres mod overskrivning, hvis man virkelig vil. Derfor kan chippen ikke bare være hukommelse. Den gør helt sikkert noget mere.

Pinout af projektoren fra kinesiske mestre fra JCID. Indskrifterne er skæve, men generelt ens.

Den anden oplagte mulighed er, at den mystiske chip er en laserdriver, og MOSFET’en er dens kontakt. Og ja, MOSFET’en styres faktisk af chippen. Men chippen kan heller ikke være noget kritisk vigtigt som en laserdriver.

For det første sidder MOSFET’en i afbrydelsen af den fælles katode på lasersamlingen – og 4 separate anoder går direkte ud til flexkablet og videre ind i dybet af iPhone’s flerlagsprint. Og for det andet stødte jeg under dataindsamlingen til reverse engineering på forskellige instruktioner fra kinesiske reparationsmestre.

MOSFET erstattes af en pæn ledning

Essensen af spørgsmålet blev ikke direkte afklaret af dem, men i mange af disse instruktioner stod der: for at reparere en “defekt” projektor skal den skilles ad, MOSFET’en fjernes og erstattes af en jumper mellem drain og source. Projektoren vil i sidste ende fungere med en jumper indeni, og FaceID-funktionaliteten vil blive genoprettet. Men da projektoren fungerer normalt med en jumper i stedet for MOSFET’en, hvad lavede den MOSFET så der?

Og det gik op for mig: det var essensen af reparationen. MOSFET’en styres af chippen – så chippen kan efter ønske afbryde laserens strømforsyning og dermed ødelægge projektoren. Og denne reparation fjerner denne afbrydelse.

Hvad er dit navn

Nu hvor det er klart, at den mystiske chip i par med MOSFET’en forhindrer projektorens normale funktion, opstår spørgsmålet – hvorfor gør den det? Hvorfor sætter man en chip i projektoren, der dræber projektoren?

For at få svar gik jeg i gang med at undersøge firmwaren i ISP-blokken i iPhone-processoren – det er den, der kommunikerer via I2C med kamerasensorerne og med projektoren.

Først downloadede jeg et iOS 15 firmware-image til iPhone X, et helt nyt. Firmware-images til iPhones er i bund og grund zip-filer. Indeni fandt jeg den ønskede ISP-firmware – i form af filen Firmwareisp_bniadc-nike-d22.im4p. Fra den komprimerede im4p-fil blev der udvundet en binær fil i Mach-O-format med AArch64-kode indeni. Mach-O er, i modsætning til et typisk “firmware-image til en ukendt mikrocontroller” – et dokumenteret format for en eksekverbar fil, der ligner PE eller ELF. Der er ingen gætterier om filstrukturen, processorarkitekturen eller adressen, som koden skal indlæses på. Man smider bare filen i Ghidra, og alt falder på plads af sig selv. Dejligt.

Så tog instinktet over, og jeg besluttede at dissekere ældre firmwares. Og i et iOS 13 firmware-image fandt jeg filen adc-nike-d22. Størrelsen var endda næsten den samme. Men i den nye firmware var der mere kode – og i den gamle firmware var der mindre kode, men til gengæld var der symboler. Alle funktionsnavnene var på plads. Tjek altid ældre versioner!

Der er mange oplysninger i ISP-firmwaren, herunder hvordan iPhone kommunikerer via I2C med forskellige chips – med kamerasensorer, med kamera-PMU’er, med chips til styring af blitz og autofokus. Derfra, takket være symbolerne, lykkedes det at udtrække “navnene” på forskellige komponenter i systemet – og nogle af dem stemmer overens med materialer fra andre dele af firmwaren, samt fra andre reverse engineers og reparatører. For eksempel er IR-kamerasensoren en STMicroelectronics VD56G0 “Savage”. Hele TrueDepth-systemet kaldes “Pearl” i koden, og dets hovedmoduler har fået navne fra karakterer fra “Romeo og Julie”. IR-projektoren kaldes “Romeo”, IR-kameraet – “Julie”, og IR-baggrundsbelysningen kaldes “Rosaline”. Laserdriveren, som sidder på iPhone-bundkortet og forsyner både lasere inde i “Romeo” og laseren inde i “Rosaline”-baggrundsbelysningen, kaldes “Rigel”.

Den mystiske chip, vi er interesserede i? Den har også et navn. I koden kaldes den “MamaBear”, kort sagt “MB”, og det ser ud til, at dens funktionalitet er meget enkel. Den sidder på I2C-bussen. Den gemmer OTP-data, herunder serienummer og forskellige kalibreringer. Den tænder og slukker MOSFET’en efter kommando. Og så måler den… kapacitans? Ikke temperatur, den er slet ikke tilsluttet en NTC-termistor, men netop kapacitans. Men kapacitansen af hvad?

Romeo’s tragiske død

Svaret på dette spørgsmål hjælper kinesiske diagrammer os igen med at få. I diagrammet fra JCID kan man se, at der i “Romeo”-modulet er tre kontakter til at forbinde emitterenheden med den optiske enhed. Den ene er jord, og de to andre går direkte ind i “MamaBear”-chippen. Disse kontakter går gennem en speciel adapter på siden af den optiske enhed og ender på toppen af den – på det diffraktive optiske element.

Den diffraktive stråledeler er ikke-styrbar og reagerer ikke på strøm. Men den har kapacitans. Og ved hjælp af de tre linjer kan denne kapacitans måles. Men hvorfor?

Det handler om, hvor vigtig en rolle denne diffraktive stråledeler spiller. Mønsteret af punkter, der bruges af projektoren, bestemmes af placeringen af de små laser-“gruber” på VCSEL-krystallen. Og så mangfoldiggøres dette mønster af det diffraktive element, som laver hundredvis af stråler ud af en enkelt stråle.

Sammenligning af placeringen af lasere på “SPARSE”-anoden og de projicerede punkter

Så hvad sker der, hvis dette diffraktive element rives af?

Strålerne vil ikke blive delt. I stedet for hundredvis af laserstråler vil der være én stråle – men hundrede gange kraftigere. Og det er trods alt en laser. En infrarød laser er farligere end en rød, fordi man ikke kan se den – og derfor ikke instinktivt vil vende blikket væk, selv fra en farligt kraftig lyskilde. Og der er en ikke-nul chance for, at det karakteristiske mønster af punkter i så fald vil blive brændt ind i brugerens nethinde.

For at forhindre dette er der brug for en dræberchip. Efter tænding overvåger den konstant kapacitansen af det diffraktive element – og hvis elementet viser sig at være brækket af eller beskadiget, så falder kapacitansen uden for det tilladte område, og chippen afbryder straks MOSFET’en og afbryder strømforsyningen til VCSEL’en. Og da elementet er placeret på toppen af den optiske enhed, er det praktisk talt umuligt at beskadige resten af enheden ved et slag uden samtidig at ødelægge det og forstyrre kontakten.

Efter en nødstop af laseren brænder chippen et flag ind i OTP’en, som markerer projektoren som defekt – hvilket betyder, at den afbrudte strømforsyning for altid vil forblive afbrudt. Ingen kommandoer fra ISP’en vil længere have magt over den. MOSFET’en vil altid være lukket, og projektoren vil aldrig mere fungere.

“MamaBear”-chippen, som navnet antyder – er en beskyttelseschip. Det er en “killswitch” til nødstop af laseren. Den dræber projektoren for at forhindre, at en beskadiget laserenhed lyser brugeren i øjnene. Og “Julie”-modulet, der er efterladt uden sin partner “Romeo”, mister meningen med livet – og hele TrueDepth-systemet bliver ubrugeligt.

Hverdagen for teknopræster

Men denne beskyttelsesordning har en mangel. Faktum er, at punktprojektoren sidder på enhedens øverste kant og tæt på højttaleren. Hvis der kommer væske ind i iPhonen, er et af de mest almindelige steder for det netop der. Og kapacitive sensorer er følsomme over for strømførende væsker. Derfor sker det ofte, at FaceID går i stykker efter at enheden er faldet i vand – selvom vandindtrængningen er minimal, og der ikke er andre skader. “Romeo” misforstod bare situationen og begik Roskomnadzor forgæves.

Sådanne enheder bringes til reparation. Ofte til uofficiel reparation. Og da iPhone kontrollerer serienumrene på reservedele (hej, Apple), er det ikke muligt bare at skifte hele kamerablokken ud med en fungerende blok fra en donor. Telefonen vil afvise den nye blok, og FaceID vil stadig ikke virke. Det betyder, at man på en eller anden måde skal reparere den gamle. Men hvordan kan man “genoplive” en projektor, der med vilje har sat sig selv ud af drift?

Producenter af uofficielle reparationsværktøjer har opfundet en hel række forskellige ritualer til dette. Og retskafne teknopræster-reparatører følger dem trofast og udfører mikrokirurgi på dette komplekse og kalibrerede optiske system. Nøjagtigheden af hænderne skal være ufattelig – komponenterne indeni er få millimeter store, og optikken er ekstremt følsom. Hvis kalibreringen på grund af kirurgiske indgreb forskyder sig for meget, vil systemet ikke fungere. Der findes ingen værktøjer til softwaremæssig rekalibrering (hej, Apple) – enten finder du en måde at ramme de originale parametre, eller du forbliver uden FaceID.

«Højspændings» programmer

Hvordan fungerer det? Først og fremmest skal man læse OTP-dataene fra den originale “MamaBear”-chip.

Dataene kan læses, selvom projektoren anser sig selv for at være defekt. Til udlæsning af data laver kineserne specielle “reparations”-programmer – som leveres med sæt af stik-adaptere og fungerer med en hel række forskellige komponenter fra forskellige iPhone-modeller, herunder projektorer.

Og så skal man gøre to ting – håndtere MOSFET’en, der afbryder strømforsyningen, og udskifte den originale beskyttelseschip. Og her er der mange forskellige metoder.

Flexkabel med en “narre”-chip

Man kan for eksempel smide en jumper i stedet for MOSFET’en, som på billedet ovenfor i artiklen, og udskifte “MamaBear”-chippen ved at afmontere det originale FPC-flexkabel og erstatte det med et specielt flexkabel med en kinesisk “narre”-chip.

Den originale “MamaBear”-chip kan forblive indeni og råbe magtesløst om, at projektoren under ingen omstændigheder må fungere. Men den har ikke længere en MOSFET til at slukke projektoren med magt, og iPhone på sin side ser kun den kinesiske chip – som sender en kopi af de originale data, der er indlæst af programmeren, og rapporterer, at projektoren er helt sikkert i orden.

Vi skraber den gamle indmad ud og sætter ny ind

Eller man kan rive “MamaBear”-chippen helt ud og sætte en kinesisk to-i-en erstatning på dens normale plads – den lukker både MOSFET-kontakterne og sender en kopi af OTP-dataene til telefonen.

Adapterkort med en “narre”-chip

Og så er der en mulighed med et minimum af lodning. En “adapter” med en “narre”-chip, som sættes mellem det originale flexkabel og iPhone-bundkortet.

Problemet med MOSFET’en løser den ikke, men kineserne har også fundet en original tilgang til det, ved at lave “højspændings”-programmer.

Ved du, hvordan man kan “genoplive” og overskrive forskellige ATtiny’er ved hjælp af en speciel højspændingsprogrammer? Her er situationen helt anderledes. Den kinesiske højspændingsprogrammer “programmerer” brutalt og irreversibelt MOSFET’en inde i projektoren til en kortslutning mellem drain og source.

I det sidste trin af reparationen tilslutter vi projektoren til programmeren igen og indlæser det gemte dump fra det første trin i den. Og projektoren er klar til at arbejde og udgive sig for at være original og umodificeret.

Alle disse forskellige anordninger laves og promoveres af forskellige sælgere af reparationsudstyr. Alle mulige “narre”-chips fungerer kun med “native” programmer, og i programmerne er der ofte DRM-funktioner som f.eks. binding til en konto og et begrænset antal “reparationer”, som man skal betale for at fylde op.

Ved reparatørerne, at de med deres reparation fuldstændig ødelægger det system, som Apple har opfundet for at beskytte brugerens øjne? Faktisk ikke. De er ikke reverse engineers – de er shamaner. De forstår ikke principperne for funktionen. De har ritualer og resultater, og det er nok for dem. Og smarte reverse engineers fra Kina deler ikke gerne deres hemmeligheder med offentligheden. Det, jeg har beskrevet i denne artikel, er kun kendt i sin fulde udstrækning af Apples ingeniører og en håndfuld kinesere “i branchen”. Og mig. Og dig, nu.

Hvorfor Apple er nogle idioter

Ved du hvad, jeg kan ikke bebrejde Apples ingeniører for meget for, at deres “killswitch” er for aktiv og ødelægger projektorer, der sagtens kunne have fungeret lidt endnu. Lasere er et farligt emne, og ideen om at beskytte brugeren mod “værste tilfælde” er helt fornuftig. Selvom implementeringen af denne beskyttelse kræver forbedringer.

Men Apples politik om at bekæmpe uofficielle reparationer – det er det værste af alle onder. Hvis TrueDepth-blokke roligt kunne udskiftes fra enhed til enhed uden at bekymre sig om serienumre, ville der næsten ikke være nogen mening i de forfærdelige, forvrængede reparationsritualer. Hvorfor besvære sig med mikrokirurgisk lodning og danse med programmer, når man kan tage en helt fungerende TrueDepth-blok fra en anden “donor” med en smadret skærm, sætte den i kundens telefon, fuldt ud genoprette funktionaliteten og leve i fred? Det ville være lettere for reparatørerne, og mere sikkert for enhedsejere.

Men historien om Apples afskyelige anti-reparationsadfærd viser tydeligt, at det ikke kommer til at ske. Medmindre diverse “Right to Repair”-bevægelser i USA eller EU gør binding af reservedele via serienumre ulovlig. Og det er muligt nu. I vitsen om, at EU tilføjer flere nyttige funktioner til nye iPhone-modeller end Apple, er der en meget høj grad af sandhed. Så vi vil holde øje med de lovgivningsmæssige initiativer.

Artiklen er oversat fra russisk. Artiklens forfatter: acc0unt. Vi har bestræbt os på at bevare forfatterens originale stil og formuleringer, så vidt det er muligt i oversættelsen.

Skriv kommentar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *