Aloitetaan alusta: miltä Face ID -järjestelmä näyttää ja miten se toimii:


Laitteistoltaan tämä järjestelmä koostuu parista kameraa – IR ja RGB – sekä kahdesta infrapunasäteilijätyypistä: tavallisesta taustavalosta ja erikoistuneesta pisteprojektorista.
Kun kuorimme iPhone X:stä ”nahan” ja poistamme kaiken ylimääräisen, näemme etukamerayksikön paljaana. IR-taustavalo on erillinen, mutta kaikki muut komponentit ovat käsissämme – ne on kiinnitetty tukevasti tähän metallikehykseen.
Tässä näemme IR-kameran ja IR-pisteprojektorin. Juuri tämä infrapunapari pitää TrueDepth- ja Face ID -järjestelmien toiminnassa. Ja tämän päivän tarinan päähenkilö on juuri pisteprojektori.
Face ID:n lyhyt toimintaperiaate

IR-pisteprojektori tekee juuri sitä, mitä sen nimi kertoo – se sylkee käskystä ympäröivään maailmaan kymmeniä tuhansia infrapunapisteitä. Ja IR-kamera, joka antaa tämän käskyn, valokuvaa heti nämä pisteet.
Kun tiedetään projektorin ja kameran optiset ominaisuudet sekä niiden välinen etäisyys, iPhone-prosessorin ISP voi arvioida, kuinka kaukana kukin piste on. Prosessin matematiikkaa en itsekään täysin ymmärrä, ja sen purkaminen olisi vaikeaa – mutta kuvasarjan ottaminen erilaisilla pistekuvioilla mahdollistaa kunkin yksittäisen pisteen sijainnin melko tarkan arvioinnin ja siten yhtenäisen syvyyskartan luomisen. Ilman LIDARia ja ilman ToF:ää.
Juuri syvyyskartan avulla Face ID ei anna tulostettujen valokuvien huijata itseään. Valokuva on litteä – mutta kasvoilla on muotoa, ja Face ID:lle kasvojen topografinen kartta on tärkeämpi kuin niiden väri.

Kasvojen väriä järjestelmäkin tosin katsoo. IR-kamera on laitteistotasolla synkronoitu RGB-kameran kanssa, ja molemmat kamerat kuvaavat kasvot samanaikaisesti. Lisäksi iPhone voi vilkuttaa paitsi IR-projektorilla myös IR-taustavalolla – ja kuvata koko kasvot IR-spektrissä.
Syvyyskartta on sinänsä melko karkea, ja kasvojen tekstuurin analysointi IR- ja RGB-kuvissa neuroverkon avulla mahdollistaa syvyyden tarkentamisen ja paremman ymmärryksen yksityiskohdista, kuten ilmeistä – sekä päivänvalossa että pimeässä.
Jos tämä järjestelmä tuntuu tutulta, se johtuu luultavasti siitä, että se on suoraan kopioitu Xbox 360:n Kinectistä. Vain se Kinect oli valtava mörskä, ja tässä se on kutistettu älypuhelimen näytön loven kokoon.
Tämän teki yritys PrimeSense, joka kehitti Kinect 1:n perustana olevat teknologiat – ja jonka Apple sitten osti 350 miljoonalla dollarilla. Kokonaan – kaikkine patentteineen, kehitystöineen, työntekijöineen ja muine sisuskaluineen.
Projektorin sisuskalujen purkaminen

Menemme syvemmälle purkuun: otamme pisteprojektorin irti iPhone X:n kamerayksiköstä ja puramme sen osiin. Se koostuu FPC-kaapelista, säteilevästä yksiköstä ja optisesta yksiköstä.
Kaapeli on täysin passiivinen ja siksi vähän mielenkiintoinen. Se juotetaan säteilevään yksikköön ja tuo signaalit FPC-liittimeen, joka liitetään iPhone X:n emolevyyn. Liittimen kosketusväli on 0,35 mm, se on kustomoitu (Apple on ääliöitä), ja näyttää siltä, että sen on valmistanut JAE.
Katsotaan optiikan pääkomponentteja:

Ja katsotaan, mitä säteilijän sisällä on:

