Kezdjük az elején: hogyan néz ki a Face ID rendszer, és hogyan működik:


Hardveresen ez a rendszer egy pár kamerából – IR és RGB – és kétféle IR-sugárzóból – egy hagyományos megvilágítóból és egy speciális pontprojektorból – áll.
Lebontjuk az iPhone X burkolatát, eltávolítunk minden feleslegeset, és meglátjuk a frontkamerák blokkját csupaszon. Az IR megvilágító különálló, de az összes többi alkatrész a kezünkben van – ezek stabilan rögzítve vannak ebben a fémkeretben.
Itt látható az IR kamera és az IR pontprojektor. Pontosan ezen az infravörös pároson múlik a TrueDepth és a FaceID rendszerek működése. A mai történet főszereplője pedig maga a pontprojektor.
A FaceID működésének rövid elve

Az IR pontprojektor pontosan azt csinálja, amit a neve is sugall – parancsra több tízezer infravörös pontot „köp” ki a környező világba. Az IR kamera pedig, amelyik ezt a parancsot kiadja, azonnal lefotózza ezeket a pontokat.
A projektor, a kamera optikai jellemzőit és a köztük lévő távolságot ismerve az iPhone processzorában lévő ISP meg tudja becsülni, hogy az egyes pontok milyen messze vannak. A folyamat matematikáját én magam sem értem teljesen, és visszafejteni is nehéz lenne – de a különböző pontmintázatokkal készített képsorozatok lehetővé teszik az egyes pontok pozíciójának meglehetősen pontos kitalálását, és ezáltal egy teljes mélységtérkép készítését. LIDAR és ToF nélkül.
Éppen a mélységtérkép teszi lehetővé, hogy a FaceID-t ne lehessen becsapni nyomtatott fényképekkel. A fénykép sík – az arc viszont domborzattal rendelkezik, és a FaceID számára az arc topográfiai térképe fontosabb, mint a színe.

Mindazonáltal az arc színét is figyeli a rendszer. Az IR kamera hardveresen szinkronizálva van az RGB kamerával, és mindkét kamera egyszerre rögzíti az arcot. Ráadásul az iPhone nem csak IR projektorral, hanem IR megvilágítóval is villoghat – és az egész arcot rögzítheti IR spektrumban.
A mélységtérkép önmagában meglehetősen durva, és az arc textúrájának elemzése IR és RGB felvételeken neurális hálózat segítségével lehetővé teszi mind a mélység pontosítását, mind a részletek, például a mimika jobb megértését – mind nappali fényben, mind sötétben.
Ha ez a rendszer ismerősnek tűnik, az valószínűleg azért van, mert közvetlenül az Xbox 360 Kinectjéből vették át. Csak az a Kinect egy hatalmas monstrum volt, itt pedig egy okostelefon kijelzőkivágásának méretére zsugorították.
Ezt a PrimeSense cég valósította meg, amely a Kinect 1 alapjául szolgáló technológiákat fejlesztette ki – majd az Apple 350 millió dollárért megvásárolta. Egészében – az összes szabadalommal, fejlesztéssel, alkalmazottal és egyéb cuccal együtt.
A projektor belsejének feltárása

Mélyebbre megyünk a visszafejtésben: kivesszük a pontprojektort az iPhone X kamerablokkjából, és alkotóelemeire bontjuk. FPC-szalagkábelből, sugárzó egységből és optikai egységből áll.
A szalagkábel teljesen passzív, ezért nem túl érdekes. A sugárzó egységhez van forrasztva, és a jeleket egy FPC-csatlakozóra vezeti ki, amely az iPhone X alaplapjához csatlakozik. A csatlakozó 0,35 mm-es érintkezőosztással rendelkezik, egyedi (Apple szemétládák), és úgy tűnik, hogy a JAE cég gyártja.
Nézzük meg az optika főbb alkatrészeit:

És nézzük meg, mi található a sugárzó belsejében:

