Začnimo na začetku: kako sistem Face ID izgleda in kako deluje:


Strojno opremo tega sistema sestavljata par kamer – IR in RGB – ter dve vrsti IR-oddajnikov – običajna osvetlitev in specializiran projektor točk.
Če iPhonu X odstranimo lupino, odstranimo vse nepotrebno in vidimo blok sprednjih kamer v goli obliki. IR-osvetlitev obstaja ločeno, vendar so vse ostale komponente v naših rokah – varno so pritrjene v tem kovinskem okvirju.
Tukaj vidimo IR-kamero in projektor IR-točk. Prav na tem infrardečem paru temelji delovanje sistemov TrueDepth in FaceID. In glavni junak današnje zgodbe je prav projektor točk.
Kratek princip delovanja FaceID

Projektor IR-točk počne natanko to, kar pove že njegovo ime – po ukazu bruha v okoliški svet na deset tisoče infrardečih točk. In IR-kamera, ki tudi daje ta ukaz, te točke takoj fotografira.
Ob poznavanju optičnih lastnosti projektorja, kamere in razdalje med njima lahko ISP v procesorju iPhona oceni, kako daleč je vsaka točka. Matematike tega postopka niti sam ne razumem povsem, in obrniti jo bo težko – vendar snemanje serije slik z različnimi vzorci točk omogoča precej natančno ugibanje položaja vsake posamezne točke in s tem ustvarjanje celotne globinske karte. Brez LIDAR-ja in brez ToF.
Prav globinska karta omogoča, da se FaceID ne da pretentati s fotografijami, natisnjenimi na tiskalniku. Fotografija je ploska – obraz pa ima relief, in za FaceID je topografska karta obraza pomembnejša od njegove barve.

Vendar sistem gleda tudi na barvo obraza. IR-kamera je strojno sinhronizirana z RGB-kamero in obe kameri posnameta obraz hkrati. iPhone pa lahko utripa ne le z IR-projektorjem, temveč tudi z IR-osvetlitvijo – in posname celoten obraz v IR-spektru.
Globinska karta je sama po sebi precej groba, analiza teksture obraza na IR- in RGB-posnetkih pa nevronetskemu omrežju omogoča, da natančneje določi globino in se bolje spozna na podrobnosti, kot je mimika – in to tako pri dnevni svetlobi kot v temi.
Če se vam ta sistem zdi znan, je to verjetno zato, ker je neposredno povzet iz Kinecta za Xbox 360. Le da je bil tisti Kinect ogromen kos opreme, tukaj pa so ga skrčili na velikost izreza na zaslonu pametnega telefona.
To je storilo podjetje PrimeSense, ki je razvilo tehnologije v osnovi Kinecta 1 – in ga je nato Apple kupil za 350 milijonov dolarjev. V celoti – z vsemi patenti, razvojem, zaposlenimi in ostalim notranjim delovanjem.
Razstavljamo drobovje projektorja

Poglobimo se v obratni inženiring: vzamemo projektor točk iz bloka kamer iPhone X in ga razstavimo na sestavne dele. Sestavljen je iz FPC-fleksibilnega kabla, oddajne enote in optične enote.
Fleksibilni kabel je popolnoma pasiven in zato malo zanimiv. Prilemljen je na oddajno enoto in izvaja signale na FPC-priključek, ki se priključi na matično ploščo iPhone X. Priključek s korakom kontaktov 0,35 mm, po meri (Apple so barabe), in zdi se, da ga je izdelalo podjetje JAE.
Poglejmo glavne komponente optike:

In poglejmo, kaj se nahaja v oddajniku:

In vloga MOSFET-a in skrivnostnega čipa me je zanimala. Zakaj? Ker ni jasno, kaj tam sploh počneta.
Prva očitna možnost – skrivnostni čip je pomnilnik za serijsko številko in kalibracijske podatke. Čip ima tipičen vmesnik I2C za pomnilnik, in pomnilnik v notranjosti zagotovo je. Projektorji imajo serijske številke, po katerih je med drugim mogoče določiti datum proizvodnje – in če projektor zamenjamo v celoti, bo iPhone videl neskladje serijske številke in bo z zamenjavo zavrnil delovanje. Toda povsem običajen I2C EEPROM se pojavlja v drobnem WLCSP-4 ohišju – in ga je mogoče celo zaščititi pred prepisovanjem, če si tega resnično želite. Zato čip ne more biti preprost pomnilnik. Zagotovo počne še nekaj drugega.