Ja MOSFETin ja salaperäisen sirun rooli alkoi kiinnostaa minua. Miksi? Koska on epäselvää, mitä ne siellä oikeastaan tekevät.
Ensimmäinen ilmeinen vaihtoehto on, että salaperäinen siru on muistia sarjanumeroa ja kalibrointitietoja varten. Sirulla on tyypillinen muistin I2C-liitäntä, ja muistia sen sisällä varmasti on. Projektoreilla on sarjanumerot, joiden perusteella voidaan muun muassa määrittää valmistuspäivämäärä – ja jos projektori vaihdetaan kokonaan, iPhone havaitsee sarjanumeron epäsuhtaisuuden eikä suostu toimimaan vaihdon jälkeen. Mutta tavallisin I2C EEPROM on pikkuruisessa WLCSP-4-kotelossa – ja sen voi jopa suojata uudelleenkirjoitukselta, jos haluaa. Siksi siru ei voi olla pelkkää muistia. Sen on tehtävä jotain muutakin.

Toinen ilmeinen vaihtoehto on, että salaperäinen siru on laserohjain ja MOSFET sen kytkin. Ja kyllä, MOSFETia ohjataan todellakin sirulla. Vain että siru ei voi olla mitään kriittisen tärkeää, kuten laserohjain.
Ensinnäkin MOSFET on laserikokoonpanon yhteisen katodin katkaisussa – ja 4 erillistä anodia menevät suoraan kaapeliin ja edelleen iPhone-kerroslevyn syvyyksiin. Ja toiseksi törmäsin tiedonkeruun aikana purkua varten erilaisiin kiinalaisten korjausmestareiden ohjeisiin.

Ne eivät suoraan selventäneet kysymyksen ydintä, mutta monissa näistä ohjeista sanottiin: ”rikkinäisen” projektorin korjaamiseksi se on purettava, MOSFET poistettava ja vaihdettava hyppyjohdolla lähteen ja viemärin välille. Projektori alkaa lopulta toimia sisällä olevalla hyppyjohdolla, ja Face ID:n toiminnallisuus palautuu. Ja koska projektori toimii normaalisti MOSFETin sijasta hyppyjohdolla, mitä MOSFET siellä sitten teki?
Ja minulle valkeni: siinä se korjauksen ydin olikin. MOSFETia ohjataan sirulla – joten siru voi halutessaan katkaista laserin virtapiirin ja siten rikkoa projektorin. Ja korjaus poistaa tämän katkoksen.
Mikä nimesi on?
Kun selvisi, että salaperäinen siru yhdessä MOSFETin kanssa estää projektorin normaalia toimintaa, herää kysymys – miksi se tekee niin? Miksi projektoriin laitetaan siru, joka tappaa projektorin?
Vastauksia etsiessäni sukelsin iPhone-prosessorin ISP-lohkon laiteohjelmistoon – juuri se kommunikoi I2C:n kautta kameroiden antureiden ja projektorin kanssa.
Lataasin ensin tuoreen iOS 15 -laiteohjelmistoimagen iPhone X:lle. iPhone-laiteohjelmistoimaget ovat pohjimmiltaan zip-tiedostoja. Niiden sisältä löysin etsimäni ISP-laiteohjelmiston – tiedostona Firmwareisp_bniadc-nike-d22.im4p
. Pakatusta im4p-tiedostosta purettiin binääri, Mach-O-muodossa AArch64-koodilla sisällä. Mach-O, toisin kuin tyypillinen ”laiteohjelmistoimage tuntemattomalle mikro-ohjaimelle” – on dokumentoitu suoritustiedostomuoto, joka muistuttaa PE:tä tai ELFiä. Ei tarvitse arvailla tiedoston rakennetta, prosessoriarkkitehtuuria tai osoitetta, johon koodi on ladattava. Heität vain tiedoston Ghidraan, ja kaikki asettuu paikoilleen itsestään. Mukavaa.