És a MOSFET és a rejtélyes chip szerepe kezdett érdekelni. Miért? Mert nem világos, hogy mit csinálnak ott egyáltalán.
Az első nyilvánvaló lehetőség, hogy a rejtélyes chip egy memória a sorozatszámhoz és a kalibrációs adatokhoz. A chipnek tipikus I2C interfésze van a memóriához, és memória biztosan van benne. A projektoroknak van sorozatszámuk, amely alapján többek között a gyártási dátum is meghatározható – és ha a projektort egészben kicserélik, akkor az iPhone sorozatszám-eltérést fog látni, és a csere nem fog működni. De a legegyszerűbb I2C EEPROM egy apró WLCSP-4 tokozásban található – és akár írásvédetté is tehető, ha nagyon akarják. Ezért a chip nem lehet egyszerű memória. Biztosan csinál még valamit.

A második nyilvánvaló lehetőség, hogy a rejtélyes chip a lézer meghajtója, a MOSFET pedig a kapcsolója. És igen, a MOSFET-et valóban a chip vezérli. Csak valami kritikus fontosságú dolognak, mint például egy lézer meghajtónak, a chip szintén nem tűnik.
Először is, a MOSFET a lézerösszeállítás közös katódjának megszakításában van – a 4 különálló anód pedig közvetlenül a szalagkábelre megy, és tovább az iPhone rétegelt lemezének mélyére. Másodszor pedig a visszafejtéshez szükséges adatok gyűjtése során különböző utasításokba botlottam kínai javítómesterektől.

A kérdés lényegét nem világították meg közvetlenül, de sok ilyen utasításban azt mondták: egy „tönkrement” projektor javításához szét kell szedni, a MOSFET-et el kell távolítani, és egy átkötéssel kell helyettesíteni a drain és a source között. A projektor végül az átkötéssel belül működni fog, és a FaceID funkció helyreáll. Ha pedig a projektor MOSFET helyett átkötéssel normálisan működik, akkor mit csinált ott az a MOSFET?
És ekkor leesett a tantusz: ebben rejlett a javítás lényege. A MOSFET-et a chip vezérli – ezért a chip kívánságára megszakíthatja a lézer tápellátását, és ezáltal tönkreteheti a projektort. A javítás pedig ezt a megszakítást szünteti meg.
Mi a neved titka?
Mivel világossá vált, hogy a rejtélyes chip a MOSFET-tel párban akadályozza a projektor normál működését, felmerül a kérdés – miért csinálja ezt? Miért tesznek egy chipet a projektorba, amely megöli a projektort?
A válaszokért az iPhone processzorában lévő ISP blokk firmware-jét böngésztem – ez kommunikál I2C-n keresztül a kamerák szenzoraival és a projektorral.
Először letöltöttem az iOS 15 firmware képfájlját iPhone X-hez, egy frisset. Az iPhone firmware képei lényegében zip-fájlok. Belül megtaláltam a keresett ISP firmware-t – egy Firmwareisp_bniadc-nike-d22.im4p
fájl formájában. A tömörített im4p-fájlból kibányásztam egy bináris fájlt, Mach-O formátumban, AArch64 kóddal belül. A Mach-O, ellentétben egy tipikus „firmware képfájllal ismeretlen mikrokontrollerhez” – egy dokumentált futtatható fájl formátum, amely hasonlít a PE-hez vagy az ELF-hez. Nincs találgatás a fájl szerkezetével, a processzor architektúrájával vagy a címmel kapcsolatban, amelyre a kódot be kell tölteni. Csak bedobod a fájlt a Gidhrába, és minden magától a helyére kerül. Nagyon jó.

