版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 http://www.cnblogs.com/tsec/p/8409600.html html
TXT是Trusted Execution Technology的簡稱,便可信執行技術,TXT技術源自Intel。其主要目標是經過使用特定的Intel CPU、專用硬件以及相關固件,創建一個從一開機就可信的環境,進而爲系統軟件提供多種方法,來實現更安全的系統以及更好的數據完整性保護。ios
一般來說,Intel TXT是:算法
度量(Measurement)在Intel TXT技術中是必不可少的。TPM芯片是Intel TXT技術的基礎部件之一,它提供了安全度量軟件組件的方法,這些軟件組件包括Bios code、平臺配置、引導代碼、引導配置、系統代碼、系統設置等,從而爲平臺組件和系統軟件構建一系列憑證。TPM還提供了準確使用度量來做爲信任的證實以及保護這些度量的能力。安全
Intel TXT引入了兩個TCG概念 ------ 靜態信任鏈(Static Chain of Trust)和動態信任鏈(Dynamic Chain of Trust),以下圖所示。靜態信任鏈度量平臺配置,動態信任鏈度量系統軟件、軟件配置及策略。對於Intel TXT而言,信任根(Root of Trust)就是支持TXT技術的Intel CPU。數據結構
靜態信任鏈(Static Chain of Trust)在平臺開機後度量,由硬件發起,度量值由TPM來防禦免受篡改,代碼在執行前都要被度量。架構
須要說明的是,靜態度量只在平臺開機後執行一次。學習
動態信任鏈(Dynamic Chain of Trust)由OS的需求而來。編碼
對於Intel TXT而言,可信OS指的是度量過的啓動環境,即Measured Launch Environment(MLE)。加密
Intel TXT依賴於一系列支持TXT技術的硬件、軟件與固件。如下圖所示,具備Intel TXT功能的平臺所需組件包括支持TXT與VT-x技術的CPU、Chipset、TPM芯片、ACMs、BIOS、MLE。spa
CPU須要支持TXT和SMX技術,SMX包括一條安全指令GETSEC,可執行多種安全功能。GETSEC[ENTERACCS]和GETSEC[SENTER]指令提供:
支持TXT技術的CPU也都支持虛擬化技術(VMX)。
爲支持TXT技術,Chipset須要包括:
根據訪問TXT寄存器的實體安全級別,Chipset執行TPM的locality,以及對TXT寄存器的不一樣訪問權限。
Intel TXT技術普遍使用TPM芯片,TPM提供了一個安全存儲空間和使用度量值的機制。系統使用度量值的目的是報告和評估當前的平臺配置以及提供對敏感信息的長期保護。
BIOS職責:
一旦鎖定,BIOS和其它Firmware就不能再修改配置,BIOS在執行其它任何第三方代碼(Option Rom等)以前進行鎖定。
ACM是由芯片組廠商提供的代碼,由廠商簽名,並由GETSEC安全指令調用,而後在CPU內部的專用安全內存中以最高安全級別執行。
ACM須要與芯片組相匹配,類型可分爲:BIOS ACM和SINIT ACM。前者度量BIOS並執行多個基於BIOS的安全功能;後者用來執行系統軟件/操做系統的安全啓動。
BIOS ACM和SINIT ACM code都會被包含在BIOS binary中,另外,OS在安全啓動中可能選擇更新版的SINIT ACM。
ACM被認爲是Core Root of Trusted Measurement (CRTM),須要進行驗證和保護:
在上述檢查所有經過的狀況下,ACM才真正被執行。
TPM芯片是TXT平臺中必不可少的組件,其主要提供以下安全功能:
TPM經過LPC(Low Pin Count)或SPI(Serial Peripheral Interface)總線鏈接到chipset,且僅能經過由chipset保護的MMIO寄存器訪問,意味着I/O設備沒法訪問TPM,但OS能夠控制哪一個處理器有權訪問TPM。一般,TPM經過Locality和控制協議來執行保護和訪問權限。
TPM有不一樣的特權級別,稱爲locality。每一個locality經過不一樣的4KB大小的頁面來訪問,容許硬件和軟件控制訪問每個locality。Chipset能夠決定哪些locality是活躍的(即對該頁面的讀寫操做是否將被忽略),系統軟件經過正常的內存管理和分頁功能來決定哪些進程能夠訪問這些頁面。Locality總共分爲5級(0 - 4):
注意:locality不分層級,不存在隸屬關係,Locality 4也不是一個超級用戶,不會訪問其它locality的資源。
TPM的接口是基於消息的。就是說,一個實體建立請求消息並經過locality頁面發送到TPM,而後經過locality頁面讀取響應消息。協議容許實體創建安全會話,會話容許用戶對消息內容進行加密,尤爲是對驗證受權的方法進行加密。爲此,TPM使用HMAC來實現受權認證。
在TPM中,平臺配置寄存器(Platform Configuration Register,PCR)可被做爲對象訪問,也是可信證實的基礎,一般用於啓動控制策略(LCP)。
TPM提供PCR來存儲度量值,每一個PCR都擁有一個20-byte的hash摘要。PCR的內容是基於「擴展」的,而非直接寫入,即TPM使用當前PCR的值,拼接須要擴展的數據,將二者的組合進行hash運算,產生的摘要就是新的PCR值。這意味着,PCR是惟一且不可欺騙的,將相同的度量值按照相同的順序擴展,才能夠計算出相同的PCR值。
TXT技術會使用到24個PCR,一些PCR是靜態的,只有在系統剛開機或重啓時纔會重置靜態PCR。其它動態PCR,在不重啓的狀況下,可經過特定的locality重置動態PCR。
Intel TXT幫助探測或阻止以下攻擊:
度量(Measure)是對任何可以載入內存的代碼或數據的Hash,產生固定長度的摘要。
度量值(Measurement)被擴展(Extend)到TPM提供的一組PCRs中。這些PCRs不能被覆寫,只能被Extend,即便用現有的PCR值與新的度量值構成一個組合值後,再進行Hash,最後將hash值存儲到該PCR中。
靜態度量在每次平臺啓動時只執行一次,16個靜態PCR:PCR0~PCR15。這些PCR僅在平臺開機或硬件重啓時才進行清除,也就是使全部組件(TPM、CPU、Chipset)返回到開機狀態的一個信號。
靜態PCR用來度量平臺配置:
PCR0是主要的CRTM PCR,且關乎PCR1~PCR7的完整性。CRTM表明可信度量根(Core Root of Trust Measurement),意味着它要被第一個度量併爲靜態PCR開啓度量鏈
動態度量是可以不用重啓平臺就可使PCR重置的度量,有8個動態PCR,使用以下:
PCR17~PCR20可依據一次成功的安全啓動進行重置,PCR20~PCR22可以經過安全模式下的可信OS進行重置。
總之,TXT提供了安全度量和報告各類平臺組件的方法,所以能夠檢測這些組件的變化。
Intel TXT包含一個啓動策略控制(Launch Control Policy,LCP)引擎,用於指定哪些是已知良好的平臺配置以及哪些系統軟件容許安全啓動。實際上存在兩個策略引擎,一個在BIOS ACM內部,當發生復位攻擊時,它會啓動用來驗證BIOS完整性的策略,另外一個在SINIT ACM內,負責啓動控制策略的強制執行。
先來講一下TXT是如何防止復位攻擊的。當OS成功地執行安全啓動時,它會設置一個非易失性Secret標誌,用於代表內存中存在隱私和其它特權信息。當OS正常關機並退出安全環境時,它會重置該Secret標誌,且只能經過可信OS調用GETSEC指令的方式來重置。若是發生復位攻擊(Reset Attack),即在可信OS清除Secret標誌以前reset OS,此時BIOS ACM會首先確保BIOS會清理內存中的隱私數據,不然DRAM Controller將不可用,只有將CMOS移除纔可恢復。然而,BIOS ACM也不能盲目信任BIOS,由於BIOS可能被攻擊者插入惡意代碼,所以BIOS ACM有兩種方法來驗證BIOS是可信的:Autopromotion和Signed BIOS Policy。
上述兩種驗證BIOS完整性的方法將在之後的文章中詳細介紹。
對於LCP,有兩個策略制定者:平臺供應商(PS)策略和平臺屬主(PO)策略。PS策略是平臺出廠前由平臺供應商建立的,也被稱爲默認策略。這裏主要討論PO策略。LCP包含兩個元素:
那麼如何保護LCP以防止篡改呢?這就有使用到TPM芯片提供的NVRAM。爲節省TPM NVRAM空間,LCP會被分解成若干個NV策略數據(用於建立PO策略索引),以及一個可選的策略數據結構(包含PCONF元素和MLE元素)。
Intel TXT符合TCG PC Client和Server規範。加密安全Hash算法生成平臺組件、平臺配置、系統軟件和軟件配置的惟一度量值。這些度量值被存貯在受TPM保護的PCR中,每一個PCR均可由多個度量值擴展,PCR日誌記錄了這個PCR擴展的每一個元素,利用該PCR中的值能夠用來驗證PCR日誌是否被篡改。
PCR0包含靜態可信度量根,以及BIOS code的度量。這些度量不能被篡改,由於它們都根植於硬件。PCR1~PCR7依賴於PCR0的有效性,也就是說,僅當PCR0的度量值是可信的,PCR1~PCR7纔是可信的。因此,在建立LCP的PCONF元素時,PCR0是必不可少的。PCR17包含動態可信度量根,以及策略的度量值,一樣是基於硬件的可信根。PCR18包含可信OS(TBoot)的度量值,且依賴於PCR17的有效性。
平臺屬主(PO)控制着有效的平臺配置,以及哪些OS被容許執行度量啓動。在MLE環境下,符合LCP的OS具備TPM Locality 2的訪問權限。度量啓動意味着OS的度量值已經擴展到動態PCR中。
[TSEC] 以上簡單介紹了TXT平臺所需組件以及基本原理,Launch Control Policy在TXT平臺上的做用是基於TXT度量結果作出信任決策,本文僅涉及LCP基礎知識,後續會對LCP作詳細介紹。如有問題,請留言,一塊兒學習,一塊兒進步,謝謝。