蘋果為何在 iPhone 中加入會搞壞 Face ID 的晶片

分類: HardwareNews
Save and Share:

讓我們先從頭說起:Face ID 系統的外觀,以及它的運作方式:

所有 FaceID 運作所需的硬體都安裝在螢幕的這個凹槽中

硬體方面,這個系統由一對相機組成——紅外線 (IR) 和 RGB 相機,以及兩種紅外線發射器——一般的照明和專門的點陣投射器。

我們拆開 iPhone X 的外殼,移除所有多餘的部分,就能看到裸露的前置相機模組。紅外線照明是獨立存在的,但所有其他組件都在我們手中——它們牢固地固定在這個金屬框架中。

在這裡我們看到了紅外線相機和紅外線點陣投射器。TrueDepth 和 FaceID 系統的運作都仰賴這對紅外線搭檔。而今天故事的主角,正是點陣投射器。

FaceID 的簡要運作原理

iPhone X 發射出的點陣——照片來源於此

紅外線點陣投射器正如其名——依照指令向周圍環境噴射出數萬個紅外線點。而紅外線相機(也是發出指令的相機)會立即拍攝這些點。

了解投射器、相機的光學特性以及它們之間的距離後,iPhone 處理器中的 ISP 就能估算出每個點的距離。我個人也無法完全理解這個過程的數學原理,反向工程也會很困難——但透過拍攝一系列不同點陣圖案的影像,就能非常精確地推算出每個獨立點的位置,從而建立完整的深度地圖。無需 LIDAR 和 ToF 技術。

正是深度地圖讓 FaceID 不會被印表機印出的照片欺騙。照片是平面的——而臉部具有立體輪廓,對於 FaceID 來說,臉部的地形圖比它的顏色更重要。

PrimeSense 參考相機的方塊圖

不過,系統也會觀察臉部的顏色。紅外線相機與 RGB 相機在硬體上同步,兩部相機同時拍攝臉部。此外,iPhone 不僅可以閃爍紅外線投射器,還可以閃爍紅外線照明——並在紅外線光譜中拍攝整個臉部。

深度地圖本身已經相當粗略,而透過神經網路分析紅外線和 RGB 影像中的臉部紋理,不僅可以更精確地判斷深度,還能更好地理解細節,例如臉部表情——無論在白天還是黑暗中都是如此。

如果你覺得這個系統似曾相識,那可能是因為它直接取材自 Xbox 360 的 Kinect。只是 Kinect 是一個巨大的裝置,而這裡卻將其縮小到智慧型手機螢幕凹槽的大小。

這是 PrimeSense 公司完成的,他們開發了 Kinect 1 的核心技術——然後被蘋果以 3.5 億美元收購。整個公司——包括所有專利、技術成果、員工和其他內部資源。

拆解投射器的內部構造

我們更深入地進行反向工程:從 iPhone X 的相機模組中取出點陣投射器,並將其拆解為組件。它由 FPC 排線、發射組件和光學組件組成。

排線完全是被動元件,因此沒什麼好說的。它焊接到發射組件上,並將訊號輸出到 FPC 連接器,該連接器連接到 iPhone X 的主機板。連接器的接腳間距為 0.35 毫米,是客製化的(蘋果這群混蛋),看起來是 JAE 公司製造的。

讓我們看看光學組件的主要元件:

投射器剖面圖:照片來源於此,註解是我加的

再看看發射器內部有什麼:

MOSFET 和神秘晶片的角色引起了我的興趣。為什麼?因為我不清楚它們在那裡到底做什麼。

第一個顯而易見的猜測是,這個神秘晶片是用於儲存序號和校準資料的記憶體。這個晶片具有典型的 I2C 記憶體介面,而且內部確實有記憶體。投射器有序號,可以透過序號判斷生產日期——如果整個投射器被更換,iPhone 會看到序號不符,並拒絕讓它運作。但最常見的 I2C EEPROM 採用微小的 WLCSP-4 封裝——如果非常需要,甚至可以將其鎖定以防止覆寫。因此,這個晶片不可能是單純的記憶體。它肯定還做了其他事情。

