Sāksim ar pamatiem: kā Face ID sistēma izskatās un kā tā darbojas:


Aparatūras ziņā šī sistēma sastāv no pāra kamerām – IR un RGB, un divu veidu IR izstarotājiem – parastā apgaismojuma un specializēta punktu projektora.
Noņemam iPhone X korpusu, aizvācam visu lieko un redzam frontālo kameru bloku kailā veidā. IR apgaismojums pastāv atsevišķi, bet visi pārējie komponenti mums ir rokās – tie ir droši piestiprināti šajā metāla rāmī.
Šeit mēs redzam IR kameru un IR punktu projektoru. Tieši uz šī infrasarkanā pāra balstās TrueDepth un FaceID sistēmu darbība. Un galvenais šodienas stāsta varonis ir tieši punktu projektors.
Īss FaceID darbības princips

IR punktu projektors dara tieši to, ko tā nosaukums saka – pēc komandas izšauj apkārtējā pasaulē desmitiem tūkstošu infrasarkano punktu. Un IR kamera, kas arī dod šo komandu, uzreiz nofotografē šos punktus.
Zinot projektora, kameras optiskās īpašības un attālumu starp tiem, ISP iPhone procesorā var aptuveni noteikt, cik tālu katrs punkts atrodas. Es pats līdz galam nesaprotu šī procesa matemātiku, un to būs grūti atšifrēt – bet sērijas attēlu uzņemšana ar dažādiem punktu rakstiem ļauj diezgan precīzi noteikt katra atsevišķa punkta pozīciju un tādējādi izveidot vienotu dziļuma karti. Bez LIDAR un bez ToF.
Tieši dziļuma karte ļauj FaceID nemaldināties ar uz printera izdrukātām fotogrāfijām. Fotogrāfija ir plakana – bet sejai ir reljefs, un FaceID topogrāfiskā sejas karte ir svarīgāka par tās krāsu.

Tomēr sistēma skatās arī uz sejas krāsu. IR kamera ir aparatūras ziņā sinhronizēta ar RGB kameru, un abas kameras vienlaikus uzņem seju. Turklāt iPhone var mirgot ne tikai ar IR projektoru, bet arī ar IR apgaismojumu – un uzņemt visu seju IR spektrā.
Dziļuma karte pati par sevi ir diezgan aptuvena, un sejas tekstūras analīze IR un RGB attēlos ar neironu tīklu ļauj gan precizēt dziļumu, gan labāk izprast detaļas, piemēram, mīmiku – gan dienas gaismā, gan tumsā.
Ja šī sistēma jums šķiet pazīstama, tad tas, iespējams, ir tāpēc, ka tā ir tieši izvilkta no Xbox 360 Kinect. Tikai tas Kinect bija milzīgs monstrs, bet šeit tas ir samazināts līdz viedtālruņa ekrāna izgriezuma izmēram.
To izdarīja uzņēmums PrimeSense, kas izstrādāja tehnoloģijas Kinect 1 pamatā – un pēc tam Apple to nopirka par 350 miljoniem dolāru. Pilnībā – ar visiem patentiem, izstrādēm, darbiniekiem un citām iekšām.
Projektora iekšu analīze

Iedziļināmies reversā: izņemam punktu projektoru no iPhone X kameru bloka un izjaucam to sastāvdaļās. Tas sastāv no FPC lentes, izstarojošā mezgla un optiskā mezgla.
Lente ir pilnīgi pasīva, un tāpēc maz interesanta. Tā ir pielodēta pie izstarojošā mezgla un izvada signālus uz FPC savienotāju, kas savienojas ar iPhone X mātesplati. Savienotājs ar kontaktu soli 0.35mm, pielāgots (Apple ir maita), un, šķiet, ka to ražojis uzņēmums JAE.
Apskatīsim galvenos optikas komponentus:

Un apskatīsim, kas atrodas izstarotāja iekšpusē:

