COMIC CLASSROOM

晶片裡的信任,是怎麼建立的?第 5 / 9 課

Measured Boot 與遠端證明:設備說安全,遠端該相信嗎?

從工廠閘道器申請連線開始,循序理解 Secure Boot、Measured Boot 與 Remote Attestation 如何分工,並看懂 TPM/PCR 證據能證明什麼、不能證明什麼。

14 分鐘

先用一句話抓住這篇

從工廠閘道器申請連線開始,循序理解 Secure Boot、Measured Boot 與 Remote Attestation 如何分工,並看懂 TPM/PCR 證據能證明什麼、不能證明什麼。

先把這篇當成一張閱讀地圖:上方摘要說明問題,圖片先建立直覺,下面文字再補上真正的技術取捨。

如果第一次讀覺得名詞很多,可以先記住比喻與結論;第二次再回頭看名詞,會順很多。

工廠的遠端閘道器想連上管理中心,申請執行一項維護工作。中心認得它的裝置身分,卻看不到它剛才如何開機:載入的是核准韌體,還是某個遭替換的版本?「我是那台設備」與「我現在處於可信狀態」是兩個不同主張。

中心需要檢查量測值、可信來源與 freshness,再按服務政策決定權限。Secure Boot 在本機限制哪些程式可以執行;Measured Boot 留下啟動時的量測,供後續證據評估。一次通過評估,不代表設備沒有漏洞,也不保證之後狀態不再改變。PCR 與 signed quote 是本課採用的一種常見實作,不必先懂 TPM 才能跟著走。

1. 設備說自己安全,遠端該相信嗎?

Measured Boot 與遠端證明漫畫第 1 頁:工廠閘道器申請連線,管理中心知道裝置身分,卻看不到目前開機狀態
圖 1:遠端服務認得設備,不等於知道設備目前載入了什麼。

想像你是管理中心的老師傅。工廠閘道器傳來請求:「我是 GW-00123,請讓我執行維護工作。」中心查到序號和帳號都正確,但它沒有親眼看到設備開機,也不能光憑一句自我介紹就知道裡面執行的是哪套韌體。

先把這件事拆成三個問題。要保護的是什麼?這裡是管理中心的維護權限,以及設備接觸到的控制功能。誰在做決定?是遠端管理中心。它看不到設備開機過程,因此必須問:設備能不能提供一份可信的紀錄,讓中心判斷這次連線時載入了哪些元件?

這就是威脅模型的起點:先列出資產、可能的攻擊者、攻擊路徑,以及系統最後必須做出的決策。攻擊者可能試著替換韌體;設備也可能只是更新後版本不同,或遇到設定錯誤。結果不一樣,不代表原因一定是惡意攻擊,但管理中心不能只憑設備自述就把高權限交出去。[1]

因此要分開問「這是誰」和「它現在是什麼狀態」。裝置身分有助於辨認連線來源;啟動證據則要描述特定一次開機中、特定涵蓋範圍內量到的內容。遠端證明就是讓這些證據能被遠端檢查,再交由服務依政策決定權限。

先停一下想想:如果你管理這個服務,會要求設備提供哪一種可檢查的證據?

2. 身分相同,開機狀態也會相同嗎?

第 2 頁:兩台具有相同設備識別資料的閘道器,載入的開機內容可能不同
圖 2:識別資料回答「你是誰」;啟動證據才描述「你載入了什麼」。

把問題想得更具體:同一台設備今天安裝了核准版本,明天可能完成合法更新;也可能有某個元件被換掉。它的序號仍然是 GW-00123,網路憑證也可能仍有效。身分沒有改變,但啟動狀態已經不同。

可以把裝置憑證想成一張可驗證的識別證:它能協助確認對方持有某個受信任的金鑰,卻不會自動告訴你這台設備剛載入哪一版韌體。若設備的憑證沒變、啟動內容卻變了,光看識別證就看不出差異。

啟動測量補的是另一種資訊:在某次開機流程中,平台實際量到哪些程式或設定。這些資料有明確範圍,不會描述設備的一切,也不是憑證本身。管理中心要把身分和狀態證據放在一起看,才能分別回答「哪台設備來了」與「它這次帶著什麼狀態來」。[1]

3. Secure Boot 已經檢查了,遠端為何還要證據?