來自中國 JCID 大師的投射器接腳圖。標示有點歪斜,但大致上是吻合的。

第二個顯而易見的猜測是,這個神秘晶片是雷射驅動器,而 MOSFET 是它的開關。沒錯,MOSFET 確實是由晶片控制的。但這個晶片也不可能是像雷射驅動器這樣至關重要的組件。

首先,MOSFET 串聯在雷射組件的共陰極中——而 4 個獨立的陽極直接連接到排線,並進一步延伸到 iPhone 層疊式電路板的內部。其次,在為反向工程收集資料的過程中,我偶然發現了來自中國維修師傅的各種說明。

MOSFET 被替換成一條細心的導線

這些說明並沒有直接闡明問題的本質,但在許多說明中都提到:為了維修「損壞」的投射器,需要將其拆開,移除 MOSFET,並用跨接線連接源極和汲極。這樣一來,內部裝有跨接線的投射器就能運作,FaceID 功能也會恢復。既然用跨接線代替 MOSFET 的投射器可以正常運作,那麼 MOSFET 在那裡是做什麼用的呢?

我突然意識到:這才是維修的關鍵。MOSFET 由晶片控制——因此晶片可以隨時斷開雷射的電源電路,從而使投射器損壞。而這種維修方法消除了這個斷路。

它的名字說明了一切

既然已經清楚知道,神秘晶片與 MOSFET 的組合會阻礙投射器的正常運作,那麼問題就來了——它為什麼要這樣做?為什麼要在投射器中安裝一個會讓投射器失效的晶片?

為了尋找答案,我深入研究了 iPhone 處理器中 ISP 模組的韌體——正是它透過 I2C 與相機感測器和投射器進行通訊。

首先,我下載了 iPhone X 最新的 iOS 15 韌體映像檔。iPhone 的韌體映像檔本質上是 zip 檔案。我在裡面找到了我想要的 ISP 韌體——以 Firmwareisp_bniadc-nike-d22.im4p 檔案的形式存在。從壓縮的 im4p 檔案中提取出二進位檔,格式為 Mach-O,內部包含 AArch64 程式碼。與典型的「未知微控制器韌體映像檔」不同,Mach-O 是一種有文件記錄的可執行檔案格式,類似於 PE 或 ELF。無需猜測檔案結構、處理器架構或程式碼的載入位址。只需將檔案丟進 Ghidra,一切都會自動整理好。真令人愉快。

後來,直覺引導我決定解剖更舊的韌體。在 iOS 13 韌體映像檔中,我找到了 adc-nike-d22 檔案。甚至大小也幾乎相同。只是新韌體中的程式碼更多——而舊韌體中的程式碼較少,但卻有符號。所有函式名稱都在。永遠都要檢查舊版本!

ISP 韌體中包含大量資訊,包括 iPhone 如何透過 I2C 與不同的晶片通訊——與相機感測器、相機 PMU、閃光燈控制晶片和自動對焦晶片。從中,感謝這些符號,我得以提取出系統不同組成部分的「名稱」——其中一部分與韌體其他部分的資料以及其他反向工程人員和維修人員的資料相符。例如,紅外線相機感測器是意法半導體 (STMicroelectronics) 的 VD56G0 “Savage”。整個 TrueDepth 系統在程式碼中被稱為 “Pearl”,而它的主要模組則以《羅密歐與茱麗葉》中的角色命名。紅外線投射器名為 “Romeo”,紅外線相機名為 “Juliet”,紅外線照明名為 “Rosaline”。雷射驅動器(位於 iPhone 主機板上,為 “Romeo” 內部的雷射和 “Rosaline” 照明內部的雷射供電)名為 “Rigel”。

我們感興趣的神秘晶片呢?它也有名字。在程式碼中它被稱為 “MamaBear”,簡稱 “MB”,而且它的功能似乎非常簡單。它位於 I2C 匯流排上。它儲存 OTP 資料,包括序號和各種校準資料。它可以依照指令開啟和關閉 MOSFET。而且它還測量……電容?不是溫度,它根本沒有連接到 NTC 熱敏電阻,而是電容。只是,測量的是什麼的電容?