Druga očitna možnost – skrivnostni čip je gonilnik laserjev, MOSFET pa njegovo stikalo. In da, MOSFET res upravlja čip. Le da čip tudi ne more biti nekaj kritično pomembnega, kot je gonilnik laserja.
Prvič, MOSFET je nameščen v prekinitvi skupne katode laserske enote – in 4 ločene anode gredo neposredno na fleksibilni kabel in naprej v drobovje večplastne plošče iPhona. In drugič, med zbiranjem podatkov za obratni inženiring sem naletel na različna navodila kitajskih mojstrov za popravila.

Bistva zadeve niso neposredno pojasnili, vendar je v mnogih od teh navodil pisalo: za popravilo »pokvarjenega« projektorja ga je treba razstaviti, MOSFET odstraniti in ga zamenjati s premostitvijo med odvodom in virom. Projektor bo na koncu s premostitvijo v notranjosti deloval in funkcionalnost FaceID se bo obnovila. In ker projektor s premostitvijo namesto MOSFET-a normalno deluje, kaj je tam sploh počel ta MOSFET?
In me je prešinilo: v tem je bil bistvo popravila. MOSFET upravlja čip – zato lahko po želji čipa prekine napajalni tokokrog laserja in s tem pokvari projektor. Popravilo pa to prekinitev odpravi.
Kaj je v tvojem imenu
Ker je postalo jasno, da skrivnostni čip v paru z MOSFET-om preprečuje normalno delovanje projektorja, se pojavi vprašanje – zakaj to počne? Zakaj v projektor vstavijo čip, ki uniči projektor?
Za odgovore sem se poglobil v vdelano programsko opremo bloka ISP v procesorju iPhona – prav ta se po I2C pogovarja s senzorji kamer in s projektorjem.
Najprej sem prenesel sliko vdelane programske opreme iOS 15 za iPhone X, svežo. Slike vdelane programske opreme za iPhone so v bistvu zip-datoteke. V notranjosti sem našel iskane vdelano programsko opremo ISP – v obliki datoteke Firmwareisp_bniadc-nike-d22.im4p
. Iz stisnjene datoteke im4p se je izvlekel binarni program v formatu Mach-O z AArch64 kodo v notranjosti. Mach-O je v nasprotju s tipično »sliko vdelane programske opreme za neznan mikrokrmilnik« – dokumentiran format izvršljive datoteke, podoben PE ali ELF. Ni ugibanja o strukturi datoteke, arhitekturi procesorja ali naslovu, na katerega je treba naložiti kodo. Preprosto vržeš datoteko v Ghidro in vse se samo razporedi po policah. Prijetno.

Potem je instinkt naredil svoje in sem se odločil razkosati starejše vdelane programske opreme. In v sliki vdelane programske opreme iOS 13 sem našel datoteko adc-nike-d22. Celo velikost je bila skoraj enaka. Le da je bilo v novi vdelani programski opremi več kode – v stari pa manj kode, zato pa so bili simboli. Vsa imena funkcij na svojem mestu. Vedno preverjaj starejše različice!
V vdelani programski opremi ISP je veliko informacij, vključno s tem, kako iPhone komunicira po I2C z različnimi čipi – s senzorji kamer, s PMU kamer, s čipi za upravljanje bliskavic in samodejnega ostrenja. Od tam je bilo, zahvaljujoč simbolom, mogoče pridobiti »imena« različnih sestavnih delov sistema – in del jih se ujema z materiali iz drugih delov vdelane programske opreme, pa tudi od drugih obratnih inženirjev in serviserjev. Na primer, senzor IR-kamere je STMicroelectronics VD56G0 “Savage”. Celoten sistem TrueDepth se v kodi imenuje “Pearl”, njegovi glavni moduli pa so dobili imena likov iz »Romea in Julije«. IR-projektor se imenuje “Romeo”, IR-kamera – “Juliet”, IR-osvetlitev pa “Rosaline”. Gonilnik laserjev, ki živi na matični plošči iPhona in napaja tako laserje v “Romeu” kot laser v osvetlitvi “Rosaline”, se imenuje “Rigel“.
Skrivnostni čip, ki nas zanima? Tudi on ima ime. V kodi ga imenujejo “MamaBear”, na kratko “MB”, in zdi se, da je njegova funkcionalnost zelo preprosta. Živi na vodilu I2C. V sebi hrani OTP-podatke, vključno s serijsko številko in različnimi kalibracijami. Po ukazu vklaplja in izklaplja MOSFET. In meri še… kapacitivnost? Ne temperature, na NTC-termistor sploh ni priključen, temveč prav kapacitivnost. Le kapacitivnost česa?
Tragična smrt Romea