Sitten vaisto otti vallan, ja päätin penkoa vanhempia laiteohjelmistoja. Ja iOS 13 -laiteohjelmistoimagesta löysin tiedoston adc-nike-d22. Koko oli jopa melkein sama. Vain että uudessa laiteohjelmistossa oli enemmän koodia – ja vanhassa koodia oli vähemmän, mutta siellä oli symboleja. Kaikki funktionimet olivat tallella. Tarkista aina vanhat versiot!
ISP-laiteohjelmistossa on paljon tietoa, mukaan lukien se, miten iPhone kommunikoi I2C:n kautta eri sirujen kanssa – kameroiden antureiden, kameroiden PMU:n, salamoiden ja automaattitarkennuksen ohjaussirujen kanssa. Sieltä, symbolien ansiosta, onnistuttiin poimimaan ”nimet” järjestelmän eri osille – ja osa niistä vastaa materiaaleja muista laiteohjelmiston osista sekä muilta purkajilta ja korjaajilta. Esimerkiksi IR-kamera-anturi on STMicroelectronics VD56G0 ”Savage”. Koko TrueDepth-järjestelmää kutsutaan koodissa ”Pearl”-nimellä, ja sen päämoduuleille on annettu nimet ”Romeo ja Julia” -näytelmän hahmoista. IR-projektorin nimi on ”Romeo”, IR-kameran ”Julia” ja IR-taustavalon ”Rosaline”. Laserohjaimen, joka sijaitsee iPhone-emolevyssä ja syöttää virtaa sekä ”Romeo”-sisällä oleville lasereille että ”Rosaline”-taustavalon sisällä olevalle laserille, nimi on ”Rigel”.
Entä meitä kiinnostava salaperäinen siru? Silläkin on nimi. Koodissa sitä kutsutaan ”MamaBeariksi”, lyhyesti ”MB”, ja näyttää siltä, että sen toiminnallisuus on hyvin yksinkertaista. Se on I2C-väylässä. Se tallentaa OTP-tietoja, mukaan lukien sarjanumeron ja erilaisia kalibrointeja. Se kytkee MOSFETin päälle ja pois päältä käskystä. Ja se mittaa myös… kapasitanssia? Ei lämpötilaa, NTC-termistoriin se ei ole edes kytketty, vaan nimenomaan kapasitanssia. Mutta minkä kapasitanssia?
Romeon traaginen kuolema

Vastauksen tähän kysymykseen saamme jälleen kiinalaisten kaavioiden avulla. JCID:n kaaviosta näkyy, että ”Romeo”-moduulissa on kolme kosketinta säteilevän yksikön ja optisen yksikön väliseen yhteyteen. Yksi on maa, ja kaksi muuta menee suoraan ”MamaBear”-siruun. Nämä koskettimet kulkevat erityisen sovittimen kautta optisen yksikön sivulla ja päätyvät sen huipulle – diffraktiiviseen optiseen elementtiin.
Diffraktiohila on ohjaamaton, eikä se reagoi virtaan. Mutta sillä on kapasitanssi. Ja noiden kolmen linjan avulla tätä kapasitanssia voidaan mitata. Mutta miksi?
Kyse on siitä, kuinka tärkeä rooli tällä diffraktiohilalla on. Projektorin käyttämä pistekuvio määräytyy pienten laser-”kuoppien” sijainnista VСSEL-kiteessä. Ja sitten tätä kuviota monistetaan diffraktioelementillä, joka tekee yhdestä valonsäteestä satoja valonsäteitä.

Mitä siis tapahtuu, jos tämä diffraktioelementti irrotetaan?
Säteet eivät hajaannu. Sadan lasersäteen nipun sijasta tulee yksi nippu – mutta sata kertaa voimakkaampi. Ja kyseessä on kuitenkin laser. Infrapunalaser on punalaseria vaarallisempi, koska ihminen ei näe sitä – eikä siksi automaattisesti käännä katsettaan pois edes vaarallisen voimakkaasta valonlähteestä. Ja on olemassa nollasta poikkeava mahdollisuus, että tyypillinen pistekuvio polttaa käyttäjän verkkokalvoon jäljen.
Tämän estämiseksi tarvitaan tappajasiru. Käynnistyksen jälkeen se tarkkailee jatkuvasti diffraktioelementin kapasitanssia – ja jos elementti havaitaan irrotetuksi tai vaurioituneeksi, kapasitanssi menee sallittujen rajojen ulkopuolelle, ja siru katkaisee heti MOSFETin ja katkaisee VCSEL:n virransyötön. Ja koska elementti sijaitsee optisen yksikön huipulla, on melkein mahdotonta vahingoittaa iskulla muuta yksikköä rikkomatta samalla elementtiä ja häiritsemättä kosketusta.
Laserin hätäkatkaisun jälkeen siru polttaa itselleen OTP-lipun, joka merkitsee projektorin vialliseksi – mikä tarkoittaa, että katkaistu virransyöttö pysyy ikuisesti katkaistuna. Mitkään ISP:n komennot eivät enää vaikuta siihen. MOSFET on aina suljettu, eikä projektori enää koskaan toimi.
”MamaBear”-siru, kuten nimi viittaa – on suojasiru. Se on laserin hätäpysäytyksen ”tappokytkin”. Se tappaa projektorin estääkseen vaurioituneen laserlaitteen valaisemasta käyttäjän silmiä. Ja ”Julia”-moduuli, jäätyään ilman pariaan ”Romeoa”, menettää elämänsä tarkoituksen – ja koko TrueDepth-järjestelmä menee pilalle.
Teknopapiston arkipäivää