羅密歐的悲劇性死亡

這個問題的答案再次由中國電路圖協助我們找到。在 JCID 的電路圖中,可以看到 “Romeo” 模組中有三個接點用於連接發射組件和光學組件。一個是接地,另外兩個直接連接到 “MamaBear” 晶片。這些接點透過光學組件側面的一個特殊轉接器,到達其頂端——繞射光學元件。

繞射光束分離器是不可控制的,也不會對電流產生反應。但它具有電容。而且可以透過這三條線路測量這個電容。但為什麼要測量呢?

關鍵在於這個繞射分離器所扮演的重要角色。投射器使用的點陣圖案是由 VCSEL 晶片上微小雷射「凹坑」的排列方式決定的。然後,這個圖案會透過繞射元件複製,繞射元件會將一道光束轉變成數百道光束。

“SPARSE” 陽極雷射位置與投射點的比較

那麼,如果這個繞射元件被移除會怎樣?

光束將不會被分離。原本數百道雷射光束會變成一道光束——但亮度會增強數百倍。而這畢竟是雷射。紅外線雷射比紅色雷射更危險,因為人眼看不到它——因此即使面對危險的強光源,也不會本能地移開視線。而且在這種情況下,點陣的特徵圖案很有可能燒灼使用者的視網膜。

為了預防這種情況,才需要這個「殺手晶片」。開啟後,它會持續監測繞射元件的電容——如果元件被撬開或損壞,電容就會超出容許範圍,晶片會立即切斷 MOSFET,並中斷 VCSEL 的電源。由於元件位於光學組件的最頂端,因此在不損壞元件或不破壞接觸的情況下,幾乎不可能透過撞擊損壞其餘組件。

在雷射緊急關閉後,晶片會在 OTP 中燒錄一個旗標,表示投射器有缺陷——這意味著斷開的電源將永遠保持斷開狀態。來自 ISP 的任何指令都無法再對其產生作用。MOSFET 將永遠保持關閉,投射器將永遠無法再次運作。

“MamaBear” 晶片,正如其名稱所示——是一個保護晶片。它是用於緊急停止雷射的「終止開關」。它使投射器失效,以防止損壞的雷射裝置照射使用者的眼睛。而 “Juliet” 模組,在失去與其配對的 “Romeo” 後,也失去了存在的意義——整個 TrueDepth 系統就此報廢。

技術祭司的日常工作

但這種保護機制有一個缺陷。點陣投射器位於裝置的頂端邊緣,靠近揚聲器。如果液體進入 iPhone 內部,最常發生的位置之一就在那裡。而電容感測器對導電液體很敏感。因此,經常發生裝置掉入水中後 FaceID 就損壞的情況——即使進水程度很小,而且沒有其他損壞。只是 “Romeo” 誤判了情況,無端啟動了「網路審查」機制。

這些裝置會被送到維修店。通常是非官方維修店。由於 iPhone 會比對零件的序號(哈囉,蘋果),因此無法直接將整個相機模組換成來自其他裝置的堪用模組。手機會排斥新的模組,FaceID 仍然無法運作。因此,必須以某種方式修理舊的模組。但要如何「復活」一個已經被自己故意停用的投射器呢?

非官方維修工具製造商為此設計了一整套不同的儀式。而手巧的技術祭司維修人員則虔誠地遵循這些儀式,並對這個複雜且經過校準的光學系統進行微創手術。對手藝的要求高得難以想像——內部組件的尺寸只有幾毫米,而且光學元件極其敏感。如果手術介入導致校準偏差過大,系統將無法運作。沒有用於程式重新校準的工具(哈囉,蘋果)——你要麼找到恢復原始參數的方法,要麼就只能放棄 FaceID。

「高壓」程式燒錄器

它是如何運作的?嗯,首先要從原始的 “MamaBear” 晶片讀取 OTP 資料。

