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