Un MOSFET un noslēpumainās mikroshēmas loma mani ieinteresēja. Kāpēc? Jo nav skaidrs, ko viņi tur vispār dara.
Pirmais acīmredzamais variants – noslēpumainā mikroshēma ir atmiņa sērijas numuram un kalibrēšanas datiem. Mikroshēmai ir I2C interfeiss, kas ir tipisks atmiņai, un atmiņa iekšā noteikti ir. Projektoriem ir sērijas numuri, pēc kuriem var noteikt arī ražošanas datumu – un, ja projektoru nomaina pilnībā, tad iPhone redzēs sērijas numura neatbilstību un atteiksies strādāt ar nomainīto. Bet visparastākā I2C EEPROM ir atrodama sīkā WLCSP-4 korpusā – un to pat var bloķēt no pārrakstīšanas, ja ļoti gribas. Tāpēc mikroshēma nevar būt vienkārša atmiņa. Tā noteikti dara kaut ko vēl.

Otrais acīmredzamais variants – noslēpumainā mikroshēma ir lāzeru draiveris, bet MOSFET – tā atslēga. Un jā, MOSFET tiešām tiek kontrolēts ar mikroshēmu. Bet mikroshēma arī nevar būt kaut kas kritiski svarīgs, piemēram, lāzera draiveris.
Pirmkārt, MOSFET atrodas lāzera mezgla kopējās katoda pārrāvumā – un 4 atsevišķas anodas iziet tieši uz lenti un tālāk iPhone slāņainās plates iekšienē. Un, otrkārt, es, vācot datus reversam, uzdūros dažādām Ķīnas remonta meistaru instrukcijām.

Viņi tieši neprecizēja jautājuma būtību, bet daudzās no šīm instrukcijām bija teikts: lai salabotu “salauztu” projektoru, tas ir jāizjauc, MOSFET jānoņem un jānomaina ar pārmiju starp izteku un avotu. Projektors galu galā ar pārmiju iekšpusē sāks darboties, un FaceID funkcionalitāte tiks atjaunota. Bet, tā kā projektors ar pārmiju MOSFET vietā normāli darbojas, ko tad šis MOSFET tur darīja?
Un mani apskaidroja: tieši tajā bija remonta būtība. MOSFET tiek kontrolēts ar mikroshēmu – tāpēc pēc mikroshēmas vēlēšanās var pārtraukt lāzera barošanas ķēdi un tādējādi salauzt projektoru. Un šis remonts novērš šo pārrāvumu.
Kas tevī, vārdā, ir
Tā kā kļuva skaidrs, ka noslēpumainā mikroshēma pārī ar MOSFET traucē projektora normālu darbību, rodas jautājums – kāpēc tas to dara? Kāpēc projektorā ievieto mikroshēmu, kas nogalina projektoru?
Meklējot atbildes, es ielūkojos iPhone procesorā esošā ISP bloka programmaparatūrā – tieši tā sazinās pa I2C ar kameru sensoriem un projektoru.
Sākumā es lejupielādēju iOS 15 programmaparatūras attēlu iPhone X tālrunim, svaigu. iPhone programmaparatūras attēli būtībā ir zip faili. Iekšpusē es atradu meklēto ISP programmaparatūru – faila Firmwareisp_bniadc-nike-d22.im4p
veidā. No saspiestā im4p faila tika izvilkts binārais fails Mach-O formātā ar AArch64 kodu iekšpusē. Mach-O, atšķirībā no tipiska “programmaparatūras attēla nezināmam mikrokontrolierim”, ir dokumentēts izpildfaila formāts, kas līdzinās PE vai ELF. Nav nekādu minējumu par faila struktūru, procesora arhitektūru vai adresi, kurā jāielādē kods. Vienkārši iemet failu Ghidra, un viss pats sakārtojas pa plauktiņiem. Patīkami.