Aztán az ösztönöm átvette az irányítást, és úgy döntöttem, hogy régebbi firmware-eket is feltúrok. És az iOS 13 firmware képfájljában találtam egy adc-nike-d22 fájlt. Még a mérete is majdnem ugyanakkora volt. Csak az új firmware-ben több kód volt – a régiben pedig kevesebb kód volt, viszont voltak szimbólumok. Az összes függvény neve a helyén volt. Mindig ellenőrizd a régi verziókat!
Az ISP firmware-ben sok információ található, beleértve azt is, hogy hogyan kommunikál az iPhone I2C-n keresztül különböző chipekkel – a kamerák szenzoraival, a kamerák PMU-jával, a vaku és az autofókusz vezérlő chipjeivel. Ugyanonnan, köszönhetően a szimbólumoknak, sikerült kinyerni a rendszer különböző összetevőinek „neveit” – és ezek egy része megfelel a firmware más részeiből, valamint más visszafejtőktől és javítóktól származó anyagoknak. Például az IR kamera érzékelője az STMicroelectronics VD56G0 „Savage”. Az egész TrueDepth rendszert „Pearl”-nek hívják a kódban, fő moduljainak pedig a „Rómeó és Júlia” szereplőinek neveit adták. Az IR projektor neve „Romeo”, az IR kamera „Juliet”, az IR megvilágító pedig „Rosaline”. A lézer meghajtó, amely az iPhone alaplapján található, és amely mind a „Romeo” belsejében lévő lézereket, mind a „Rosaline” megvilágító belsejében lévő lézert táplálja, a „Rigel” nevet kapta.
A minket érdeklő rejtélyes chip? Neki is van neve. A kódban „MamaBear”-nek, röviden „MB”-nek nevezik, és úgy tűnik, hogy a funkcionalitása meglehetősen egyszerű. Az I2C buszon él. OTP-adatokat tárol magában, beleértve a sorozatszámot és a különböző kalibrációkat. Parancsra be- és kikapcsolja a MOSFET-et. És még mér is… kapacitást? Nem hőmérsékletet, NTC-termisztorhoz egyáltalán nincs csatlakoztatva, hanem kapacitást. De minek a kapacitását?
Rómeó tragikus halála

Erre a kérdésre ismét a kínai sémák segítenek választ kapni. A JCID sémáján látható, hogy a „Romeo” modulban három érintkező található a sugárzó egység és az optikai egység közötti kommunikációhoz. Az egyik föld, a másik kettő pedig közvetlenül a „MamaBear” chipbe megy. Ezek az érintkezők egy speciális átvezetőn keresztül haladnak az optikai egység oldalán, és a tetejére kerülnek – a diffrakciós optikai elemhez.
A diffrakciós sugárosztó nem vezérelhető, és nem reagál az áramra. De van kapacitása. És ezzel a három vonallal ez a kapacitás mérhető. De miért?
A lényeg abban rejlik, hogy milyen fontos szerepet játszik ez a diffrakciós sugárosztó. A projektor által használt pontmintázatot a VCSEL-kristályon lévő apró lézer „gödrök” elhelyezkedése határozza meg. Aztán ezt a mintázatot megsokszorozza egy diffrakciós elem, amely egyetlen fénysugárból több száz fénysugarat hoz létre.

Tehát mi történik, ha ezt a diffrakciós elemet letépik?
A sugarak nem fognak szétválni. Száz lézersugár helyett egyetlen sugár lesz – viszont százszor erősebb. Ez pedig mégiscsak egy lézer. Az infravörös lézer veszélyesebb, mint a vörös, mert az ember nem látja – és ezért még egy veszélyesen erős fényforrástól sem fogja ösztönösen elfordítani a tekintetét. És van egy nem nulla esély arra, hogy a jellegzetes pontmintázat ebben az esetben beleég a felhasználó retinájába.
Ennek megakadályozására szolgál a gyilkos chip. Bekapcsolás után folyamatosan figyeli a diffrakciós elem kapacitását – és ha az elem letört vagy megsérült, akkor a kapacitás a megengedett határokon kívülre kerül, és a chip azonnal lekapcsolja a MOSFET-et és megszakítja a VCSEL tápellátását. Mivel pedig az elem az optikai egység tetején található, gyakorlatilag lehetetlen úgy megsérteni ütés által a többi egységet, hogy közben ne törjön el maga az elem és ne szakadjon meg az érintkezés.
A lézer vészleállítása után a chip beéget magának egy OTP-flaget, amely a projektort hibásnak jelöli – ami azt jelenti, hogy a megszakított tápellátás örökre megszakított marad. Az ISP-ből érkező parancsoknak többé nem lesz erejük felette. A MOSFET mindig zárva lesz, és a projektor soha többé nem fog működni.
A „MamaBear” chip, ahogy a neve is sugallja – egy védelmi chip. Ez egy „killswitch” a lézer vészleállításához. Megöli a projektort, hogy megakadályozza, hogy egy sérült lézeres eszköz a felhasználó szemébe világítson. A „Juliet” modul pedig, párja, a „Romeo” nélkül, elveszíti az élet értelmét – és az egész TrueDepth rendszer tönkremegy.
A technopapok hétköznapjai