Odgovor na to vprašanje nam spet pomagajo dobiti kitajske sheme. V shemi JCID je vidno, da ima modul “Romeo” tri kontakte za povezavo oddajne enote z optično enoto. En je ozemljitev, druga dva pa gresta neposredno v čip “MamaBear”. Ti kontakti gredo skozi poseben adapter na strani optične enote in pridejo na sam vrh – na difrakcijski optični element.
Difrakcijski razdelilnik žarka je nenadzorovan in se ne odziva na tok. Vendar ima kapacitivnost. In s pomočjo teh treh linij je mogoče meriti to kapacitivnost. Toda zakaj?
Gre za to, kako pomembno vlogo ima ta difrakcijski razdelilnik. Vzorec točk, ki jih uporablja projektor, je določen z razporeditvijo drobnih laserjev-»jamic« na VСSEL-kristalu. Nato se ta vzorec pomnoži z difrakcijskim elementom, ki iz enega snopa žarkov naredi na stotine snopov žarkov.

Kaj se torej zgodi, če se ta difrakcijski element odtrga?
Žarki se ne bodo razdelili. Namesto stotine snopov laserskih žarkov bo en snop – zato pa stokrat močnejši. In to je vseeno laser. Infrardeči laser je nevarnejši od rdečega, ker ga človek ne vidi – in zato instinktivno ne bo umaknil pogleda niti od nevarno močnega vira svetlobe. In obstaja nenadzorovana možnost, da se značilen vzorec točk v tem primeru uporabniku vžge v mrežnico.
Za preprečevanje tega je potreben čip-ubijalec. Po vklopu nenehno spremlja kapacitivnost difrakcijskega elementa – in če se izkaže, da je element izlomljen ali poškodovan, kapacitivnost pade izven dovoljenega območja in čip takoj izklopi MOSFET in prekine napajanje VCSEL. In ker se element nahaja na samem vrhu optične enote, je skoraj nemogoče poškodovati preostalo enoto z udarcem, ne da bi pri tem zlomili element in prekinili stik.
Po nujnem izklopu laserja si čip v OTP vžge zastavico, ki projektor označi kot okvarjenega – kar pomeni, da bo prekinjeno napajanje za vedno prekinjeno. Nobeni ukazi iz ISP ne bodo več imeli moči nad njim. MOSFET bo vedno zaprt in projektor ne bo več nikoli deloval.
Čip “MamaBear”, kot namiguje ime – je zaščitni čip. To je “killswitch” za nujno zaustavitev laserja. Uniči projektor, da ne bi poškodovana laserska naprava svetila uporabniku v oči. In modul “Juliet”, ki ostane brez svojega para “Romeo”, izgubi smisel življenja – in celoten sistem TrueDepth postane neuporaben.
Delovni vsakdan tehno-duhovnikov
Toda ta zaščitna shema ima pomanjkljivost. Projektor točk se nahaja na zgornjem robu naprave in poleg zvočnika. Če tekočina pride v iPhone, je eno najpogostejših mest za to prav tam. Kapacitivni senzorji pa so občutljivi na tekočine, ki prevajajo tok. Zato se pogosto zgodi, da se FaceID pokvari po padcu naprave v vodo – tudi če je vdor vode minimalen in ni drugih poškodb. Preprosto “Romeo” ni pravilno razumel situacije in je po nepotrebnem izvedel “Roskomnadzor”.
Takšne naprave prinesejo na popravilo. Pogosto na neuradno popravilo. In ker iPhone preverja serijske številke nadomestnih delov (pozdrav, Apple), preprosto zamenjati celoten blok kamer z delujočim blokom od donatorja ni mogoče. Telefon bo zavrnil nov blok in FaceID še vedno ne bo deloval. Torej je treba nekako popraviti starega. Toda kako je mogoče »obuditi« projektor, ki se je sam namenoma izločil iz delovanja?
Proizvajalci neuradnih orodij za popravila so za to izumili celo vrsto različnih ritualov. In spretni tehno-duhovniki-serviserji jim sveto sledijo in izvajajo mikrokirurgijo tega kompleksnega in umerjenega optičnega sistema. Potrebna je neverjetna spretnost rok – komponente v notranjosti so velike le nekaj milimetrov, optika pa je izjemno občutljiva. Če se kalibracija zaradi kirurških posegov preveč zamaje, sistem ne bo deloval. Orodja za programsko ponovno kalibracijo ne obstajajo (pozdrav, Apple) – ali najdete način, da se vrnete na prvotne parametre, ali pa ostanete brez FaceID.

Kako to deluje? No, najprej je treba prebrati podatke OTP iz originalnega čipa “MamaBear”.
Podatki so berljivi tudi, če projektor meni, da je nedelujoč. Za branje podatkov Kitajci izdelujejo posebne »servisne« programatorje – ki so dobavljeni s kompleti priključkov-adapterjev in delujejo s celo vrsto različnih komponent različnih modelov iPhona, vključno s projektorji.
In potem je treba storiti dvoje – se spopasti z MOSFET-om, ki prekinja napajanje, in zamenjati originalni zaščitni čip. In tu obstaja veliko različnih metod.

