轉:Bitlocker、TPM和系統安全
自從微軟在Windows Vista首次引入Bitlocker以來,它已經越來越多的出現在我們的周圍。尤其是企業用戶,Bitlocker的保護已經變得不可缺少。本文將深入討論它的原理和如何提高它的安全性。
什么是Bitlocker?
BitLocker 驅動加密是集成在Windows Server 2008和Windows Vista及以后版本中的一個新的安全特性,它通過緊密集成在Windows操作系統中的方案,來幫助降低數據偷竊或丟失導致的泄露,被盜,或不正確地報廢計算機硬件所帶來的實際威脅。BitLocker 是一種全卷加密技術,如果計算機在所安裝操作系統脫機時受損,則該技術可確保存儲在此計算機上的數據不會暴露。 它是針對具有兼容的受信任的平台模塊 (TPM) 微型芯片和 BIOS 的系統而設計的。 如果存在這些組件,則 BitLocker 將使用它們來增強對數據的保護,並幫助確保早期啟動組件的完整性。 此功能通過加密整個卷來幫助防止數據被盜或未經授權查看。
簡單來說,BitLocker會將Windows的安裝分區或者其他用於保存文件的分區進行加密,並將密鑰保存在硬盤之外的地方,並對早期啟動組件完整性檢查,合並到一起來增強數據保護。
BitLocker主要有兩種工作模式:TPM模式和U盤模式,同時為了實現更高程度的安全,我們還可以同時啟用這兩種模式。本文主要討論TPM模式。
TPM和Bitlocker
TPM(Trusted Platform Module,可信平台模塊)是根據國際行業標准組織可信計算組(TCG,其中包括微軟、英特爾和惠普等公司)規范制作的模塊,可以是dTPM真實硬件也可以是fTPM等由固件模擬的軟件模塊。TPM 1.2最早大規模商用,現在TPM2.0也開始廣泛使用了。
TPM的主要作用是利用安全的經過驗證的加密密鑰帶來強大的設備安全性。TPM功能的核心是簽注密鑰,這是在生產過程中內置到TPM硬件的加密密鑰。這個簽注密鑰的私鑰部分絕不會出現在TPM外部或暴露給其他組件、軟件、程序或個人。另一個關鍵密鑰是存儲根密鑰,該密鑰也存儲在TPM內;它被用來保護其他應用程序創建的TPM密鑰,使這些密鑰只能由TPM通過被稱為綁定的過程來解密,TPM也是通過該過程鎖定數據到設備。與簽注密鑰不同,只有當TPM設備第一次被初始化或新用戶獲得所有權時,存儲根密鑰才會被創建。
TPM還可以通過平台配置寄存器(PCR)機制來記錄系統的狀態。這允許TPM進行預啟動系統完整性檢查,也被稱為遠程證明,這是一個功能強大的數據保護功能。通過將數據加密密鑰存儲在TPM中,數據可以有效地受到保護,其中TPM有一系列參考值來檢查PCR們的狀態。只有系統狀態與存儲的PCR值匹配,這些密鑰才會啟封和使用,並且,只有在滿足特定硬件和軟件條件時,才能夠訪問系統。
TPM是許多安全應用的核心,我們今后會單獨介紹它。本文只要知道Bitlocker最關心的密鑰存儲和PCR即可。
Bitlocker原理
我們僅僅介紹使用了TPM的Bitlocker。這就要求計算機安裝了TPM 1.2以上硬件(dTPM或者fTPM),其他沒有任何要求。整個解密的流程圖如下:
(圖片來源MSDN)
圖解順序的步驟如下:
1. BIOS 啟動並初始化TPM。並measure firmware部分敏感內容和啟動分區以及bootloader,將結果放入PCR組。
2.如果 PCR 值與期望值相匹配,則 TPM 將使用存儲根密鑰 (SRK) 對卷主密鑰 (VMK) 進行解密。
3. 從卷中讀取加密 FVEK,並使用解密 VMK 對其進行解密。
4. 訪問磁盤扇區時,使用 FVEK 進行解密。
5. 為應用程序和過程提供解密數據。
其中SRK存儲在TPM芯片中,它是整個過程的信任根。BitLocker通過檢測PCR組,對主啟動記錄 (MBR) 代碼、NTFS 啟動扇區、NTFS 啟動塊、啟動管理器和其他重要組件進行檢查,如果被更改,則第2步將出錯,要求輸入recovery PIN值。
Bitlocker作用以及局限
如前文所說,BitLocker會將Windows的安裝分區或者其他用於保存文件的分區進行加密,並將密鑰保存在硬盤之外的地方,並對早期啟動組件完整性檢查,合並到一起來增強數據保護。
1. Windows安裝盤和其他資料盤的加密,保護了脫機攻擊。即把磁盤拆下來到別的機器上讀出結果來。這樣就算你的筆記本硬盤丟失了,里面的重要信息別人也拿不走。注意這里bootloader所在的UEFI啟動分區並沒有加密。
2. 啟動組件完整性檢查,保證了如果啟動組件被更改,就拒絕啟動,防止被植入惡意代碼,造成整個鏈條的崩潰。
但是啟用TPM后,因為SRK存儲在TPM中,而不是像USB方式那樣隨時帶走。這樣雖然便利,不需要開機輸入密碼,但是硬件整體丟失后也為竊賊造成了方便。所以微軟推薦采取TPM加PIN碼的方式,可以大大降低數據泄漏的風險。
安全性
Bitlocker采用AES128或者256來加密數據,十分安全。固件通過measure啟動中關鍵組件並存入PCR中保證了啟動路徑不被攻擊,聽起來現在已經十分安全了,但是很久之前就被發現有一個漏洞:“邪惡女服務員攻擊”。
它所描述的就是這樣一種情形:當計算機主人離開旅館客房,而計算機無人看守時,一個邪惡的女服務生或任何其他可以進入這個房間的人,就可以隨意鼓搗這台計算機了。因為在系統引導期間,BitLocker需要與用戶交互來獲得一個口令:
而這個階段在Bootloader,而bootloader所在的UEFI啟動分區並沒有加密。這就造成了可乘之機:
1. 該邪惡的女服務員將惡意軟件放入U盤,開機直接進入shell,將惡意軟件copy到UEFI分區並修改啟動路徑。
2. 主人回家開機。
3. 惡意軟件模仿Bitlocker彈出需要密碼的界面。
4. 主人不明就里,輸入密碼。
5. 惡意軟件截獲秘密,發送到特定郵箱。它清空自己痕跡並重新啟動。
6. 由於惡意軟件痕跡被完全清除,PCR正常,正牌Bitlocker要求密碼,主人又看到密碼界面,以為輸錯了,又輸一遍,並順利進入系統,一切正常。
7. 第二天,邪惡服務員乘主人不在,拿着密碼開機並copy關鍵數據到U盤。
8. 邪惡女服務員消失。一個巨大的陰謀正在醞釀。。。。。。。OMG!!
有什么應對的辦法嗎?其實你一定還記得我們介紹過的UEFI安全啟動吧(UEFI安全啟動),它會驗證Bootloader的簽名,它和Bitlocker配合起來可以防止這個風險。
其他
有一些雜項需要說明一下:
1. Bitlocker不一定需要TPM. UEFI安全啟動也不一定需要TPM。
2. Bitlocker並不會加密UEFI分區,因為UEFI固件不知道如何解密它。
3. Bitlocker和UEFI安全啟動無關,Bitlocker也不一定要求UEFI。
4. Bitlocker加密硬盤會造成性能損失,對機械硬盤有5%-15%的性能降低,但對SSD影響較小。
5. Bitlocker和TPM+密碼聯合使用后,如果密碼丟失或者TPM損壞(可能性很小),則需要Recovery PIN(超長)。如果Recovery PIN丟失,個人用戶數據將會丟失(就算TPM拆下來也沒有用)。企業用戶可以啟用BitLocker Active Directory Recovery Password Viewer (RSAT),這樣Recovery PIN會存儲在企業活動目錄域服務器中,丟失后只要打個電話給IT就可以了,這也是為什么企業為什么不擔心密碼丟失而大規模使用Bitlocker的原因。詳見(BitLocker Active Directory Recovery Password Viewer Overview)
更多系統安全文章:
老狼:Bitlocker、TPM和系統安全老狼:趣話安全啟動:迷思與啟示老狼:UEFI安全啟動老狼:基於靜態可信根(SRTM)的Bitlocker的工作原理是什么?