Tässä suojajärjestelmässä on kuitenkin puute. Pisteprojektori sijaitsee laitteen yläreunassa, ja kaiuttimen vieressä. Jos iPhoneen pääsee nestettä, yksi yleisimmistä paikoista tälle on juuri siellä. Ja kapasitiiviset anturit ovat herkkiä sähköä johtaville nesteille. Siksi usein käy niin, että Face ID hajoaa, kun laite putoaa veteen – vaikka veden pääsy olisi minimaalista eikä muita vaurioita olisi. ”Romeo” vain ymmärsi tilanteen väärin ja teki turhaan ”Roskomnadzoria” (venäläinen sensuuriviranomainen, tässä yhteydessä viitaten turhaan toimintaan).
Tällaiset laitteet viedään korjaukseen. Usein epäviralliseen korjaukseen. Ja koska iPhone tarkistaa varaosien sarjanumerot (terveisiä Apple), koko kamerayksikön vaihtaminen toimivaan yksikköön varaosapuhelimesta ei onnistu. Puhelin hylkii uutta yksikköä, eikä Face ID silti toimi. Siksi vanha yksikkö on jotenkin korjattava. Mutta miten ”herätetään henkiin” projektori, jonka on tarkoituksella tuhonnut itsensä?
Epävirallisten korjaustyökalujen valmistajat ovat keksineet tähän joukon erilaisia rituaaleja. Ja kätevät teknopapisto-korjaajat noudattavat niitä pyhästi ja suorittavat mikrokirurgiaa tälle monimutkaiselle ja kalibroidulle optiselle järjestelmälle. Kätevyyttä tarvitaan uskomattoman paljon – komponentit sisällä ovat muutaman millimetrin kokoisia, ja optiikka on erittäin herkkää. Jos kalibrointi ajautuu liian kauas kirurgisten toimenpiteiden vuoksi, järjestelmä ei toimi. Ohjelmallisia uudelleenkalibrointityökaluja ei ole (terveisiä Apple) – joko löydät tavan päästä alkuperäisiin parametreihin tai jäät ilman Face ID:tä.

Miten se toimii? No, ensin on luettava OTP-tiedot alkuperäisestä ”MamaBear”-sirusta.
Tiedot ovat luettavissa, vaikka projektori pitäisi itseään viallisena. Tietojen lukemista varten kiinalaiset tekevät erityisiä ”korjaus”-ohjelmoijia – jotka toimitetaan sarjoina liittimiä ja sovittimia, ja jotka toimivat useiden eri komponenttien kanssa eri iPhone-malleista, mukaan lukien projektorit.
Ja sitten on tehtävä kaksi asiaa – selvitettävä virransyötön katkaiseva MOSFET ja vaihdettava alkuperäinen suojasiru. Ja tähän on monia eri menetelmiä.

Voidaan esimerkiksi laittaa MOSFETin tilalle hyppyjohdin, kuten artikkelin yllä olevassa kuvassa, ja vaihtaa ”MamaBear”-siru, juottamalla irti alkuperäinen FPC-kaapeli ja korvaamalla se erityisellä kaapelilla, jossa on kiinalainen huijaussiru.
Alkuperäinen ”MamaBear”-siru voi tällöin jäädä sisään ja huutaa voimattomana, että projektorin ei missään tapauksessa pitäisi toimia. Mutta sillä ei ole enää MOSFETia, jolla se voisi pakottaa projektorin sammumaan, ja iPhone näkee omalta osaltaan vain kiinalaisen sirun – joka antaa ohjelmoijalla tallennetun kopion alkuperäisistä tiedoista ja raportoi, että projektori on varmasti ja täsmälleen kunnossa.

Tai voidaan poistaa ”MamaBear”-siru kokonaan ja laittaa sen vakiopaikalle kiinalainen korvike kaksi-yhdessä – se sekä sulkee MOSFET-koskettimet että antaa kopion OTP-tiedoista puhelimeen.

