架構安全與可靠性

安全隔離區(secure enclave)

想像在一間忙碌的辦公室裡蓋一座小金庫——自己的牆、自己的鎖、自己的少數職員——最珍貴的文件存放並在裡面處理,於是即使小偷接管了整間辦公室,金庫仍緊閉。安全隔離區就是晶片裡那座金庫:一塊又小又由硬體隔離的區域(有時是一顆專屬的小協處理器,有時是主 CPU 中一塊受保護的切片),它保存並處理系統最敏感的秘密,由矽晶片本身與其他一切隔開。

隔離區是可信執行環境所提供的、具體的隔離單位(見 trusted-execution-environment)。在 Intel CPU 上,SGX 讓應用程式劃出一個隔離區:一段由 CPU 加密並守護的記憶體,使得連作業系統都無法讀取或修改它;外部的程式碼只能呼叫定義好的進入點。Apple 的 Secure Enclave 是一顆有自己記憶體的獨立協處理器,管理生物辨識資料與密碼學金鑰,刻意與主處理器隔開。共通的脈絡是:秘密金鑰在隔離區內生成與使用,從不以明文離開它——系統其餘部分可以請隔離區簽署或解密某物,卻無法抽出做這件事的金鑰。

誠實的提醒很重要。隔離區大幅縮窄了攻擊面,但沒消除信任:你信任著硬體製造商和隔離區的小韌體,任一方的瑕疵都能讓它前功盡棄。而隔離區與本領域所談的快取、推測機制活在同一塊矽上,所以已有數個隔離區設計被證明儘管有牆,仍透過微架構側通道洩漏秘密(見 side-channel-attack 與 cache-timing-attack)。把安全隔離區想成保管金鑰最強的實用之處——比普通記憶體難觸及得多——而非一個完美密封的盒子。

當你設定 Face ID 或 Touch ID,生物辨識樣板被封存在 Apple 的 Secure Enclave 這顆獨立協處理器裡。要解鎖時,感測器把資料送進隔離區,由它在內部比對,只回傳是/否,若是,則釋出一把金鑰來解密你的資料。主 CPU——以及其上任何 App 或惡意軟體——永遠看不到原始生物辨識樣板或那些金鑰;它們在隔離區內生、在隔離區內滅。

金鑰從不離開隔離區:系統得到的是是/否或一份簽章,永遠不是產生它的那個秘密。

隔離區縮小但沒抹除可信任基礎,且它與推測、快取共用矽——已有數個隔離區設計透過微架構側通道洩漏。它是現有最強的金庫,而非牢不可破的金庫。

又稱
enclavesecure elementisolated execution region隔離區安全區