Lahko na primer namesto MOSFET-a vstavite premostitev, kot na fotografiji zgoraj v članku, čip “MamaBear” pa zamenjate tako, da odspajkate originalni FPC-fleksibilni kabel in ga zamenjate s posebnim fleksibilnim kablom s kitajskim čipom-prevaro.
Originalni čip “MamaBear” lahko pri tem ostane v notranjosti in nemočno kriči, da projektor v nobenem primeru ne bi smel delovati. Vendar nima več MOSFET-a, da bi prisilno izklopil projektor, iPhone pa s svoje strani vidi le kitajski čip – ki oddaja s programatorjem naloženo kopijo originalnih podatkov in poroča, da je projektor zagotovo-zagotovo исправен.

Lahko pa čip “MamaBear” izpulite v celoti in na njegovo standardno mesto vstavite kitajsko zamenjavo dva-v-enem – ta tudi zapira kontakte MOSFET-a in telefonu oddaja kopijo podatkov OTP.

No, obstaja še možnost z minimalnim spajkanjem. »Adapter« s čipom-prevaro, ki se vstavi med originalni fleksibilni kabel in matično ploščo iPhona.
Problema z MOSFET-om ne rešuje, vendar so Kitajci tudi k temu našli izvirni pristop in izdelali »visokonapetostne« programatorje.
Ali veste, kako je mogoče razne ATtiny »rešiti iz zidanja« in jih prepisati s pomočjo posebnega visokonapetostnega programatorja? Tukaj je situacija povsem drugačna. Kitajski visokonapetostni programator brutalno in nepovratno »programira« MOSFET v notranjosti projektorja v kratek stik med odvodom in virom.
V zadnji fazi popravila še enkrat priključimo projektor na programator in vanj naložimo na prvem koraku shranjen izpis. In projektor je pripravljen za delo, izdaja se za originalnega in nemodificiranega.
Vse te različne pripomočke izdelujejo in promovirajo različni prodajalci servisne opreme. Vsi mogoči čipi-prevare delujejo le z »lastnimi« programatorji, v programatorjih pa so pogosto funkcije DRM, kot je vezava na račun in omejeno število »popravil«, za dopolnitev katerih je treba plačati.
Ali serviserji vedo, da s svojim popravilom popolnoma uničijo sistem, ki ga je Apple izumil za zaščito oči uporabnika? V resnici ne. Niso obratni inženirji – so šamani. Razumevanja principov delovanja nimajo. Imajo rituale in imajo rezultate, in to jim zadostuje. Prebrisani obratni inženirji iz Kitajske pa neradi delijo svoje skrivnosti z javnostjo. To, kar sem opisal v tem članku, je v celoti znano le Applovim inženirjem in desetim Kitajcem »v temi«. In meni. In zdaj tebi.
Zakaj so pri Applu idioti
Veste, ne morem preveč kriviti Applovih inženirjev za to, da je njihov “killswitch” preveč aktiven in pokvari projektorje, ki bi lahko še povsem dobro delovali. Laserji so nevarna tema in ideja zaščite uporabnika pred »najslabšimi scenariji« je popolnoma zdrava. Čeprav izvedba te zaščite zahteva izboljšave.
Toda Applova politika boja proti neuradnim popravilom je najhujše od vsega zla. Če bi bilo mogoče bloke TrueDepth mirno zamenjati med napravami, ne da bi se ozirali na serijske številke, potem v grozljivih izkrivljenih ritualih popravil praktično ne bi bilo smisla. Zakaj bi se mučili z mikrokirurškim spajkanjem in plesali s programatorji, če je mogoče vzeti z naslednjega »donatorja« z razbitim zaslonom popolnoma delujoč blok TrueDepth, ga vstaviti v telefon stranke, popolnoma obnoviti funkcionalnost in živeti mirno? Serviserjem bi bilo to lažje, lastnikom naprav pa varneje.
Toda zgodovina idiotskega protipopravilnega vedenja pri Applu jasno kaže, da se to ne bo zgodilo. No, razen če v ZDA ali v EU razna gibanja “Right to Repair” ne bodo naredila vezave nadomestnih delov po serijskih številkah nezakonite. In to je zdaj mogoče. V šali o tem, da Evropska unija v nove modele iPhona dodaja več uporabnih funkcij kot Apple, je zelo velik delež resnice. Torej bomo spremljali zakonodajne pobude.
Članek je preveden iz ruščine. Avtor članka: acc0unt. Prizadevali smo si ohraniti originalni slog in formulacije avtorja, kolikor je to mogoče pri prevodu.