硬體信任根(hardware root of trust)
每一條信任鏈都得錨定在某個你乾脆決定去相信的東西上——一個起點,它為下一個東西擔保,那個再為下一個擔保,依此類推。若那個起點能被偽造或更改,整條鏈就一文不值。硬體信任根就是那個被鑄進矽裡的錨點:一小塊受深度保護的硬體,因為被造得極難竄改或替換而被假定為可信,系統中所有其他的信任都從它衍生而來。
具體而言,信任根通常是製造時烙進晶片的一小塊不可變程式碼與秘密金鑰——燒進唯讀記憶體或一次性可程式化熔絲、封在封裝內部,且常持有一把永不離開硬體的唯一裝置金鑰。它是通電時第一個執行的東西,也是在安全啟動中做第一個簽章檢查的東西,於是整條開機鏈都立在它之上(見 secure-boot)。它也錨定裝置身分(證明「我就是這顆特定的正版晶片」),並把主金鑰保護在 TEE 或安全隔離區之後(見 trusted-execution-environment 與 secure-enclave)。像 TPM 這樣的專屬晶片,或晶片上的安全區塊,都實作了它。
誠實的說法是:信任根並不移除信任——它把信任濃縮到盡可能最小、保護最好的地方,於是你只須信任一個又小又謹慎打造的東西,而非一整套龐雜、不斷變動的軟體堆疊。這確實強大,但它是把風險遷移、而非廢除:你現在信任的是矽晶片廠商、工廠燒入金鑰的保密、以及那一小塊不可變程式碼的正確性。若信任根的私鑰外洩、或它的程式碼有瑕疵,就沒有更高的權威可以申訴了——依設計,沒有任何東西位於它之上。安全啟動、證明與隔離區的整座大廈,都仰賴這一個假設成立無誤。
一支手機的信任根,是工廠燒入的一小塊區塊,在無法更改的熔絲裡持有一把公鑰。每次開機它都用那把鑰匙驗證第一段軟體。因為那把鑰匙是不可變的硬體,攻擊者無法把它換成自己的——於是無法讓手機去信任他的惡意軟體。每一個更高層的保證(安全啟動、證明、金鑰保存)最終都立在這一塊無法更改的區塊上。
信任總得從某個實體、無法更改的地方開始;整條鏈只穩到這個錨點為止。
信任根是濃縮信任、而非移除信任。它之上無物可申訴,所以一旦它烙入的金鑰外洩、或它那一小段程式碼有瑕疵,建立其上的每一個保證——安全啟動、隔離區、證明——都隨之崩塌。