架構安全與可靠性

安全啟動(secure boot)

電腦一通電,它短暫地是一塊白板,必須分階段載入軟體:先是一小段韌體,接著是開機載入程式,再來是作業系統核心,然後是其他一切。這條啟動鏈是個誘人的目標——在 OS 與其防禦都還不存在前就早早溜進來的惡意軟體,能藏在一切之下,撐過重新安裝。安全啟動就是在那條鏈的每一步,於把控制權交出去前,先檢查下一段軟體是否正版且未被改動的做法。

它以建立在數位簽章上的信任鏈運作。第一段執行的程式碼,是一小塊由硬體擔保的可信韌體。在載入開機載入程式前,它拿自己持有的公鑰去驗證開機載入程式的密碼學簽章;只有簽章有效才繼續。開機載入程式接著在執行 OS 核心前驗證它,依此類推。每一環都檢查下一環,於是單一可信的起點把信任沿整條鏈往上延伸。若任一階段被竄改,它的簽章驗不過,開機便停下(或退回),而不去執行被汙染的程式碼。一個常見的變體「量測啟動」改為把每個階段的雜湊記錄進一顆安全晶片(TPM),好讓最終狀態事後能被檢查或證明。

誠實的重點在這條鏈從哪裡開始。安全啟動的可信程度只等於它的第一環——最初的程式碼與金鑰本身必須由無法被悄悄更改的硬體保護,這正是硬體信任根的工作(見 root-of-trust)。若攻擊者能換掉第一段、或掉包可信金鑰,整條鏈就會忠實地把他的惡意軟體驗證過關。安全啟動談的也是真實性、而非保密:它確保你跑的是你預期的軟體,但本身不會加密你的資料,也不會在系統啟動運行後阻止攻擊。它還有一個現實的張力——把開機鏈鎖到廠商的金鑰,也可能把擁有者鎖在門外、裝不了別的作業系統,這是一個真切的爭論,而非純粹的好處。

通電時,可信韌體對開機載入程式做簽章檢查。假設惡意軟體換掉了開機載入程式:它的簽章不再與廠商的公鑰相符,檢查失敗,機器拒絕執行它——在 OS 都還沒載入前就阻斷了感染。未被竄改的開機載入程式通過,接著它自己在啟動核心前驗證核心的簽章,把鏈延伸下去。

每個階段以簽章驗證下一個;被竄改的一環驗不過,鏈就在那裡停住。

安全啟動檢查的是真實性、而非保密,且只強到它的第一環為止——若沒有硬體信任根保護最初的程式碼與金鑰,替換掉它們的攻擊者就能讓自己的惡意軟體被免費驗證過關。

又称
verified bootmeasured boot驗證啟動可信啟動