第 3 頁:Secure Boot 在設備本機允許或阻擋啟動項目,但管理中心沒有直接看見檢查結果
圖 3:本機的執行管制,和遠端對設備狀態的判讀,是兩項不同工作。

Secure Boot 的工作重點,是在受保護的啟動流程中,依本機信任資料與政策檢查下一階段程式;不符合規則的項目可以被拒絕,不讓它取得執行權。這是設備內部的執行管制,能降低未授權程式在開機早期搶先執行的風險。

可以沿著開機順序想像:較早執行、受保護的階段檢查下一階段;檢查符合平台政策,才交出控制權。這個決定發生在設備本機,作用範圍也取決於產品實際設定了哪些信任資料與啟動元件。Secure Boot 的價值在於執行管制,不是替遠端服務代做授權。

管理中心若只收到「開機完成」或「Secure Boot 已啟用」,仍要查這句話從哪裡來、涵蓋哪些元件,以及是不是這次連線的新回應。設備自己說「我有檢查」,和遠端驗證者拿到可檢查的證據,是兩回事。前者是狀態宣稱;後者還要有可信的證據來源與驗證流程。[1][2]

所以 Secure Boot 和 Measured Boot 可以分工合作:前者依本機政策決定是否執行;後者把選定的啟動事件留下來,供後續驗證者判讀。遠端服務需要的是後一條證據路徑,才不必把「設備說已檢查」直接當成答案。

4. Measured Boot 記錄的是什麼?

第 4 頁:韌體、Boot Manager、作業系統啟動檔依序留下測量紀錄
圖 4:測量會留下啟動事件的證據;「記錄」本身不等於「阻擋」。

Measured Boot 的核心直覺是留下啟動過程的測量紀錄。系統可以針對納入測量範圍的韌體、Boot Manager、作業系統載入器或設定資料計算摘要,並依序記錄事件。這讓後續的檢查者有機會回頭判斷啟動時發生了什麼。

這裡的「測量」通常不是把整個韌體檔案複製到報告裡,而是對指定內容計算摘要,並記下一筆事件。事件紀錄可以帶有事件類型、摘要,以及協助辨認來源的資訊。比方說,管理端看到一筆韌體事件和一個摘要,之後可以拿它跟可信參考資料比較;摘要本身不會自動說明這個版本是否獲准。

在分階段啟動的設計中,前一階段可在交出控制權前量測下一階段。Boot ROM 可能量測韌體,韌體再量測 Boot Manager,後續階段也可能依平台設計延續這條流程。哪些程式會量、事件怎麼命名、是否涵蓋設定資料,都要看硬體平台、韌體與設定;不能把某一款 PC 的事件清單當成所有設備的標準答案。[2][3]

要特別分清楚:量到某個元件,只能說流程留下了它的測量紀錄,不能直接推論它安全;記錄事件本身也不會阻止程式執行。要阻擋未授權程式,得靠 Secure Boot 這類執行政策。Measured Boot 提供的是可供後續檢查的材料。

5. 為什麼紀錄的順序也重要?

第 5 頁:啟動事件依序延伸累積測量值,事件次序不同會得到不同結果
圖 5:累積結果保留了事件次序,不只是列出幾個檔名。

可以把事件紀錄想成一份逐項蓋章的旅程簿:先量韌體,再量 Boot Manager,接著量作業系統載入器。每次新測量都會依特定規則加入先前的累積值。常見 TPM PCR 擴展模型可以簡化寫成「新值 = Hash(舊值 || 新測量)」;這裡的重點不是背公式,而是知道順序會影響最後結果。[2]

PCR 可以先想成晶片內一個固定大小的累積欄位。事件發生時,平台把新測量值和目前 PCR 值一起做雜湊,再把結果寫回;PCR 的值受 TPM 規定的重設與 extend 規則控制,一般軟體不能直接指定成任意內容。這種 extend 操作會把前面的累積狀態帶進下一步。

因此,先量 A 再量 B,和先量 B 再量 A,通常會留下不同的最終值。它不像購物清單,只記得「有 A、有 B」;事件次序也是啟動故事的一部分。驗證者會用事件紀錄按順序重算,再確認結果能否對上受保護暫存器回報的值。[2]