即使投射器認為自己有缺陷,資料仍然可以讀取。為了讀取資料,中國製造商生產了特殊的「維修」程式燒錄器——這些程式燒錄器隨附一系列連接器轉接頭,適用於多種不同 iPhone 型號的組件,包括投射器。

然後需要做兩件事——處理斷開電源的 MOSFET,並替換原始的保護晶片。這裡有很多不同的方法。

帶有欺騙晶片的排線

例如,可以像本文前面的照片那樣,用跨接線代替 MOSFET,並替換 “MamaBear” 晶片,方法是焊下原始的 FPC 排線,並用帶有中國製造的欺騙晶片的特殊排線替換它。

原始的 “MamaBear” 晶片可以繼續留在內部,無力地咆哮著投射器絕不應該運作。但它不再有 MOSFET 來強制關閉投射器,而 iPhone 端只看到中國晶片——它會發送由程式燒錄器寫入的原始資料副本,並回報投射器絕對絕對是完好無損的。

挖出舊零件,裝上新零件

或者,也可以完全移除 “MamaBear” 晶片,並在其原始位置安裝中國製造的二合一替代品——它既能短路 MOSFET 的接點,又能將 OTP 資料副本發送到手機。

帶有欺騙晶片的轉接板

還有一種焊接最少的方案。帶有欺騙晶片的「轉接器」,安裝在原始排線和 iPhone 主機板之間。

它沒有解決 MOSFET 的問題,但中國製造商也為此找到了一個獨特的方法,製造了「高壓」程式燒錄器。

你知道如何使用特殊的高壓程式燒錄器來「解磚」和重新寫入各種 ATtiny 嗎?這裡的情況完全不同。中國製造的高壓程式燒錄器粗暴且不可逆地將投射器內部的 MOSFET「程式燒錄」成源極和汲極之間的短路。

在維修的最後階段,我們再次將投射器連接到程式燒錄器,並將第一階段儲存的資料映像檔寫入其中。投射器就可以運作了,偽裝成原始且未經修改的狀態。

所有這些不同的裝置都是由不同的維修設備供應商製造和推廣的。各種欺騙晶片只能與「原廠」程式燒錄器搭配使用,而程式燒錄器通常內建 DRM 功能,例如帳戶綁定和有限的「維修」次數,每次充值都必須付費。

這些維修人員知道他們透過維修完全摧毀了蘋果為保護使用者眼睛而設計的系統嗎?實際上並不知道。他們不是反向工程師——他們是巫醫。他們不了解運作原理。他們有儀式和結果,這對他們來說就足夠了。而狡猾的中國反向工程師不願意向公眾分享他們的秘密。我在本文中描述的內容,只有蘋果工程師和十幾個「圈內」中國人完全了解。還有我。現在還有你。

蘋果為什麼是混蛋

你知道嗎,我無法過度責怪蘋果的工程師,因為他們的「終止開關」過於積極,導致損壞了原本可能還能運作的投射器。雷射是一個危險的議題,保護使用者免於「最壞情況」的想法絕對是合理的。儘管這種保護機制的實作確實需要改進。

但是,蘋果打擊非官方維修的政策才是所有邪惡中最惡劣的。如果 TrueDepth 模組可以隨意地在裝置之間更換,而無需考慮序號,那麼那些駭人聽聞的扭曲維修儀式幾乎就沒有意義了。如果可以從另一台螢幕破裂的「殺肉機」上拆下完全堪用的 TrueDepth 模組,將其安裝到客戶的手機中,完全恢復功能,並安穩度日,那又何必費盡心思進行微創焊接,並與程式燒錄器共舞呢?這樣一來,維修人員會更輕鬆,裝置擁有者也會更安全。

但蘋果醜陋的反維修行為歷史清楚地表明,這種情況不會發生。除非美國或歐盟的各種「維修權」運動讓零件依序號綁定變成非法。而這目前是有可能發生的。關於歐盟在新 iPhone 型號中添加的功能比蘋果還多的笑話,其實有很高的真實性。因此,我們將密切關注立法倡議的進展。

本文由俄文翻譯而來。文章作者:acc0unt。我們盡力在翻譯過程中保留作者的原始風格和措辭。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *