大部分人只注意到Windows 10是一個免費更新的系統以及開始菜單又再次出現在新的Windows系統中,但卻沒有注意到該版本已經開始支持微軟所推行的可信平臺模塊(Trusted Platform Modules,簡稱TPM)2.0的安全啟動功能。目前,Windows 10對于安裝的硬件沒有什么特殊的要求,但是一年之后,所有安裝Windows 10的新設備都將被強制要求配備TPM 2.0加密芯片,并激活安全啟動功能。
通過微軟所謂的“測量啟動”(Measured Boot)機制,可以利用TPM芯片檢測各組件的完整性,可以有效地防范惡意軟件在系統運行之前加載,能夠確保新的Windows系統比以往的任何版本更安全。但是,在微軟Windows認證強制激活安全啟動功能的同時,并沒有強制要求安全啟動功能是可以被禁止的,這有可能會導致平行安裝的其他系統以及閃存盤、光盤啟動電腦時出現問題。
“測量啟動”的基本問題是明確的,首先,設備啟動時將變得更加安全,以Windows 10為例,使用它的智能手機、平板電腦和電腦都能夠從中獲益。以往,由于防病毒軟件以及其他相關的安全工具是運行在操作系統中的,所以在設備啟動的階段這些安全工具是無法發揮作用的。此時,如果攻擊者能夠設法在Windows運行之前加載攻擊程序,那么他們將可以完全控制系統。由于攻擊程序在系統和安全工具之前運行,所以它們完全可以設法阻止安全工具運行,或者將自己隱藏起來。
在Windows 8中微軟已經開始提高啟動的安全性,一個重要的里程碑是UEFI 2.3.1版本的固件和安全啟動功能。UEFI固件的優點是不能夠通過系統中運行的軟件對系統進行修改,并且通過UEFI固件的安全啟動功能只允許加載簽名的引導程序。這對于Linux系統來說曾經是一個問題,不過,現在已經基本解決了Linux引導程序的簽名問題。在激活UEFI固件安全啟動功能的情況下,啟動階段將檢查所有的部件是否擁有有效的簽名。在Windows啟動之前,所有沒簽名的模塊將無法運行。
上面介紹的UEFI固件安全啟動功能并不一定需要TPM加密芯片,但是如果在TPM加密芯片的支持下,Windows 10可以通過其稱為“測量啟動”的方式啟動系統。這種新的啟動方式從它的名稱上就可以看出其特點,那就是它需要進行大量的檢測和計算。打開電腦,首先檢測計算UEFI固件相關的散列值,并將其保存在TPM加密芯片24個平臺配置寄存器中的一個。這是一個受保護的安全存儲區域,只有當電腦啟動時才可以重新寫入新的內容。根據相關的標準,該區域的寄存器被劃分為寄存器0~7用于與UEFI固件相關的檢測數據,而寄存器8~15可以用于Windows系統,例如存儲BitLocker相關的加密數據,其余的寄存器則可以用于其他供應商,例如病毒掃描程序相關的數據。與此同時,UEFI固件安全啟動功能將同步工作,檢查各組件的簽名。在加載任何模塊時,將檢測計算其散列值,并將結果存儲在上面介紹的TPM寄存器中。
在本文的圖表中詳細地列出了每一個步驟,在UEFI固件相關的檢測完成之后,檢驗并對系統加載程序、內核模塊和系統驅動程序進行計算,并將檢測計算的結果保存到TPM。緊接著,將加載預先啟動的反惡意程序軟件(Early Launch Anti Malware,簡稱ELAM),Windows系統通過提前加載反惡意程序軟件的方式,讓像卡巴斯基、賽門鐵克之類的第三方的病毒掃描程序可以早于操作系統和任何第三方軟件加載,確保早期肆虐Windows操作系統的Rootkit惡意程序將不能再作惡。在ELAM加載的過程中,同樣會檢測計算出一個散列值保存于TPM寄存器。ELAM加載程序一旦結束,Windows系統將啟動,用戶可以登錄,“測量啟動”過程將產生一個包含所有加載組件的散列值等數據的加密日志文件。
“測量啟動”的亮點在于,最終還可以通過外部對日志文件進行檢測。通過被稱為“遠程認證客戶端”的軟件讀取日志文件,并通過局域網或者互聯網將其轉發到檢測服務器上進行分析,以判定加載的組件是否是安全的。如果分析結果是安全的,那么用戶可以繼續使用電腦。如果分析結果是其中的一個模塊已經被操縱,那么它將被標記為受感染的模塊,并嘗試中止它。
“測量啟動”這種通過外部檢查加載組件是否安全的功能是UEFI固件的安全啟動功能所不具備的,因為它只運行在本地電腦上。然而,我們不知道,是否有人會為個人用戶提供檢測服務器。對于企業用戶來說,檢測企業員工使用的筆記本電腦和智能手機是否安全是非常重要的,這也包括員工自己的設備,要確保這些設備沒有感染惡意軟件,企業有必要建立自己的檢測服務器。