不過,雜湊鏈只涵蓋真的送進 PCR 的事件。如果某個元件從未被量測,它不會因為前後其他階段都留下紀錄,就自動被納入。換句話說,驗證結果的範圍,從設計時選擇量哪些元件就已經決定了一大部分。

6. 如果事件紀錄能被改,還有什麼用?

第 6 頁:驗證者依事件紀錄重算 PCR,並與 TPM 簽署回應中的值比對
圖 6:在常見 TPM 實作中,事件紀錄可讀取,受保護的測量值則由簽署證據帶出供比對。

只把事件清單存在一般儲存區,確實不能假設它永遠無法被修改。常見做法是同時保留可讀的 event log,並把測量結果依序延伸到受保護的 TPM Platform Configuration Register(PCR)。驗證者收到事件清單與 TPM 簽署的 quote 後,可重算事件應導出的 PCR 值,再與 quote 內被簽署的值比較。[2][3]

兩份資料各有工作。Event log 是可讀的逐筆明細,說明哪些事件曾被量測;quote 則由 TPM 對指定 PCR 的當前值簽章,讓驗證者能確認這些值是用對應的 TPM Attestation Key(AK)產生。單看 log,攻擊者可能改內容;單看 PCR,驗證者又只看到累積結果,不知道每一步是哪個事件造成的。

驗證者拿到兩者後,按 log 中的順序重新執行 extend 計算,再把算出的結果和 quote 簽署的 PCR 值比對。若有人刪掉、調換或修改已記錄的事件,重算結果就可能對不上。RFC 9683 以 TPM 網路設備描述了這種作法;不同平台的事件格式與 PCR 配置仍可能不同。[2][3]

這一步能檢查的是「明細和 TPM 簽出的累積值是否一致」,不是「內容是否良善」。如果惡意程式本來就在被量測流程允許的位置,兩份資料仍可能彼此吻合。之後還要檢查簽章金鑰是否屬於可信設備、量測範圍是否足夠,以及這些值是否符合政策。

7. 如何避免拿舊的好證據冒充現在?

第 7 頁:驗證者送出新的隨機挑戰,設備把它放入簽署回應,以降低舊回應重播風險
圖 7:新鮮度檢查讓昨天截取的回應不能直接冒充今天的回應。

假設閘道器上個月曾通過檢查,攻擊者把當時的回應錄下來。若管理中心今天只問「請給我你的證據」,而設備送來一份可重用的舊資料,中心可能無法分辨這是現在的狀態,還是過去某個時間點的狀態。

做法可以分成幾步。管理中心先產生一個新的、難以預測的隨機挑戰值,也就是 nonce,傳給閘道器;閘道器再把這個 nonce 和要回報的 PCR 值放進 quote,由 TPM 的 AK 簽署。管理中心檢查簽章與 nonce:若 nonce 不是這次送出的值,就不能把這份回應當成對本次請求的回答。[1][2]

這能讓上個月錄下來的 quote 無法原封不動重播,因為裡面沒有今天的新 nonce。不過,新鮮 nonce 只說明簽署回應時綁定了這次挑戰;它不會自己保證 PCR 裡每個值都是剛剛才量到。若開機量測早已存在儲存區,直到連網後才拿 nonce 簽署,驗證者還要依系統設計確認這些舊測量是否仍代表目前狀態。[1]

nonce 是常見的新鮮度作法,但不是唯一作法;RFC 9334 也描述時間戳與 epoch ID 等模型。選哪一種,要看設備有沒有可信時鐘、連線流程及雙方保存狀態的方式。重點是讓驗證者判斷「這次拿到的證據,和我這次要求的狀態之間,有沒有可信的時間關係」。[1]

8. 誰提供證據,誰決定放行?

第 8 頁:裝置 attester 建立證據,verifier 依參考資料檢查,relying party 決定服務存取權
圖 8:證據產生、證據判讀與服務授權是三種責任;部署時可以分開,也可以整合。

遠端證明可以先用三個角色來理解。裝置上的 attester(證明者)整理並提供關於自身狀態的 claims 與證據;verifier(驗證者)檢查證據是否可信、是否新鮮,以及是否符合既定參考值與政策;relying party(依賴方,也就是要提供服務的一方)再依驗證結果決定開放哪些服務或操作。[1]