Ja on olemassa vaihtoehto mahdollisimman vähällä juottamisella. ”Sovitin”, jossa on huijaussiru, joka asetetaan alkuperäisen kaapelin ja iPhone-emolevyn väliin.
MOSFET-ongelmaa se ei ratkaise, mutta siihenkin kiinalaiset ovat keksineet omaperäisen lähestymistavan tekemällä ”korkeajännite”-ohjelmoijia.
Tiedätkö, miten kaikenlaiset ATtiny:t voidaan ”palauttaa henkiin” ja kirjoittaa uudelleen erityisen korkeajänniteohjelmoijan avulla? Tilanne on täysin erilainen. Kiinalainen korkeajänniteohjelmoija ”ohjelmoi” brutaalisti ja peruuttamattomasti MOSFETin projektorin sisällä oikosulkuun lähteen ja viemärin välille.
Korjauksen viimeisessä vaiheessa kytkemme projektorin ohjelmoijaan vielä kerran ja tallennamme siihen ensimmäisessä vaiheessa tallennetun dumpin. Ja projektori on valmis toimimaan, esittäen olevansa alkuperäinen ja muokkaamaton.
Kaikkia näitä erilaisia laitteita valmistavat ja markkinoivat eri korjauslaitteiden myyjät. Kaikenlaiset huijaussirut toimivat vain ”alkuperäisten” ohjelmoijien kanssa, ja ohjelmoijissa on usein DRM-ominaisuuksia, kuten tilisidonnaisuus ja rajoitettu määrä ”korjauksia”, joiden täydentämisestä on maksettava.
Tietävätkö korjaajat, että he korjauksellaan tuhoavat täysin Applen kehittämän järjestelmän käyttäjän silmien suojaamiseksi? Todellisuudessa eivät. He eivät ole purkajia – he ovat shamaaneja. Heillä ei ole ymmärrystä toimintaperiaatteista. Heillä on rituaalit ja tulokset, ja se riittää heille. Ja ovelat kiinalaiset purkajat jakavat vastahakoisesti salaisuuksiaan yleisön kanssa. Se, mitä olen tässä artikkelissa kuvannut, on täydessä laajuudessaan tiedossa vain Applen insinööreille ja kymmenelle kiinalaiselle ”sisäpiiriläiselle”. Ja minulle. Ja sinulle, nyt.
Miksi Apple on ääliömäinen
Tiedättekö, en voi liikaa syyttää Applen insinöörejä siitä, että heidän ”tappokytkimensä” on liian aktiivinen ja hajottaa projektoreita, jotka voisivat hyvin toimia vielä. Laserit ovat vaarallinen aihe, ja ajatus käyttäjän suojelemisesta ”pahimmilta skenaarioilta” on täysin terve. Vaikka tämän suojauksen toteutus vaatii parannuksia.
Mutta Applen politiikka epävirallista korjausta vastaan on pahinta kaikista pahoista. Jos TrueDepth-yksiköitä voitaisiin vaihtaa rauhassa laitteesta toiseen, sarjanumeroista piittaamatta, tällaisissa hirvittävissä vääristyneissä korjausrituaaleissa ei olisi juurikaan järkeä. Miksi vääntää mikrokirurgisella juottamisella ja tanssia ohjelmoijien kanssa, jos voidaan ottaa seuraavasta ”varaosapuhelimesta”, jossa on rikkinäinen näyttö, täysin toimiva TrueDepth-yksikkö, laittaa se asiakkaan puhelimeen, palauttaa toiminnallisuus kokonaan ja elää rauhassa? Korjaajille se olisi helpompaa ja laitteiden omistajille turvallisempaa.
Mutta Applen ääliömäisen korjausvastaisen käyttäytymisen historia osoittaa selvästi, että näin ei tule käymään. No, ellei Yhdysvalloissa tai EU:ssa kaikenlaiset ”Right to Repair” -liikkeet tee varaosien sarjanumerosidonnaisuudesta laitonta. Ja se on nyt mahdollista. Vitsissä, että Euroopan unioni lisää uusiin iPhone-malleihin enemmän hyödyllisiä ominaisuuksia kuin Apple, on hyvin suuri osuus totuutta. Joten seuraamme lainsäädäntöaloitteita.
Artikkeli on käännetty venäjästä. Artikkelin kirjoittaja: acc0unt. Olemme pyrkineet säilyttämään kirjoittajan alkuperäisen tyylin ja sanamuodot niin pitkälle kuin se on mahdollista käännöksessä.