安全開機與量測開機的差異:簽章驗證、TPM 記錄、遠端證明比較

兩者都是在通電到作業系統開始運作的各個開機階段,確認下一個要執行之軟體的機制。安全開機會驗證下一個軟體的數位簽章,若簽章不正確就停止開機。量測開機會計算下一個軟體的雜湊值,並逐次累積記錄到 TPM 的 PCR(平台組態暫存器),但不會停止開機本身。阻止的是安全開機,事後確認並證明的是量測開機;兩者並不互相對立,經常搭配使用。

項目安全開機量測開機
確認的對象下一個要執行之軟體的數位簽章。確認開發商對映像檔雜湊值所做的簽章,能否以可信賴的金鑰驗證下一個要執行之軟體的雜湊值(量測值)。將實際載入之內容的值原樣記錄下來
發現問題時的行為驗證失敗就當場停止開機(強制的機制)不停止開機而繼續,只留下記錄(記錄的機制)
信任根無法改寫的 ROM 開機程式碼,以及用於驗證簽章的公開金鑰(為節省容量,常將其雜湊值放在 eFuse 中)開機時最先執行、開始量測的可信賴小段程式碼,以及保存記錄的 TPM
軟體遭竄改時簽章不符,因此不會執行。遭改寫的開機載入程式或核心無法啟動照常啟動,但 PCR 的值會與預期值不同,因此確認記錄即可在事後分辨
所需的元件放在裝置中的驗證用公開金鑰,以及由開發商嚴密保管的簽章用私密金鑰。並搭配防回滾保護,避免被換回舊版TPM 的 PCR(只能以雜湊納入新量測值的「擴充」方式更新),以及各階段量測的記錄(事件日誌)
結果的用途在該裝置內阻止不正當軟體的啟動。若要向外部出示啟動了什麼,需搭配量測開機等機制遠端證明(以 TPM 的金鑰簽署 PCR 的值,出示給伺服器)與封存(sealing,只有 PCR 為預期值時,才能取出磁碟加密金鑰等)
限制只能知道「是否由可信賴的金鑰簽署」,因此無法分辨簽章正確但有漏洞的舊版,或設定的變更。保護的只有開機路徑無法阻止不正當程式碼本身的執行,記錄要有人確認才有意義。更新軟體後 PCR 的預期值也會改變,需要管理正確的值
主要用法智慧型手機、個人電腦與許多嵌入式裝置。出貨產品還會搭配鎖定 JTAG 等除錯埠在具備 TPM 的個人電腦等上,用於磁碟加密與連上網路前的健康狀態確認。沒有 TPM 的微控制器,則以 DICE 這類由量測值導出金鑰的機制達成相同目的

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

安全開機
完全不想讓不正當的軟體在該裝置中執行時。即使是連不到驗證伺服器的裝置,單獨使用也能發揮作用。
量測開機
想在事後向伺服器證明啟動了什麼,或只在開機狀態正確時才交出磁碟加密金鑰時。簽章正確但以舊版啟動的情況,只要與預期值比對也能分辨。
搭配使用
以安全開機阻止不正當的啟動,以量測開機記錄並證明開機狀態。兩者可在同一台裝置上同時使用。

常見問題

安全開機與量測開機最大的差異是什麼?

在於驗證失敗時是否停止開機。安全開機會阻止簽章不正確的軟體啟動。量測開機不停止開機,而是以無法竄改的形式將已啟動軟體的雜湊值記錄到 TPM,讓人能在事後確認,或向遠端伺服器證明。

量測開機需要 TPM 嗎?

一般會記錄到 TPM 的 PCR。TPM 除了獨立晶片之外,也可能以 CPU 或 SoC 內的韌體(fTPM)實作。沒有 TPM 的微控制器等,則以 DICE 這類由量測值導出金鑰的機制,達成相同的目的。

有了安全開機,還需要量測開機嗎?

兩者的角色不同,因此同時使用是有意義的。安全開機只確認「是否由可信賴的金鑰簽署」,無法分辨簽章正確但有漏洞的舊版或設定的變更,也無法向外部出示啟動了什麼。量測開機會留下實際啟動之內容的值,因此可用於遠端證明與封存。