放回閘道器的情境,attester 是負責產生設備狀態證據的那一端;它可能包含收集啟動事件的韌體或軟體,也可能搭配 TPM 保護 PCR 與簽署 quote。TPM 不一定自己知道「剛剛執行的是哪個檔案」;通常還需要平台中的其他元件把測量送進去。[1][2]

verifier 接著檢查證據本身:例如簽章能不能用可信的 AK 驗證、nonce 是否吻合、event log 能否重算出 quote 中的 PCR 值,以及測量是否符合參考值與評估政策。它輸出的是一份評估結果,不是直接替設備開門。

最後由 relying party,也就是握有維護服務的管理中心,依自己的政策決定要不要放行、放行多久、開放哪些操作。這三種角色是在描述責任,不一定是三台機器;小型系統可以整合在一個服務,大型系統也可以拆開部署。重要的是授權決策由誰負責,要清清楚楚。[1]

9. 驗證者拿什麼來比較?

第 9 頁:驗證者把測量證據與可信參考值、目前政策及新鮮度資料比較
圖 9:光有測量值還不夠,還要有可信且更新中的參考資料和明確政策。

設備送來的摘要本身只是一組數值。驗證者需要可信參考資料,才能判斷這個值對應的是哪個已核准元件或版本;還要套用政策,決定哪些版本、設定、裝置身分和執行環境符合目前需求。新鮮度也要一併檢查,否則正確的舊資料可能被誤當成現在的狀態。[1]

例如,某個韌體版本更新後,檔案內容改變,摘要通常也會改變。驗證者要能查到這個新值是否由可信來源提供、適用於哪個設備型號與版本,以及它目前是否獲准使用。不能只因為設備回報一個新摘要,就把它自動加入「安全清單」。

參考值是拿來比對的資料;政策則定義比對規則與可接受結果。規則不一定只有「摘要完全相等」一種,也可能依版本集合、允許範圍,或幾項 claim 之間的關係來判斷。不同設備、不同維護工作也可以有不同門檻。[1]

所以參考資料需要安全的核准、更新與撤回流程。資料太舊,合法更新可能一直被誤報;資料若讓未授權者任意修改,攻擊者就可能把自己的版本登記成可接受狀態。判讀證據的 verifier 必須信任的不只是設備回報,也包括提供參考值的人與政策制定者。[1]

10. 證據不相符,接下來該怎麼做?

第 10 頁:測量與核准參考不相符時,暫緩高風險操作、保留證據並調查合法更新等原因
圖 10:不相符是需要處理的警訊,不是已經證明遭到攻擊的判決。

若測量結果和目前參考值不相符,服務可以先暫緩高風險操作,再保留事件紀錄與診斷資訊,確認近期是否有核准更新、設定變更或環境差異。若是未預期的變更,就依事件處理流程隔離設備、進一步調查或引導回復到可信狀態。

管理中心可以依風險分級處理。若只是申請低權限的狀態查詢,或許可以限制功能後繼續連線;若要下控制命令、取得敏感資料,就可以先暫停這項操作,保留 event log、quote 與更新紀錄,再由維護流程確認原因。這些是服務政策的選擇,不是 PCR 自己會替管理者做的決定。

不相符是一個警訊,不是攻擊成立的證明。合法韌體剛更新、設備設定與參考環境不一致,都可能造成結果不同;但如果所有未知值都自動放行,攻擊者也可能利用這條捷徑。較穩妥的做法,是把「符合」、「已知但過期」、「未知」和「驗證失敗」分開處理,並預先安排調查、隔離與可信復原路徑。[1]

11. 通過遠端證明,代表設備沒有漏洞嗎?

第 11 頁:通過只表示特定證據在該次檢查符合政策,不表示沒有漏洞或之後狀態不變
圖 11:一次通過是有範圍、有時間點的證據,不是永久安全保證。

驗證成功最精確的解讀是:在這一次檢查中,驗證者收到的特定證據符合它採用的規則。它不代表整台設備沒有漏洞,不代表每一個未測量的元件都可信,也不代表檢查結束後設備狀態沒有改變。證據能支持的結論,受測量範圍、證據可信度、參考資料與檢查時間所限制。[1]