Pēc tam instinkts ņēma virsroku, un es nolēmu izķidāt vecākas programmaparatūras. Un iOS 13 programmaparatūras attēlā es atradu failu adc-nike-d22. Pat izmērs bija gandrīz tāds pats. Tikai jaunajā programmaparatūrā bija vairāk koda – bet vecajā kodā bija mazāk, bet bija simboli. Visi funkciju nosaukumi ir savās vietās. Vienmēr pārbaudi vecās versijas!
ISP programmaparatūrā ir daudz informācijas, tostarp par to, kā iPhone sazinās pa I2C ar dažādām mikroshēmām – ar kameru sensoriem, ar kameru PMU, ar zibspuldžu un autofokusa vadības mikroshēmām. No turienes, pateicoties simboliem, izdevās iegūt arī dažādu sistēmas sastāvdaļu “nosaukumus” – un daļa no tiem sakrīt ar materiāliem no citām programmaparatūras daļām, kā arī no citiem reversētājiem un remontniekiem. Piemēram, IR kameras sensors ir STMicroelectronics VD56G0 “Savage”. Visa TrueDepth sistēma kodā tiek saukta par “Pearl”, un tās galvenajiem moduļiem ir doti varoņu vārdi no “Romeo un Džuljeta”. IR projektors tiek saukts par “Romeo”, IR kamera – par “Juliet”, bet IR apgaismojums tiek saukts par “Rosaline”. Lāzeru draiveris, kas atrodas uz iPhone mātesplates un baro gan lāzerus “Romeo” iekšpusē, gan lāzeri “Rosaline” apgaismojumā, tiek saukts par “Rigel“.
Mūs interesējošā noslēpumainā mikroshēma? Arī tai ir vārds. Kods to sauc par “MamaBear”, īsi “MB”, un, šķiet, ka tās funkcionalitāte ir ļoti vienkārša. Tā darbojas I2C kopnē. Tā glabā OTP datus, tostarp sērijas numuru un dažādus kalibrējumus. Pēc komandas tā ieslēdz un izslēdz MOSFET. Un vēl tā mēra… kapacitāti? Ne temperatūru, pie NTC termistora tā vispār nav pieslēgta, bet tieši kapacitāti. Tikai kā kapacitāti?
Romeo traģiskā bojāeja

Atbildi uz šo jautājumu mums atkal palīdz iegūt ķīniešu shēmas. JCID shēmā ir redzams, ka modulī “Romeo” ir trīs kontakti izstarojošā mezgla savienošanai ar optisko mezglu. Viens – zemējums, bet vēl divi iet tieši uz mikroshēmu “MamaBear”. Šie kontakti iet caur speciālu pārejas elementu optiskā mezgla sānos un nonāk pašā tā virspusē – pie difrakcijas optiskā elementa.
Difrakcijas staru sadalītājs ir nekontrolējams un nereaģē uz strāvu. Bet tam ir kapacitāte. Un ar šīm trim līnijām šo kapacitāti var izmērīt. Bet kāpēc?
Lieta ir tā, cik svarīga loma ir šim difrakcijas sadalītājam. Punktu rakstu, ko izmanto projektors, nosaka sīko lāzeru-“bedrīšu” izvietojums uz VCSEL kristāla. Un pēc tam šo rakstu pavairo difrakcijas elements, kas no viena staru kūļa izveido simtiem staru kūļu.