理解度檢測

下列關於安全啟動與度量啟動(Measured Boot)的差異,何者正確?

  1. A兩者是相同的東西,只是稱呼不同
  2. B安全啟動會阻止不正確的軟體啟動,度量啟動則是把已啟動軟體的雜湊值記錄在TPM等處,以便日後確認狀態
  3. C度量啟動只是測量啟動所需時間的功能
查看答案與解析

正確答案:B. 安全啟動會阻止不正確的軟體啟動,度量啟動則是把已啟動軟體的雜湊值記錄在TPM等處,以便日後確認狀態

在度量啟動中,於啟動的每個階段計算下一個軟體的雜湊值,以逐次堆疊的方式記錄到TPM的暫存器(PCR)。PCR只能藉由將先前的值與新的雜湊值組合來更新,因此記錄無法被偽造。雖然不會阻止啟動本身,但只要查看所記錄的值,就能事後確認啟動了哪些軟體,或向遠端的伺服器證明。

下列關於安全啟動(Secure Boot)的說明,何者正確?

  1. A讓電腦更快啟動的機制
  2. B在啟動的每個階段,驗證接下來要執行之軟體的數位簽章,只啟動正確的軟體
  3. C每次啟動時都把磁碟的內容全部清除的機制
查看答案與解析

正確答案:B. 在啟動的每個階段,驗證接下來要執行之軟體的數位簽章,只啟動正確的軟體

在安全啟動中,無法改寫的ROM程式碼驗證第一個開機載入程式(bootloader)的簽章,該載入程式再驗證下一階段或作業系統核心的簽章,如此串接起信任鏈。只要任何一個階段的簽章不符就停止啟動,因此即使惡意軟體竄改了開機載入程式或作業系統的啟動部分,也無法讓它們運作。廣泛用於智慧型手機、電腦與嵌入式設備。

下列關於電腦等搭載的TPM(可信平台模組)的主要作用,何者正確?

  1. A用來加快畫面顯示的專用電路
  2. B管理CPU散熱的零件
  3. C提供安全地產生與保管金鑰、保存已啟動軟體的記錄並證明其狀態等安全功能
查看答案與解析

正確答案:C. 提供安全地產生與保管金鑰、保存已啟動軟體的記錄並證明其狀態等安全功能

TPM是進行金鑰的產生與保管、密碼處理、亂數產生、記錄已啟動軟體的雜湊值等,不易從外部被竄改的安全用晶片(或內建於CPU的功能)。例如,若設計成只有在啟動狀態正確時才能取出磁碟加密的金鑰,那麼即使磁碟被抽走,或啟動軟體被改寫,資料也不易被讀取。

  1. 下列關於遠端證明(remote attestation)的說明,何者正確?
  2. 下列何者最適合作為安全啟動的「信任根(Root of Trust)」而放置在晶片內?
  3. 下列關於在具備安全啟動的機器上,需要防止回滾(anti-rollback)機制的原因,何者正確?

前往硬體安全的練習題

相關名詞的解說

安全開機(Secure boot)
在開機的每個階段確認下一個要執行之軟體的數位簽章,只啟動正確者的機制。藉此串連信任鏈。
量測開機(Measured boot)
在開機的每個階段,將下一個軟體的雜湊值累積記錄到 TPM 等中,使事後能確認開機狀態的機制。
TPM(可信賴平台模組)
Trusted Platform Module。負責金鑰的產生與保管、已啟動軟體之測量值的記錄、狀態證明等的安全性晶片或功能。
遠端證明(Remote attestation)
裝置以晶片內的金鑰簽署自己內部所執行軟體的狀態,出示給遠端伺服器,由其確認是否可信賴的機制。
信任根(Root of trust)
作為安全性確認的起點而被無條件信任的部分。在晶片內放置無法改寫的 ROM 開機程式碼與公開金鑰等。
防回滾保護(Anti-rollback protection)
為避免被退回到有弱點的舊版軟體,在無法改寫的儲存體中記錄最低版本號碼並加以比對的機制。

相關的比較