這個界線可以從三個缺口看出來。第一,沒有量到的元件不在這份證據裡。第二,即使量測值和可信參考吻合,也只說明所採用的元件或設定符合規則,不代表程式沒有尚未發現的漏洞。第三,quote 對應的是某個測量狀態;設備在回報之後仍可能改變,服務不能把一次檢查當作永久通行證。[1][2]

因此 Remote Attestation 提供的是有範圍、有時間點的證據評估,最後是否信任、授予什麼權限,仍是 relying party 的風險決策。設備若要長期提供服務,還需要韌體更新、漏洞修補、執行期監控和網路隔離等措施,補上開機證據看不到的部分。

12. 回到最初的連線申請

第 12 頁:管理中心收到新鮮證據並依目前政策判讀,只授予設備執行任務所需的權限
圖 12:根據可驗證的證據與當前政策決定最小必要權限,並持續維護可信參考資料。

現在,工廠閘道器重新申請連線。管理中心收到這次的新鮮證據,檢查簽署回應與啟動測量,並確認它符合目前維護政策。若結果符合,服務仍不必一次開放所有權限;只授予完成這項工作的必要存取,能限制設備帳號或後續軟體出問題時的影響範圍。

把流程按順序走一次:閘道器先用身分憑證證明自己是哪個設備;管理中心送出本次挑戰;設備把簽署 quote 與 event log 回傳;verifier 驗證簽章、nonce、log 與 PCR,再用可信參考值和政策評估狀態;最後管理中心才依結果開放維護服務。每一關回答的問題不同,不能跳過中間步驟,只看設備宣稱「已安全開機」。[1][2]

符合政策,也不代表要開放整台設備的所有權限。這次申請只是維護工作,就授予完成該工作所需的範圍與時間;如果驗證只得到部分證據,政策也可以只開放較低風險的功能。這樣即使帳號或後續軟體出問題,能造成的影響也比較受限。

三個機制各自回答不同問題:Secure Boot 在本機管制涵蓋範圍內的啟動程式能否執行;Measured Boot 留下選定的啟動測量;Remote Attestation 讓遠端 verifier 評估證據,再由服務決定權限。這是一條由啟動量測、遠端判讀到服務授權組成的流程,沒有任何一個元件能單獨替整台設備背書。[1][2]

最後留一題:如果核准的韌體更新改變了測量值,誰要確認更新確實獲准、何時更新參考資料,又如何避免舊版本趁更新流程回滾?這些作業流程,往往決定遠端證明能否在真實設備群中持續可信。

參考資料

  1. RFC 9334: Remote ATtestation procedureS (RATS) Architecture,定義 attester、verifier、relying party 與證據評估架構。
  2. RFC 9683: Remote Integrity Verification of Network Devices Containing Trusted Platform Modules,以 TPM 為基礎的網路設備完整性驗證案例。
  3. Trusted Computing Group, PC Client Platform Firmware Profile Specification,PC Client 平台韌體測量與事件紀錄相關規格。

重播 event log,和 quote 中的 PCR 一樣嗎?

逐步計算 PCR=SHA256(old PCR || SHA256(event))。先重排 log,查看與 quote 不符;再改 OS 而保持 log 一致,觀察 reference 拒絕。最後重放舊 nonce:簽章仍可能有效,freshness 卻失敗。

真正計算 SHA-256 與 ECDSA 簽署/驗證自編 quote,PCR 從 32 個零 byte 開始。沒有 TPM、TPM Quote 編碼或真實事件格式;trusted key 與 reference 政策由你指定。新 nonce 綁定回應,不保證量測剛發生,也不凍結之後的 runtime 狀態。

本次實驗條件

學習指南

晶片裡的信任,是怎麼建立的?

0 / 9

查看課程大綱 → · 進度只計入已發布課程

先備知識

  • 理解 Secure Boot 與數位簽章會更容易銜接

我學會了什麼

  • 區分開機管制與測量紀錄
  • 說明如何一起檢查 Event Log 與受保護的測量值
  • 把遠端證明結論限制在實際檢查的證據與政策

本課術語

查看術語字典 →

延伸閱讀

課後小測驗

讀到這裡,辛苦了。

把概念帶走,比把術語背走更重要。

#Measured Boot#Remote Attestation#RATS#TPM#PCR#Secure Boot#Hardware Security#漫畫小教室