Tātad, kas notiks, ja šo difrakcijas elementu noraut?
Stari netiks sadalīti. Simtiem lāzera staru kūļu vietā būs viens kūlis – bet simts reizes jaudīgāks. Bet tas tomēr ir lāzers. Infrasarkanais lāzers ir bīstamāks par sarkano, jo cilvēks to neredz – un tāpēc instinktīvi nenovērsīs skatienu pat no bīstami jaudīga gaismas avota. Un ir nenulles iespēja, ka raksturīgais punktu raksts tādā gadījumā lietotājam tiks iededzināts tīklenē.
Lai to novērstu, ir nepieciešama slepkavas mikroshēma. Pēc ieslēgšanas tā pastāvīgi seko līdzi difrakcijas elementa kapacitātei – un, ja elements izrādās izlauzts vai bojāts, tad kapacitāte iziet ārpus atļautajām robežām, un mikroshēma uzreiz atslēdz MOSFET un pārtrauc VCSEL barošanu. Un, tā kā elements atrodas pašā optiskā mezgla virspusē, tad sabojāt ar triecienu pārējo mezglu, nesalaužot šo elementu un nepārtraucot kontaktu, ir gandrīz neiespējami.
Pēc avārijas lāzera atslēgšanas mikroshēma ieraksta sev OTP karodziņu, kas norāda projektoru kā defektīvu – un tas nozīmē, ka pārtrauktā barošana uz visiem laikiem paliks pārtraukta. Nekādas komandas no ISP vairs nebūs spēkā pār to. MOSFET vienmēr būs slēgts, un projektors vairs nekad nedarbosies.
Mikroshēma “MamaBear”, kā norāda nosaukums, ir aizsardzības mikroshēma. Tas ir “killswitch” lāzera avārijas apturēšanai. Tā nogalina projektoru, lai neļautu bojātai lāzerierīcei spīdēt lietotājam acīs. Un modulis “Juliet”, paliekot bez sev pārī dotā “Romeo”, zaudē dzīves jēgu – un visa TrueDepth sistēma kļūst nederīga.
Tehnopriesteru darba dienas
Bet šai aizsardzības shēmai ir trūkums. Lieta tāda, ka punktu projektors atrodas ierīces augšējā malā un blakus skaļrunim. Ja iPhone iekšpusē iekļūst šķidrums, tad viena no biežākajām vietām tam ir tieši tur. Bet kapacitatīvie sensori ir jutīgi pret strāvu vadošiem šķidrumiem. Tāpēc bieži gadās, ka FaceID sabojājas pēc ierīces iekrišanas ūdenī – pat ja ūdens iekļūšana ir minimāla un nav citu bojājumu. Vienkārši “Romeo” nepareizi saprata situāciju un velti veica Roskomnadzor.
Šādas ierīces nes uz remontu. Bieži vien uz neoficiālu remontu. Un, tā kā iPhone salīdzina rezerves daļu sērijas numurus (sveiciens, Apple), tad vienkārši nomainīt visu kameru bloku pret darba bloku no donora nevar. Tālrunis atgrūdīs jauno bloku, un FaceID tik un tā nedarbosies. Tātad, kaut kādā veidā ir jāsalabo vecais. Bet kā var “atdzīvināt” projektoru, kas pats sevi apzināti izslēdzis no ierindas?
Neoficiālu remonta instrumentu ražotāji šim nolūkam ir izdomājuši veselu virkni dažādu rituālu. Un ar taisnām rokām apveltīti tehnopriesteri-remontnieki tiem svēti seko un veic šīs sarežģītās un kalibrētās optiskās sistēmas mikroķirurģiju. Roku taisnumam jābūt neiedomājamam – komponenti iekšpusē ir tikai dažu milimetru lieli, un optika ir ārkārtīgi jutīga. Ja kalibrēšana ķirurģisko iejaukšanās dēļ pārāk stipri aizpeldēs, tad sistēma nedarbosies. Programmatūras pārkalibrēšanas instrumenti nepastāv (sveiciens, Apple) – vai nu tu atradīsi veidu, kā iekļūt sākotnējos parametros, vai nu paliksi bez FaceID.

Kā tas darbojas? Nu, vispirms ir jānolasa OTP dati no oriģinālās mikroshēmas “MamaBear”.
Dati ir nolasāmi pat tad, ja projektors uzskata sevi par bojātu. Datu nolasīšanai ķīnieši izgatavo speciālus “remonta” programmētājus – kas tiek piegādāti ar savienotāju-pāreju komplektiem un darbojas ar veselu virkni dažādu komponentu no dažādiem iPhone modeļiem, tostarp arī projektoriem.
Un pēc tam ir jādara divas lietas – jātiek galā ar barošanu pārtraucošo MOSFET un jānomaina oriģinālā aizsardzības mikroshēma. Un šeit ir daudz dažādu metožu.

Var, piemēram, ielikt MOSFET vietā pārmiju, kā iepriekš rakstā redzamajā fotoattēlā, bet mikroshēmu “MamaBear” nomainīt, atlodējot oriģinālo FPC lenti un nomainot to pret speciālu lenti ar ķīniešu apmāna mikroshēmu.
Oriģinālā mikroshēma “MamaBear” šajā gadījumā var palikt iekšā un bezspēcīgi bļaut par to, ka projektors nekādā gadījumā nedrīkst darboties. Bet tai vairs nav MOSFET, lai piespiedu kārtā izslēgtu projektoru, bet iPhone no savas puses redz tikai ķīniešu mikroshēmu – kas atdod programmētāja ielietu oriģinālo datu kopiju un ziņo par to, ka projektors ir precīzi-precīzi darba kārtībā.