De ennek a védelmi rendszernek van egy hibája. Mivel a pontprojektor a készülék felső szélénél, a hangszóró mellett helyezkedik el. Ha folyadék kerül az iPhone belsejébe, akkor az egyik leggyakoribb hely erre pont ott van. A kapacitív érzékelők pedig érzékenyek az áramot vezető folyadékokra. Ezért gyakran előfordul, hogy a FaceID tönkremegy, miután a készülék vízbe esik – még akkor is, ha minimális a víz behatolása, és nincsenek más sérülések. Egyszerűen a „Romeo” félreértelmezte a helyzetet, és feleslegesen indított „Roszkomnadzor” akciót.
Az ilyen készülékeket javításra viszik. Gyakran nem hivatalos javításra. Mivel pedig az iPhone ellenőrzi az alkatrészek sorozatszámát (üdv, Apple), ezért egyszerűen nem lehet kicserélni az egész kamerablokkot egy működő blokkra egy donor készülékből. A telefon el fogja utasítani az új blokkot, és a FaceID akkor sem fog működni. Tehát valahogyan meg kell javítani a régit. De hogyan lehet „feltámasztani” egy projektort, amely szándékosan tette tönkre magát?
A nem hivatalos javítóeszközök gyártói egy egész sor különböző rituálét találtak ki erre. A gyakorlott kezű technopap-szerelők pedig szentül követik őket, és mikrosebészeti beavatkozást végeznek ezen a bonyolult és kalibrált optikai rendszeren. Elképesztő kézügyességre van szükség – az alkatrészek belül milliméteres nagyságrendűek, az optika pedig rendkívül érzékeny. Ha a kalibrálás a sebészeti beavatkozások miatt túlságosan elcsúszik, akkor a rendszer nem fog működni. Szoftveres újrakalibráló eszközök nem léteznek (üdv, Apple) – vagy megtalálod a módját, hogy visszaállítsd az eredeti paramétereket, vagy FaceID nélkül maradsz.

Hogyan működik ez? Nos, először is le kell olvasni az OTP-adatokat az eredeti „MamaBear” chipből.
Az adatok olvashatók akkor is, ha a projektor hibásnak tekinti magát. Az adatok kiolvasásához a kínaiak speciális „javító” programozókat készítenek – amelyek csatlakozó-átalakítókészletekkel érkeznek, és az iPhone különböző modelljeinek számos különböző alkatrészével működnek, beleértve a projektorokat is.
Aztán két dolgot kell tenni – foglalkozni kell a tápellátást megszakító MOSFET-tel, és ki kell cserélni az eredeti védelmi chipet. És itt számos különböző módszer létezik.

Például a MOSFET helyére átkötést lehet tenni, mint a cikkben szereplő fotón, a „MamaBear” chipet pedig ki lehet cserélni úgy, hogy leforrasztják az eredeti FPC-szalagkábelt, és egy speciális szalagkábellel helyettesítik, amelyen kínai csaló chip található.
Az eredeti „MamaBear” chip eközben bent maradhat, és tehetetlenül ordíthat, hogy a projektor semmiképpen sem működhet. De már nincs MOSFET-je, amellyel kényszerből kikapcsolhatná a projektort, az iPhone pedig a maga részéről csak a kínai chipet látja – amely a programozó által feltöltött eredeti adatok másolatát adja vissza, és jelenti, hogy a projektor pontosan-pontosan hibátlan.

Vagy ki lehet szedni a „MamaBear” chipet teljesen, és a helyére kínai két-az-egyben cserét lehet tenni – ez mind a MOSFET érintkezőit rövidre zárja, mind az OTP-adatok másolatát adja vissza a telefonnak.

És van egy minimális forrasztással járó megoldás is. „Átvezető” panel csaló chippel, amelyet az eredeti szalagkábel és az iPhone alaplapja közé helyeznek.
A MOSFET problémáját ez nem oldja meg, de erre is találtak a kínaiak eredeti megközelítést, „magasfeszültségű” programozókat készítve.
Tudjátok, hogy hogyan lehet mindenféle ATtiny-t „kirakni a téglából” és újraírni egy speciális magasfeszültségű programozóval? Itt teljesen más a helyzet. A kínai magasfeszültségű programozó brutálisan és visszafordíthatatlanul „programozza” a projektor belsejében lévő MOSFET-et rövidzárlatba a drain és a source között.
A javítás utolsó szakaszában ismét csatlakoztatjuk a projektort a programozóhoz, és feltöltjük rá az első szakaszban mentett dumpot. És a projektor készen áll a működésre, eredetinek és módosítatlannak mutatva magát.
Ezeket a különböző eszközöket különböző javítóberendezés-értékesítők készítik és népszerűsítik. Mindenféle csaló chip csak a „saját” programozóival működik, a programozókban pedig gyakran vannak DRM-funkciók, például fiókhoz kötés és korlátozott számú „javítás”, amelyek feltöltéséért fizetni kell.
Tudják-e a javítók, hogy a javításukkal teljesen tönkreteszik az Apple által a felhasználó szeme védelmére kitalált rendszert? Valójában nem. Ők nem visszafejtők – ők sámánok. A működési elveket nem értik. Vannak rituáléik és vannak eredményeik, és ez nekik elég. A szemfüles kínai visszafejtők pedig vonakodva osztják meg titkaikat a nyilvánossággal. Amit ebben a cikkben leírtam, teljes egészében csak az Apple mérnökei és egy tucat kínai „szakértő” tud. És én. És most már te is.
Miért szemétládák az Apple-ék?
Tudjátok, nem hibáztathatom túlságosan az Apple mérnökeit azért, hogy a „killswitch”-ük túlságosan aktív, és tönkreteszi azokat a projektorokat, amelyek még simán működhetnének. A lézerek veszélyes téma, és a felhasználó „legrosszabb esetektől” való megvédésének ötlete teljesen helyes. Bár ennek a védelemnek a megvalósítása fejlesztést igényel.
De az Apple nem hivatalos javítások elleni politikája a legrosszabb az összes rossz közül. Ha a TrueDepth blokkokat nyugodtan lehetne cserélni készülékről készülékre, a sorozatszámok figyelembevétele nélkül, akkor a szörnyű, eltorzított javítási rituáléknak gyakorlatilag nem lenne értelmük. Miért kellene eltorzítani a mikrosebészeti forrasztást és programozókkal táncolni, ha le lehetne venni egy következő „donor” készülékről, amelynek betört a képernyője, egy teljesen működőképes TrueDepth blokkot, be lehetne tenni az ügyfél telefonjába, teljesen helyre lehetne állítani a funkcionalitást, és nyugodtan lehetne élni? A javítóknak ez egyszerűbb lenne, a készüléktulajdonosoknak pedig biztonságosabb.
De az Apple eltorzított javításellenes viselkedésének története egyértelműen megmutatja, hogy ez nem fog megtörténni. Hacsak az USA-ban vagy az EU-ban a mindenféle „Right to Repair” mozgalmak nem teszik illegálissá az alkatrészek sorozatszámok szerinti kötését. Ez pedig most már lehetséges. A viccben, miszerint az Európai Unió több hasznos funkciót ad hozzá az új iPhone modellekhez, mint az Apple, nagyon nagy a valóságtartalom. Szóval figyelemmel fogjuk kísérni a jogalkotási kezdeményezéseket.
A cikk orosz nyelvről lett lefordítva. A cikk szerzője: acc0unt. Igyekeztünk megőrizni a szerző eredeti stílusát és megfogalmazását, amennyire ez a fordítás során lehetséges volt.