Bet var arī izraut mikroshēmu “MamaBear” pilnībā un tās vietā ielikt ķīniešu divi-vienā aizstājēju – tā gan MOSFET kontaktus noslēdz, gan OTP datu kopiju nodod tālrunim.

Nu, un ir variants ar minimālu lodēšanu. “Pāreja” ar apmāna mikroshēmu, kas tiek ievietota starp oriģinālo lenti un iPhone mātesplati.
MOSFET problēmu tas neatrisina, bet arī tai ķīnieši atrada oriģinālu pieeju, izveidojot “augstsprieguma” programmētājus.
Vai zināt, kā visādus ATtiny var “atdzīvināt” un pārrakstīt ar speciāla augstsprieguma programmētāja palīdzību? Šeit situācija ir pilnīgi cita. Ķīniešu augstsprieguma programmētājs brutāli un neatgriezeniski “programmē” MOSFET projektora iekšpusē uz īssavienojumu starp izteku un avotu.
Remonta pēdējā posmā mēs vēlreiz savienojam projektoru ar programmētāju un ielādējam tajā pirmajā posmā saglabāto datu izgāztuvi. Un projektors ir gatavs darbam, izliekoties par oriģinālu un nemodificētu.
Visus šos dažādos piederumus izgatavo un reklamē dažādi remonta iekārtu pārdevēji. Visādas apmāna mikroshēmas darbojas tikai ar “radniecīgajiem” programmētājiem, bet programmētājos bieži ir DRM funkcijas, piemēram, piesaiste kontam un ierobežots “remontu” skaits, par kuru papildināšanu ir jāmaksā.
Vai remontētāji zina, ka ar savu remontu viņi pilnībā iznīcina sistēmu, ko Apple izdomāja lietotāja acu aizsardzībai? Patiesībā nē. Viņi nav reversētāji – viņi ir šamaņi. Viņiem nav izpratnes par darbības principiem. Viņiem ir rituāli un ir rezultāti, un ar to viņiem pietiek. Bet viltīgie reversētāji no Ķīnas negribīgi dalās ar saviem noslēpumiem ar publiku. Tas, ko es aprakstīju šajā rakstā, pilnā apjomā ir zināms tikai Apple inženieriem un desmit Ķīnas “lietpratējiem”. Un man. Un tagad arī tev.
Kāpēc Apple ir kropli
Ziniet, es nevaru pārāk stipri vainot Apple inženierus par to, ka viņu “killswitch” ir pārāk aktīvs un salauž projektorus, kas vēl varētu strādāt. Lāzeri ir bīstama tēma, un ideja aizsargāt lietotāju no “sliktākajiem scenārijiem” ir pilnīgi veselīga. Lai gan šīs aizsardzības ieviešanai ir nepieciešami uzlabojumi.
Bet Apple politika cīņā pret neoficiāliem remontiem ir ļaunākais no visiem ļaunumiem. Ja TrueDepth blokus varētu mierīgi mainīt no ierīces uz ierīci, neatskatoties uz sērijas numuriem, tad šausmīgi izvirtušiem remonta rituāliem praktiski nebūtu jēgas. Kāpēc izvirtot ar mikroķirurģisku lodēšanu un dejot ar programmētājiem, ja var noņemt no kārtējā “donora” ar saplīsušu ekrānu pilnīgi darba TrueDepth bloku, ielikt to klienta tālrunī, pilnībā atjaunot funkcionalitāti un dzīvot mierīgi? Remontētājiem tas būtu vienkāršāk, bet ierīču īpašniekiem – drošāk.
Bet Apple kroplīgā pretremonta uzvedības vēsture skaidri parāda, ka tam nebūs lemts notikt. Nu, ja vien ASV vai ES visādas “Right to Repair” kustības nepadarīs rezerves daļu piesaisti pēc sērijas numuriem par nelikumīgu. Bet tas šobrīd ir iespējams. Jokā par to, ka Eiropas Savienība jaunajiem iPhone modeļiem pievieno vairāk noderīgu funkciju nekā Apple, ir ļoti liela patiesības daļa. Tāpēc sekosim līdzi likumdošanas iniciatīvām.
Raksts ir tulkots no krievu valodas. Raksta autors: acc0unt. Mēs esam centušies saglabāt autora oriģinālo stilu un formulējumus, cik tas ir iespējams tulkojumā.